Параллелизм часто поддерживается и реализуется в однопроцессорных системах путем разделения времени — так моделируется работа нескольких процессоров. Неконтролируемое взаимодействие различных процессов может привести к состоянию гонок. Чтобы избежать их, вводятся специальные средства синхронизации. Самыми простыми из них являются семафоры.
UNIX и Windows ХР являются сложными операционными системами. Обе системы поддерживают страничную организацию памяти и отображение файлов на память. Кроме того, они поддерживают иерархические файловые системы, где файлы состоят из последовательности байтов. Наконец, обе системы поддерживают процессы и программные потоки и предоставляют механизмы их синхронизации.
Вопросы и задания
1. Почему операционная система интерпретирует только некоторые команды уровня 3 (см. рис. 1.2), тогда как микропрограмма интерпретирует все команды уровня архитектуры команд?
2. Машина содержит 32-разрядное виртуальное адресное пространство с побайтовой адресацией. Размер страницы составляет 4 Кбайт. Сколько существует страниц виртуального адресного пространства?
3. Должен ли размер страницы соответствовать степени двойки? Есть ли теоретическая возможность реализации страницы размером, скажем, 4000 байт? Если да, насколько такой размер оправдан?
4. Виртуальная память содержит 8 виртуальных страниц и 4 физических страничных кадра. Размер страницы составляет 1024 слова. Соответствующая таблица страниц выглядит так, как табл. 6.10.
Таблица 6.10. Таблица страниц для задания 4
Виртуальная страница Страничный кадр
Нет в основной памяти |
|
Нет в основной памяти |
|
Нет в основной памяти |
|
Нет в основной памяти |
1) Создайте список виртуальных адресов, обращение к которым будет вызывать ошибку отсутствия страницы.
2) Каковы физические адреса для виртуальных адресов 0, 3728, 1023, 1024, 1025, 7800 и 4096?
5. Компьютер имеет 16 страниц виртуального адресного пространства и только 4 страничных кадра. Изначально память пуста. Программа обращается к виртуальным страницам в следующем порядке:
0, 7, 2, 7, 5, 8, 9, 2, 4
1) Какие из обращений по алгоритму LRU вызовут ошибку отсутствия страницы?
2) Какие из обращений по алгоритму FIFO вызовут ошибку отсутствия страницы?
6. В подразделе «Политика замещения страниц» раздела «Виртуальная память» был предложен алгоритм замещения страниц FIFO. Разработайте более эффективный алгоритм. Подсказка: можно обновлять счетчик во вновь загружаемой странице, оставляя все другие.
7. В системах со страничной организацией памяти, которые мы обсуждали в этой главе, обработчик ошибок отсутствия страниц был частью уровня архитектуры команд и, следовательно, отсутствовал в адресном пространстве операционной системы. На практике же такой обработчик занимает некоторые страницы и может быть удален при определенных обстоятельствах (например, в соответствии с политикой замещения страниц). Что бы случилось, если бы обработчика ошибок не было в наличии в тот момент, когда произошла ошибка? Как разрешить эту проблему?