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

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

Флаг «Системный»  0 – нормальный; 1- системный

Флаг «Архивный» - 0 – заархивирован; 1 – требуется архивация

Флаг ASCII/двоичный  - 0 – ASCII; 1- двоичный

Флаг произвольного доступа - 0 – только последовательный доступ; 1 – произвольный доступ

Флаг «временный» - 0 – нормальный, 1- для удаления файла по окончании процесса

Флаги блокировки - 0 – неблокированный; отличный от нуля для блокированного

 

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

 

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

Распределением памяти называется процесс размещения информации (блоков данных или команд) в запоминающем устройстве различных уровней для наиболее эффективного использования всей ёмкости памяти, рациональной организации вычислительного процесса и сокращения времени решения задачи. При работе в режиме мультипрограммирования статическое распределение памяти оказывается практически нереализуемым, так как программист не может заранее предусмотреть всех возможных ситуаций, возникающих при решении одновременно нескольких задач. Поэтому распределение памяти должно выполняться в самой ЭВМ автоматически в процессе исполнения программ. Такой метод называется динамическим распределением памяти. При этом во избежание случайного вторжения программой одной задачи в области памяти, занятые информацией, относящейся к другой задаче, предусматривается защита памяти, благодаря которой при попытке обращения к запрещенным блокам памяти происходит автоматическое прерывание программы. При динамическом распределении памяти внутренний обмен информацией между оперативной и внешней памятью удаётся организовать так, что пользователь (программист) как бы имеет в своём распоряжении одну оперативную память очень большой ёмкости, ограниченной только разрядностью адреса в команде. На самом деле эта память — виртуальная (кажущаяся), так как в любой данный момент времени только небольшая часть информации, содержащейся в виртуальной памяти, физически находится в оперативном запоминающем устройстве.

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

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

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

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

Для стратегий размещений выработано правило «Правило 50%». Оно предполагает, что система находится в равновесии, если запросы на распределение и освобождение сбалансированы между собой в течение заданного короткого промежутка времени. Иначе говоря, в системе из m слов с распределенными n сегментами будет примерно h пустых участков, где h равно n /2. Это следует из того факта, что для данного сегмента пространство, примыкающее к его правому краю, будет пустим в течение половины данного интервала времени и занятым сегментом в течение другой половины. Вероятность существования пустого участка есть р = 1/2; например, число сегментов, имеющих пустоту по своему правому краю, есть np = n/2 = h.

Результат применения этого правила вполне очевиден. Для сокращения времени работы алгоритма размещения мы должны сознательно смириться с присутствием в памяти пустых участков большой величины. Это увеличивает объем неиспользуемой памяти. Однако было рассчитано, что при сильном варьировании размеров пустых участков доля объем неиспользуемой памяти может быть уменьшена до 10%.

a) Алгоритм оптимального размещения.

Этот алгоритм пытается удовлетворить запрос, выделяя свободный участок минимально возможного размера. Создается и поддерживается список свободных участков, упорядоченный по их размерам. Менеджер памяти при получении запроса на свободное пространство просматривает список, подыскивая участок с минимальной величиной ОСТАТОК, вычисляемой следующим образом:

РАЗМЕР-УЧАСТКА — ТРЕБУЕМЬІЙ-РАЗМЕР —* ОСТАТОК

Здесь ОСТАТОК — это свободное пространство, остающееся после удовлетворения запроса. Идея алгоритма — минимизировать объем свободного пространства, остающегося после каждого распределения. В системах, осуществляющих деление свободных участков на части, ОСТАТОК сравнивается с некоторой пороговой величиной для принятия решения: производить такое разделение или нет.

б) Размещение по принципу «первый подходящий».

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

РАЗМЕР-УЧАСТКА> ТРЕБУЕМЬІЙ-РАЗМЕР

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

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

 

 

1.3 Команды для работы с файловой системой

 

В таблице 1.4 предлагается перечень основных команд для работы с файловой системой.

Таблица 1.4

Название команды

Параметры

Описание

1

2

3

CreateFile

name, data, rights, uid,

create_time, pdir_inode_number

Создание файла

CreateDirectory

name, data, rights, uid,

create_time, pdir_inode_number

Создание каталога

OpenTextFile

inode_number

Открытие файла

Paste

inode_number,

pdir_inode_number

Вставка вырезанного объекта

Rename

inode_number, new_name

Переименование объекта

DeleteDir

inode_number

Удаление каталога

DeleteFile

inode_number

Удаление файла

vdir

inode_number

Просмотр содержимого текущего каталога

vloc

dir_inode_number

Просмотр текущего местоположения

login

name_user

Вход в систему

logout

Выход из системы


 

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

 

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

Таблица 1.5

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

Параметры

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

Описание

CheckFreeSpace

size

true/false

Проверка возможности создания объекта (свободного места)

CheckReadRights

inode_number

true/false

Проверка прав на выполнение операции чтения

CheckWriteRights

inode_number

true/false

Проверка прав на выполнение операции записи / изменения

FindFreeInode

отсутствуют

inode_number

Поиск свободного i-узла

FindFreeBlocks

size

addr[]

Поиск свободных блоков

FindInDirectory

name, dir_inode_number

true/false

Проверка наличия объекта в каталоге


 

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

 

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

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

 

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

 

для i: = low (partition.ilist) .. high (partition.ilist) do

если partition.ilist [i]. is_free = true то

выйти из цикла;

Result: = i;


Рисунок 1.4 - Алгоритм поиска свободного i-узла

 

для i: = low (partition.ilist [dir_inode_number]. addr) ..

high (partition.ilist [dir_inode_number]. addr)

для j: = low (partition.data [partition.ilist [dir_inode_number]. addr [i]]. files) ..

high (partition.data [partition.ilist [dir_inode_number]. addr [i]]. files)

если

(Partition.data [partition.ilist [dir_inode_number]. Addr [i]]. Files [j]. Inode_number <> 0) и

(Partition.data [partition.ilist [dir_inode_number]. Addr [i]]. Files [j]. Filename = name), то

Result: = истина;

выйти из функции;

Result: = ложь;


Рисунок 1.5 - Алгоритм поиска файла в каталоге

 

если ((partition.superblock.free_block_count * (partition.superblock.block_size-2))> = size) и

(Size <10 * (partition.superblock.block_size-2)) то

Result: = истина;

иначе

Result:=ложь;


Рисунок 1.6 - Проверка наличия свободного места для создания объекта

 

2 Процессы в операционной системе

 

Каждая программа, которая работает в определенный момент времени, называется процессом. Каждая команда, которая запускается, порождает хотя бы один процесс. Процесс может быть представлен как совокупность данных ядра ОС необходимых для описания образа программы в памяти и управления его исполнением.

 

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

 

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

Таблица 2.1

Название команды

Параметры

Описание

backgnd

pname

Перевод процесса в фоновый режим

Необязательные команды (не по варианту)

ps

отсутствуют

Просмотр информации о запущенных процессах

kill

PID

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

chpri

pname, pri

Изменение приоритета процесса


 

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

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