858.09K
Категория: ПрограммированиеПрограммирование

Операционные системы для разработчиков программного обеспечения. (Лекция 1)

1.

Краткий курс лекций
ОПЕРАЦИОННЫЕ СИСТЕМЫ
ДЛЯ РАЗРАБОТЧИКОВ ПО
ЛЕКЦИЯ №1
ДВФУ
к.т.н. Боровик Алексей Игоревич

2.

План курса
Введение
Что такое ОС? Зачем они нужны?
Основные идеи и принципы ОС
Ядро ОС, планировщик, прерывания, многозадачность
API Windows и Linux
Работа с потоками и процессами
Работа с таймерами и временем
Средства IPC
Средства кроссплатформенной разработки приложений
Сеть
Работа с сетью в Windows и Linux
Интерфейсы создания сетевых приложений
Средства RPC

3.

План лекции
Место ОС в компьютере
Схема и принцип работы микропроцессорной системы
Таймеры и прерывания
Работа с файлами
Функции и задачи ОС
Понятие и основные идеи ОС
Состав ОС: ядро, диспетчер, обработчик прерываний
Современные пользовательские ОС, их концепции и API
Многозадачность
Понятие и виды многозадачности
Потоки и процессы, механизмы синхронизации
Таймеры ОС

4.

Место ОС в компьютере
Схема микропроцессорной системы, шины,
принцип МП системы, программа МП, таймеры,
прерывания, подготовка системы к работе,
понятие файловой системы и работа с файлами,
задачи, решаемые ОС

5.

Схема микропоцессорной системы
CPU (Central Processing Unit) — центральное процессорное устройство (ЦПУ).
RAM (Random Access Memory) — устройство с произвольным доступом, или
оперативное запоминающее устройство (ОЗУ).
ROM (Read Only Memory) — память только для чтения, или постоянное
запоминающее устройство (ПЗУ).
Port I/O (Port Input/Output) — порт ввода-вывода.
Шина — это набор параллельных проводников, по которым передается
цифровой сигнал.
DATA bus — шина данных (ШД);
ADDR bus - шина адреса (ША);
CONTROL bus — шина управления (ШУ)

6.

Шины
По шине данных передаются данные от МП к
периферийным устройствам и\или памяти и обратно
По шине адреса передается адрес ячейки памяти или
номер порта ввода\вывода, с которым работает МП
(для которого предназначены данные)
По шине управления передаются специальные
управляющие сигналы:
RD (Read) — сигнал чтения.
WR (Write) — сигнал записи.
MREQ — сигнал инициализации устройств памяти (ОЗУ или
ПЗУ).
IORQ — сигнал инициализации портов ввода-вывода.
READY — сигнал готовности;
RESET — сигнал сброса.

7.

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

8.

Программа МП
Программа МП - последовательность действий с
памятью и числами.
В памяти программа представлена как:
КОД ОПЕРАЦИИ 1
ПАРАМЕТР 1

ПАРАМЕТР N КОД ОПЕРАЦИИ 2
Типы команд микропроцессора:
команды перемещения данных
команды преобразования данных
команды передачи управления:
команды условного перехода
команды безусловного перехода
команды перехода к подпрограмме
команды организации цикла

9.

Программа МП
Программы для МП могут писаться на разных языках
программирования. Наиболее близкий к реализации – язык
ассемблера. Он машинно-зависим.
Большинство современных ОС и их API написаны на машиннонезависимом языке C

10.

Таймеры
Таймер – аппаратное устройство (электронный
компонент), которое генерирует импульсы заданной
длительности.
Таймер = счетчик импульсов (поступающих от
генератора тактовой частоты)
Максимум счета – 16 или 32 бита
В современных МП-системах есть несколько таймеров:
Таймер TSC (Time Stamp Counter) внутри МП
Таймер PIT (Programmable Interval Timer) в виде отдельного
чипа материнской платы или внутри южного моста.
События таймера (IRQ):
переполнение (OVERFLOW)
достижение указанного значения (ALARM)
другие

11.

Прерывания
Прерывание = Interrupt Request = IRQ
Сигнал, на который процессор обязан немедленно
отреагировать
Прерывания бывают:
внешние (аппаратные, асинхронные)
внутренние (синхронные)
программные
программа
IRQ
вход в прерывание
программа
выход из прерывания
обработчик IRQ

12.

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

13.

Файловая система
Файловая система — порядок, определяющий способ
организации, хранения и именования данных на
энергонезависимых носителях информации в МП-системах
Организованная структура хранения данных
Возможность прочесть записанные данные на других МП-системах

14.

Итак, зачем нужна ОС?
Выполнить начальную загрузку и инициализацию
оборудования
Выполнить несколько программ (в «пакетном» режиме)
Файловая система – для организации хранения и обработки
данных
Предоставить программисту API:
Выполнить несколько программ «параллельно», не допуская
простоя вычислительной мощности
Программные таймеры
Обработка прерываний
Выполнение программ в «пакетном» режиме и «параллельно»
Унифицированная работа с периферией
Предоставить интерфейс пользователя
Предоставить интерфейс для нескольких пользователей и
разграничение прав

15.

Функции и задачи ОС
Понятие ОС, состав ОС, виды ядер ОС, диспетчер,
обработчик прерываний, загрузка ОС, виды ОС,
перечень современных ОС, основные концепции
POSIX, основные концепции Windows

16.

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

17.

Состав ОС
Системные библиотеки (API)
Сетевая
подсистема
Драйверы
Планировщик
Оболочка пользователя,
утилиты
Файловая
подсистема
Обработчик
прерываний
~Ядро
Уровень абстракции (HAL)
«Железо»
Загрузчик

18.

Ядро ОС
Ядро (kernel) — центральная часть ОС,
обеспечивающая приложениям координированный
доступ к ресурсам компьютера:
процессорное время
память (разделенная на пространство ядра и
пользовательское пространство)
внешнее аппаратное обеспечение
внешние устройства ввода и вывода информации
Ядро также обычно предоставляет
механизмы IPC
сервисы файловой системы
сетевые протоколы.

19.

Типы архитектур ядер ОС
Монолитное ядро – все компоненты ядра работают в одном
адресном пространстве
Модульное ядро – монолитное ядро, с возможностью динамической
подгрузки компонентов в виде модулей.
Микроядро – ядро содержит HAL, планировщик и обработчик
прерываний; почти все драйверы и модули размещены в сервисных
процессах
(+) Высокая скорость работы, легко разрабатывать модули
(–) Недостаточная надежность (сбой в одном модуле приводит к краху
ядра), неудобство подключения и отключения отдельных модулей
(+) Устойчивость к сбоям в модулях, удобство подключения и отключения
модулей
(–) Накладные расходы на обмен информацией между модулями
Гибридное ядро – микроядро, позволяющее запускать отдельные
модули в адресном пространстве ядра
Экзоядро – предоставляет только доступ к памяти и процессорному
времени, а также диспетчеризацию процессов
Наноядро – содержит только обработчик прерываний

20.

Планировщик задач
Планировщик выполняет выбор и планирование программ для
запуска на МП в соответствии с приоритетами. Главная цель –
наиболее полная загрузка МП.
Диспетчер – переключает контекст программ, осуществляет
«прыжок» в нужное место программы для продолжения ее
исполнения на ЦПУ
Краткосрочный – решает, какие задачи из очереди в ОЗУ будут
загружены на ЦПУ
Среднесрочный – перемещает программы из основной памяти во
вторичную и наоборот («свопинг», подкачка)
Долговременный – решает, какие задачи будут исполняться
параллельно, применяется в ОСРВ
Программа 1
Программа 1
Программа 2
Планировщик задач

21.

Обработчик прерываний
Прерывание – процедура, вызываемая МП по сигналу для
выполнения его обработки
Обработчики прерываний находятся:
В памяти BIOS (UEFI) до загрузки ОС
В памяти ОС – после загрузки
Обработчики прерываний бывают:
Аппаратное прерывание – обработка событий устройств
Программное прерывание – обработка событий ОС
высокоприоритетные – выполняются непосредственно по прерыванию,
за очень малое время, планируют низкоприоритетные обработчики
низкоприоритетные – выполняют основную обработку прерывания,
выполняются в потоке (нити исполнения), подверженной обычной
планировке
Прерывания используются
Драйверами, для работы с оборудованием
Ядром, для управления планировщиком, обработки времени и других
системных задач

22.

Принцип загрузки ОС
После включения МП читает код BIOS (UEFI) из чипа ПЗУ
(EEPROM), переносит его в ОЗУ и начинает исполнение
Код BIOS (UEFI) выполняет:
проверку оборудования (POST)
настройку оборудования
поиск загрузчика ОС и передачу ему управления
предоставление загрузчику или другим программам API работы с
оборудованием и прерываниями
Загрузчик ОС:
донастраивает оборудование для работы ядра ОС (например,
виртуальную память)
формирует список параметров для запуска ядра ОС
предоставляет пользователю интерфейс первичной настройки
запуска ядра
заменяет код прерываний BIOS на прерывания ОС для работы
драйверов
загружает ядро ОС в ОЗУ и передает ему управление

23.

Виды ОС
Встраиваемые – устанавливаются на МП-системы, где должны работать
автономно, с минимальным участием человека
ОС для микроконтроллеров – набор системных библиотек, компилируемых вместе
с пользовательским кодом «прошивки»
Реального времени – обеспечивают исполнение программ в определенный
промежуток времени, применяются во встраиваемых системах на заводах и в
робототехнике
Семейство Unix, семейство Windows Server
Распределенные – управляют группой МП-систем, превращая их в одну
вычислительную систему с общими ресурсами
Жесткого реального времени – никогда не опоздают с реакцией на событие
Мягкого реального времени – не должны опаздывать с реакцией на событие
Windows CE, Symbian, QNX, VxWorks
Серверные – ОС для сетевых серверов, предоставляющие сервис по доступу и
обработке данных, а также по администрированию системы
RIOT OS, FreeRTOS, TinyOS, Contiki
Plan9, Inferno
Пользовательские – обычно многопользовательские, многозадачные ОС, с
широким API и графическим интерфейсом, предназначенные для управления
человеком аппаратными средствами МП-системы посредством программ
Для настольных ПК – семейства Windows, Linux, MacOS
Для мобильных ПК – семейства Android, iOS, Windows RT

24.

Современные пользовательские ОС
Семейство UNIX (POSIX):
FreeBSD
MacOS
~ ОС с ядром Linux
~ Android

Семейство Windows:
Windows 95, 2000
Windows CE
Windows NT
Windows RT

25.

POSIX (Portable Operating System Interface, переносимый интерфейс
операционных систем) — набор стандартов:
Обеспечивает:
совместимость различных UNIX-подобных ОС
переносимость программ на уровне исходного кода
Описывает работу с:
интерфейс между операционной системой и прикладной программой
(API)
библиотека языка C
набор приложений и их интерфейсов.
процессами и потоками (многозадачность)
таймерами и сигналами
файлами
пользователями, группами
системными утилитами
Основные принципы:
ВСЕ ЕСТЬ ФАЙЛ
В интерпретаторе не команды, а программы

26.

Windows
Концепции:
Файлы – это файлы, устройства – это устройства, команды –
это команды
Основной интерфейс взаимодействия с системой –
графический
Есть проблемы автоматизации рутинных действий
Developers, developers, developers, developers…
Есть два API:
Windows API – описывает средства управления
многозадачностью, таймеры, работу с файлами и
графическим интерфейсом (окна)
Множество библиотек поверх API: MFC, ATL, .Net Frameworks,…
Windows Driver Model (WDM) и Windows Driver Foundation
(WDF) – для написания драйверов устройств
(низкоуровневая работа с прерываниями)

27.

Developers

28.

Кроссплатформенные средства
Boost – собрание библиотек и классов
для организации различных задач
программирования:
GTK – фреймворк для разработки
пользовательских интерфейсов
Почти все современные ОС
Работа с вводом\выводом, файлами,
потоками, сигналами, строками, массивами,
графами…
Linux, Windows, MacOS
QT – фреймворк для разработки
кроссплатформенных приложений, с
упором на графический интерфейс
Linux, Windows, MacOS, BSD, Android, iOS,
QNX…

29.

Многозадачность
Многозадачность, типы, потоки и
процессы, механизмы синхронизации:
мьютекс, семафор, барьер, IPC

30.

Многозадачность
Одновременное выполнение нескольких
подпрограмм (потоков)
ОС сама переключает подпрограммы
вытесняющая: ОС не ждёт завершения подпрограммы
невытесняющая: ОС ждёт завершения подпрограммы
Поток 1
Поток 1
Поток 2
Планировщик задач

31.

Многозадачность
Вытесняющая многозадачность
планировщик
вызывается по прерыванию таймера
одна «повисшая» задача не останавливает
остальные
повышенный расход энергии
Невытесняющая многозадачность (ticklessсистема)
планировщик
вызывается по окончанию
очередной задачи
одна «повисшая» задача блокирует остальные
пониженный расход энергии

32.

Потоки и процессы
Процесс – выполняется в отдельном виртуальном адресном
пространстве, подвержен диспетчеризации и имеет приоритет
исполнения. Для обмена информацией между процессами
необходимо использовать механизмы IPC
Поток – выполняется в общем адресном пространстве процесса
и, в некоторых ОС, может иметь приоритет исполнения. Для
контроля доступа к общей памяти необходимо использовать
примитивы синхронизации – мьютексы, семафоры, барьеры.
Можно также использовать механизмы IPC.

33.

Механизмы синхронизации
При работе с общей памятью из разных потоков необходимо
использовать механизмы синхронизации.
Мьютекс (Mutex = mutual exclusion) – обеспечивает доступ только
одного потока к критическому участку кода; остальные потоки ждут
освобождения мьютекса, а потом получают монопольный доступ к
критическому участку, в соответствии со своим приоритетом.
Семафор – атомарный счетчик, над которым можно выполнять две
операции: уменьшение на 1 (захват) и увеличение на 1
(освобождение). При попытке уменьшения семафора, значение
которого равно нулю, задача, запросившая данное действие, должна
блокироваться до тех пор, пока не станет возможным уменьшение
значения семафора до неотрицательного значения, то есть пока
другой процесс не увеличит значение семафора.
Барьер –механизм синхронизации критических точек у группы задач.
Задачи могут пройти через барьер только все сразу. Перед входом в
критические точки задачи группы должны блокироваться, пока входа
в критическую точку не достигнет последняя задача из группы. Как
только все задачи окажутся перед входом в свои критические точки,
они должны продолжить своё исполнение

34.

Mutex

35.

Семафор

36.

Барьер

37.

IPC
Межпроцессное взаимодействие (inter-process communication,
IPC) — обмен данными между потоками одного или разных
процессов. Реализуется посредством механизмов,
предоставляемых ядром ОС или процессом, использующим
механизмы ОС и реализующим новые возможности IPC. Может
осуществляться как на одном компьютере, так и между
несколькими компьютерами сети.
Файл (большинство ОС)
Сокет (большинство ОС)
Сигнал (большинство ОС, но не Windows)
Канал (POSIX)
Разделяемая память (POSIX)
Файл, проецируемый в память (POSIX, Windows)
Очередь сообщений (большинство ОС)

38.

Таймеры
Принцип устройства таймера, работа с
датой и временем

39.

Таймеры ОС
Аппаратные таймеры
ограниченное число таймеров
всего два программируемых события (будильника) на один
таймер
ограниченная глубина счёта таймера
Таймер в ОС — это программный модуль
использует всего 1 аппаратный таймер (обычно, самый
большой из доступных – 32 бита)
ведёт список всех запланированных задач
ставит будильник на ближайшую задачу
по срабатыванию – рассчитывает время до следующей
задачи
переставляет будильник на следующую задачу
фиксирует моменты переполнения таймера и корректно их
обрабатывает

40.

Работа со временем в ОС
Аппаратно время отсчитывается RTC (realtime clock)
В настольных компьютерах размещены на материнской
плате
Микросхема счета
Кварцевый резонатор
Батарейка
Любая ОС предоставляет функции для работы с датой
Обычно дата представлена в UNIX-time
количество секунд, прошедших с полуночи (00:00:00 UTC) 1
января 1970 года («эпоха Unix»)
Любая ОС предоставляет функции для замораживания
(ожидания таймера или события) потоков и процессов.
Исполнение замороженного процесса откладывается
планировщиком до таймаута

41.

Следующая лекция
API Windows и Linux:
Работа с потоками и процессами
Работа с таймерами и временем
Средства IPC
Средства кроссплатформенной разработки
приложений
Не переключайтесь…
English     Русский Правила