Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Full_OS (1).doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
6.1 Mб
Скачать

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

Виртуальная память

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

Методы виртуализации памяти: свопинг (swapping), виртуальная память (virtual memory).

Достоинства свопинга: малые затраты времени на преобразование адресов в кодах программ. Недостатки:: избыточность перемещаемых данных, замедление работы системы, неэффективное использование памяти, невозможность загрузить процесс, адресное пространство которого превышает объем свободной оперативной памяти.

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

Методы реализации виртуальной памяти:

  1. Страничная виртуальная память – организует перемещение данных между ОП и диском страницами – частями виртуального адресного пространства фиксированного и сравнительно небольшого размера.

  2. Сегментная виртуальная память предусматривает перемещение данных сегментами – частями виртуального адресного пространства произвольного размера, полученными с учетом смыслового значения данных.

  3. Сегментно-страничная виртуальная память использует двухуровневое деление: виртуальное адресное пространство делится на сегменты, а затем сегменты делятся на страницы. Единицей перемещения данных является страница.

Для временного хранения сегментов и страниц на диске отводится специальная область – страничный файл или файл подкачки (paging file).

Задача 63

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

LRU – Least-Recent-Used. При необходимости подгрузки страницы, если свободного места в памяти нет, то из неё удаляется страница, использованная наибольшее время назад.

0172. Ни одной из страниц в памяти нет. 4 прерывания. Память: 0172

3. Этой страницы в памяти нет. 1 прерывание. Память: 3017

2. Этой страницы в памяти нет. 1 прерывание. Память: 2301

7. Этой страницы в памяти нет. 1 прерывание. Память: 7230

1. Этой страницы в памяти нет. 1 прерывание. Память: 1723

0. Этой страницы в памяти нет. 1 прерывание. Память: 0172

3. Этой страницы в памяти нет. 1 прерывание. Память: 3017

Итого: 10 прерываний.

Билет 64

  1. Процессы в системе unix. Создание дочерних процессов. Примеры.

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

1)Единственными активными сущностями в системе Unix являются процессы. Unix представляет собой многозадачную систему, так что несколько независимых процессов могут работать одновременно. У каждого пользователя системы может быть одновременно несколько активных процессов, также существует множество фоновых процессов (демонов). Они запускаются автоматически при загрузке системы. Типичным демоном является cron daemon, предназначенный для планирования и запуска процессов.

Системный вызов fork создает точную копию исходного процесса, называемого родительским процессом. Новый процесс называется дочерним. У процессов собственные образы памяти. Если родительский процесс в последствие изменит какие–то свои переменные, то эти изменения останутся невидимыми для дочернего процесса, и наоборот. Открытые файлы используются родительским и дочерним процессами совместно.

Создание процесса в системе Unix:

pid = fork ( );

/* если fork завершился успешно, pid > 0 в родит. процессе */

if (pid < 0) {

handle_error ( );

/* fork потерпел неудачу (например, память переполнена)*/

} else if (pid > 0) {

/* здесь располагается родительская программа */

} else {

/* здесь располагается дочерняя программа */

}

Процессы взаимодействуют с помощью каналов. Синхронизация процессов достигается путем блокировки процесса при попытке прочитать данные из пустого канала. Например, когда оболочка выполняет строку sort < f | head она создаст два процесса, sort и head, и устанавливает между ними канал. Если канал переполняется, система приостанавливает работу sort, пока head не удалит хоть сколько-нибудь данных. Процессы могут взаимодействовать также при помощи программных прерываний посылкой сигналов.

Для управления процессами используются системные вызовы. Например, pid = fork() (создать дочерний процесс), exit (status) (завершить выполнение процесса и вернуть статус), s = pause ( ) (приостановить выполнение процесса до след. сигнала), s = kill (pid, sig) (послать сигнал процессу) и др.

Стандартом POSIX предусматривается реализация потоков в пространстве пользователя и ядра ОС. Существуют наиболее часто применяемые вызовы управления потоками , такие как pthread_create (создать поток в адресном пространстве вызывающего процесса ), pthread_exit (завершить поток), pthread_ cond_init(создать условную переменную), pthread_ cond_ destroy (уничтожить условную переменную), pthread_mutex_init (создать новый мьютекс) и др.

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

2)

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

Достоинства и недостатки этого типа следующие:

Достоинства

  1. возможность реализации на ядре не поддерживающем многопоточность

  2. Более быстрое переключение, создание и завершение потоков

  3. процесс может иметь собственный алгоритм планирования.

Недостатки

  1. Отсутствие прерывания по таймеру внутри одного процесса

  2. При использовании блокирующего системного запроса все остальные потоки блокируются.

  3. Сложность реализации

  • Поток в пространстве ядра. Наряду с таблицей процессов в пространстве ядра имеется таблица потоков.

Достоинства и недостатки этого типа следующие:

Достоинства

  1. Не нужны новые не блокирующие системные запросы

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

Недостаток

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

  • Смешанная реализация. Потоки работают в режиме пользователя, но при системных вызовах переключаются в режим ядра.

Переключение в режим ядра и обратно является ресурсоемкой операцией и отрицательно сказывается на производительности системы. Поэтому было введено понятие волокна — облегченного потока, выполняемого исключительно в режиме пользователя. У каждого потока может быть несколько волокон. Подобный тип многопоточности реализован в ОС Windows.

Задача.

Сравните для жесткого диска емкостью 20 Гбайт с размещением файлов в виде связанного списка кластеров и в виде связанного списка индексов при размере кластера 8 Кбайт максимальное количество файлов, которое можно разместить на диске и долю адресной информации в процентах от емкости диска.

  1. В виде связного списка кластеров Максимум 20 гбайт / 8 кбайт = 2621440 файлов Доля адресной информации = 2621440 * 4 байта (столько надо для хранения номера кластера) / 20 гбайт * 100% = 0,0488 %

  2. В виде связного списка индексов

152

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]