Skip to content

AnaNek/Operating_systems

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Дисциплина "Операционные системы" (2019)

Семестр №5

Лаб. №1

  1. Дизассемблирование INT 8h

  2. Функции обработчика прерываний от системного таймера

Лаб. №2

  1. Переход в защищенный и реальный режимы.

  2. Обработка прерываний от таймера и клавиатуры.

  3. Определение объема доступного адресного пространства.

Лаб. №3

Зомби - процесс, у которого отобраны все ресурсы кроме последнего, строки в таблице процессов, необходимо чтобы предок мог получить статус завершения своего потомка.

Идентификатор предка у осиротевшего процесса будет изменен на 1, так как процесс был «усыновлен» процессом с идентификатором 1 , процессом «открывшим» терминал.

softlink - специальный файл, в котором есть только одна строка, содержащая путь по которому нужно перейти при обращении к этой ссылке

hardlink - еще одно имя файла

Изменение приоритета: renice -n 5 -p process

Можем только увеличить приоритет (без sudo - суперпользователя (доступны привелигированные команды и доступ к структуре ядра). Нельзя уменьшить, так как для этого требуется пересчет приоритетов.

Именованный программный канал - специальный файл, в который можно писать информация и из которого можно читать.

  • создаем именованный программный канал командой mknod с именем pipe;

  • направляем текст в программный канал: echo [текст] > pipe

  • меняем консоль;

  • получаем через канал текст и используя команду tee, выводим на экран: tee < pipe

Флаги:

  • 0 - был fork и был exec (родительский процесс с флагом 0, так как была вызвана была вызвана команда запуска программы, она не принадлежит языку bash, поэтому создается процесс, котором выполняется сначала fork, потом exec)

  • 1 - был fork но не было exec

  • 4 - суперюзер

Типы файлов:

  1. -- - обычный (регулярный)

  2. d - директория

  3. p - именованный программный канал

  4. l - softlink

  5. s - socket

  6. c - специальный файл символьного уст-ва

  7. b - специальный файл блочного уст-ва

Лаб. №4

  1. Возникновение процесса сироты. При завершении любого процесса система анализирует таблицы дескрипторов и если находит незавершившиеся потомки этого процесса выполняет следующие действия: PPID потомков присваивает 1 (это PID процесса, открывшего терминал) - усыновление.

  2. Cистемный вызов wait() блокирует родительский процесс до момента завершения дочернего.

  3. Возникновение процесса-зомби – процесс, у которого отобраны все ресурсы, кроме последнего – строки в таблице процессов. Если потомок завершился(аварийно завершился exec), а предок завершился нормально, возникает зомби.

Процесс-потомок вызывает системный вызов exec(), а процесс-предок ждет завершения процесса-потомка.

Чаще всего нет смысла в выполнении двух одинаковых процессов и потомок сразу выполняет системный вызов exec(), параметрами которого является имя исполняемого файла и, если нужно, параметры, которые будут переданы этой программе. Говорят, что системный вызов exec() создает низкоуровневый процесс: создаются таблицы страниц для адресного пространства программы, указанной в exec(), но программа на выполнение не запускается, так как это не полноценный процесс, имеющий идентификатор и дескриптор. Системный вызов exec() создает таблицу страниц для адресного пространства программы, переданной ему в качестве параметра, а затем заменяет старый адрес новой таблицы страниц.

  1. Обмен сообщениями через программный канал между предком и потомком.

Системный вызов pipe() - неименованный программный канал. Неименованные программные каналы могут использоваться для обмена сообщениями между процессами родственниками. В отличие от именованных программных каналов неименованные не имеют идентификатора, но имеют дескриптор.

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

  1. В программу с программным каналом включить собственный обработчик сигнала. Использовать сигнал для изменения хода выполнения программы.

Лаб. №5

Реализация задачи производство-потребление для UNIX

Реализация задачи читатели-писатели для UNIX

Семафор - неотрицательная защищенная переменная S >= 0, на которой определены 2 операции P(S) - пропустить, и V(S) - освободить.

Семафоры это ресурс.

Переменная защищена, т.к. м.б. изменена только этими двумя неделимыми операциями.

Операция P(S) - декремент. Процесс, вызвавший операцию P(S) для S = 0 будет заблокирован на семафоре.

Операция V (S) - инкремент, т.е. процесс разблокирует другой процесс, если было S = 0.

Бинарный семафор - принимает значения 0 или 1

Считающий семафор - принимает целые неотрицательные значения

Лаб. №6

Реализация задачи читатели-писатели для Windows (мониторы Хоара)

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

Семестр №6

Лаб. №1

Демон

Демон - процесс, который выполняется в фоновом режиме и не связан с терминальным устройством.

Идентификатор процесса, идентификатор лидера группы и лидера сессии одинаковые, так как демон является лидером группы и сессии, Ss : S прерываемый сон, s является лидером сессии, TTY = ?, так как у демона нет управляющего терминала

SIGHUP - сигнал о потере терминала. Данный сигнал игнорируется, чтобы процесс не завершился

Завершение родительского процесса нужно, чтобы гарантировать, что дочерний процесс не является лидером группы, что является необходимым условием вызова функции setsid (процесс становится лидером новой сессии, лидером новой группы процессов, лишается управляющего терминала).

Лаб. №2

Дерево каталогов

Лаб. №3

Загружаемые модули ядра

Модуль md1 экспортирует для использования другими модулями имя процедуры и имя структуры данных. Модуль md2, использующий экспортируемое имя, связывается с этим именем по прямому абсолютному адресу.

До тех пор, пока число ссылок на любой модуль в системе не станет нулевым, модуль не может быть выгружен

Лаб. №4

Виртуальная файловая система /procproc

Лаб. №5

Буферизованный и не буферизованный ввод-вывод

Лаб. №6

Сокеты

Лаб. №7

Системный вызов open()

Лаб. №8

Создание виртуальной файловой системы

Лаб. №9

Обработчики прерываний

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published