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

Тема 1.

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

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


2
Содержание:

1. Методический план
2. Результаты обучения и их оценка
3. Введение в системное программирование
4. Операционные системы
5. Ядро операционной системы
6. Классификация операционных систем

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


Методический план
Всего 64 ак. часов = 32 занятия
Лекции 40 ак. часов = 20 занятий
Лабораторные занятия 24 ак. часов =12 занятий
Экзамен – письменный, с билетами.

Intro in OS 3
После успешного завершения курса студент
будет в состоянии:
Знания
• Описывать архитектуру современных операционных
систем.
• Описывать методы синхронизации параллельно
выполняемых потоков.
• Излагать концепцию организации и использования
виртуальной памяти.
• Указывать средства и способы реализации побитовых
операций.
• Формулировать политику обеспечения безопасности в
операционной системе Windows.
Intro in OS 4
После успешного завершения курса студент б
удет в состоянии:
Навыки
• Использовать Функции WinApi для работы с
системой, с дисками и каталогами.
• Программировать графический интерфейс
пользователя средствами WinApi.
• Управлять виртуальным адресным
пространством, процессами и потоками.
• Использовать динамически подключаемые
библиотеки.
• Работать с системным реестром.
Intro in OS 5
После успешного завершения курса студент б
удет в состоянии:
Компетенции
• Использовать IDE Visual Studio для
разработки системного программного
обеспечения на языке С++.
• Управлять пользователями и группами
пользователей в операционной системе
Windows.
• Использовать приемы повышения
эффективности выполнения программ на
системном уровне.
Intro in OS 6
ОЦЕНКА РЕЗУЛЬТАТОВ ОБУЧЕНИЯ
• Экзамен – в каждом билете 3 теоретических вопроса
(правильный ответ на 1 вопрос – 1 балл, максимум за
экзамен – 3 балла).
• Лабораторные работы - всего 8 работ, каждая зачтенная
лабораторная работа – 0,5 баллов, максимальная оценка за
лабораторные работы – 4 балла.
• Тесты - 13 тестов на оценку >=7 баллов - 2 балла
• Дополнительный балл - за особые заслуги

Intro in OS 7
ИТОГОВАЯ ОЦЕНКА по курсу
• Складывается из оценки за экзамен (до 3
баллов) + оценки за ЛР (до 4 баллов) + оценка за
тесты (до 2 баллов) + дополнительный балл.
• Максимальная оценка – 10 баллов,
минимальная позитивная оценка – 4 балла.

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

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


10

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

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


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

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


11

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

•Техническое обеспечение
•Программное обеспечение
•Прикладное
•Системное
• Операционные системы
• Драйвера
• Утилиты
• и др.
Б.Ф. Мишнев, И.В. Птицына 11
12
Системное программное обеспечение
• комплекс программ, которые обеспечивают управление
компонентами компьютерной системы:
• процессор,
• оперативная память,
• устройства ввода-вывода,
• сетевое оборудование,
• Не решает конкретные прикладные задачи, а лишь
обеспечивает работу других программ, предоставляя им
сервисные функции, абстрагирующие детали аппаратной
и микропрограммной реализации вычислительной
системы, управляет аппаратными ресурсами
вычислительной системы

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


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

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

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


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

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


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

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


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

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


18

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


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

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


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

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


20

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


Сетевое обеспечение
Позволяет для системных ресурсов:
•увеличить скорость вычислений;
•увеличить объем доступной информации;
•повысить надежность.

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


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

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


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

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


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

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


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

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


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

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


33
Ядро (kernel)
• Ядро – работает в привилегированном режиме (kernel
mode).
• Ядро — центральная часть операционной системы,
обеспечивающая приложениям координированный
доступ к ресурсам компьютера, таким как
процессорное время, память, внешнее аппаратное
обеспечение, внешнее устройство ввода и вывода
информации. Также обычно ядро предоставляет
сервисы файловой системы и сетевых протоколов.
• Как основополагающий элемент ОС, ядро
представляет собой наиболее низкий уровень
абстракции для доступа приложений к ресурсам
системы, необходимым для их работы. Как правило,
ядро предоставляет такой доступ исполняемым
процессам соответствующих приложений за счёт
использования механизмов межпроцессного
взаимодействия и обращения приложений к
системным вызовам ОС.
Б.Ф. Мишнев, И.В. Птицына 33
Функции ядра
• Модули ядра выполняют такие базовые функции ОС, как
управление процессами, памятью, устройствами ввода-вывода и
т.п.
• В состав ядра входят функции, решающие внутрисистемные задачи
организации вычислительного процесса, такие как переключение
контекстов, загрузка/выгрузка страниц, обработка прерываний.
Эти функции недоступны для приложений.
• Другой класс функций ядра служит для поддержки приложений,
создавая для них так называемую прикладную программную среду.
Приложения могут обращаться к ядру с запросами – системными
вызовами – для выполнения тех или иных действий, например, для
открытия и чтения файла, вывода графической информации на
дисплей, получения системного времени и т.д.
• Функции ядра, которые могут вызываться приложениями, образуют
интерфейс прикладного программирования – API.

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


Ядро

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


Ядро

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


Типы архитектур ядер операционных
систем
•Монолитное ядро
•Модульное ядро
•Микроядро
•Экзоядро
•Наноядро
•Гибридное ядро

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


47
Классификация операционных систем (2)
• По количеству одновременно решаемых
задач:
▫ однозадачные (single-tasking operating systems);
▫ многозадачные (multitasking operating systems).
• По количеству одновременно работающих
пользователей:
▫ однопользовательские (single-user operating
systems);
▫ многопользовательские (multi-user operating
systems).

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


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

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


49
Классификация операционных систем (4)
•По роли в сетевом взаимодействии:
• серверные (server operating systems);
• клиентские (client operating systems).
•По типу лицензии:
• открытые (open-source operating systems);
• проприетарные (proprietary operating systems) .

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


50
Классификация операционных систем (5)
• По области применения:
▫ операционные системы мэйнфреймов – больших
компьютеров (mainframe operating systems);
▫ операционные системы серверов (server
operating systems);
▫ операционные системы персональных
компьютеров (personal computer operating
systems);
▫ операционные системы мобильных устройств
(mobile operating systems);
▫ встроенные операционные системы (embedded
operating systems);
▫ операционные системы маршрутизаторов (router
operating systems).

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


51
Требования к операционным системам
•расширяемость;
•переносимость;
•совместимость;
•надежность;
•производительность.

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


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

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


Linux (Ли́нукс)
•Linux - общее название Unix-подобных
операционных систем, основанных на
одноимённом ядре.
•В настоящее время системы Linux
лидируют на
рынках смартфонов (Android), интернет-
серверов (60 %), самых мощных
суперкомпьютеров, а также, в дата-
центрах, занимают половину рынка
встраиваемых систем, имеют
значительную долю рынка нетбуков.
Б.Ф. Мишнев, И.В. Птицына 53
54

Конец

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