Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Функции ОС, информационные - прототипы функций, которые



необходимо реализовать согласно варианту:

enum PROCESS_STATUS { NotExist = 0, Execute = 1, Ready = 2, Wait =

3};

3.1 DLLFUNC void GetProcessStatus(BYTE * lpProcStatusBuffer, double

* lpProcData) - получить информацию о процессах в системе,

размер буфера = 100, фактически является " планировщиком"

Процессов

// структура для описания состояния физ. памяти

struct PHYS_MEMORY_BLOCK {

Int nStart; // начало блока в оперативной памяти

Int nLength; // длина блока

Int nProcess; // номер процесса (0-99), которому выделен блок

(255 - система)

};

DLLFUNC int GetPhysMemoryBlockCount() - получить количество

блоков;

DLLFUNC void GetPhysMemoryBlockList(

PHYS_MEMORY_BLOCK * lpBlockList) - получить описание

блоков, lpBlockList - список описания блоков;

3.4 DLLFUNC void GetDiskStatus(BYTE * lpStatusBuffer) - получить

Информацию о состоянии диска (посекторно), 0 - свободный

Сектор, 1-100 - сектор принадлежит файлу (номер совпадает с

номером в каталоге), 255 - зарезервировано системой;

3.5 DLLFUNC void GetDiskCatalog(char lpFileNames[] [20], int *

lpFirstSectors, int * lpSizes) - получить каталог, файлов на диске не

Более 100 (индексы с 1 по 100 включительно), lpFileNames - имена

Файлов, lpFirstSectors - номера первых кластеров, lpSizes - размеры

файлов;

3.6 DLLFUNC int osCreateProcess(int nData) - создать процесс, nData -

Дополнительные параметры для процесса (зависит от алгоритма

планирования), 1. Гарантированное планирование - номер

Пользователя от имени которого запущен процесс, 2. SJF с

Предсказанием - не используется, 3. Вытесняющий SJF - полное

время выполнения процесса, 4. Приоритетное планирование с

Абсолютным приоритетом - номер приоритета, 5. Многоуровневая

Очередь (2 уровня: высокий приоритет – Round robin, низкий

Приоритет – FCFS) - номер приоритета, функция должна вернуть

номер для созданного процесса;

DLLFUNC void osDeleteProcess(int nProcess) - удалить процесс с

Указанным номером

Функции ОС, управление памятью - прототипы функций, которые

необходимо реализовать согласно варианту:

DLLFUNC void osMakeAddressSpace(int nProcess, int bBlockCount,

int * lpBlockLength) - создать адресное пространство для

Указанного процесса, nProcess - номер процесса для которого

Создается адресное пространство, bBlockCount - количество блоков

Адресного пространства, для страничного распределения

BBlockCount всегда равен 1, для сегментного и сегментно-

Страничного распределения - количество сегментов, lpBlockLength

- длины блоков аресного пространства;

enum MEMORY_OPERATION { MemoryRead = 0, MemoryWrite =

1};

DLLFUNC int osTranslateAddress(int nProcess, int nVirtualAdress, int

NOperationType) - выполнить трансляцию адреса, nProcess - номер

Процесса, в адресном пространстве которого выполняется

преобразование, nVirtualAdress - виртуальный адрес, по которому

Пытаемся произвести обращение, nOperationType - выполняемая

Операция при доступе к ячейке памяти (MemoryRead или

MemoryWrite), функция должна вернуть номер физ. ячейки или -1

Если необходимая часть адресного пространства отсутствует в

оперативной памяти;

DLLFUNC int osTranslateAddress2(int nProcess, int nSegment, int

NOffset, int nOperationType) - выполнить трансляцию адреса,

NProcess - номер процесса, в адресном пространстве которого

выполняется преобразование, nSegment - номер сегмента, к

Которому пытаемся произвести обращение, nOffset - смещение в

Сегменте, nOperationType - выполняемая операция при доступе к

Ячейке памяти (MemoryRead или MemoryWrite), функция должна

Вернуть номер физ. ячейки или -1 если необходимая часть

адресного пространства отсутствует в оперативной памяти;

Функции ОС, управление вводом/выводом - прототипы функций, которые

необходимо реализовать согласно варианту:

5.1 DLLFUNC int osWriteFile(int nProcess, char * fileName, int

VirtMemBuffer, int count, int offset) - запись данных из оперативной

Памяти в указанный файл, nProcess - номер процесса (0-99),

вызвавший метод (255 - система), fileName - имя файла (не более

20 символов), virtMemBuffer - адрес буфера в адресном пространстве

Процесса, если вызывается от имени системы -

VirtMemBuffer указывает на физ. память, count - длина буфера на

Запись, offset - позиция в файле, с которой необходимо

осуществлять запись, возвращает 1 - если успех -1 - если ошибка;

5.2 DLLFUNC int osWriteExternFile(char * fileName, BYTE * lpBuffer, int

Count) - запись данных в файл из указанного внешнего буфера,

fileName - имя файла (не более 20 символов), lpBuffer - адрес

Буфера с данными, count - длина буфера на запись, возвращает 1 -

если успех -1 - если ошибка;

5.3 DLLFUNC int osReadFile(int nProcess, char * fileName, int

VirtMemBuffer, int count, int offset) - чтение из файла данных в

Оперативную память, nProcess - номер процесса (0-99), вызвавший

метод (255 - система), fileName - имя файла (не более 20 символов),

VirtMemBuffer - адрес буфера в адресном пространстве процесса,

Если вызывается от имени системы - virtMemBuffer указывает на

Физ. память, count - длина буфера на чтение, offset - позиция в

Файле, с которой необходимо осуществлять чтение, возвращает

Количество прочитанных символов -1 - если ошибка

5.4 DLLFUNC int osReadExternFile(char * fileName, BYTE * lpBuffer, int

Count) - чтение из файла данных в указанный внешний буфер,

fileName - имя файла (не более 20 символов), lpBuffer - адрес буфера

С данными, count - длина буфера на для данных, возвращает

количество прочитанных символов -1 - если ошибка;

5.5 DLLFUNC int osDeleteFile(int nProcess, char * fileName) - удаление

Файла, nProcess - номер процесса (0-99), вызвавший метод (255 -

система), fileName - имя файла (не более 20 символов), возвращает 1 -

Если успешно -1 - если ошибка.

РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ.

Интерфейс программы можно увидеть на рисунке 16

Рисунок 16. – Интерфейс программы

Для использования программы, необходимо выбрать в выпадающем меню

параметры «Приоритетное планирование с абсолютным приоритетом» и

«Страничное распределение памяти».

Рассмотрим вкладку «Процессы». Для создания процесса необходимо

Нажать кнопку «Создать процесс» и во всплывающем окне ввести размеры

адресного пространства (см. рисунок 16.).

Рисунок 17. – Создание процесса.

Для записи значений в виртуальную память исполняющегося процесса

Необходимо занести линейный адрес в соответствующие поле, заполнить поле

«Значение» и нажать кнопку «Запись» рядом с адресом (см. рис 17.). Таким же

Образом можно считать байт из виртуальной памяти процесса, считанное

Значение помещается в поле «Значение».

Рисунок 18. – Пример записи в виртуальную память процесса.

Во вкладке «Память» можно проследить как виртуальная память

Распределена между процессами и найти значение по физическому адресу в

поле «Адрес» (см. рисунок 18.).

Рисунок 19. – Пример работы во вкладке «Память».

Во вкладке «Диск» реализованы следующие функции: создание файла

(кнопка «Создать»), удаление файла (кнопка «Удалить», изменение файла

(кнопка «Изменить»), чтение файла (кнопка «Прочитать»).

Вся записанная в текстовом поле информация будет помещена в файл при

Его создании. Для изменения или удаления файла необходимо выбрать файл из

Каталога. В поле «Карта диска» можно наблюдать распределение памяти между

Файлами. Также можно получить побайтовую информацию о любом секторе

Диска, введя его номер в поле «Сектор» и нажав кнопку «Содержимое».

Рисунок 20. – Пример работы во вкладке «Диск».

Также возможна запись информации в файл из виртуальной памяти

Процесса и чтение файла в виртуальную память. Для этого во вкладке

«Процессы» нужно заполнить поля «Виртуальный адрес», «Имя файла» (для

Кнопки «Чтение» файл должен быть уже создан), «Смещение в файле»,

«Количество байт» и нажать на кнопку «Чтение» или «Запись».

ЗАКЛЮЧЕНИЕ

Результатом выполнения данной. курсовой работы явилось создание

Виртуальной машины со следующими параметрами.

2. Подсистема управления процессами: Приоритетное планирование с

Абсолютным приоритетом.

Подсистема управления памятью: Сегментно-страничное

Распределение памяти (линейное пространство, страница - 512 байт )

Файловая подсистема: Непрерывное размещение файлов (Кластер -

Байт).

СПИСОК ЛИТЕРАТУРЫ

 Методические указания к выполнению курсовой работы по дисциплине

«Операционные системы» / И. А. Макушкин, Л. А. Макушкина // Сборник

«Методические указания» Выпуск 2. – Электронные текстовые данные (1 файл:

2, 17 Мb) – Волжский: ВПИ (филиал) ВолгГТУ, 2012 [1].

 http: //www.sspi.ru/dir/_nau/inf_mat/1.pdf [2]

 http: //citforum.ru/operating_systems/sos/glava_7.shtml[3]

 http: //citforum.ru/operating_systems/sos/glava_10.shtml [4]

 Организация ЭВМ и систем. Однопроцессорные ЭВМ. Часть 3.: Конспект лекций

/ И.В. Хмелевский, В.П. Битюцкий. 2-е изд., испр. и допол. Екате- ринбург: ГОУ

ВПО УГТУ-УПИ, 2005. 100 с. [5]

 Макаренко С. И. Операционные системы, среды и оболочки: учебное пособие. –

Ставрополь: СФ МГГУ им. М. А. Шолохова, 2008. – 210 с [6].__


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-05-28; Просмотров: 592; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.036 с.)
Главная | Случайная страница | Обратная связь