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

Автор: Пользователь скрыл имя, 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 Кб (Скачать)

 

В таблице 2.2 предлагается перечень основных системных вызовов ОС для управления процессами.

Таблица 2.2

Название вызова

Параметры

Возвращаемый результат

Описание

FindPName

pname

true/false

Проверка существования процесса

KillP

PID

отсутствует

Уничтожение процесса

DoP

PID

отсутствует

Перевод процесса в состояние выполнения

WaitP

PID

отсутствует

Перевод процесса в состояние ожидания

ReadyP

PID

отсутствует

Перевод процесса в состояние готовности

CheckRes

Res

true/false

Проверка занятости ресурса для запуска процесса


 

Продолжение таблицы 2.2

 

PIPE

 

fd

 

fd[0], fd[1]

Возвращение дескрипторов чтения и записи (соответственно в fd [0] и fd [1]) для данного канала

POpen

name

0/-1

Создание именованного канала

DelPIPE

dscr

0/-1

Удаление именованного канала

WritePIPE

dscr, addr

0/-1

Записи в именованный канал

ReadPIPE

dscr, addr

0/-1

Чтение с именованного канала

ShmGet

size

addr/-1

Создание новой области памяти, распределяется

 

ShmAt

 

id, addr

 

addr/-1

Присоединение области памяти, распределяется в виртуальное адресное пространство процесса


 

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

 

В многозадачной компьютерной системе процессы могут находиться в разных состояниях, которые показаны на рисунке 2.1. Как видно, некоторые процессы сохраняются в памяти, а другие — в виртуальной памяти.

Рисунок 2.1 - Диаграмма состояний процесса

 

Когда процесс создается впервые, он попадает в положение «создан» или «новый». В этом состоянии он ожидает входа в состояние «готов». В таком состоянии процесс может быть воспринят или отложен долгосрочным планировщиком.

«Готов» процесс уже загружен в оперативную память и ожидает выполнения центральным процессором (контекстное переключение будет осуществлено диспетчером или краткосрочным планировщиком).

«Запущенный» есть тот процесс, который в данный момент выполняется центральным процессором. Если процесс исчерпает отведенный ему интервал времени, операционная система переключит контекст процесса снова в состояние «готов». Переключение контекста также может произойти когда процесс завершится или когда от будет блокирован требуя некоторого ресурса (например ввода / вывода) и тогда он будет перемещен в положение «блокирован».

Если процесс «блокируется» на ресурсе (файле, семафоре, устройстве и т.п.), он будет отстранен от процессора (поскольку процесс не может продолжать исполнение) и переведен в блокированное состояние. Процесс будет оставаться «заблокированным» пока соответствующий ресурс не станет доступен. О разблокировании ресурса сообщает операционная система (о доступности ресурса сама операционная система сообщается с помощью прерывания). Только операционная система узнает, что процесс разблокирован, он переводится в состояние «готов», с которого он может быть переведен в состояние «исполняемый», в котором он сможет использовать заново доступный ресурс.

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

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

Процессы, которые являются заблокированными, могут также быть выгружены. В этом случае процесс «заблокирован и ожидающий» и может быть выгружен в тех же случаях, что и «выгружен и ожидающий» процесс (хотя в этом случае процесс будет в блокированном состоянии и может все еще ожидать, пока ресурс станет доступным).

 

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

 

Приоритет – это параметр, который характеризует степень привилегированности процесса при использовании ресурсов вычислительной машины, в частности, процессорного времени: чем высший приоритет (низшее значение приоритету), тем выше привилегии.

В проектируемой системе необходимо реализовать абсолютные и статические приоритеты.

Появление процесса с высшим абсолютным приоритетом при отсутствии свободных ресурсов приводит к захвату ресурсов у менее приоритетных процессов. Например, вытеснение менее приоритетного процесса на процессоре из оперативной памяти во внешнюю.

Статический приоритет – это приоритет, который не изменяется за весь жизненный цикл, он не изменяет свои значения по ходу выполнения процессов. Такой приоритет устанавливается и изменятся только пользователем. Статические приоритеты система только учитывает в своей работе

 

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

 

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

Принцип приоритетного обслуживания такой: каждый процесс имеет приоритет (в данном случае абсолютный), характеризующий степень привилегированности при использовании ресурсов.

Выбор процесса на выполнение осуществляется из очереди готовых процессов (выбирается процесс с наивысшим приоритетом). Время выполнения процесса равна его CPU burst (необходимое время выполнения), однако процесс с относительным приоритетом может покинуть процессор, если в очереди готовых процессов появился процесс с абсолютным приоритетом.

входная информация: отсутствует

исходная информация: отсутствует

{

выполнять пока (не выбран один из процессов)

{

для (каждого процесса из очереди готовых к выполнению)

если есть возможность выбрать процесс с абсолютным приоритетом;

иначе выбрать процесс с наибольшим приоритетом;

если (один из процессов не может быть избран для выполнения)

приостановить машину;

/* Машина выходит из  состояния простоя по прерыванию

если в очереди появляется процесс с абсолютным приоритетом то

приостановить выбранный приоритет */

}

удалить выбранный процесс из очереди готовых процессов;

}

Рисунок 2.2 - Алгоритм работы планировщика процессов

 

Пусть в очередь процессов, находящихся в состоянии готовность, поступают процессы и им присвоены приоритеты (таблица 2.3).

Таблица 2.3

Процесс

Время появления в очереди

Продолжительность процесса

Приоритет

p0

0

5

4

p1

2

2

3

p2

7

7

2

p3

0

5

1


Во всех наших примерах мы будем предполагать, что большее значение соответствует меньшему приоритету, т. е. наиболее приоритетным в нашем примере является процесс p3, а наименее приоритетным – процесс p0. Первым начнет исполняться процесс p3, а по его окончании – процесс p1. Однако в момент времени t = 7 он будет вытеснен процессом p2 и продолжит свое выполнение только в момент времени t = 14. Последним будет исполняться процесс p0. Пример предоставления процессора процессам в случае вытесняющего приоритетного планирования отображено в таблице 2.4.

Таблица 2.4.

Время

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

p0

Г

Г

Г

Г

Г

Г

Г

Г

Г

Г

Г

Г

Г

Г

И

И

И

И

И

p1

   

Г

Г

Г

И

Г

Г

Г

Г

Г

Г

Г

И

         

p2

           

И

И

И

И

И

И

И

           

p3

И

И

И

И

И

                           

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

 

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

 

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

 

2.6.1 Каналы, именованные каналы

 

Программный канал в операционных системах представляет собой одно из средств взаимодействия между процессами с ограниченным объемом. Каналы позволяют передавать данные между процессами в порядке поступления FIFO («первым пришел — первым ушел»), а также синхронизировать выполнение процессов. Их использование дает процессам возможность взаимодействия между собой даже в случае, когда неизвестный процесс на другом конце канала. Традиционная реализация каналов использует файловую систему для хранения данных. Различают два вида каналов: именованные каналы и неименованные каналы, которые идентичны между собой во всем, кроме способа первоначального обращения к ним процессов. Для именованных каналов процессы используют системную функцию open, а неименованные используют pipe. Впоследствии, при работе с каналами процессы пользуются обычными системными функциями для файлов, такими как read, write и close. Разделять доступ к неименованным каналам могут только связанные процессы, которые являются потомками того процесса, который вызвал функцию pipe. Алгоритм реализации функции создания неименованного канала представлен на рисунке 2.3.

pipe (int w, int r)

{

i = 0; j = 0;

пока (i <количество процессов)

{

если (process [i]. pid == w)

{

j = 0;

пока (j <количество процессов)

{

если (process [j]. ppid == process [i]. pid && process [j]. pid == r)

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