- •2 Теоретические вопросы кузнецов д.Б
- •1. Основные команды oc unix.
- •2.Команды для работы с текстовыми файлами
- •3.Тестирующие команды и работы с переменными
- •2. Поддержка многонитевого программирования.
- •3. Сокеты. Системные вызовы для работы с сокетами. Установка tcp-сединения.
- •4. Управление вводом-выводом, драйверы. Алгоритм обработки прерываний обращений к устройствам.
- •5. Диспетчеризация процессов. Алгоритмы планирования.
- •6. Взаимодействие процессов. Сигналы, именованные и неименованные каналы, ipc, сокеты.
- •7. Виды файловых систем. Типовые структуры каталогов в ос unix и Windows.
- •8. Средства разработки программ. Компилятор, средства разработки и отладки программ.
- •9. Системные вызовы для управления файлами. Открытие, чтение, запись, позиционирование, управление дескрипторами.
- •10. Назначение, функции, классификация операционных систем.
- •11. Пользовательский интерфейс операционной среды. Shell. Режимы командной строки и интерпретации программ.
- •12. Архитектура операционных систем. Понятие ядра и процесса. Состояния и контекст процесса.
- •13. Управление памятью в многозадачной операционной системе. Свопинг и подкачка по запросу.
- •14. Трансляторы. Структура компилятора. Лексический, синтаксический и семантический анализ.
- •15. Стандартный ввод-вывод. Переопределение стандартного ввода-вывода в Shell. Выполнение команд в конвеере.
4. Управление вводом-выводом, драйверы. Алгоритм обработки прерываний обращений к устройствам.
Управление вводом-выводом
Одной из главных функций ОС является управление всеми устройствами ввода-вывода компьютера. ОС должна передавать устройствам команды, перехватывать прерывания и обрабатывать ошибки; она также должна обеспечивать интерфейс между устройствами и остальной частью системы.
Устройства ввода-вывода делятся на два типа: блок-ориентированные устройства и байт-ориентированные устройства. Блок-ориентированные устройства хранят информацию в блоках фиксированного размера, каждый из которых имеет свой собственный адрес. Самое распространенное блок-ориентированное устройство - диск. Байт-ориентированные устройства не адресуемы и не позволяют производить операцию поиска, они генерируют или потребляют последовательность байтов. Примерами являются терминалы, строчные принтеры, сетевые адаптеры. Однако некоторые внешние устройства не относятся ни к одному классу, например, часы, которые, с одной стороны, не адресуемы, а с другой стороны, не порождают потока байтов. Это устройство только выдает сигнал прерывания в некоторые моменты времени.
О
рганизация
программного обеспечения ввода-вывода
Основная идея организации программного обеспечения ввода-вывода состоит в разбиении его на несколько уровней, причем нижние уровни обеспечивают экранирование особенностей аппаратуры от верхних, а те, в свою очередь, обеспечивают удобный интерфейс для пользователей.
Ключевым принципом является независимость от устройств.
Вид программы не должен зависеть от того, читает ли она данные с гибкого диска или с жесткого диска.
важным вопросом для программного обеспечения ввода-вывода является обработка ошибок, использование блокирующих (синхронных) и неблокирующих (асинхронных) передач, одни устройства являются разделяемыми, а другие - выделенными.
Для решения поставленных проблем целесообразно разделить программное обеспечение ввода-вывода на четыре слоя: 1. Обработка прерываний, 2. Драйверы устройств, 3. Независимый от устройств слой операционной системы, 4. Пользовательский слой программного обеспечения.
Обработка прерываний
Прерывания должны быть скрыты как можно глубже в недрах операционной системы, чтобы как можно меньшая часть ОС имела с ними дело. Наилучший способ состоит в разрешении процессу, инициировавшему операцию ввода-вывода, блокировать себя до завершения операции и наступления прерывания. Процесс может блокировать себя, используя, например, вызов DOWN для семафора, или вызов WAIT для переменной условия, или вызов RECEIVE для ожидания сообщения. При наступлении прерывания процедура обработки прерывания выполняет разблокирование процесса, инициировавшего операцию ввода-вывода, используя вызовы UP, SIGNAL или посылая процессу сообщение. В любом случае эффект от прерывания будет состоять в том, что ранее заблокированный процесс теперь продолжит свое выполнение.
Драйверы устройств
Весь зависимый от устройства код помещается в драйвер устройства. Драйвер устройства принимает запрос от устройств программного слоя и решает, как его выполнить. Типичным запросом является чтение n блоков данных. Если драйвер был свободен во время поступления запроса, то он начинает выполнять запрос немедленно. Если же он был занят обслуживанием другого запроса, то вновь поступивший запрос присоединяется к очереди уже имеющихся запросов, и он будет выполнен, когда наступит его очередь.
Блочные драйверы предназначаются для обслуживания внешних устройств с блочной структурой (магнитных дисков, лент и т.д.) и отличаются от прочих тем, что они разрабатываются и выполняются с использованием системной буферизации. Другими словами, такие драйверы всегда работают через системный буферный пул.
Символьные драйверы главным образом предназначены для обслуживания устройств, обмены с которыми выполняются посимвольно, либо строками символов переменного размера.
Спецификой потоковых драйверов является то, что большая часть программного кода не зависит от особенностей аппаратного устройства.
