Расчет оперативной памяти для персонального компьютера.
К примеру, если на компьютере установлено 32Мб и система использует 16 Мб, при работе 4 процессов, требующих по 4Мб каждый, расходуется 80% на операции чтения/записи, получим что CPU = 1 –0.8**4 = 0.6 ~ 60%.
Добавление 16Мб позволило увеличить этот показатель до 83%. Добавление ещё 16Мб до 93%. При этом мы практически достигнем максимума, поскольку 20% - это очень хороший показатель. Дальнейшее увеличение памяти не даст ощутимого прироста производительности.
Проблемы организации виртуальной памяти
Чтобы обеспечить эффективность виртуальной памяти система должна быть очень «разумной». Если из памяти выгрузить блок, который тут же потребуется вновь, операционная система будет заниматься постоянным перемещением одних и тех же блоков в основную память и на диск. Задаче устранения этого нежелательного эффекта посвящен ряд исследовательских работ, выполнившихся в 70-х годах, приведших к появлению различных сложных, но эффективных алгоритмов.
По сути, они сводятся к попыткам определить на основании последних событий в системе, какие блоки памяти потребуются в ближайшем будущем.
ГЛАВА 5
Межпроцессное взаимодействие
Поводов для нежелательной конкуренции между процессами много, особенно при удалении имен каталогов. Предположим, что один процесс пытается найти данные файла по его полному символическому имени, последовательно проходя компонент за компонентом, а другой процесс удаляет каталог, имя которого входит в путь поиска. Допустим, процесс А делает разбор имени "a/b/c/d" и приостанавливается во время получения индексного узла для файла "с". Он может приостановиться при попытке заблокировать индексный узел или при попытке обратиться к дисковому блоку, где этот индексный узел хранится. Если процессу Внужно удалить связь для каталога с именем "с", он может приостановиться по той же самой причине, что и процесс А. Пусть ядро впоследствии решит возобновить процесс В раньше процесса А. Прежде чем процесс А продолжит свое выполнение, процесс В завершится, удалив связь каталога "с" и его содержимое по этой связи. Позднее процесс Апопытается обратиться к несуществующему индексному узлу, который уже был удален. Алгоритм поиска файла, проверяющий в первую очередь неравенство значения счетчика связей нулю, должен сообщить об ошибке.
Что такое API
ОС выступает как интерфейс между оборудованием и пользователем. Под интерфейсами ОС пользователи понимают инструменты, предназначенные для:
1. Управления процессами
2. Управление памятью
3. Управление вводом-выводом
Для реализации интерфейсов используются специальные программы, которые траслируют команды пользователя в вызовы операционной системы. Обычно эти программы называют интерпретаторами команд. Поле получения команды интерпретатор после лексического и синтаксического разбора либо сам выполняет некие действия, либо обращается к соответствующим модулям операционной системы. Отмечу что графический интерфейс (GUI) – частная задача управления вводом-выводом, не являющаяся частью ядра.
Стоит отметить что существуют два подхода управления процессами – «родитель-потомок» (UnIX) и равноправные отношения (Windows). Обращение к операционной системе, в зависимости от метода управления процессами сильно отличается. Так для однозадачных систем (DOS) использовался механизм программного прерывания. Набор функций API был доступен через точку обработчика int 21h. В более сложных системах имеется не одна а несколько точек входа – по количеству функций API. Так, в большинстве ОС используется метод вызова подпрограмм. В этом случае вызов сначала передается в модуль API (библиотека времени выполнения), который формирует вызовы обработчикам программных прерываний, входящих в состав ОС. Использование прерываний необходимо, поскольку в этом случае процессор переводится в состояние супервизора.
Что же обозначает термин API (application program interface). API можно условно разделить на 3 группы
1. Прикладной API - интерфейс высокого уровня к библиотеке RTL (run time library – библиотека времени выполнения RTL включает модули из системы программирования и модули ОС).API реализуется на уровне пользовательских программ;
2. Системный API - системные программы, в составе ОС.Реализация на уровне вызовов ядра ОС
3. Прочие API. Реализация на уровне внешней библиотеки процедур и функций.
Прикладные API
Прикладные API – интерфейс прикладного программирования предназначен для использования прикладными программами системных ресурсов ОС. API описывает совокупность функций и процедур, принадлежащих ядру ОС. Прикладное API представляет собой набор готовых функций, предоставляемых ОС разработчику прикладных программ с целевой вычислительной системой (ЦВС). ЦВС представляет собой совокупность программных и аппаратных средств, в окружении которых выполняются пользовательские программы. Сюда входят готовые библиотеки и объектные модули ОС. Благодаря этому разработчик избавлен от необходимости создавать код для выполнения типовых операций.
API включает в себя не только функции, но и соглашения об их использовании, которые регламентируются ОС и архитектурой. Объектный код API подключается к программе на этапе компоновки.
Эффективность API определяется широтой предоставляемых пользователю возможностей работы с ОС и минимальной зависимостью от архитектуры вычислительного комплекса.
Системный API на уровне ОС
При реализации API на уровне ядра за их выполнение отвечает ОС. Объектный код, выполняющий функции входит в состав ядра либо в подгружаемые модули. В этом случае любое обращение идет непосредственно к самой ОС, чем достигается наивысшая скорость.
Недостаток системных API в отсутствии переносимости и зависимости от аппаратной платформы. Программы, созданные для одной платформы не смогут работать на другой архитектуре. Переносимости можно было бы добиться если удастся стандартизировать (семантически) наполнение основных функций ядра (POSIX). Примером может служить WinAPI, позволяющая запускать программы в нескольких операционных системах Windows (98 –NT-XP).