
- •Конспект лекций по курсу «Операционные системы», (1 семестр , часть 1)
- •Занятие 1.Введение
- •Занятие 2.Прерывания, многозадачность
- •Занятие 3.Работа с памятью
- •Занятие 4.Процессы
- •Занятие 5.Потоки. Многопроцессорные системы
- •Занятие 6.Микроядро.
- •Занятие 7.Устройства ввода-вывода. Dma.
- •Занятие 8.Буферизация операций ввода-вывода
- •Циклическая буферизация
- •Занятие 9.Структура hdd.
- •Занятие 10.Файловая система
- •Смешанный – состоят из записей разной длины с разным количеством полей:
- •Последовательный – состоит из записей одинаковой длины с одинаковым количеством и размеров полей.
- •Непрерывный
- •Цепочечный
- •Индексированный
- •Битовые таблицы ( маска)
- •Список свободных блоков
- •Цепочки свободных блоков
- •Индексирование
- •Занятие 11. Инсталяция windows
- •Запуск инсталляции
- •Занятие 12.Загрузка windows
- •Занятие 13.Загрузочный файл boot.Ini
- •Загрузочные файлы
- •Файл Boot.Ini
- •Занятие 14.Диск аварийного восстановления
- •Занятие 15.Консоль восстановления
- •Консоль восстановления
- •Занятие 16.Адресация и доступ к разным типам памяти
- •Основная и верхняя память.
- •Менеджеры памяти
Занятие 5.Потоки. Многопроцессорные системы
Потоки
Во многих процессах встречается ситуация, когда процесс может быть разделен на несколько независимо работающих частей. Например, в издательской системе длительные операции ( печать, обработка графических данных ...) могут выполняться отдельно от приема данных от пользователя ( набор текста, работа с мышью...). Однако, если эти действия находятся в одном процессе, то они выполняются последовательно одно за другим и в этом случае процесс печати остановит работу пользователя – он не сможет работать в это время ни с клавиатурой, ни с мышью, хотя процессор в это время не занят( печать выполняет само устройство принтера). Если разделить эти действия в виде двух разных процессов, то для каждого из них будет отведена своя область памяти и один процесс не сможет использовать данные другого процесса. А если оба процесса должны использовать одни и те же данные, а разделить на параллельное выполнение нужно только действия? Если команды процесса разделить так, чтобы они работали отдельно, но использовали одну область памяти с данными в рамках одного процесса, то такое разделение называется разделением процесса на потоки. Один поток – это команды печати, а другой поток – это команды ввода данных пользователем. Однако оба эти потока – это все один процесс и они используют одну область памяти, отведенную для всего процесса и пользуются одними и теми же данными из этой области. Управлением потоками в этом случае может заниматься либо сама Ос либо процесс пользователя.
Потоки на уровне пользователя и на уровне ядра
Разделение на потоки может выполняться самой программой пользователя и при этом ядро ОС не подозревает об этом делении и продолжает работать с процессом как с одним целым. При таком делении о параллельном выполнении потоков должен позаботиться сам программист и распланировать синхронизацию потоков. Синхронизация потоков выполняется за счет передачи сигналов между потоками о выполнении каких-либо операций, которые могут повлиять на выполнение другого потока, ведь все потоки в рамках одного процесса используют данные из одного раздела памяти. Преимуществами такого деления являются: - малые затраты времени на переключение между потоками т.к. все они выполняются в одной области памяти и не нужны затраты на переключение в режим ядра и обратно. - управление потоками выполняется согласно специфике приложения и может быть оптимально продумано - применимо для любой ОС без внесения в нее изменений
Разделение на потоки может выполнять само ядро ОС. В этом случае за их переключением и синхронизацией следит сама ОС. Это облегчает работу программистов, но увеличивает время на переключение между потоками.
Многопроцессорные системы
В системах, работающих с несколькими процессорами, выделяются 2 архитектуры:
1) с ведущим и ведомым процессорами : один процессор является ведущим т.е. он работает в режиме ядра ОС и выполняет планирование процессов и потоков, а другие процессора выполняют пользовательские программы и утилиты ОС. Недостаток – если выходит из строя ведущий процессор, то вся система останавливает работу.
2) симметричная многопроцессорность: ядро и пользовательские процессы выполняются на любом процессоре. При этом все процессоры равномерно загружены и, в случае отказа одного процессора, все процессы выполняются на оставшихся, без останова работы системы.
При многопроцессорной системе потоки могут выполняться параллельно на разных процессорах
Вопросы на повторение:
Чем поток отличается от процесса. Принцип управления потоками на уровне пользователя, его преимущества и недостатки
В чем различие использования оперативной памяти потоками и процессами. Принцип управления потоками на уровне ядра, его преимущества и недостатки
Принцип многопроцессорности с ведущим и ведомым процессорами
Принцип работы симметричной многопроцессорности