Проектирование гипотетической операционной системы

Автор: Пользователь скрыл имя, 23 Марта 2015 в 00:35, курсовая работа

Краткое описание

Операционная система — это первейшая и самая главная программа, благодаря которой становится возможным общение между компьютером и человеком. Операционная система управляет всеми подключенными к компьютеру устройствами, обеспечивая доступ к ним другим программам.

Оглавление

Техническое задание

1
Реферат

2
Введение

4
1 Структура проектируемой файловой системы

5
1.1 Общая организация файловой системы

5
1.2 Виртуальные страницы

10
1.3 Команды для работы с ФС

13
1.4 Системные вызовы для работы с ФС

14
1.5 Способы организации файлов

14
1.6 Алгоритмы работы некоторых системных вызовов ФС.

15
2 Процессы в ОС

16
2.1 Команды для работы с процессами

16
2.2 Системные вызовы управления процессами

16
2.3 Диаграмма состояний процесса

17
2.4 Приоритеты процессов

19
2.5 Выбор дисциплины обслуживания планировщика процессов. Алгоритм работы планировщика процессов.

19
2.6 Межпроцессное взаимодействие.

21
2.7 Свопинг процессов.

23
3 Режимы работы проектируемой ОС

29
3.1 Мультипрограммный режим работы ОС

29
3.2 Многопользовательская защита

30
3.3 Интерактивный режим работы ОС

31
3.4 Пакетный режим работы

31



4 Структура операционной системы

33
4.1 Общая структура проектируемой ОС.

33
4.2 Структура ядра проектируемой ОС.

36
4.3 Структура управляющих блоков базы данных ОС

36
4.4 Схема взаимодействия управляющих блоков базы данных операционной системы

37
Перечень ссылок

Файлы: 1 файл

Курсовая работа ТОС.doc

— 653.00 Кб (Скачать)

В качестве выходного устройства также с равным успехом может быть указан экран, файл на любом диске или принтер. Все проблемы, связанные с отличиями этих устройств, должна решать операционная система.

Тесно связан с концепцией независимости от устройств принцип единообразного именования. Имя файла или устройства должно быть просто текстовой строкой или целым числом и никоим образом не зависеть от физического устройства.

Другим важным аспектом программного обеспечения ввода-вывода является обработка ошибок. Ошибки должны обрабатываться как можно ближе к аппаратуре. Если контроллер обнаружил ошибку чтения, он должен попытаться по возможности исправить эту ошибку сам. Если он не может это сделать, тогда эту ошибку должен обработать драйвер устройства, возможно, попытавшись прочитать этот блок еще раз. Многие ошибки бывают временными, как, например, ошибки чтения, вызванные пылинками на читающих головках. Такие ошибки часто исчезают при повторной попытке чтения блока. Только если нижний уровень не может сам справиться с проблемой, о ней следует информировать верхний уровень. Во многих случаях восстановление после ошибок может осуществляться на нижнем уровне, прозрачно для верхних уровней, то есть так, что верхние уровни даже не будут знать о наличии ошибок.

Еще одним ключевым вопросом является способ переноса данных: синхронный (блокирующий) против асинхронного  (управляемого прерываниями). Большинство операций ввода-вывода на физическом уровне являются асинхронными — центральный процессор запускает перенос данных и отправляется заниматься чем-либо другим, пока не придет прерывание. Программы пользователя значительно легче написать, используя блокирующие операции ввода-вывода — после обращения к системному вызову read программа автоматически приостанавливается до тех пор, пока данные не появятся в буфере. Тем, чтобы операции ввода-вывода, в действительности являющиеся асинхронными, выглядели как блокирующие в программах пользователя, занимается операционная система.

Еще одним аспектом программного обеспечения ввода-вывода является буферизация. Часто данные, поступающие с устройства, не могут быть сохранены сразу там, куда они в конечном итоге направляются. Например, когда пакет приходит по сети, операционная система не знает, куда его поместить, пока не будет изучено его содержимое, для чего этот пакет нужно где-то временно сохранить. Кроме того, для многих устройств реального времени крайне важными оказываются параметры сроков поступления данных (например для устройств воспроизведения цифрового звука), поэтому полученные данные должны быть помещены в выходной буфер заранее, чтобы скорость, с которой эти данные получаются из буфера воспроизводящей программой, не зависела от скорости заполнения буфера. Таким образом удается избежать неравномерности воспроизведения звука. Буферизация включает копирование данных в значительных количествах, что часто является основным фактором снижения производительности операций ввода-вывода.

И последним понятием является понятие выделенных устройств и устройств коллективного использования. С некоторыми устройствами ввода-вывода, такими как диски, может одновременно работать большое количество пользователей. При этом не должно возникать проблем, если несколько пользователей на одном и том же диске одновременно откроют файлы. Другие устройства, такие как накопители на магнитной ленте, должны предоставляться в монопольное владение одному пользователю, пока он не завершит свою работу с этим устройством. После этого накопитель может быть предоставлен другому пользователю. Если два или более пользователей одновременно станут писать вперемешку блоки на одну ленту, то ничего хорошего не получится. Введение понятия выделенных (монопольно используемых) устройств также привносит целый спектр проблем, например, как взаимоблокировки. Тем не менее операционная система должна уметь управлять как устройствами общего доступа, так и выделенными устройствами, позволяя избегать различных потенциальных проблем.

Системные вызовы — это обращение к средствам ОС из выполняемых процессов. Эти средства ОС часто бывают скрыты от пользователей. Для обеспечения переносимости программ работа в среде языков программирования в некоторой степени инвариантна по отношению к текущей операционной системе. Однако реализация алгоритмического языка для определенной операционной системы использует системные вызовы. Системный вызов реализуется с помощью прерываний.

Для проектируемой ОС организуем все системные вызовы через 21h прерывание (для терминала и НМД). В регистре AH - задается № функции, в регистре Al - № подфункции. Передача дополнительных аргументов в системные функции оговаривается отдельно (таблица 4.1).

 

Таблица 4.1

Номер функции

Название обслуживания

Подфункции

10h

Сервис монитора (драйвер)

Al = 00h - вывод символа 

Al = 01h - установить позицию  курсора 

Al = 02h - считать позицию  курсора 

Al = 03h - прокрутить экран  вверх/вниз 

Al = 05h - вывести строку  на экран 

Al = 06 - очистить экран

12h

Работа с дисками (НМД)

Al = 00h – позиционирование головок

Al = 01h - чтение кластера 

Al = 02h - запись кластера 

Al = 03h - проверка кластера 

Al = 04h - чтение информации  о диске 

Al = 05h - определение свободного  мета на диске 

Al = 0Еh - форматирование дорожки 

Al = 0Fh - форматирование сектора


 

 

ПЕРЕЧЕНЬ ССЫЛОК

 

1. Таненбаум Э. «Современные  операционные системы» - «Питер», 2002 г. - 1040 с: ил.

2. Робачевский А. М., Операционная система Unix. - СПб.: BHV-Санкт-Петербург, 1998. -528 С., Ил.

3. http://uk.wikipedia.org/wiki/Виртуальная_память.

4. http://uk.wikipedia.org/wiki/Операційна_система.

5. http://uk.wikipedia.org/wiki/Пріоритет_процесів_в_UNIX.

6. THE DESIGN OF THE UNIX OPERATING SYSTEM by Maurice J. Bach (Перевод с английского к.т.н. Крюкова А.В.).

7. Кейслер С. Проектирование операционных систем для малых ЭВМ. М.: Мир, 1986.

8. Дейтел Х. М. Введение в операционные системы. В 2-х томах – М.: Мир, 1987.

 

 


Информация о работе Проектирование гипотетической операционной системы