Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции ОС (2).doc
Скачиваний:
4
Добавлен:
03.09.2019
Размер:
202.75 Кб
Скачать

1.4. Ядро ос.

Ядро - часть ОС, которая выполняет операции, связанные с процессами. Важная функция ядра - это обработка прерываний. Когда ядро обрабатывает текущее прерывание, оно запрещает другие прерывания и разрешает их снова только после завершения обработки текущего прерывания. При постоянном потоке прерываний может образоваться очередь прерываний, следовательно, ядро организовано таким образом, чтобы оно определяло только тип прерывания, а затем передавало его на дальнейшую обработку соответствующей системной программе по работе именно с этим типом прерывания, что не влечет к созданию больших очередей из прерываний в ОС. Функции ядра:

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

  1. Создание/уничтожение процесса.

  2. Переключение процесса из состояния в состояние.

  3. Диспетчеризация (регулировка).

  4. Приостановка и активизация.

  5. Синхронизация процесса.

  6. Организация взаимодействия между процессами.

  7. Манипулирование БУП.

  8. Поддержка операций ввода/вывода.

  9. Поддержка распределения и перераспределения памяти.

  10. Поддержка работы файловой системы.

1.5. Параллельные процессы в ОС. Синхронные - процессы, которые работают и не зависят друг от друга. Асинхронные - такие процессы, которые работают параллельно, но периодически должны синхронизироваться и взаимодействовать между собой. Параллельная работа процессов в ОС резко повышает производительность компьютера. Процесс находится в своем критическом участке, когда он обращается к общим данным. В этом случае другим процессам это запрещается. Этот способ взаимодействия параллельных процессов называется взаимоисключением в ОС. Правила работы процесса в своем критическом участке:

  1. Процесс не может быть блокирован.

  2. Свои критические участки процессы должны проходить как можно быстрее.

1.6. Семафоры в ОС. Семафор - механизм реализации взаимоисключения процессов. Пример работы двух параллельных асинхронных процессов: Даны 2 процесса: "производитель" и "потребитель". "Производитель" вырабатывает какое-либо число и записывает его в ячейку памяти. "потребитель" считывает число, производит какие-либо вычисления и результат выводит на печать. Идеально, когда оба процесса работают с одинаковой скоростью. В том случае, если скорость "потребителя" больше, чем скорость "производителя", мы наблюдаем: "потребитель" считывает из памяти одно и тоже число несколько раз, следовательно, на распечатке будет дублирование какого-либо результата. Если скорость "потребителя" меньше скорости "производителя", наблюдаем: "производитель" записывает число в память, но предыдущее число не было считано потребителем, => на распечатке некоторые результаты будут отсутствовать. Чтобы этого не допустить в ОС работают семафоры как для "производителя", так и для "потребителя". 1.7. Тупики в ОС. Тупик (клинч, дедлок) - ситуация, которая никогда не разрешится, т.е. процесс ждет ресурса, но он ему не будет выделен. ОС в состоянии тупика ("зависание") - когда несколько процессов находятся в состоянии тупика. Простая тупиковая ситуация в ОС: Пусть имеются 2 процесса A и B, которым перед началом работы предоставлены ресурсы P1 и P2 соответственно. В какой-то момент времени процессу A понадобился P2, а процессу B - P1, но они их не получат, т.к. они удерживаются предыдущими процессами => наступила простая тупиковая ситуация в ОС. Правила предотвращения тупиков в ОС:

Прежде чем процесс начнет свою работу, ему должны быть предоставлены все требуемые ресурсы.

  1. В том случае, если во время работы ему понадобился дополнительный ресурс, ему необходимо возвратить все ранее выделенные ресурсы ОС и затем запросить все требуемые ресурсы с этим дополнительным ресурсом.

Бесконечное откладывание процесса. В системе, где процессам приходится ждать пока она выделит ему требуемый ресурс может возникнуть ситуация, что будут приходить процессы с более высоким приоритетом, требующие тот же самый ресурс - ситуация бесконечного откладывания процесса. В некоторых ОС данная ситуация предотвращается благодаря увеличению приоритетности ("старению" процесса) для того, чтобы ему был предоставлен требуемый ресурс, после чего приоритет понижается до прежнего уровня. 1.8. Управление памятью. Организация и управление основной памятью компьютера - один из самых важных факторов, определяющих построение ОС. Для непосредственного выполнения программ или обращения к данным необходимо, чтобы они размещались в основной памяти. Вторичная, или внешняя память (жесткий диск), хранит множество программ и данных, которые должны быть наготове для обработки, т.е. загружены в основную память. Организация памяти. Под организацией памяти понимается, каким образом предоставляется и используется основная память, т.е. необходимо дать ответы на следующие вопросы:

  1. Будем ли мы помещать в основную память только одну программу пользователя или несколько программ одновременно.

  2. Если в основной памяти размещается программ сразу, будем ли мы предоставлять каждой из них одинаковое количество ячеек памяти или разобьем ее на части (разделы) различных размеров.

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

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

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

Иерархия памяти. Чтобы программы можно было выполнять, они должны находиться в основной памяти, а программы и данные, которые в настоящий момент не нужны, можно хранить во внешней памяти. Современные ОС поддерживают 3 уровня памяти:

  • кэш-память

  • основная

  • внешняя

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

Категории управления памятью.

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

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

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

  • Стратегии размещения. Целью является определить, в какое место основной памяти следует помещать поступающую программу. Используются стратегии размещения:

    • "первого подходящего"

    • "наиболее подходящего"

    • "наименее подходящего" - по размерам свободного участка памяти.