Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Функции DOS для получения информации о системе




1. Функция $30 - Выдача номера версии MS-DOS. В регистре АХ возвращается значение текущего номера версии DOS – в регистре AL возвращается старший, а в AH – младший номера версии.

2. Функция $2А - Выдача текущей системной даты в регистрах:

· AL – день недели (0 = Вск., 1 = Пнд., …, 6 = Суб.);

· СX – год (от 1980 до 2099);

· DH – месяц (от 1 до 12);

· DL – день (от 1 до 31).

3. Функция $2B - Установка текущей системной даты. Новые данные необходимо занести в регистры CX, DH, DL по аналогии с функцией $2А. В результате, в регистре АL помещается значение 0 при корректной дате, и значение $0FF (0FFH), если дата некорректна.

4. Функция $2C - Выдача текущего системного времени в регистрах:

· СН – часы (от 0 до 23);

· СL – минуты (от 0 до 59);

· DH – секунды (от 0 до 59);

· DL – сотые доли секунды (от 0 до 99).

5. Функция $2D - Установка текущего системного времени. Новые данные необходимо занести в регистры по аналогии с функцией $2C. В результате в регистре АL помещается значение 0 при корректном времени, и значение $0FF (0FFH), если время некорректно.

6. Функция $19 - Выдать отчет о текущем дисководе. Возвращает в регистре AL номер текущего дисковода (0 – дисковод А, 1 – B и т.д).

7. Функция $0E - Установить текущий диск. Необходимо установить в регистре DL номер дисковода (0 - А:, 1 - В:, и т.д.), который будет текущим. В регистре AL после выполнения функции возвращается общее количество дисководов всех типов в системе, включая твердые и логические диски.

8. Функция $1В - Получить информацию FAT для текущего диска. Возвращает данные о диске, установленном в текущем дисководе, в регистрах:

· AL - число секторов в одном кластере;

· CX - размер сектора диска в байтах (512 байт для стандартных ПК);

· DX - общее число кластеров на диске.

9. Функция $1С - Получить информацию FAT для произвольного диска. Функция работает аналогично функции $1B, с той лишь разницей, что она возвращает информацию о таблице FAT для любого дисковода. Перед вызовом этой функции следует установить в регистре DL номер конкретного дисковода: 0 – для текущего, 1 – для дисковода А:, 2 – для В: и т.д.

10. Функция $36 - Получить размер свободной памяти диска. Получает множество полезной информации о диске. Перед вызовом необходимо задать в регистре DL нужный дисковод: 0 – текущий, 1 – А, 2 – В и т.д. (нумерация логических дисководов, а не физических). Функция возвращает сведения:

· АХ - число секторов в одном кластере; 0FFFFh - если был задан неправильный номер дисковода;

· CX - размер сектора диска в байтах;

· ВX - число свободных кластеров на диске.

· DX - общее число кластеров на диске.

С помощью возвращаемых параметров функций $1B, $1C и $36 может быть рассчитан общий объем диска (в байтах) по формуле: AL * CX * DX [7].

Пример 1: Просмотр и изменение системного времени с помощью функций DOS $2C и $2D:

Program stime;

uses dos;

var regs:registers;

begin

with regs do

begin

AH:=$2C;

msdos(regs);

writeln('текущее время: час.', CH, ' мин.', CL, ' сек.', DH, ' сот.', DL); readln;

AH:=$2D;

writeln('новое системное время (час., мин., сек., сот. через пробел):');

readln(CH, CL, DH, DL);

msdos(regs);

end;

End.

Пример 2: Использование процедуры Intr и прерывания $12. Прерывание вызывает служебную процедуру, которая возвращает размер доступной памяти в килобайтах. Это значение возвращается в регистре АХ.

USES Dos;

VAR Regs: REGISTERS;

BEGIN

WITH Regs DO BEGIN

Intr ($12, Regs);

WriteLn (‘Размер основной памяти в кб = ’, AX);

END;

END.

ЗАДАНИЯ

 

1. Запустить на выполнение примеры 1, 2. Объяснить результаты.

2. Написать программу на языке Паскаль, которая выполняет следующие действия:

· Вывод текущего номера версии DOS;

· Просмотр и изменение текущей системной даты;

· Просмотр и изменение текущего дисковода;

· Вывод на экран информации FAT для текущего диска;

· Вывод информации FAT для произвольного диска;

· Вывод информации о свободной памяти произвольного диска;

· Расчет общего объема произвольного диска в байтах (Кб, Мб);

· Расчет размера свободного пространства диска в байтах (Кб, Мб);

· Расчет числа байт в одном кластере;

· Расчет свободного пространства произвольного диска в процентах;

· По размеру заданного произвольного файла в байтах определяет число занимаемых им секторов;

· По размеру заданного произвольного файла в байтах определяет число занимаемых им кластеров.

 

Лабораторная работа № 7

планирование исполнения процессов

С помощью алгоритма sjf

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

Описанный алгоритм получил название “ кратчайшая работа первой ” или Shortest Job First (SJF). Данный алгоритм реализуется двумя способами: вытесняющим и невытесняющим.

При невытесняющем SJF-планировании процессор предоставляется избранному процессу на все требующееся ему время, независимо от событий происходящих в системе.

Пример: Пусть в состоянии готовность находятся четыре процесса p0, p1, p2 и p3, для которых известны времена их очередных CPU burst (табл. 2).

 

Таблица 2

Процесс p0 p1 p2 p3
Продолжительность очередного CPU burst        

 

Первым для исполнения будет выбран процесс p3, имеющий наименьшее значение очередного CPU burst. После его завершения для исполнения выбирается процесс p1, затем p0 и, наконец, p2 (см. табл. 3).

 

Таблица 3

время                                
p0 г г г г и и и и и              
p1 г и и и                        
p2 г г г г г г г г г и и и и и и и
p3 и                              

 

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

Пример. Имеются процессы p0, p1, p2 и p3 с различными временами CPU burst и различными моментами их появления в очереди процессов готовых к исполнению (см. табл. 4).

Таблица 4

Процесс Время появления в очереди Длительность CPU burst
p0    
p1    
p2    
p3    

 

В начальный момент времени в состоянии готовность находятся только два процесса p0 и p3. Меньшее время очередного CPU burst оказывается у процесса p3, поэтому он и выбирается для исполнения (табл. 5). По прошествии двух единиц времени в систему поступает процесс p1. Время его CPU burst меньше, чем остаток CPU burst у процесса p3, который вытесняется из состояния исполнение и переводится в состояние готовность. По прошествии еще двух единиц времени процесс p1 завершается, и для исполнения вновь выбирается процесс p3. В момент времени t = 6 в очереди процессов готовых к исполнению появляется процесс p2, но поскольку ему для работы нужно 7 единиц времени, а процессу p3 осталось работать всего 2 единицы времени, то процесс p3 остается в состоянии исполнение. После его завершения в момент времени t = 7 в очереди находятся процессы p0 и p2, из которых выбирается процесс p0. Последним получит возможность выполняться процесс p2.

Таблица 5

                                         
p0 г г г г г г г и и и и и и              
p1     и и                                
p2             г г г г г г г и и и и и и и
p3 и и г г и и и                          

ЗАДАНИЯ

 

Написать программу, реализующую алгоритмы вытесняющего и невытесняющего SJF-планирования n процессов. Все необходимые исходные данные задаются пользователем с клавиатуры.

Для простоты считать, что вся деятельность процессов ограничивается использованием только одного промежутка CPU burst, процессы не совершают операций ввода-вывода, и время переключения контекста пренебрежимо мало.

Программа должна реализовать следующие функции:

1. Выдать на экран исходные данные.

2. Сформировать и выдать на экран таблицы, иллюстрирующие предоставление процессора n процессам для алгоритмов невытесняющего и вытесняющего SJF-планирования.

3. Осуществить расчет и вывести на экран значения времени ожидания для каждого процесса и среднего времени ожидания для алгоритмов невытесняющего и вытесняющего SJF-планирования.

4. Рассчитать значения и вывести на экран полное время выполнения для каждого процесса и среднее полное время выполнения для алгоритмов невытесняющего и вытесняющего SJF-планирования.

 

 

Лабораторная работа № 8

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...