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

Курс: 2.

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


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

Запустите программу process-run.py со следующими флагами: -l 5:100,5:100.

Нарисуйте таблицу выполнения процесса, статистику и ответьте на вопрос: какой процент времени от работы программы использовался процессор? Почему?

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

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

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

Запустите программу process-run.py со следующими флагами: -l 4:100,1:0.

Эти флаги зададут 4 такта для одного процесса (полностью использующего CPU) и один такт для процесса, который вызовет I/O и подождет его завершения.

Нарисуйте таблицу выполнения процесса, статистику и ответьте на вопрос: сколько тактов займет завершение обоих процессов.

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

Задание 2
cmd>process-run.py -l 4:100,1:0
Таблица выполнения процесса
TimePID:0PID:1CPUIos
1RUN:cpuREADY1
2RUN:cpuREADY1
3RUN:cpuREADY1
4RUN:cpuREADY1
5*DONERUN:io1
6DONEWAITING1
7DONEWAITING1
8DONEWAITING1
9DONEWAITING1
10*DONEDONE
Статистика:
Total Time:10
CPU Busy:550,00%
IO Busy:440,00%

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

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

Нарисуйте таблицу выполнения процесса, статистику и ответьте на вопрос: повлиял ли порядок запуска процессов на количество тактов? Почему?

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

Задание 3
cmd>process-run.py -l 1:0,4:100
Таблица выполнения процесса
TimePID:0PID:1CPUIos
1RUN:ioREADY1
2WAITINGRUN:cpu11
3WAITINGRUN:cpu11
4WAITINGRUN:cpu11
5WAITINGRUN:cpu11
6*DONEDONE
Статистика:
Total Time:6
CPU Busy:583,33%
IO Busy:466,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
Таблица выполнения процесса
TimePID:0PID:1CPUIos
1RUN:ioREADY1
2WAITINGREADY1
3WAITINGREADY1
4WAITINGREADY1
5WAITINGREADY1
6DONERUN:cpu1
7DONERUN:cpu1
8DONERUN:cpu1
9DONERUN:cpu1
Статистика:
Total Time:9
CPU Busy:555,56%
IO Busy:444,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
Таблица выполнения процесса
TimePID:0PID:1CPUIos
1RUN:ioREADY1
2WAITINGRUN:cpu11
3WAITINGRUN:cpu11
4WAITINGRUN:cpu11
5WAITINGRUN:cpu11
6*DONEDONE
Статистика:
Total Time:6
CPU Busy:583,33%
IO Busy:466,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
Таблица выполнения процесса
TimePID:0PID:1PID:2PID:3CPUIos
1RUN:ioREADYREADYREADY1
2WAITINGRUN:cpuREADYREADY11
3WAITINGRUN:cpuREADYREADY11
4WAITINGRUN:cpuREADYREADY11
5WAITINGRUN:cpuREADYREADY11
6READYRUN:cpuREADYREADY1
7READYDONERUN:cpuREADY1
8READYDONERUN:cpuREADY1
9READYDONERUN:cpuREADY1
10READYDONERUN:cpuREADY1
11READYDONERUN:cpuREADY1
12READYDONEDONERUN:cpu1
13READYDONEDONERUN:cpu1
14READYDONEDONERUN:cpu1
15READYDONEDONERUN:cpu1
16READYDONEDONERUN:cpu1
17RUN:ioDONEDONEDONE1
18WAITINGDONEDONEDONE1
19WAITINGDONEDONEDONE1
20WAITINGDONEDONEDONE1
21WAITINGDONEDONEDONE1
22RUN:ioDONEDONEDONE1
23WAITINGDONEDONEDONE1
24WAITINGDONEDONEDONE1
25WAITINGDONEDONEDONE1
26WAITINGDONEDONEDONE1
27DONEDONEDONEDONE
Статистика:
Total Time:27
CPU Busy:1866,67%
IO Busy:1244,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
Таблица выполнения процесса
TimePID:0PID:1PID:2PID:3CPUIos
1RUN:ioREADYREADYREADY1
2WAITINGRUN:cpuREADYREADY11
3WAITINGRUN:cpuREADYREADY11
4WAITINGRUN:cpuREADYREADY11
5WAITINGRUN:cpuREADYREADY11
6RUN:ioREADYREADYREADY1
7WAITINGRUN:cpuREADYREADY11
8WAITINGDONERUN:cpuREADY11
9WAITINGDONERUN:cpuREADY11
10WAITINGDONERUN:cpuREADY11
11RUN:ioDONEREADYREADY1
12WAITINGDONERUN:cpuREADY11
13WAITINGDONERUN:cpuREADY11
14WAITINGDONEDONERUN:cpu11
15WAITINGDONEDONERUN:cpu11
16DONEDONEDONERUN:cpu1
17DONEDONEDONERUN:cpu1
18DONEDONEDONERUN:cpu1
Статистика:
Total Time:18
CPU Busy:18100,00%
IO Busy:1266,67%
  1. Эффективно ли используются ресурсы?
    A: Гораздо эффективнее, чем в задании номер 6.
  2. Как изменилось поведение планировщика?
    A: Теперь такты используемые на ожидание IO используются еще и для
    обработки других процессов.
  3. Почему передача управления процессу, только что завершившему процесс
    I/O может быть хорошей идеей?
    A: Тактов на обработку симуляции потрачено меньше, чем в задании номер 6.
    Соответственно, времени затрачено меньше.
You May Also Like

Генератор паролей на C++

Пример генератора паролей на C++, который генерирует пароль длиной от 8 до 32 символов, состоящего из цифр, букв верхнего и нижнего регистра и служебных символов.

Дневник Сьюзен

Суть «игры» проста, существуют цепочки заданий, в каждом из которых необходимо использовать возможности администрирования системы с помощью терминала, чтобы найти заветный ключ к следующему заданию в цепочке.

Мультфильм — Курсовая работа по Python

Курсовая работа, с которой я столкнулся на втором курсе. Просто делать анимацию на Python 3 слишком скучно, поэтому я реализовал несколько состояний объекта, которые вызываются нажатием клавиш...