- •1. Понятие ос
- •2. Функции ос
- •3. Классификация ос
- •4. Загрузка программ
- •5. Управление оперативной памятью
- •6. Открытая память
- •7. Алгоритмы динамического управления памятью
- •8. Системы с базовой виртуальной адресацией
- •9. Сегментная и страничная виртуальная память
- •10. Страничный обмен
- •11. Параллельное и псевдопараллельное исполнение (планировщик)
- •12. Методы синхронизации при параллельной работе
- •13. Прерывания, сигналы и семафоры
- •14. Блокировка участков файлов
- •15. Гармонически взаимодействующие последовательные процессы
- •16. Межзадачное взаимодействие
- •17. Средства для гармонического межпроцессного взаимодействия
- •18. Трубы. Линки
- •19. Системы управляемые событиями
- •20. Многопроцессность на однопроцессных компьютерах
- •21. Кооперативная многопроцессность и вытесняющая многопроцессность
- •22. Планировщики с приоритетом
- •23. Монолитные системы и системы с микроядром
- •24. Драйверы внешних устройств и функции драйверов
- •25. Синхронный ввод/вывод в однозадачных и многозадачных системах
- •26. Асинхронный ввод/вывод
- •27. Дисковый кэш и спулинг
- •28. Файловые системы
- •29. Структуры файловых систем
- •30. Устойчивость фс к сбоям
- •31. Безопасность. Идентификация пользователя. Права доступа
- •32. Защита оперативной памяти. Кольца защиты
- •33. Взаимно недоверяющие подсистемы
- •34. Пользовательский интерфейс
- •35. Определение операционной системы
- •37. Структура сетевой ос (одноранговые, с выделенными серверами, для рабочих групп и ос для сетей масштаба предприятия)
- •38. Управление процессами (состояние, контекст и дескриптор процесса)
- •39. Алгоритмы планирования процессов (вытесняющие и невытесняющие)
- •40. Средства синхронизации и взаимодействия процессов. Нити исполнения
- •41. Управление памятью. Типы адресов
- •42. Методы распределения памяти без использования дискового пространства (разделы фиксированные, переменной величины и перемещаемые)
- •43. Методы распределения памяти с использованием дискового пространства (виртуальная память, страничное, сегметное, странично-сегментное распределение)
- •44. Иерархия запоминающих устройств (может быть исключён). Принцип кэширования данных
- •45. Аппаратная поддержка управления памятью и многозадачной среды
- •46. Средства поддержки сегментации памяти
- •47. Управление вводом-выводом. Физическая организация устройств ввода-вывода
- •48. Обработка прерываний. Драйверы устройств
- •49. Управление вводом-выводом. Независимый от устройств слой операционной системы
- •50. Пользовательский слой программного обеспечения
- •51. Фс. Имена файлов. Типы файлов.
- •52. Фс. Логическая и физическая организация файлов
- •53. Современные архитектуры фс (Олифер)
- •54. Фс. Отображаемые в память файлы
- •55. Управление распределёнными ресурсами. Способы адресации
- •56. Базовые примитивы передачи сообщений в распределённых системах
- •57. Синхронизация в распределённых системах. Логические часы. Взаимные исключения. Неделимые транзакции
- •58. Процессы и нити в распределённых системах. Понятие нити. Вопросы реализации нитей.
- •59. Распределённые фс. Интерфейсы файлового сервиса и сервиса каталогов
- •60. Распределённые фс. Семантика разделения файлов. Вопросы разработки структуры фс.
- •61. Распределённые фс. Кэширование. Репликация
- •1. Сквозная запись.
- •62. Основные подходы к реализации взаимодействия в гетерогенных сетях
- •63. Шлюзы. Мультиплексирование стеков протоколов в гетерогенных сетях
- •66. Расширяемость, переносимость, совместимость и безопасность современных ос
- •67. Структура ос: монолитные системы, многоуровневые системы
- •68. Структура ос: модели клиент-сервер и микроядра
- •69. Структура ос: объектно-ориентированный подход
- •70. Структура ос: множественные прикладные среды
17. Средства для гармонического межпроцессного взаимодействия
Ряд систем предоставляет простые в использовании средства, предоставляющие обмен данных одновременно с синхронизацией. Одним из наиболее типичных средств такого рода является труба (pipe) или программный канал - основное средство взаимодействия между процессами в ОС семейства Unix.
Трубы
Труба представляет собой поток байтов. С одного конца в этот поток можно записывать данные, из другого - считывать. Процесс, который пытается считать данные из пустой трубы, будет задержан, пока там не появятся данные. Напротив, пишущий процесс может записать в трубу некоторое количество данных,прежде чем труба заполнится и дальнейшая запись будет заблокирована. На практике труба реализована в виде небольшого (несколько килобайт) кольцевого буфера. Пишущий процесс заполняет этот буфер, пока там есть место. Читающий процесс считывает данные, пока буфер не опустеет.
Линки
В транспьютерах микропрограммно реализованы линки (links — связь): механизм, отчасти похожий на трубы.
Линки бывают двух типов - физические и логические. Операции над линками обоих типов осуществляются одними и теми же командами.
Физический линк — это последовательный интерфейс RS432, реализованный на кристалле процессора.
Современные транспьютеры имеют четыре физических линка. Физические линки могут использоваться как для соединения транспьютеров между собой, так и для подключения внешних устройств. Физический линк может использоваться как для связи между процессами на разных транспьютерах, так и для синхронизации процесса с внешними событиями, и даже просто для ввода/вывода.
Логический линк - это структура данных, выделенная в физическом адресном пространстве процессора. С точки зрения программы физический и логический линки ничем не отличаются, кроме того, что описатель физического линка привязан к определенному физическому адресу. Логический линк может использоваться только для связи между процессами,исполняющимися на одном транспьютере.
18. Трубы. Линки
Трубы
Труба представляет собой поток байтов. С одного конца в этот поток можно записывать данные, из другого - считывать. Процесс, который пытается считать данные из пустой трубы, будет задержан, пока там не появятся данные. Напротив, пишущий процесс может записать в трубу некоторое количество данных,прежде чем труба заполнится и дальнейшая запись будет заблокирована. На практике труба реализована в виде небольшого (несколько килобайт) кольцевого буфера. Пишущий процесс заполняет этот буфер, пока там есть место. Читающий процесс считывает данные, пока буфер не опустеет.
Читающий процесс может проверить наличие данных в трубе и предпринять какие-то действия в случае их отсутствия. Пишущий процесс также может проверять трубу на переполнение.
Самым интересным свойством трубы является то, что чтение данных из трубы и запись в нее осуществляется теми же самыми системными вызовами read и write, что и работа с обычным файлом или внешним устройством типа терминала. На этом основана техника переназначения ввода-вывода, широко используемая в командных интерпретаторах UNIX.Эта техника состоит в том, что большинство системных утилит получаютданные из потока стандартного ввода (stdin) и выдают их в поток стандартного вывода (stdout).
Линки
В транспьютерах микропрограммно реализованы линки (links — связь): механизм, отчасти похожий на трубы.
Линки бывают двух типов - физические и логические. Операции над линками обоих типов осуществляются одними и теми же командами.
Физический линк — это последовательный интерфейс RS432, реализованный на кристалле процессора.
Современные транспьютеры имеют четыре физических линка. Физические линки могут использоваться как для соединения транспьютеров между собой, так и для подключения внешних устройств. Физический линк может использоваться как для связи между процессами на разных транспьютерах, так и для синхронизации процесса с внешними событиями, и даже просто для ввода/вывода.
Логический линк - это структура данных, выделенная в физическом адресном пространстве процессора. С точки зрения программы физический и логический линки ничем не отличаются, кроме того, что описатель физического линка привязан к определенному физическому адресу. Логический линк может использоваться только для связи между процессами,исполняющимися на одном транспьютере.
При передаче данных в линк, процесс должен исполнить команду out. Эта команда имеет три операнда: адрес линка, адрес массива данных и количество данных. Процесс, исполнивший такую команду,задерживается до тех пор, пока все данные не будут переданы.
Аналогично, при приеме данных из линка, процесс должен исполнить команду in. Эта команда также имеет три операнда - адрес линка, адрес буфера, куда необходимо поместить данные и размер буфера. При исполнении такой команды процесс блокируется до тех пор, пока буфер не будет заполнен данными. При этом приемник и передатчик могут использовать буфера разного размера.
Слово, связанное с линком, содержит указатель на дескриптор процесса,ожидающего на линке. Это слово может принимать значение NotProcessP, указывающее, что линка никто не ждет.
Направление передачи данных определяется командой, которую исполнит очередной процесс пpи обращении к этому линку. Если мы имеем более двух пpоцессов, пытающихся использовать один линк, то возникает сеpьезная пpоблема: если пpоцесс попытается записать данные в линк, на котоpом кто-то уже ожидает записи, то данные втоpого пpоцесса будут записаны повеpх данных ожидавшего. Если pазмеpы буфеpов совпадут, то ожидавший пpоцесс будет уверен, что он успешно пеpедал все данные. Поэтому линки pекомендуется использовать только для однонапpавленной пеpедачи данных между двумя пpоцессами.
При работе с физическим линком данные не копируются, а передаются илипринимаются через физический канал в режиме прямого доступа к памяти.
В отличие от труб, линк не содержит внутреннего буфера. Это означает,что передающий процесс по окончании передачи может быть уверен, что данные получены (если не пpоизошло описанного выше конфликта). Поэтому линки можно использовать как средство синхронизации двух процессов. С другой стороны, по линку нельзя передавать данные по принципу «выстрелил и забыл», как это часто делают с трубами.
Имитацию трубы можно реализовать при помощи двух линков и буферного процесса.
Напротив, реализовать имитацию линка при помощи труб невозможно из-за наличия буфера и соответствующей невозможности использовать трубы для синхронизации. В этом смысле линк является средством более низкого уровня, чем труба.