Особенности программной реализации моделей всех подсистем операционной системы
Изучение основных аспектов моделирования операционной системы. Исследование принципов организации псевдопараллельной работы процессов. Анализ алгоритмов диспетчеризации процессов. Проектирование подсистемы управления памятью и запоминающими устройствами.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 12.01.2014 |
Размер файла | 1,7 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание
Введение
1. Исследовательская часть
1.1 Алгоритм замещения страниц «LRU»
1.2 Алгоритм диспетчеризации процессов SRT
1.3 Принцип организации одновременной работы процессов
1.4 Связная последовательность индексов файловых блоков
2. Конструкторская часть
2.1 Проектирование подсистемы управления памятью
2.2 Проектирование подсистемы управления процессами
2.3 Подсистема управления внешними запоминающими устройствами
3. Технологическая часть
Заключение
Список использованных источников и литературы
Введение
Курсовая работа по дисциплине «Операционные системы» представляет собой программную модель операционной системы, состоящей из следующих основных подсистем любой операционный системы: подсистема управления памятью, подсистема управления внешними запоминающими устройствами (ВЗУ), подсистема управления процессами, а также механизмы, синхронизирующие работу всех подсистем и обеспечивающие параллельную работу системы.
Пояснительная записка состоит из 30 листов и содержит 5 частей:
- исследовательская часть
- конструкторская часть
- технологическая часть
- список использованных источников и литературы
- приложение
В исследовательской части описан алгоритм замещения страниц «LRU», алгоритм диспетчеризации процессов SRT, принцип организации одновременной работы процессов и особенности организации записи и считывания информации на ВЗУ с использованием типа связи между файловыми блоками (ФБ) «Связная последовательность индексов».
В конструкторской части отражаются основные этапы проектирования и особенности программной реализации моделей всех подсистем ОС.
В технологической части приводятся основные принципы взаимодействия пользователя с программной моделью ОС, в том числе пользовательский интерфейс.
В списке использованных источников и литературы указаны ссылки на литературные источники.
1. Исследовательская часть
1.1 Алгоритм замещения страниц «LRU»
В основе неплохого приближения к оптимальному алгоритму лежит наблюдение, что страницы, интенсивно используемые несколькими последними командами, будут, скорее всего, снова востребованы следующими несколькими командами. И наоборот, долгое время невостребованные страницы наверняка еще долго так и останутся невостребованными. Эта мысль наталкивает на вполне осуществимый алгоритм: при возникновении ошибки отсутствия страницы нужно избавиться от той страницы, которая длительное время не была востребована. Эта стратегия называется замещением наименее востребованной страницы -- LRU (Least Recently Used).
Теоретически реализовать алгоритм LRU вполне возможно, но его практическая реализация дается нелегко. Для его полной реализации необходимо вести связанный список всех страниц, находящихся в памяти. В начале этого списка должна быть только что востребованная страница, а в конце -- наименее востребованная. Сложность в том, что этот список должен обновляться при каждом обращении к памяти. Для поиска страницы в списке, ее удаления из него и последующего перемещения этой страницы вперед потребуется довольно много времени, даже если это будет возложено на аппаратное обеспечение (если предположить, что такое оборудование можно создать).
Тем не менее существуют другие способы реализации LRU с использованием специального оборудования. Сначала рассмотрим самый простой из этих способов. Для его реализации аппаратное обеспечение необходимо оснастить 64-разрядным счетчиком С, значение которого автоматически увеличивается после каждой команды. Кроме этого, каждая запись в таблице страниц должна иметь достаточно большое поле, чтобы содержать значение этого счетчика. После каждого обращения к памяти текущее значение счетчика С сохраняется в записи таблицы страниц, относящейся к той странице, к которой было это обращение. При возникновении ошибки отсутствия страницы операционная система проверяет все значения счетчика в таблице страниц, чтобы найти наименьшее из них. Та страница, к чьей записи относится это значение, и будет наименее востребованной.
Теперь рассмотрим второй алгоритм работы аппаратного обеспечения LRU. В машине, имеющей п страничных блоков, аппаратное обеспечение LRU может поддерживать изначально нулевую матрицу п на п битов. Как только будет обращение к страничному блоку k, аппаратура сначала устанавливает все биты строки k в 1, а затем обнуляет все биты столбца k. В любой момент времени строка с наименьшим двоичным значением относится к наименее востребованной странице, строка со следующим наименьшим значением относится к следующей наименее востребованной странице, и т. д. На рис. 3.16 показана работа этого алгоритма для четырех страничных блоков, к которым обращение происходит в следующем порядке: 0123210323.
После обращения к странице 0 возникает ситуация, показанная на рис. 1, а. После обращения к странице 1 возникает ситуация, показанная на рис. 1, б, и т. д.
Рис. 1. Использование алгоритмом LRU матрицы при обращении к страницам в следующем порядке: 0, 1, 2, 3, 2, 1, 0, 3, 2, 3.
При всей принципиальной возможности реализации предыдущего алгоритма LRU вряд ли найдется машина, обладающая нужным оборудованием. Скорее всего, нам понадобится решение, которое может быть реализовано в программном обеспечении. Одно из возможных решений называется алгоритмом нечастого востребования -- NFU (Not Frequently Used). Для его реализации потребуется программный счетчик с начальным нулевым значением, связанный с каждой страницей. При каждом прерывании от таймера операционная система сканирует всё находящиеся в памяти страницы. Для каждой страницы к счетчику добавляется значение бита R, равное 0 или 1. Счетчики позволяют приблизительно отследить частоту обращений к каждой странице. При возникновении ошибки отсутствия страницы для замещения выбирается та страница, чей счетчик имеет наименьшее значение.
Основная проблема при использовании алгоритма NFU заключается в том, что он никогда ничего не забывает. К примеру, при многопроходной компиляции те страницы, которые интенсивно использовались при первом проходе, могут по прежнему сохранять высокие значения счетчиков и при последующих проходах. Фактически если на первый проход затрачивается больше времени, чем на все остальные проходы, то страницы, содержащие код для последующих проходов, могут всегда иметь более низкие показатели счетчиков, чем страницы, использовавшиеся при первом проходе. Вследствие этого операционная система будет замещать нужные страницы вместо тех, надобность в которых уже отпала.
К счастью, небольшая модификация алгоритма NFU позволяет достаточно близко подойти к имитации алгоритма LRU. Модификация состоит из двух частей. Во-первых, перед добавлением к счетчикам значения бита R их значение сдвигается на один разряд вправо. Во-вторых, значение бита R добавляется к самому левому, а не к самому правому биту.
На рис. 2 показано, как работает модифицированный алгоритм, известный как алгоритм старения. Предположим, что после первого прерывания от таймера бит R для страниц от 0 до 5 имеет, соответственно, значения 1, 0, 1, 0, 1 и 1 (для страницы 0 оно равно 1, для страницы 1 -- 0, для страницы 2 -- 1, и т. д.). Иными словами, между прерываниями от таймера, соответствующими тактам 0 и 1, было обращение к страницам 0, 2, 4 и 5, в результате которого их биты R были установлены в 1, а у остальных страниц их значение осталось равным 0. После того как были смещены значения шести соответствующих счетчиков и слева было вставлено значение бита R, они приобрели значения, показанные на рис. 2, а. В четырех оставшихся столбцах показаны состояния шести счетчиков после следующих четырех прерываний от таймера.
Рис. 2. Алгоритм старения является программной моделью алгоритма LRU. Здесь показаны шесть страниц в моменты пяти таймерных прерываний, обозначенных буквами от а до д.
операционный псевдопараллельный диспетчеризация память
При возникновении ошибки отсутствия страницы удаляется та страница, чей счетчик имеет наименьшее значение. Очевидно, что у страницы, к которой не было При возникновении ошибки отсутствия страницы удаляется та страница, чей счетчик имеет наименьшее значение. Очевидно, что у страницы, к которой не было обращений за, скажем, четыре прерывания от таймера, в ее счетчике будет четыре ведущих нуля, и поэтому значение ее счетчика будет меньшим, чем у счетчика страницы, к которой не было обращений в течение трех прерываний от таймера. Этот алгоритм отличается от алгоритма LRU двумя особенностями. Рассмотрим страницы 3 и 5 на рис. 2, д. Ни к одной из них за два прерывания от таймера не было ни одного обращения, но к обеим было обращение за прерывание от таймера, предшествующее этим двум. В соответствии с алгоритмом LRU если страница должна быть удалена, то мы должны выбрать одну из этих двух страниц. Проблема в том, что мы не знаем, к какой из них обращались в последнюю очередь между тактом 1 и тактом 2. При записи только одного бита за интервал между двумя прерываниями от таймера мы утратили возможность отличить более раннее обращение от более позднего. Все, что мы можем сделать, -- это удалить страницу 3, поскольку к странице 5 также было обращение двумя тактами ранее, а к странице 3 такого обращения не было. Второе различие между алгоритмом LRU и алгоритмом старения заключается в том, что в алгоритме старения счетчик имеет ограниченное количество бит (в данном примере -- 8 бит), которое сужает просматриваемый им горизонт прошлого. Предположим, что у каждой из двух страниц значение счетчика равно нулю. Все, что мы можем сделать, -- это выбрать одну из них произвольным образом. В действительности вполне может оказаться, что к одной из этих страниц последнее обращение было 9 тактов назад, а ко второй -- 1000 тактов назад. И это обстоятельство установить невозможно. Но на практике 8 бит вполне достаточно, если между прерываниями от таймера проходит примерно 20 мс. Если к странице не было обращений в течение 160 мс, то она, наверное, уже не так важна.
1.2 Алгоритм диспетчеризации процессов SRT
Важнейшей частью операционной системы, непосредственно влияющей на функционирование вычислительной машины, является подсистема управления процессами. Процесс (или по-другому, задача) - абстракция, описывающая выполняющуюся программу. Для операционной системы процесс представляет собой единицу работы, заявку на потребление системных ресурсов. Подсистема управления процессами планирует выполнение процессов, то есть распределяет процессорное время между несколькими одновременно существующими в системе процессами, а также занимается созданием и уничтожением процессов, обеспечивает процессы необходимыми системными ресурсами, поддерживает взаимодействие между процессами.
Процесс планирования осуществляется частью операционной системы, называемой планировщиком.
Если в операционной системе планирование осуществляется только в вынужденных ситуациях, говорят, что имеет место невытесняющее (nonpreemptive) планирование. Если планировщик принимает и вынужденные, и невынужденные решения, говорят о вытесняющем (preemptive) планировании. Термин "вытесняющее планирование" возник потому, что исполняющийся процесс помимо своей воли может быть вытеснен из состояния исполнение другим процессом.
Невытесняющее планирование используется, например, в MS Windows 3.1 и ОС Apple Macintosh. При таком режиме планирования процесс занимает столько процессорного времени, сколько ему необходимо. При этом переключение процессов возникает только при желании самого исполняющегося процесса передать управление (для ожидания завершения операции ввода-вывода или по окончании работы). Этот метод планирования относительно просто реализуем и достаточно эффективен, так как позволяет выделить большую часть процессорного времени для работы самих процессов и до минимума сократить затраты на переключение контекста. Однако при невытесняющем планировании возникает проблема возможности полного захвата процессора одним процессом, который вследствие каких-либо причин (например, из-за ошибки в программе) зацикливается и не может передать управление другому процессу. В такой ситуации спасает только перезагрузка всей вычислительной системы.
Вытесняющее планирование обычно используется в системах разделения времени. В этом режиме планирования процесс может быть приостановлен в любой момент исполнения. Операционная система устанавливает специальный таймер для генерации сигнала прерывания по истечении некоторого интервала времени - кванта. После прерывания процессор передается в распоряжение следующего процесса. Временные прерывания помогают гарантировать приемлемое время отклика процессов для пользователей, работающих в диалоговом режиме, и предотвращают "зависание" компьютерной системы из-за зацикливания какой-либо программы.
Планирование по принципу SRT («по наименьшему остающемуся времени») относится к вытесняющему планированию.
По принципу SRT всегда выполняется процесс, имеющий минимальное оценочное время до завершения, причем с учетом новых поступающих процессов. Выполняющийся процесс может быть прерван при поступлении нового процесса, имеющего более короткое оценочное время работы. Чтобы механизм SRT был эффективным, необходимы достаточно точные оценки будущего, причем разработчик системы должен позаботиться о мерах против неправильного использования прикладными программистами особенностей стратегий планирования. Механизм SRT должен следить за текущим временем обслуживания выполняющегося задания и обрабатывать возникающие прерывания. Поступающие в систему небольшие процессы будут выполняться почти немедленно. Реализация принципа SRT требует, чтобы регистрировались истекшие времена обслуживания, а это приводит к увеличению накладных расходов. Теоретически принцип SRT обеспечивает минимальные времена ожидания.
1.3 Принцип организации одновременной работы процессов
Для организации псевдопараллельной работы с каждым из процессов ассоциируется сегмент памяти, основное назначение которого заключается в сохранении информации, необходимой для возобновления его работы в дальнейшем. Эта информация называется контекстом процесса, а сегмент памяти, в котором она сохраняется, называется сегментом состояния задачи TSS (от англ. Task State Segment - сегмент состояния задачи). Формат TSS в наиболее общем виде приведён на рис. 3.
Рис. 3. Формат TSS.
Когда работа процесса A прерывается готовым к выполнению процессом Б, то процесс А сохраняет свой контекст в своём TSS, а процесс Б загружает свой контекст из своего. Процесс Б может в свою очередь быть прерван процессом В и т.д. (рис. 4.).
Рис. 4. Организация псевдопараллельной работы процессов.
Селектор TSS работающего в данный момент процесса помещается в программно недоступный регистр задачи центрального процессора (для процессоров Intel - регистр TR). Последовательность прерванных процессов, с целью возобновления их работы в дальнейшем, объединяется в односвязный список - селектор TSS прерванного процесса помещается в поле обратной связи TSS работающего в данный момент процесса (рис. 5).
Рис. 5. Организация связанного списка из TSS.
Переключение с одного процесса на другой заключается в использовании команды безусловного перехода или команды вызова процедуры (для процессоров Intel - jmp и call соответственно) с логическим адресом, селектор которого индексирует дескриптор TSS нового процесса (рис.6).
Рис. 6. Формат дескриптора TSS.
Ещё одним способом переключения на новый процесс (как правило, на более привилегированный) является использование в этих командах логического адреса шлюза задачи. Формат дескриптора шлюза задачи в наиболее общем виде приведён на рис. 7.
Рис. 7. Формат дескриптора шлюза задачи
1.4 Связная последовательность индексов файловых блоков
Метод размещения файлов состоит в представлении каждого файла в виде связного списка из блоков диска, как показано на рис. 4. Первое слово каждого блока используется как указатель на следующий блок. В остальной части блока хранятся данные.
Рис. 8. Размещение файла в виде связного списка блоков диска.
В отличие от систем с непрерывными файлами, такой метод позволяет использовать каждый блок диска. Нет потерь дискового пространства на фрагментацию (кроме потерь в последних блоках файла). Кроме того, в каталоге нужно хранить только адрес первого блока файла. Всю остальную информацию можно найти там.
С другой стороны, хотя последовательный доступ к такому файлу несложен, произвольный доступ будет довольно медленным. Чтобы получить доступ к блоку n, операционная система должна сначала прочитать первые n - 1 блоков по очереди. Очевидно, такая схема оказывается очень медленной.
Кроме того, размер блока уменьшается на несколько байтов, требуемых для хранения указателя. Хотя это и не смертельно, но размер блока, не являющийся степенью двух, будет менее эффективным, так как многие программы читают и пишут блоками по 512, 1024, 2048 и т. д. байтов. Если первые несколько байтов каждого блока будут заняты указателем на следующий блок, то для чтения блока полного размера придется считывать и объединять два соседних блока диска, для чего потребуется выполнение дополнительных операций.
2. Конструкторская часть
2.1 Проектирование подсистемы управления памятью
В модели подсистемы управления памятью присутствуют три логических адресных пространства:
- логическое адресное пространство процесса А;
- разделяемое процессами А и Б логическое адресное пространство;
- логическое адресное пространство процесса В.
Пространства процессов А и В состоят из 7-ми страниц. Разделяемое логическое пространство состоит из 5 страниц. Размер страницы для всех логических адресных пространств составляет 4 байта. В модели использован алгоритм замещения страниц - «LRU».
Дескриптор страницы логического адресного пространства включает ее базовый адрес и информативные биты, необходимые для реализации процесса замещения, а также некоторое количество бит, необходимое для сохранения времени последнего обращения к странице. Данные дескрипторы располагаются в таблицах, которые состоят из их базовых адресов (рис. 9).
Логический адрес памяти представляет собой индекс дескриптора таблицы, индекс дескриптора страницы и смещение внутри нее, которое определяет порядковый номер одного из 4 байт страницы.
Разделяемое логическое адресное пространство процессов состоит из 5 страниц по 4 байта каждая и распределяет 20 байт основной памяти вычислительной системы. Адрес памяти описывается одним байтом. Дескрипторы таблиц расположены, начиная с адреса 000. Элементами этой таблицы являются три базовых адреса каждой из дескрипторных таблиц, следовательно, эта таблица распределяет 3 байта основной памяти вычислительной системы. Далее последовательно располагаются таблицы с дескрипторами страниц всех процессов. Дескриптор каждой страницы состоит из информативных битов и базового адреса страницы. Под информативные биты распределяется 1 байт и еще один байт под базовый адрес.
Рис. 9. Структурная схема подсистемы управления памятью.
Модель подсистемы управления памятью ОС реализуют классы, показанные на рис. 10.
Рис.10. Модель подсистемы управления памятью.
Все классы программной модели подсистемы управления памятью приведены в таблице 1, поля и свойства класса, моделирующего оперативную память - в таблице 2, поля и свойства класса, описывающего дескриптор таблицы - в таблице 3, поля и свойства класса, описывающего дескриптор страницы - в таблице 4.
Таблица 1. Классы программной модели подсистемы управления памятью.
Имя |
Назначение |
С какими классами связан |
Тип прямой связи |
|
Memory |
Оперативная память операционной системы |
|||
descriptorTable |
Описывает дескриптор таблицы |
Memory |
Агрегация |
|
PageDescriptor |
Описывает дескриптор страницы |
descriptorTable |
Агрегация |
Таблица 2. Поля и свойства класса Memory подсистемы управления памятью.
Имя |
Тип данных |
Назначение |
|
_descriptorTables[] |
descriptorTable |
Является дескрипторами таблиц |
|
Mem[][] |
byte |
Ячейки адресного пространства |
Таблица 3. Поля и свойства класса descriptorTable.
Имя |
Тип данных |
Назначение |
|
Address |
int |
Базовый адрес дескриптора таблицы |
|
descriptors[] |
PageDescriptor |
Дескрипторы страниц |
Таблица 4. Поля и свойства класса PageDescriptor.
Имя |
Тип данных |
Назначение |
|
address |
int |
Базовый адрес дескриптора страницы |
|
_baseAddres |
int |
Базовый адрес страницы |
|
swap |
int |
Ссылка на вытесненную страницу в ВЗУ |
|
_present |
bool |
Бит присутствия |
|
_access |
bool |
Бит обращения |
|
_timeAccess |
int |
Время доступа |
2.2 Проектирование подсистемы управления процессами
Каждый из взаимодействующих процессов следует рассматривать как некоторую последовательность заявок на потребление ресурсов вычислительной системы. Заявку на потребление ресурсов можно описать произвольным образом, например, как совокупность ее типа и параметров. Типами заявок могут быть запись информации из памяти на ВЗУ и наоборот, копирование информации из одной ячейки памяти в другую. В качестве параметров заявки указывается тип заявки, логический адрес памяти процесса, имя файла и записываемая информация.
Основные функции подсистемы управления процессами в любой ОС заключаются в их диспетчеризации, организации одновременной работы и синхронизации доступа к разделяемым ресурсам вычислительной системы.
Контекст процесса в моделируемой подсистеме управления процессами содержит следующую информацию: порядковый номер текущей выполняемой заявки и число скопированных байт информации (Рис. 11.).
Рис. 11. Контекст процесса.
UML-диаграмма реализации модели этой подсистемы ОС приведена на рис. 12.
В таблице 5 показаны классы, участвующие в моделировании подсистемы управления процессами. Таблица 6 содержит поля и методы класса, отвечающего за организацию работы подсистемы управления процессами и диспетчеризацию процессов, таблица 7 - поля и свойства класса, описывающего заявку, таблица 8 - поля и свойства класса Memory, содержащие контексты процессов, таблица 9 - класс описывающий контекст процесса.
Таблица 5. Классы подсистемы управления процессами.
Имя |
Назначение |
Связан |
Тип прямой связи |
|
tasks |
Управление процессами и диспетчеризация процессов |
|||
requests |
Описывает заявку |
tasks |
Композиция |
|
Memory |
Содержит контексты процессов |
tasks |
Агрегация |
|
processContext |
Описывает контекст процесса |
Memory |
Агрегация |
Таблица 6. Поля и методы класса tasks подсистемы управления процессами.
Имя |
Тип данных |
Назначение |
|
_requests[] |
requests |
Список заявок |
|
Thread1() |
void |
Процесс А |
|
Thread2() |
void |
Процесс Б |
|
Thread3() |
void |
Процесс В |
|
dispetch() |
void |
Метод, отвечающий за диспетчеризацию процессов |
Таблица 7. Поля и свойства класса requests.
Имя |
Тип данных |
Назначение |
|
requestType |
int |
Тип заявки |
|
fileName |
string |
Имя файла для чтения/записи |
|
volByteData |
int |
Объем данных для копирования |
|
blockNum |
int |
Номер ФБ в файле |
|
fromLAdescrTable |
int |
Номер дескриптора таблицы источника |
|
fromLApage |
int |
Номер страницы источника |
|
fromLAshift |
int |
Смещение внутри страницы источника |
|
toLAdescrTable |
int |
Номер дескриптора таблицы приемника |
|
toLApage |
int |
Номер страницы приемника |
|
toLAshift |
int |
Смещение внутри страницы приемника |
Таблица 8. Поля и свойства класса Memory подсистемы управления процессами.
Имя |
Тип данных |
Назначение |
|
contexts[] |
processContext |
Контексты процессов |
Таблица 9. Поля и свойства класса processContext.
Имя |
Тип данных |
Назначение |
|
address |
int |
Базовый адрес контекста процесса в ОП |
|
indexOfRequest |
byte |
Номер текущей заявки |
|
copied |
byte |
Кол-во скопированных байт |
|
size |
int |
Размер контекста процесса |
2.3 Подсистема управления внешними запоминающими устройствами
Внешнее запоминающее устройство (ВЗУ) состоит из 100 файловых блоков, в каждый из которых может быть записана 4-байтовая страница. Способ организации связи между файловыми блоками - связная последовательность. Соответствие имени файла индексу его первого файлового блока сохраняется в таблице ОС (рис. 13).
Максимальное число файлов, которым могут быть распределены файловые блоки, равно 4, в соответствие с размером таблицы соответствия имен файлов индексам первых файловых блоков.
Поскольку ВЗУ состоит из 100 файловых блоков, для сохранения индексов каждого из них следует выделить 1 байт. Если исходить из того, что имя файла состоит максимум из 7 байт, то размер таблицы соответствия имени файла его первому файловому блоку составит 8Ч4=32 байт. Таким образом, к 41 байтам основной памяти ВС, в которых располагаются таблицы управления ее памятью, следует добавить еще 32 байт.
Рис. 12. Соответствие индексов и файловых блоков.
На рис.13 изображена UML-диаграмма классов подсистемы управления ВЗУ.
Рис. 13. Подсистема управления ВЗУ.
Классы, участвующие в моделировании подсистемы управления ВЗУ показаны в таблице 10. В таблице 11 содержится описание класса, описывающего модель ВЗУ, в таблице 12 - описание класса, содержащего таблицу соответствия имени файла индексу его первого ФБ, в таблице 13 - класс, описывающий элемент файлового каталога.
Таблица 10. Классы подсистемы управления ВЗУ.
Имя |
Назначение |
Связан |
Тип прямой связи |
|
VZU |
Описывает файловую систему |
|||
fileCatalogue |
Содержит файловый каталог |
VZU |
Использование |
|
fileCatalogueRecord |
Описывает элемент файлового каталога |
fileCatalogue |
Агрегация |
|
fileBlock |
Описывает файловый блок |
VZU |
Агрегация |
Таблица 11. Поля и свойства класса VZU.
Имя |
Тип данных |
Назначение |
|
fileBlocks[] |
fileBlock |
Файловые блоки |
Таблица 12. Поля и свойства класса fileCatalogue.
Имя |
Тип данных |
Назначение |
|
records[] |
fileCatalogueRecord |
Записи в файловом каталоге |
Таблица 13. Поля и свойства класса fileCatalogueRecord.
Имя |
Тип данных |
Назначение |
|
filename |
string |
Имя файла |
|
firstIndex |
byte |
Индекс первого ФБ |
|
address |
int |
Адрес записи в ОП |
Таблица 14. Поля и свойства класса fileBlock.
Имя |
Тип данных |
Назначение |
|
nextIndex |
byte |
Индекс следующего ФБ |
|
information[] |
byte |
Информационная часть |
|
belongToFile |
bool |
Показывает принадлежность файлу |
|
freeBlock |
bool |
Определяет свободен ли ФБ |
3. Технологическая часть
Для запуска программной модели функционирования операционной системы необходимо двойным кликом левой кнопки мыши запустить файл OS.ехе в папке bin корневого каталога программы. На экране появится главное окно программы (рис. 14).
В данной программе наглядно представлены подсистемы управления памятью, ВЗУ и процессами.
Рис. 14. Главное окно программы.
На главной форме присутствуют:
- таблица заявок;
- таблица дескрипторов страниц;
- таблица ячеек оперативной памяти;
- ВЗУ;
- кнопка «Шаг».
Таблица заявок содержит две колонки:
1) Строка заявки. Содержит информацию о типе заявки, количестве байт, которые необходимо скопировать, адресе источника и адресе приемника.
2) Число скопированных байт.
Текущая выполняемая заявка помечается голубым цветом, фиолетовым - заявка, которая поставлена на паузу, красным - выполненная заявка.
В таблице дескрипторов таблиц содержатся базовые адреса дескрипторов таблиц.
В таблице дескрипторов страниц присутствуют поля:
- «Адрес» - базовый адрес страницы в общем адресном пространстве;
- «Access» - бит обращения;
- «Present» - бит присутствия страницы в ОП.
Таблица, представляющая оперативную память, содержит поле адреса страницы в общем адресном пространстве и значение каждого из 4 битов страницы.
Таблица ВЗУ содержит следующие поля:
- «Индекс следующего ФБ» - ссылка на следующий ФБ. Если равно 0 то ссылки на файловый блок нет.
- Поля «Байт1», «Байт2», «Байт3», «Байт4» - информация, хранящаяся в каждом из четырех байт файлового блока.
Нажимая кнопку «Шаг», пользователь осуществляет попытку выполнить заявку (рис. 16, таблица «Заявки»). Если попытка неудачна (ресурсы системы заняты другими процессами или отсутствует запрашиваемое содержимое)(рис. 16, таблица «Дескрипторы страниц»), заявка переходит в режим ожидания освобождения ресурсов и ждет следующей очереди. Результат работы программы - все выполненные заявки. О выполнении всех заявок сигнализирует также потухшая кнопка «Шаг».
Рис. 15. Работы программы.
Рис. 16. Схема действий, выполняемая процессами.
После нажатия на кнопку «Шаг» происходят действия, описанные ниже.
Процесс А приступает к копированию информации из своего логического пространства в разделяемое логическое пространство. Процесс Б обрабатывает информацию и обновляет ее в оперативной памяти. После обработки процесс Б записывает информацию на ВЗУ в файл с результатами. Процесс В считывает с жесткого диска эту информацию и записывает ее в свое адресное пространство.
Заключение
В результате выполнения данной курсовой работы были изучены основные аспекты моделирования операционной системы: принципы организации псевдопараллельной работы процессов, алгоритмы диспетчеризации процессов, алгоритмы управления виртуальной памятью и особенности организации записи и считывания информации на ВЗУ.
В результате проделанной работы, была разработана конечная программа, позволяющая моделировать процесс функционирования операционной системы, осуществляющей управление работой заданных процессов и всей совокупностью подсистем в целом.
Список использованных источников и литературы
1. А.В. Гордеев. Операционные системы: учебник для вузов. 2-е изд. - СПб.: Питер, 2004. - 416 с.
2. В.Г. Олифер, Н.А. Олифер. Сетевые операционные системы. - СПб.: Питер, 2003. - 539 с.
3. А.М. Робачевский. Операционная система UNIX®. - СПб.: БХВ-Петербург, 2003. - 528 с.
4. В. Столлингс. Операционные системы. Внутреннее устройство и принципы проектирования. - М.: изд. дом Вильямс, 2002. - 848 с.
5. Э. Таненбаум. Современные операционные системы. - СПб.: Питер, 2002. - 1040 с.
Размещено на Allbest.ru
Подобные документы
Создание программного продукта, предназначенного для небольшой сети с оптимизацией ее работы на платформе операционной системы Linux; администрирование. Разработка модуля протоколов управления; методика тестирования подсистемы; системотехнический анализ.
дипломная работа [5,4 M], добавлен 27.06.2012Структура ядра операционной системы. Основные компоненты подсистемы управления процессами и памятью. Характеристика системных и прикладных процессов в Unix. Идентификация процесса Linux, его атрибуты и вызовы. Средства межпроцессного взаимодействия.
лекция [170,1 K], добавлен 29.07.2012Общая организация файловой системы. Виртуальные страницы. Команды для работы с ФС. Способы организации файлов. Системные вызовы управления процессами. Алгоритм работы планировщика процессов. Мультипрограммный режим работы ОС. Структура ядра системы.
курсовая работа [645,3 K], добавлен 23.03.2015Создание средств представления процессов и механизмов управления на уровне диспетчеризации, разработка алгоритма и написание программы, имитирующую работу простейшей операционной системы. Формирование дескриптора, ввод информации, интерфейс программы.
лабораторная работа [1,1 M], добавлен 09.07.2010Функции операционной системы, ее задачи по управлению файлами и устройствами. Opгaнизaция устpoйств ввoдa-вывoда. Дeлeниe пpoгpaммнoгo обeспeчeниe ввoдa-вывoдa нa чeтыpe слoя. Аpхитeктуpы фaйлoвых систeм. Проектирование символов для матричных принтеров.
курсовая работа [655,9 K], добавлен 24.06.2011Изучение процесса создания новой версии Windows Vista. Исследование особенностей установки и интерфейса операционной системы. Характеристика требований к аппаратному обеспечению компьютера. Анализ основных средств навигации и работы в Windows Vista.
реферат [33,6 K], добавлен 25.11.2014Знакомство с операционной системой Windows. Исследование её устройства, истории, возможностей, особенностей работы с ней для получения новых знаний. Описание наиболее использующихся и важных функций этой операционной системы, их практическое освоение.
контрольная работа [2,9 M], добавлен 14.12.2009Основные защитные механизмы операционной системы семейства Unix, недостатки ее защитных механизмов. Идентификаторы пользователя и группы пользователей. Защита файлов, контроль доступа, уязвимость паролей. Проектирование символов для матричных принтеров.
курсовая работа [488,8 K], добавлен 22.06.2011Разграничение прав пользователя в операционной системе. Предварительная настройка операционной системы с последующей установкой драйверов для периферийных устройств и системных комплектующих. Классификация операционных систем и периферийных устройств.
реферат [2,1 M], добавлен 26.10.2022Блокировка файла для защиты доступа к нему со стороны других процессов в многозадачной среде операционной системы. Управление периферийными устройствами, процессами (заданиями, задачами). Планирование процессов, понятие очереди. Общий буфер данных.
презентация [45,2 K], добавлен 23.10.2013