Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Функции ОС, информационные - прототипы функций, которые ⇐ ПредыдущаяСтр 7 из 7
необходимо реализовать согласно варианту: 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; Просмотров: 634; Нарушение авторского права страницы