Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционная система воросы.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
10.15 Mб
Скачать
  1. Ресурсы. Виды ресурсов. Примеры ресурсов.

Ресурс-это все что потребуется для работы программы.

Ресурсы бывают двух видов: выгружаемые и невыгружаемые. К выгружаемым относятся такие ресурсы, которые могут быть безболезненно отобраны у процесса, который ими обладает. Примером такого ресурса может послужить память.

Примером такого ресурса может послужить память.

Рассмотрим систему, имеющую 256 Мбайт пользовательской памяти, один принтер и два процесса по 256 Мбайт, каждый из которых хочет что-то вывести на печать.Процесс А запрашивает и получает принтер, а затем начинает вычислять значение, предназначенное для вывода на печать. Но до завершения вычисления истекает выделенный ему квант времени, и он выгружается на диск. 6.1. Ресурсы 509 Теперь запускается процесс В, безуспешно пытаясь завладеть принтером. Потенциально возникает ситуация взаимоблокировки, поскольку у процесса А есть принтер, а у процесса В — память, и ни один из них не может продолжить свою работу без ресурса, удерживаемого другим процессом. К счастью, есть возможность отобрать память у процесса В, выгрузив этот процесс на диск, и загрузить оттуда процесс А. Теперь А может возобновить свою работу, выполнить распечатку и высвободить принтер. И никакой взаимоблокировки не возникнет.

А вот невыгружаемый ресурс нельзя отобрать у его текущего владельца, не

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

  1. Потоки. Реализация потоков в ос Windows и Unix. Планировщик потоков.

Потоки - это отдельно выделенная подзадача .

потоки реализуются в 3 вариантах на уровне пользователя, смешанный вариант, ядро операционной системы. Это значит , что ос знает, что такое поток,потоки создаются, удаляютсяв зависимости от системных вызовов

(так работает Windows)

Пданирование происходит на уровне процессов при этом время выделяется на все потоки одновременно.

Реализация потоков на уровне пользователей(так устроен Unix).Считается, что пользователь лучше знает, сколько времени нужно выделить на поток.

Планировщик потоков содержит очереди потоков, готовых к выполнению. Для каждого приоритета - своя очередь. Когда поток готов к выполнению (ready for execution) - то есть не находится внутри Sleep() или WaitForObject() - система помещает его в очередь потоков соответствующего приоритета. Планировщик просматривает все очереди, начиная с самого высокого приоритета. Как только находит непустую очередь, он выдает один time slice первому потоку, перемещает его в конец очереди, и начинает просмотр сначала. Планировщик даже не будет просматривать очереди с меньшим приоритетом, пока есть непустые очереди с большим приоритетом.

  1. Межпроцессное взаимодействие. Критическая секция. Примеры межпроцессного взаимодействия.

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

межпроцессным взаимодействием.

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

Временами возникает потребность в передаче информации запущенному

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

выполнение другой работы.