
- •1. Задачи и функции операционной системы компьютера. Классификация ос. Основные современные ос.
- •2, 4. Архитектура современных ос. Структура ос unix.
- •3. Архитектура современных ос. Структура ос Windows nt.
- •4. Архитектура современных ос. Системы с монолитным (макро-) ядром и с микроядром.
- •5. Архитектура современных ос. Ос с множественными интерфейсами прикладных программ на примере ос Windows nt.
- •6. Процессы и потоки в ос. Понятие процесса. Атрибуты процесса. Создание нового процесса в различных ос.
- •7, 6. Процессы и потоки в ос. Понятие процесса. Жизненный цикл процесса. Различные состояния процесса.
- •8. Процессы и потоки в ос. Понятие нити (thread). Основные отличия нити от процесса.
- •9, 11, 12. Процессы и потоки в ос. Необходимость синхронизации при работе с общими ресурсами. Способы синхронизации.
- •10. Механизмы синхронизации. Понятие семафора (semaphore) и основные операции с ним. Двоичный семафор.
- •11. Механизмы синхронизации. Понятие мьютекса (mutex) и основные операции с ним. Пример использования мьютекса для синхронизации нитей.
- •12. Механизмы синхронизации. Сравнение мьютекса и двоичного семафора.
- •13. Управление оперативной памятью. Способы защиты оперативной памяти процесса от случайного или злонамеренного вторжения из другого процесса. Сегментная организация памяти. Виртуальная память.
- •14, 13, 15. Управление оперативной памятью. Понятие виртуальной памяти. Поддержка вп со стороны процессора (на примере процессора Intel x86). Перевод виртуального адреса в адрес реальной памяти.
- •15. Управление оперативной памятью в современных ос. Виртуальная память процесса и ее отображение в реальную оперативную память компьютера. Файл подкачки.
- •16. Цели и задачи файловой системы ос. Многоуровневая организация файловой системы. Логическая и физическая фс.
- •17. Управление виртуальной памятью в современных ос. Алгоритмы подкачки и вытеснения.
- •18. Логическая файловая система ос Windows nt.
- •19. Логическая файловая система ос unix.
- •20. Физическая организация файловой системы. Файловая система fat.
- •21. Физическая организация файловой системы. Файловая система System V (s5fs).
- •22. Физическая организация файловой системы. Файловая система ntfs.
- •23. Управление вводом/выводом. Понятие аппаратного прерывания и его обработка.
- •24. Управление вводом/выводом. Синхронный и асинхронный ввод/вывод.
- •25. Управление безопасностью. Пользователь, его атрибуты и права доступа.
- •26. Управление безопасностью. Задача администрирования вычислительной системы и компьютерной сети.
- •27. Управление доступом к файлам в ос unix.
- •28. Управление доступом к файлам в ос Windows nt. Списки прав доступа.
- •29. Язык программирования Java. Виртуальная машина Java. Технология Java.
- •30. Платформа .Net. Основные идеи и положения. Языки программирования .Net.
- •31. Функциональные компоненты ос. Управление файлами
- •32. Функциональные компоненты ос. Управление процессами.
- •33. Функциональные компоненты ос. Безопасность и защита данныx.
- •34. Функциональные компоненты ос. Пользовательский интерфейс.
- •35. Функциональные компоненты ос. Управление оперативной памятью.
- •36. Компьютерные сети. Сетевые ос и их задачи.
- •37. Компьютерные сети. Протоколы tcp/ip. Интернет.
- •38. Переносимость программного обеспечения. Стандарты операционных систем.
- •1. Стандарт cp/m
- •2. Операционные системы типа dos
- •3. Стандарт msx
- •4. Операционные системы, основанные на графическом интерфейсе
- •6. Операционные системы семейства unix
7, 6. Процессы и потоки в ос. Понятие процесса. Жизненный цикл процесса. Различные состояния процесса.
Состояния процесса:
1. Готовый к работе. 2. Ожидающий (#: не может работать пока, не случится к.-л. событие). 3. Активный. 4. Завершенный (выполнен, но еще жив как процесс).
Жизненный цикл процесса:
#
ожидания: ожидание ввода данных.
[+ вопрос № 6.]
8. Процессы и потоки в ос. Понятие нити (thread). Основные отличия нити от процесса.
Нить (поток, поток выполнения, thread) — наименьшая единица обработки, исполнение которой может быть назначено ядром. Реализация нитей и процессов в разных ОСях отличается, но обычно нити находятся внутри процесса. * Здесь: нить = поток.
Любая нить состоит из 2 компонентов:
объекта ядра, через который ОС управляет нитью. Там же хранится статистическая информация о нити (доп. нити тоже создаются ядром);
стека нити, содержащего параметры всех функций и локальные переменные, необходимые нити для выполнения кода.
Процесс состоит хотя бы из одной нити. В ОС каждому процессу соответствует адресное пространство и одна управляющая нить.
Процессы используются для группирования ресурсов, а нити являются объектами, поочередно исполняющимися на ЦП.
Концепция нитей добавляет к модели процесса возможность одновременного выполнения в одной и той же среде процесса нескольких программ.
Главное отличие процессов от нитей состоит в том, что процессы изолированы друг от друга (используют разные адресные пространства), а нити могут использовать одно пространство (внутри процесса), не мешая при этом друг другу.
Итог:
Нить определяет последовательность исполнения кода в процессе.
Процесс ничего не исполняет, он просто служит контейнером потоков.
Нити всегда создаются в контексте какого-либо процесса, и вся их жизнь проходит только в его границах.
Нити могут исполнять один код, манипулировать одними данными, совместно использовать описатели объектов ядра (таблица описателей создается в процессах).
Нити расходуют меньше ресурсов, чем процессы.
9, 11, 12. Процессы и потоки в ос. Необходимость синхронизации при работе с общими ресурсами. Способы синхронизации.
В многопоточной среде часто возникают проблемы, связанные с использованием потоками одних данных или устройств. #: передача информации между процессами, контроль над деятельностью процессов (не пересекутся в критической ситуации, #: когда попытаются завладеть последним МБ памяти), согласование действий процессов. Для решения подобных проблем используются методы синхронизации потоков: [+ вопрос № 11.]
Мьютекс
(взаимоисключение, mutex)
— объект синхронизации, который
устанавливается в особое сигнальное
состояние, когда не занят потоком.
Только один поток владеет этим объектом
в любой момент времени, одновременный
доступ к общему ресурсу исключается.
После всех необходимых действий мьютекс
освобождается, предоставляя другим
потокам доступ к общему ресурсу.
Состояние описывается: владельцем и
кратностью (целое
).
Операции: Lock(), Unlock().
Достоинства: автоматическое освобождение
(если владелец «помер»), быстрее семафора.
Семафоры — доступные ресурсы, которые могут быть приобретены несколькими потоками в одно и то же время, пока «фонд» ресурсов не опустеет. Остальные потоки будут ждать, пока требуемое количество ресурсов не будет доступно. Семафоры очень эффективны, поскольку они позволяют одновременный доступ к ресурсам. Операции: dec, inc. Если семафор=0 и нужно dec, ставится в очередь и ожидается inc. Поставщик: while(true) { s1.dec(); putdata(); s2.inc(); }. Покупатель: while(true) {s2.dec(); getdata(); s1.inc(); }.
Событие — сообщение, возникающее в различных точках исполняемого кода при выполнении определённых условий.
Для решения поставленной задачи создаются обработчики событий: как только программа попадает в заданное состояние, происходит событие, посылается сообщение, а обработчик перехватывает это сообщение. В обработчик либо ничего не передаётся, либо передаётся ссылка на объект, породивший событие. В особых случаях в обработчик передаются значения некоторых переменных или ссылки на другие объекты, чтобы обработка данного события могла учесть контекст возникновения события.
Самое простое событие — сообщающее о начале или завершении к.-л. процедуры. Наиболее наглядно события представлены в пользовательском интерфейсе, когда каждое действие пользователя порождает цепочку событий, которые затем обрабатываются в приложении.
Событие — переход объекта из одного состояния в другое. Взаимодействие объектов осуществляется с помощью событий: изменение состояния одного объекта приводит к изменению состояния другого объекта, а событие оказывается средством связи между ними.
Активно используются в MS Windows (режимы пользователя и ядра), нет в UNIX (вместо них используются семафоры). Состояния: true / false, up / down. Операции: set() — установить в состояние true, reset() — сбросить, wait(), pulse() — делает up, пропускает очередь и затем сразу down.
Критическая секция — объект, контролируемый ОСью, находящийся внутри процесса. В Windows: критическая секция доступна в пределах процесса в отличие от мьютекса.
Состояния: занят / свободен. Операции: enter / leave. Вход / выход занимает меньше времени, чем у мьютекса (нет необходимости обращаться к ядру).
Часть программы, в которой есть обращение к совместно используемым данным, называется критической секцией.
Критическая секция помогает выделить участок кода, где нить получает доступ к разделяемому ресурсу, и предотвратить одновременное использование ресурса.