- •Промежуточные системы
- •А ппаратные средства
- •1.4.2. Загрузка ос
- •Построение и запуск задач
- •2. Основные компоненты операционных систем.
- •2.1. Понятия вычислительного процесса и ресурса
- •2.2. Понятия потока («нити») и многопоточности
- •2.2.1. Макросы и подпрограммы
- •2.2.2. Связывание информации
- •2.3. Основные принципы построения операционных систем
- •2.4. Архитектурные особенности проектирования операционных систем
- •2.5. Управление памятью
- •2.6. Управление вводом-выводом
- •3. Управление файлами и файловая система
- •4. Краткий обзор операционных систем
- •4.1.1. Операционная система unix. Общие понятия
- •4.1.2. Операционные системы реального времени
2. Основные компоненты операционных систем.
2.1. Понятия вычислительного процесса и ресурса
Понятие «вычислительный процесс» (или просто – процесс) является одним из основных при рассмотрении операционных систем. Под процессом обычно понимается последовательность операций при выполнении программы или ее части в совокупности с используемыми данными. В общем случае процесс и программа представляют собой разные понятия. Программа – это план действий, а процесс – это само действие, поэтому понятие процесса включает программный код, данные, содержимое стека, содержимое адресного и других регистров процессора. Таким образом, для одной программы могут быть созданы несколько процессов в том случае, если с помощью одной программы в центральном процессоре (central processor unit – CPU) вычислительной машины выполняется несколько несовпадающих последовательностей команд.
По временным характеристикам различают интерактивные процессы, пакетные процессы и процессы реального времени. По генеалогическому признаку различают порождающие и порожденные процессы. По времени развития процессы делятся на последовательные, параллельные и комбинированные (для последних есть точки, в которых существуют оба процесса, и точки, в которых существует только один процесс).
По принадлежности к операционной системе процессы бывают системные (исполняют программу из состава операционной системы) и пользовательские.
Примерами процессов являются прикладные программы пользователей, утилиты и другие системные обрабатывающие программы. Процессами могут быть редактирование какого-либо текста, трансляция исходной программы, ее компоновка, исполнение.
Определение концепции процесса преследует цель выработать механизмы распределения и управления так называемыми «ресурсами», которые также относятся к числу важнейших понятий ОС.
Ресурс – это любой потребляемый (расходуемый) объект. По запасам ресурсы подразделяются на исчерпаемые и неисчерпаемые. Потребители ресурсов – процессы. Ресурс – это средство вычисли-тельной машины или вычислительной системы, которое может быть выделено процессу на определенный интервал времени.
Примерами ресурсов являются некоторые аппартные устройства ВМ (процессоры, запоминающие устройства, устройства ввода-вывода) или некоторые наборы информации (в частности, совокупности записей определенной структуры – так называемые «файлы»).
Одно из преимуществ архитектуры фон Неймана - это последовательная обработка команд при быстром переходе к следующему шагу обработки. Однако такая идеалистическая картина в действительности не имеет места даже в случае однозадачной ОС. Например, таймер прерывает выполнение задачи каждый тик для изменения показания часов (эта операция происходит в другом окружении, нежели выполнение программы). При вводе данных выполнение задачи также прерывается и управление на время передается, например, клавиатурному процессу. Эти процедуры организованы таким образом, что у пользователя создается иллюзия непрерывного выполнения программы. Подпрограмма выполняется в своем окружении, и ее вызов на время останавливает выполнение программы, из которой этот вызов осуществляется. Во всех этих случаях точка прерывания в исполняемой программе должна каким-то образом запоминаться, чтобы после возвращения программа продолжила свое выполнение с этой точки.
В многозадачной системе ситуация еще более усложняется - следует запоминать и где-то хранить состояния (контексты) всех программ в момент их прерывания. При этом запоминаемый контекст должен быть максимально компактным.
Компактность контекста- еще одно неоспоримое достоинство рассмотренной схемы обработки выполняемой задачи. Если не происходит несанкционированного доступа в область памяти исполняемого файла, то состояние задачи вполне определяется следующими параметрами:
«нитью управления», т. е. адресом выполняемой команды (в реаль ном режиме - это CS: IP);
базовыми адресами на сегмент данных и стековый сегмент, а также указателем на вершину стека (значение регистра SP);
текущими значениями регистров общего назначения, в которых происходят вычисления.
Указанные параметры совместно с текущим состоянием сегмента данных, которое при такой структуре исполняемого файла не требуется запоминать, образуют компактный контекст, служащий основой для возобновления выполнения программы с прерванной точки.
Многозадачную систему с точки зрения выполняемой среды можно разделить на три уровня:
пользователя (в нем задача представляется в виде последовательно го и непрерывного набора программных кодов);
ядра, на котором происходит управление доступом программы к ресурсам вычислительной системы;
аппаратный, на котором осуществляется решение задачи на физическом уровне.
Самой важной частью многозадачной ОС является ядро. Попадая на уровень ядра, программа регистрируется в статусе процесса. (Процесс -это программа в момент выполнения). Отличие процесса от программы заключается в том, что он может либо быть активным, либо находиться в замороженном состоянии, дожидаясь пока ядро «найдет нужным» в очередной раз выделить ему время процессора. Такое положение вещей обязывает при первой регистрации фиксировать контекст, соответствующий началу программы, и каждый раз перед очередным замораживанием процесса перерегистрировать его, записывая текущее состояние задачи. Следует подчеркнуть, что процесс является самостоятельной единицей, которая полностью определяется своим контекстом.
Иначе обстоит дело с потоком. Несколько потоков могут быть связаны друг с другом через общую память, что ограничивает их самостоятельность. Уместно сказать, что в связи с этим поток имеет укороченный контекст. Примером работы с потоками может служить включение в Word рисунка из графического редактора через буфер (общую память).
Все достоинства потоков по сравнению с процессами связаны с наличием общей области памяти:
экономия внешней и внутренней памяти;
быстрый обмен данными между потоками;
контекст потока укороченный;
• упрощение отладки программ, состоящих из потоков. Недостатки потоков по сравнению с процессами также связаны с наличием общего раздела памяти:
в отличие от независимого процесса присоединяемый поток должен быть откомпилирован заново со всеми потоками, имеющими ту же общую область памяти;
неправильно работающий поток через общую область памяти может испортить все остальные потоки.