Добавлен: 29.10.2018
Просмотров: 48002
Скачиваний: 190
106
Глава 1. Введение
нужно было выбрать для них разные сокращения — для милли- используется «м»,
а для микро- — «мк».
Таблица 1.4. Основные метрические префиксы
По-
ка-
за-
тель
Развернутый вид
Пре-
фикс
По-
ка-
за-
тель
Развернутый вид
Пре-
фикс
10
–3
0,001
милли
10
3
1000
Кило
10
–6
0,000001
микро
10
6
1 000 000
Мега
10
–9
0,000000001
нано
10
9
1 000 000 000
Гига
10
–12
0,000000000001
пико
10
12
1 000 000 000 000
Тера
10
–15
0,000000000000001
фемто 10
15
1 000 000 000 000 000
Пета
10
–18
0,000000000000000001
атто
10
18
1 000 000 000 000 000 000
Экса
10
–21
0,000000000000000000001
зепто
10
21
1 000 000 000 000 000 000 000
Зетта
10
–24
0,000000000000000000000001 йокто
10
24
1000 000 000 000 000 000 000 000
Йотта
Следует отметить, что при измерении объемов памяти в компьютерной промышлен-
ности принято использовать единицы измерения, значения которых несколько от-
личаются от общепринятых. Кило означает 2
10
(1024), а не 10
3
(1000), поскольку для
измерения памяти всегда применяются степени числа 2
1
. Поэтому 1 Кбайт памяти со-
держит 1024 байта, а не 1000 байт. Точно так же 1 Мбайт содержит 2
20
(1 048 576) байт,
а 1 Гбайт — 2
30
(1 073 741 824) байт. Но линия связи в 1 Кбит/с передает 1000 бит/с,
а 10-мегабитная локальная сеть работает со скоростью 10 000 000 бит/с, поскольку
эти скорости не измеряются в степенях числа 2. К сожалению, многие люди имеют
склонность смешивать эти две системы, особенно при измерении емкостей дисковых
накопителей. Для исключения неоднозначности в этой книге мы будем использовать
обозначения «Кбайт», «Мбайт» и «Гбайт» для 2
10
, 2
20
и 2
30
соответственно, а «Кбит/с»,
«Мбит/с» и «Гбит/с» — для 10
3
, 10
6
и 10
9
бит/с соответственно.
1.12. Краткие выводы
Операционные системы можно рассматривать с двух точек зрения: в качестве менед-
жеров ресурсов и в качестве расширенных машин. С точки зрения менеджера ресурсов
работа операционных систем заключается в эффективном управлении различными
частями системы. С точки зрения расширенной машины работа операционных систем
состоит в предоставлении пользователям абстракций, более удобных в использовании
по сравнению с реальным компьютером. В число таких абстракций включаются про-
цессы, адресные пространства и файлы.
1
Если еще более точно, то для системы единиц на основе степеней числа 2 относительно не-
давно стандартизированы отдельные обозначения. Например, 210 (1024) байт обозначается
как 1 KiB — 1 кибибайт. Однако на практике все еще сохраняется неопределенность в ис-
пользовании производных единиц измерения, поэтому в книге применяются соглашения,
указанные автором. — Примеч. ред.
Вопросы
107
Операционные системы имеют долгую историю, которая начинается с тех дней, когда
ими заменили оператора, и доходит до современных многозадачных систем. Вехи
этой истории включают ранние системы пакетной обработки, многозадачные системы
и операционные системы персональных компьютеров.
Поскольку операционные системы тесно взаимодействуют с аппаратным обеспечением,
для их понимания могут быть полезны некоторые знания об устройстве компьютерного
оборудования. Компьютеры состоят из процессоров, памяти и устройств ввода-вывода.
Все эти составные части соединяются с помощью шин.
Базовыми понятиями, на которых строятся все операционные системы, являются про-
цессы, управление памятью, управление вводом-выводом данных, файловая система
и безопасность. Все они будут рассмотрены в последующих главах.
Основой любой операционной системы является набор системных вызовов, которые
она способна обработать. Они говорят о том, что реально делает операционная система.
Мы рассмотрели четыре группы системных вызовов для UNIX. Первая из них от-
носилась к созданию и прекращению процессов. Вторая предназначалась для чтения
и записи файлов. Третья группа служила для управления каталогами. Четвертая группа
включала в себя системные вызовы различного назначения.
Операционные системы могут иметь различную структуру. Наиболее распространен-
ными являются монолитная система, многоуровневая система, микроядро, клиент-
серверная система, виртуальная машина и экзоядро.
Вопросы
1. В чем заключаются две основные функции операционной системы?
2. В разделе 1.4 были описаны девять различных типов операционных систем. При-
ведите перечень применений для каждой из этих систем (по одному для каждого
типа операционной системы).
3. В чем разница между системами с разделением времени и многозадачными си-
стемами?
4. Для использования кэш-памяти основная память делится на кэш-строки, которые
обычно имеют длину 32 или 64 байта. Кэшируется сразу вся кэш-строка. В чем
преимущество кэширования всей строки перед побайтным или пословным кэ-
шированием?
5. Каждая операция чтения или записи байта на самых первых компьютерах управ-
лялась центральным процессором (то есть без использования прямого доступа
к памяти — DMA). Какие осложнения создавались тем самым для режима много-
задачности?
6. Инструкции, касающиеся доступа к устройствам ввода-вывода, обычно относятся
к привилегированным инструкциям, то есть они могут выполняться в режиме
ядра, но не в пользовательском режиме. Назовите причину привилегированности
этих инструкций.
7. Идея создания семейства компьютеров была представлена в 60-х годах прошлого
века с появлением мейнфреймов серии IBM System/360. Жива ли эта идея сейчас?
108
Глава 1. Введение
8. Одной из причин того, что графический пользовательский интерфейс приживался
довольно медленно, была стоимость оборудования, необходимого для его поддерж-
ки. Какой объем видеопамяти необходим для поддержки изображения на экране
в монохромном текстовом режиме, имеющем 25 строк из 80 символов? А какой
объем необходим для поддержки растрового изображения 1200 × 900 пикселов
при глубине цвета 24 бита? Какова была стоимость необходимого для них ОЗУ
в 1980 году (при цене $5 за килобайт)? Какова эта стоимость в настоящее время?
9. При создании операционных систем одновременно решаются задачи, например,
использования ресурсов, своевременности, надежности и т. д. Приведите пример
такого рода задач, требования которых могут противоречить друг другу.
10. В чем разница между режимом ядра и пользовательским режимом? Объясните,
как сочетание двух отдельных режимов помогает в проектировании операционных
систем.
11. У диска объемом 255 Гбайт имеется 65 536 цилиндров с 255 секторами на каждой
дорожке и с 512 байтами в каждом секторе. Сколько пластин и головок у этого
диска? Предполагая, что среднее время поиска цилиндра составляет 11 мс, среднее
время ожидания подхода рабочего сектора к головке — 7 мс, а скорость считы-
вания — 100 Мбит/с, вычислите среднее время, необходимое для считывания
400 Кбайт из одного сектора.
12. Выполнение какой из следующих команд должно быть разрешено только в режиме
ядра:
а) блокировка всех прерываний;
б) чтение показаний даты и времени внутренних часов;
в) установка показаний даты и времени внутренних часов;
г) изменение схемы распределения памяти?
13. Рассмотрим систему, имеющую два центральных процессора, у каждого из которых
есть два потока (работающих в режиме гипертрейдинга). Предположим, есть три
запущенные программы: P0, P1 и P2 со временем работы 5, 10 и 20 мс соответ-
ственно. Сколько времени займет полное выполнение этих программ? Следует
принять во внимание, что все три программы загружают центральный процессор
на 100 %, не осуществляют блокировку во время выполнения и не меняют цен-
тральный процессор, назначенный для их выполнения.
14. Компьютер обладает четырехступенчатым конвейером, и все ступени выполняют
свою работу за одно и то же время — 1 нс. Сколько инструкций в секунду сможет
выполнить эта машина?
15. Рассмотрим компьютерную систему, имеющую кэш-память, ОЗУ и диск, а также
операционную систему, использующую виртуальную память. Время доступа к сло-
ву из кэш-памяти занимает 1 нс, из ОЗУ — 10 нс, с диска — 10 мс. Если показатель
успешного поиска в кэш-памяти составляет 95 %, в ОЗУ (после неудачного поиска
в кэш-памяти) — 99 %, каким будет среднее время доступа к слову?
16. Когда пользовательская программа осуществляет системный вызов для чте-
ния файла с диска или его записи на диск, она сообщает, какой файл ей нужен,
предоставляет указатель на буфер данных и сообщает о количестве байтов. Затем
управление передается операционной системе, которая вызывает соответствую-
Вопросы
109
щий драйвер. Предположим, что драйвер запускает диск и приостанавливает свою
работу до тех пор, пока не возникнет прерывание. Очевидно, что в случае чтения
данных с диска вызывающая программа будет заблокирована (поскольку для нее
нет данных). А что произойдет в случае записи данных на диск? Нужно ли блоки-
ровать вызывающую программу в ожидании завершения переноса данных на диск?
17. Что означает команда trap? Объясните ее использование в операционных систе-
мах.
18. Почему в системах разделения времени необходима таблица процессов? Нужна
ли она в операционных системах персональных компьютеров, работающих под
управлением UNIX или Windows при единственном пользователе?
19. Есть ли какие-либо причины, по которым вам может понадобиться подключить
файловую систему к непустому каталогу? И если есть, то какие?
20. Для каждого из следующих системных вызовов назовите условия, при которых
возникает ошибка: fork, exec и unlink.
21. Какой тип мультиплексирования (во времени, в пространстве или сразу и в том
и в другом) может быть применен для совместного использования следующих
ресурсов: ЦП, памяти, диска, сетевой карты, принтера, клавиатуры и дисплея?
22. Может ли вызов
count = write(fd, buffer, nbytes);
вернуть в переменной count значение, отличное от значения nbytes? Если да, то
почему?
23. Файл, дескриптором которого является fd, содержит следующую последователь-
ность байтов: 3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5. Выполняется следующий системный вызов:
lseek(fd, 3, SEEK_SET);
read(fd, &buffer, 4);
где вызов lseek перемещает указатель на третий байт файла. Что будет содержать
буфер, когда завершится работа вызова read?
24. Предположим, что файл объемом 10 Мбайт хранится на диске на одной и той же
дорожке (с номером 50) в последовательных секторах. Блок головок диска рас-
положен над дорожкой с номером 100. Сколько времени займет извлечение этого
файла с диска? Предположим, что время перемещения блока головок на один
цилиндр занимает около 1 мс, а на попадание под головку того сектора, с которого
начинается сохраненный файл, уходит около 5 мс. Также предположим, что чтение
осуществляется со скоростью 200 Мбайт/с.
25. В чем заключается существенная разница между блочным специальным файлом
и символьным специальным файлом?
26. В примере, приведенном на рис. 1.17, библиотечная процедура называется read,
и сам системный вызов — read. Так ли это важно, чтобы их имена совпадали? Если
нет, то какое из имен важнее?
27. В
современных операционных системах адресное пространство процесса отделено
от физической памяти машины. Назовите два преимущества такой конструкции.
28. С точки зрения программиста, системный вызов похож на вызов любой другой
библиотечной процедуры. Важно ли программисту знать, какая из библиотечных
110
Глава 1. Введение
процедур в результате приводит к системным вызовам? Если да, то при каких
обстоятельствах и почему?
29. В табл. 1.2 показано, что ряд системных вызовов UNIX не имеют эквивалентов
в Win32 API. Каковы последствия для программиста перевода программы UNIX
для запуска под Windows (для каждого из вызовов, помеченных как не имеющие
эквивалента)?
30. Переносимая операционная система может быть перенесена с одной системной
архитектуры на другую без каких-либо модификаций. Объясните, почему невоз-
можно создать операционную систему, обладающую полной переносимостью.
Опишите два верхних уровня, которые будут задействованы при проектировании
операционной системы с высокой степенью переносимости.
31. Объясните, как разделение политики и механизма помогает в создании операци-
онных систем, основанных на микроядрах.
32. Виртуальные машины приобрели высокую популярность по различным причинам.
И тем не менее у них имеется ряд недостатков. Назовите хотя бы один из них.
33. Ответьте на следующие вопросы по переводу одних единиц измерения в другие:
1) Сколько секунд длится наногод?
2) Микрометры часто называют микронами. Какова длина мегамикрона?
3) Сколько байтов содержится в 1 Пбайт памяти?
4) Масса Земли составляет 6000 Йг (йоттаграммов). Сколько это будет в кило-
граммах?
34. Напишите оболочку, похожую на представленную в листинге 1.1, но содержащую
все необходимое для того, чтобы она работала и ее можно было протестировать.
В нее можно также добавить некоторые элементы, например перенаправление
ввода и вывода, каналы и фоновые задания.
35. Если у вас есть персональная UNIX-подобная система (Linux, MINIX, FreeBSD
и т. д.), которую можно без особого вреда ввести в зависшее состояние и перезагру-
зить, напишите сценарий для оболочки, который пытается создать неограниченное
число дочерних процессов, запустите его и посмотрите, что произойдет. Перед за-
пуском эксперимента наберите команду
sync
, чтобы сбросить на диск содержимое
буферов файловой системы во избежание ее краха.
Примечание
: не пытайтесь сделать это на системе с разделением времени (систе-
ме коллективного пользования) без предварительного получения разрешения от
системного администратора. Последствия проявятся немедленно, поэтому ваши
действия будут отслежены и к вам будут применены соответствующие санкции.
36. Исследуйте и попытайтесь объяснить содержимое каталогов в системах семейства
UNIX или Windows c помощью программы
od
системы UNIX или программы
DEBUG
MS-DOS.
Совет
: способ выполнения задания зависит от того, что позволит сделать опера-
ционная система. Может сработать следующая хитрость: нужно создать каталог
на USB-накопителе с использованием одной операционной системы, а затем
считать исходные дисковые данные, используя другую операционную систему,
допускающую подобный доступ.