Готовая Лабораторная работа по ТОС №1 | — Терногон / Ternogon
Терногон / Ternogon

Предмет: Теория операционных систем.

Курс: 2.

Университет: РТУ МИРЭА (Московский Институт Радиоэлектроники и Автоматики)
Факультет (институт): КБСП (Комплексной безопасности и специального приборостроения)


Задание на первоисточнике (github.com)

Первое задание

Запустите программу process-run.py со следующими флагами: -l 5:100,5:100. Нарисуйте таблицу выполнения процесса, статистику и ответьте на вопрос: какой процент времени от работы программы использовался процессор? Почему?

Таблица выполнения процесса:

Задание 1
cmd> process-run.py -l 5:100,5:100
Таблица выполнения процесса
Time PID:0 PID:1 CPU Ios
1 RUN:cpu READY 1
2 RUN:cpu READY 1
3 RUN:cpu READY 1
4 RUN:cpu READY 1
5 RUN:cpu READY 1
6 DONE RUN:cpu 1
7 DONE RUN:cpu 1
8 DONE RUN:cpu 1
9 DONE RUN:cpu 1
10 DONE RUN:cpu 1
Статистика:
Total Time: 10
CPU Busy: 10 100,00%
IO Busy: 0 0,00%

 

Второе задание

Запустите программу process-run.py со следующими флагами: -l 4:100,1:0. Эти флаги зададут 4 такта для одного процесса (полностью использующего CPU) и один такт для процесса, который вызовет I/O и подождет его завершения. Нарисуйте таблицу выполнения процесса, статистику и ответьте на вопрос: сколько тактов займет завершение обоих процессов.

Таблица выполнения процесса:

Задание 2
cmd> process-run.py -l 4:100,1:0
Таблица выполнения процесса
Time PID:0 PID:1 CPU Ios
1 RUN:cpu READY 1
2 RUN:cpu READY 1
3 RUN:cpu READY 1
4 RUN:cpu READY 1
5* DONE RUN:io 1
6 DONE WAITING 1
7 DONE WAITING 1
8 DONE WAITING 1
9 DONE WAITING 1
10* DONE DONE
Статистика:
Total Time: 10
CPU Busy: 5 50,00%
IO Busy: 4 40,00%

 

Третье задание

Поменяйте порядок параметров для ключа -l (-l 1:0,4:100) и запустите программу. Нарисуйте таблицу выполнения процесса, статистику и ответьте на вопрос: повлиял ли порядок запуска процессов на количество тактов? Почему?

Таблица выполнения процесса:

Задание 3
cmd> process-run.py -l 1:0,4:100
Таблица выполнения процесса
Time PID:0 PID:1 CPU Ios
1 RUN:io READY 1
2 WAITING RUN:cpu 1 1
3 WAITING RUN:cpu 1 1
4 WAITING RUN:cpu 1 1
5 WAITING RUN:cpu 1 1
6* DONE DONE
Статистика:
Total Time: 6
CPU Busy: 5 83,33%
IO Busy: 4 66,67%

 

Четвертое задание

Поэкспериментируйте с флагом -S. Этот флаг определяет реакцию системы в момент вызова I/O. С флагом, выставленным в значение SWITCH_ON_END система не будет переключаться на другой процесс пока первый не закончит с I/O. Запустите программу с ключами 1:0,4:100 -S SWITCH_ON_END. Нарисуйте таблицу выполнения процесса, статистику и ответьте на вопрос: Как изменится картина по сравнению с предыдущими запусками?

Таблица выполнения процесса:

Задание 4
cmd> process-run.py -l 1:0,4:100 -S SWITCH_ON_END
Таблица выполнения процесса
Time PID:0 PID:1 CPU Ios
1 RUN:io READY 1
2 WAITING READY 1
3 WAITING READY 1
4 WAITING READY 1
5 WAITING READY 1
6 DONE RUN:cpu 1
7 DONE RUN:cpu 1
8 DONE RUN:cpu 1
9 DONE RUN:cpu 1
Статистика:
Total Time: 9
CPU Busy: 5 55,56%
IO Busy: 4 44,44%

 

Пятое задание

Запустите программу, но на этот раз поменяйте поведение планировщика так, чтобы он переключался на другой процесс, пока первый ожидает I/O. Запустите программу с ключами -l 1:0,4:100 -S SWITCH_ON_IO. Нарисуйте таблицу выполнения процесса, статистику и ответьте на вопрос: Как поведет себя программа в этом случае?

Таблица выполнения процесса:

Задание 5
cmd> process-run.py -l 1:0,4:100 -S SWITCH_ON_IO
Таблица выполнения процесса
Time PID:0 PID:1 CPU Ios
1 RUN:io READY 1
2 WAITING RUN:cpu 1 1
3 WAITING RUN:cpu 1 1
4 WAITING RUN:cpu 1 1
5 WAITING RUN:cpu 1 1
6* DONE DONE
Статистика:
Total Time: 6
CPU Busy: 5 83,33%
IO Busy: 4 66,67%

 

Шестое задание

Одно из немаловажных поведений — принятие решение о том, что делать после того как процесс I/O завершится. С ключом -I IO_RUN_LATER после завершения I/O процесс, который вызвал I/O не обязательно продолжит свою работу, напротив, процесс который утилизировал CPU в данный момент продолжит его использование. А затем следующие ожидающие процессы. Запустите программу с ключами -l 3:0,5:100,5:100,5:100 -S SWITCH_ON_IO -I IO_RUN_LATER. Нарисуйте таблицу выполнения процесса, статистику и ответьте на вопрос: Эффективно ли используются ресурсы? Почему?

Таблица выполнения процесса:

Задание 6
cmd> process-run.py -l 3:0,5:100,5:100,5:100 -S SWITCH_ON_IO -I IO_RUN_LATER
Таблица выполнения процесса
Time PID:0 PID:1 PID:2 PID:3 CPU Ios
1 RUN:io READY READY READY 1
2 WAITING RUN:cpu READY READY 1 1
3 WAITING RUN:cpu READY READY 1 1
4 WAITING RUN:cpu READY READY 1 1
5 WAITING RUN:cpu READY READY 1 1
6 READY RUN:cpu READY READY 1
7 READY DONE RUN:cpu READY 1
8 READY DONE RUN:cpu READY 1
9 READY DONE RUN:cpu READY 1
10 READY DONE RUN:cpu READY 1
11 READY DONE RUN:cpu READY 1
12 READY DONE DONE RUN:cpu 1
13 READY DONE DONE RUN:cpu 1
14 READY DONE DONE RUN:cpu 1
15 READY DONE DONE RUN:cpu 1
16 READY DONE DONE RUN:cpu 1
17 RUN:io DONE DONE DONE 1
18 WAITING DONE DONE DONE 1
19 WAITING DONE DONE DONE 1
20 WAITING DONE DONE DONE 1
21 WAITING DONE DONE DONE 1
22 RUN:io DONE DONE DONE 1
23 WAITING DONE DONE DONE 1
24 WAITING DONE DONE DONE 1
25 WAITING DONE DONE DONE 1
26 WAITING DONE DONE DONE 1
27 DONE DONE DONE DONE
Статистика:
Total Time: 27
CPU Busy: 18 66,67%
IO Busy: 12 44,44%

 

Седьмое задание

Запустите программу с ключами -l 3:0,5:100,5:100,5:100 -S SWITCH_ON_IO -I IO_RUN_IMMEDIATE. Нарисуйте таблицу выполнения процесса, статистику и ответьте на вопрос: Эффективно ли используются ресурсы? Как изменилось поведение планировщика? Почему передача управления процессу, только что завершившему процесс I/O может быть хорошей идеей?

Таблица выполнения процесса:

Задание 7
cmd> process-run.py -l 3:0,5:100,5:100,5:100 -S SWITCH_ON_IO -I IO_RUN_IMMEDIATE
Таблица выполнения процесса
Time PID:0 PID:1 PID:2 PID:3 CPU Ios
1 RUN:io READY READY READY 1
2 WAITING RUN:cpu READY READY 1 1
3 WAITING RUN:cpu READY READY 1 1
4 WAITING RUN:cpu READY READY 1 1
5 WAITING RUN:cpu READY READY 1 1
6 RUN:io READY READY READY 1
7 WAITING RUN:cpu READY READY 1 1
8 WAITING DONE RUN:cpu READY 1 1
9 WAITING DONE RUN:cpu READY 1 1
10 WAITING DONE RUN:cpu READY 1 1
11 RUN:io DONE READY READY 1
12 WAITING DONE RUN:cpu READY 1 1
13 WAITING DONE RUN:cpu READY 1 1
14 WAITING DONE DONE RUN:cpu 1 1
15 WAITING DONE DONE RUN:cpu 1 1
16 DONE DONE DONE RUN:cpu 1
17 DONE DONE DONE RUN:cpu 1
18 DONE DONE DONE RUN:cpu 1
Статистика:
Total Time: 18
CPU Busy: 18 100,00%
IO Busy: 12 66,67%
  1. Эффективно ли используются ресурсы?
    A: Гораздо эффективнее, чем в задании номер 6.
  2. Как изменилось поведение планировщика?
    A: Теперь такты используемые на ожидание IO используются еще и для
    обработки других процессов.
  3. Почему передача управления процессу, только что завершившему процесс
    I/O может быть хорошей идеей?
    A: Тактов на обработку симуляции потрачено меньше, чем в задании номер 6.
    Соответственно, времени затрачено меньше.

Комментарии

Тут пока нет комментариев.

Следующая Запись