Вы находитесь на странице: 1из 48

Системное программирование

Тема 1. Введение в
системное
программирование

Авторы курса:
Б.Ф. Мишнев, И.В. Птицына
2

Содержание:

1. Введение в системное программирование


2. Операционные системы
3. Ядро операционной системы
4. Классификация операционных систем

Б.Ф. Мишнев, И.В. Птицына 2


1. Введение в системное
программирование

Б.Ф. Мишнев, И.В. Птицына 3


4

Введение в системное программирование

• Системное программирование — создание


системного программного обеспечения
• Системный программист — это
программист, специализирующийся на
системном программировании

Б.Ф. Мишнев, И.В. Птицына 4


5

Структура вычислительной системы

• Техническое обеспечение
• Программное обеспечение
• Прикладное
• Системное
• Операционные системы
• Драйвера
• Утилиты
• и др.
Б.Ф. Мишнев, И.В. Птицына 5
6

Системное программное обеспечение

• комплекс программ, которые обеспечивают управление


компонентами компьютерной системы:
• процессор, 
• оперативная память, 
• устройства ввода-вывода,
• сетевое оборудование,
• Не решает конкретные прикладные задачи, а лишь
обеспечивает работу других программ, предоставляя им
сервисные функции, абстрагирующие детали аппаратной
и микропрограммной реализации вычислительной
системы, управляет аппаратными ресурсами
вычислительной системы

Б.Ф. Мишнев, И.В. Птицына 6


7

Системное программирование позволяет


программисту:

• управлять памятью;
• управлять файловой системой;
• обеспечивать многозадачность;
• обеспечивать синхронизацию;
• обеспечивать защиту и безопасность
и др.

Б.Ф. Мишнев, И.В. Птицына 7


8
Языки системного программирования

• Си (С)занял своё место как инструмент реализации Unix и Windows


• Си++ (С++) создавался как расширение Си. Была добавлена
поддержка объектно-ориентированного программирования,
шаблоны.
• Оба языка основываются на разработках 60-70-х годов и не
учитывают наработок, связанных с виртуальными машинами.
Отсутствие сопрограмм в Си, уникальность функций по имени в
условиях современности осложняют программирование.
• Более мощный Си++ лучше адаптируется, но перегруженный
разными техниками язык труднее освоить, а его компилятор –
реализовать.
• Альтернативой является Objective-C, созданный примерно в то же
время и реализующий объекты не процедурами, а пересылкой
сообщений. Подход проще и однороднее, но, несмотря на все
возможные оптимизации, такая абстракция медленнее Си++ в
полтора раза по времени исполнения.

Б.Ф. Мишнев, И.В. Птицына 8


Взгляд на вычислительную систему

Б.Ф. Мишнев, И.В. Птицына 9


Б.Ф. Мишнев, И.В. Птицына 10
2. Операционные системы

Б.Ф. Мишнев, И.В. Птицына 11


12

Операционная система (ОС)


• комплекс управляющих и
обрабатывающих программ, которые, с одной
стороны, выступают как интерфейс между
устройствами вычислительной
системы и прикладными программами, а с другой
стороны — предназначены для управления
устройствами, управления вычислительными
процессами, эффективного
распределения вычислительных ресурсов между
вычислительными процессами и организации
надёжных вычислений. 

Б.Ф. Мишнев, И.В. Птицына 12


Операционная система обеспечивает:
• Удобство – делает использование компьютера
удобным.
• Эффективность – позволяет эффективно
использовать ресурсы.
• Возможность развития – допускает разработку,
тестирование и внедрение новых системных
функций и приложений при сохранении
нормального функционирования вычислительной
системы
Б.Ф. Мишнев, И.В. Птицына 13
14

Структура операционной системы


В состав ОС входят следующие подсистемы:
• обеспечение выполнения программ;
• управление оперативной памятью;
• управление внешней памятью;
• управление вводом-выводом;
• предоставление пользовательского интерфейса;
• обеспечение безопасности;
• организация сетевого взаимодействия.

Б.Ф. Мишнев, И.В. Птицына 14


Управление процессами:

• создание и удаление процессов;


• приостановку и возобновление
процессов;
• обеспечение механизмов для
синхронизации процессов;
• обеспечение механизмов для
взаимодействия процессов.

Б.Ф. Мишнев, И.В. Птицына 15


Управление основной памятью:

• ведет учет того, какая часть памяти в


настоящий момент занята;
• принимает решение о загрузке процессов
при освобождении пространства ОП;
• распределяет и освобождает пространство
ОП в соответствии с действующими
стратегиями.

Б.Ф. Мишнев, И.В. Птицына 16


Управление внешней памятью

• управление свободным пространством;


• распределение памяти;
• управление диском.

Б.Ф. Мишнев, И.В. Птицына 17


Подсистема управления устройствами
ввода/вывода

Подсистема ввода/вывода состоит из:


• системы кэширования - буферирования;
• общего интерфейса драйверов устройств;
• драйверов специализированных
устройств.

Б.Ф. Мишнев, И.В. Птицына 18


Подсистема управления файлами
Подсистема ОС отвечает за следующие действия в связи с
управлением файлами:
• создание файлов;
• создание и удаление подкаталогов;
• поддержку операций для манипулирования с
файлами и подкаталогами;
• представление файлов во внешней памяти;
• выгрузку файлов на другие внешние устройства.

Б.Ф. Мишнев, И.В. Птицына 19


Защита системы
Механизм защиты должен:
• различать авторизованное и не
авторизованное использование;
• определить элементы управления, которые
будут задействованы;
• обеспечить средства реализации.

Б.Ф. Мишнев, И.В. Птицына 20


Сетевое обеспечение
Позволяет для системных ресурсов:

• увеличить скорость вычислений;


• увеличить объем доступной информации;
• повысить надежность.

Б.Ф. Мишнев, И.В. Птицына 21


Командный интерфейс системы

• создание и управление процессами;


• управление вводом/выводом;
• управление внешней памятью;
• управление основной памятью;
• доступ к файловой системе;
• защиту;
• поддержку работы сети.

Б.Ф. Мишнев, И.В. Птицына 22


Сервисы операционных систем:
• Выполнение программ - способность системы загружать программу в
память и выполнять ее;
• Операции ввода/вывода. Поскольку пользовательские программы не
могут исполнять операции ввода/вывода непосредственно, ОС
должна обеспечивать некоторые средства для их выполнения;
• Манипуляции с файловой системой выражаются в обеспечении
способности читать, писать, создавать и удалять файлы;
• Взаимодействие и обмен информацией между выполняющимися
процессами на одном компьютере или на различных системах,
связанных посредством сети, осуществляется через распределенную
память или передачу сообщений;
• Обнаружение ошибок - гарантия правильности вычислений
посредством обнаружения ошибок в процессоре, памяти, устройствах
ввода/вывода или в пользовательских программах.

Б.Ф. Мишнев, И.В. Птицына 23


Структура ОС Windows

Б.Ф. Мишнев, И.В. Птицына 24


25

Режимы работы

• Режимы работы процессора:


• привилегированный (supervisor mode),
• пользовательский (user mode).
• Компоненты ОС:
• работающие в привилегированном режиме,
• работающие в пользовательском режиме.

Б.Ф. Мишнев, И.В. Птицына 25


3. Ядро операционной
системы

Б.Ф. Мишнев, И.В. Птицына 26


27
Ядро (kernel)

• Ядро – работает в привилегированном режиме (kernel mode).


• Ядро — центральная часть операционной системы,
обеспечивающая приложениям координированный доступ к
ресурсам компьютера, таким как процессорное время, память,
внешнее аппаратное обеспечение, внешнее устройство ввода и
вывода информации. Также обычно ядро предоставляет сервисы
файловой системы и сетевых протоколов.
• Как основополагающий элемент ОС, ядро представляет собой
наиболее низкий уровень абстракции для доступа приложений к
ресурсам системы, необходимым для их работы. Как правило,
ядро предоставляет такой доступ исполняемым процессам
соответствующих приложений за счёт использования механизмов
межпроцессного взаимодействия и обращения приложений к
системным вызовам ОС.

Б.Ф. Мишнев, И.В. Птицына 27


Функции ядра
• Модули ядра выполняют такие базовые функции ОС, как
управление процессами, памятью, устройствами ввода-вывода и
т.п. 
• В состав ядра входят функции, решающие внутрисистемные задачи
организации вычислительного процесса, такие как переключение
контекстов, загрузка/выгрузка страниц, обработка прерываний.
Эти функции недоступны для приложений.
• Другой класс функций ядра служит для поддержки приложений,
создавая для них так называемую прикладную программную среду.
Приложения могут обращаться к ядру с запросами – системными
вызовами – для выполнения тех или иных действий, например, для
открытия и чтения файла, вывода графической информации на
дисплей, получения системного времени и т.д.
• Функции ядра, которые могут вызываться приложениями, образуют
интерфейс прикладного программирования – API.

Б.Ф. Мишнев, И.В. Птицына 28


Ядро

Б.Ф. Мишнев, И.В. Птицына 29


Ядро

Б.Ф. Мишнев, И.В. Птицына 30


Типы архитектур ядер операционных систем

• Монолитное ядро
• Модульное ядро
• Микроядро
• Экзоядро
• Наноядро
• Гибридное ядро

Б.Ф. Мишнев, И.В. Птицына 31


Монолитное ядро
• Монолитное ядро предоставляет богатый набор абстракций
оборудования. Все части монолитного ядра работают в одном
адресном пространстве. Это такая схема операционной системы,
при которой все компоненты её ядра являются составными
частями одной программы, используют общие структуры данных
и взаимодействуют друг с другом путём непосредственного вызова
процедур. Старейший способ организации операционных систем.
• Достоинства: Скорость работы, упрощённая разработка модулей.
• Недостатки: Поскольку всё ядро работает в одном адресном
пространстве, сбой в одном из компонентов может нарушить
работоспособность всей системы.
• Примеры ОС: MS-DOS, Linux, FreeBSD

Б.Ф. Мишнев, И.В. Птицына 32


Модульное ядро

• Модульное ядро — современная, усовершенствованная


модификация архитектуры монолитных ядер операционных
систем.
• В отличие от «классических» монолитных ядер, модульные ядра,
как правило, не требуют полной перекомпиляции ядра при
изменении состава аппаратного обеспечения компьютера.
Вместо этого модульные ядра предоставляют тот или иной
механизм подгрузки модулей ядра, поддерживающих то или
иное аппаратное обеспечение (например, драйверов). При этом
подгрузка модулей может быть как динамической (выполняемой
«на лету», без перезагрузки ОС, в работающей системе), так и
статической (выполняемой при перезагрузке ОС после
переконфигурирования системы на загрузку тех или иных
модулей).

Б.Ф. Мишнев, И.В. Птицына 33


Микроядро

• Микроядро предоставляет только элементарные функции управления


процессами и минимальный набор абстракций для работы с оборудованием.
Большая часть работы осуществляется с помощью специальных
пользовательских процессов, называемых сервисами.
• Достоинства: Устойчивость к сбоям оборудования, ошибкам в компонентах
системы. Высокая степень модульности ядра операционной системы. Это
существенно упрощает добавление в него новых компонентов. В микроядерной
операционной системе можно, не прерывая её работы, загружать и выгружать
новые драйверы, файловые системы и т. д. Существенно упрощается процесс
отладки компонентов ядра, так как новая версия драйвера может загружаться
без перезапуска всей операционной системы. Компоненты ядра операционной
системы ничем принципиально не отличаются от пользовательских программ,
поэтому для их отладки можно применять обычные средства. Повышает
надежность системы, поскольку ошибка на уровне непривилегированной
программы менее опасна, чем отказ на уровне режима ядра.
• Недостатки: Передача данных между процессами требует накладных расходов.
• Примеры ОС: Windows CE, Mach, Symbian, MINIX 3

Б.Ф. Мишнев, И.В. Птицына 34


Экзоядро

• Экзоядро — ядро операционной системы, предоставляющее


лишь функции для взаимодействия между процессами,
безопасного выделения и освобождения ресурсов.
Предполагается, что API для прикладных программ будут
предоставляться внешними по отношению к ядру
библиотеками (откуда и название архитектуры).
• Возможность доступа к устройствам на уровне контроллеров
позволит эффективней решать некоторые задачи, которые
плохо вписываются в рамки универсальной ОС, например,
реализация СУБД будет иметь доступ к диску на уровне
секторов диска, а не файлов и кластеров, что положительно
скажется на быстродействии.

Б.Ф. Мишнев, И.В. Птицына 35


Наноядро

• Наноядро — архитектура ядра операционной системы,


в рамках которой крайне упрощённое и
минималистичное ядро выполняет лишь одну задачу
— обработку аппаратных прерываний, генерируемых
устройствами компьютера. После обработки
прерываний от аппаратуры наноядро, в свою очередь,
посылает информацию о результатах обработки
(например, полученные с клавиатуры символы)
вышележащему программному обеспечению при
помощи того же механизма прерываний.
• Примером является KeyKOS — самая первая ОС на
наноядре. Первая версия вышла ещё в 1983-м году.

Б.Ф. Мишнев, И.В. Птицына 36


Гибридное ядро

• Гибридные ядра — это модифицированные


микроядра, позволяющие для ускорения работы
запускать «несущественные» части в пространстве
ядра.
• Пример: ядра ОС Windows семейства NT.

Б.Ф. Мишнев, И.В. Птицына 37


Комбинация разных подходов

• В большинстве случаев современные


операционные системы используют различные
комбинации этих подходов.
• Так, например, сейчас ядро «Linux» представляет
собой монолитную систему с отдельными
элементами модульного ядра.

Б.Ф. Мишнев, И.В. Птицына 38


4. Классификация
операционных систем

Б.Ф. Мишнев, И.В. Птицына 39


40

Классификация операционных систем (1)

• По способу организации вычислений:


▫ системы пакетной обработки (batch processing operating
systems);
▫ системы разделения времени (time-sharing operating
systems);
▫ системы реального времени (real-time operating systems).
• По типу ядра:
▫ системы с монолитным ядром (monolithic operating systems);
▫ системы с микроядром (microkernel operating systems);
▫ системы с гибридным ядром (hybrid operating systems).

Б.Ф. Мишнев, И.В. Птицына 40


41

Классификация операционных систем (2)

• По количеству одновременно решаемых задач:


▫ однозадачные (single-tasking operating systems);
▫ многозадачные (multitasking operating systems).
• По количеству одновременно работающих
пользователей:
▫ однопользовательские (single-user operating
systems);
▫ многопользовательские (multi-user operating
systems).
Б.Ф. Мишнев, И.В. Птицына 41
42

Классификация операционных систем (3)

• По количеству поддерживаемых процессоров:


• однопроцессорные (uniprocessor operating
systems);
• многопроцессорные (multiprocessor operating
systems).
• По поддержке сети:
• локальные (local operating systems);
• сетевые (network operating systems).

Б.Ф. Мишнев, И.В. Птицына 42


43

Классификация операционных систем (4)

• По роли в сетевом взаимодействии:


• серверные (server operating systems);
• клиентские (client operating systems).
• По типу лицензии:
• открытые (open-source operating systems);
• проприетарные (proprietary operating systems) .

Б.Ф. Мишнев, И.В. Птицына 43


44

Классификация операционных систем (5)

• По области применения:
▫ операционные системы мэйнфреймов – больших компьютеров
(mainframe operating systems);
▫ операционные системы серверов (server operating systems);
▫ операционные системы персональных компьютеров (personal
computer operating systems);
▫ операционные системы мобильных устройств (mobile operating
systems);
▫ встроенные операционные системы (embedded operating
systems);
▫ операционные системы маршрутизаторов (router operating
systems).
Б.Ф. Мишнев, И.В. Птицына 44
45
Требования к операционным системам

• расширяемость;
• переносимость;
• совместимость;
• надежность;
• производительность.

Б.Ф. Мишнев, И.В. Птицына 45


46

ОС WINDOWS

• Microsoft Windows – операционные системы


корпорации Microsoft, различные версии которых
предназначены для широкого класса устройств –
от суперкомпьютеров до встроенных систем.
• http://gs.statcounter.com
• http://marketshare.hitslink.com

Б.Ф. Мишнев, И.В. Птицына 46


Linux (Ли́нукс) 

• Linux - общее название Unix-подобных


операционных систем, основанных на
одноимённом ядре. 
• В настоящее время системы Linux лидируют на
рынках смартфонов (Android), интернет-
серверов (60 %), самых мощных
суперкомпьютеров, а также, в дата-центрах,
занимают половину рынка встраиваемых систем,
имеют значительную долю рынка нетбуков.

Б.Ф. Мишнев, И.В. Птицына 47


Спасибо
за
внимание!

Авторы курса:
Б.Ф. Мишнев, И.В. Птицына

Оценить