Лекция №6 Обзор современных файловых систем: FAT, NTFS.
План:
1. Выполняющаяся прикладная программа пользователя
2. Утилит
3. Трансляция программ
4. Компоновка, выполнение
Понятие процесса относятся к одному из основополагающих в ОС. Существует много определений термина процесс в том числе:
- Выполняющаяся прикладная программа пользователя
- Экземпляр программы, выполняющийся на компьютере
- Объект, который можно индетифицировать и выполнять на процессоре
- Единица активности, которую можно охарактеризовать единой цепочкой последовательных действий, текущим состоянием и связанных с ней набором системных ресурсов.
Как понятие процесс является определенным типом абстракции, и обычно следует придерживаться следующего неформального определения.
Последовательный процесс (задача) – выполнение отдельной программы и ее данные на последовательном процессоре.
В качестве примера можно назвать следующие процессы:
5. Выполняющаяся прикладная программа пользователя
6. Утилит
7. Трансляция программ
8. Компоновка, выполнение
Определение понятия процесс ставит цель выработать механизм распределения и управления ресурсами. Понятие ресурс как и понятие процесса является основным при рассмотрении ОС. Термин ресурс применяется к повторно используемым, относительно стабильным и часто недостающем объектом, которые запрашиваются, используются и освобождаются процессами в период их активности, т.е. ресурсом называется всякий объект, который может распределяться внутри системы.
Мысленно процесс можно разделить на 3 компонента:
1. Выполняющаяся программа
2. Данные нужные для работы
Контекст выполняющейся программы (execution context) или состояние процесса (process state) Включат в себя всю информацию нужную ОС для управления процессами и процессору для его выполнения. Данные, характеризующие это состояние, включают в себя содержимое различных регистров процессора, таких как программный счетчик и регистры данных, приоритет процесса и сведения о том, находится ли данный процесс в состоянии ожидания вв-выв.
1-список процессов
А-процесс А
В-процесс В
2-индекс процесса
3-PC счётчик команд
4-базовый регистр
5-граничный регистр
На рис. Показан пример реализации процесса. Два процесса А и В находятся в различных областях основной памяти. Каждому процессу отведён блок памяти, в к-ом создаётся код программы, данные и информация о состоянии процесса. Каждый процесс заносится в список процессов, который создаётся и поддерживается OC. Часть этого списка, соответствующая определённому процессу, содержит указатель размещения этого процесса в памяти. В регистре индекса процесса содержится индекс выполняющегося в текущий момент времени процесса, идентифицирующий его в списке процессов. Содержимое команд (PC) указывает на очередную инструкцию, к-ую нужно выполнить. Базовый и граничный регистры задают область памяти, занимаемую процессом. В базовый регистр заносится адрес начальной ячейки памяти, а в граничный- её размер в байтах.
Содержимое программного счётчика и всех ссылок на данные отсчитывается от значения базового регистра. По своей величине эти ссылки не могут превосходить значения граничного регистра. Регистр индекса процесса показывает, что выполняется процесс В, до этого выполняется процесс А, но он временно прерван. Содержимое всех регистров в момент прекращения этого процесса записано в виде данных о состоянии процесса. Впоследствии ОС сможет к выполнению процесса А. При этом будет сохранён контекст выполнения процесса В и восстановлен контекст процесса А. Когда в программный счётчик загрузится значение, указывающее на область кода, программа процесса Аавтоматически возобновиться выполнение этого процесса. Таким образом процесс реализируется в виде структуры данных. Он может выполнятьсяили находиться в состоянии ожидания. Состояние процесса в каждый момент времени заносится в специально отведённую область данных. Использование структуры позволяет развить мощные методы координации и взаимодействия процесса. Расширяя и добавляя данные о состоянии процесса доп. информации можно разработать новые возможности ОС. В обычных ОС общего назначения процес может находиться в активном и пассивном состоянии.
В активном состоянии процесс участвует в конкуренции за исп-ие ресурса выч системы, а в пассивном- он только известен системе, но в конкуренции не участвует. В свою очередь активный процесс м/б в одном из следующих состояний:
1. Выполнение- все затребованные процессом ресурсы выделены. В этом состоянии в каждый момент времени может находиться только один процесс (В однопроцессорной выч системе)
2. Готовность к выполнению- ресурсы м/б предоставлены, тогда процесс перейдёт в состояние выполнения
3.Блокирование или ожидание- затребованные ресурсы не м/б предоставлены или не завершена операция вв/выв.
В большенстве ОС последнее состояние подразделяется на мн-во состояний ожиданий, соответствующих определённому виду ресурсов из-за отсутствия которого процесс переходит в заблокированное состояние.
В обычных ОС процесс появляется при запуске какой-нибудь программы ОС пораждает для нового процесса соответствующий дескриптор процесса и процесс начинает выполняться. Поэтому пассивного состоянияне существует. В ОС реального времени уже заранее бывает известен состав программ которые должны выполняться. Известны и многие их параметры которые необходимо учитывать при распределении ресурса. Например: объём памяти, приоритет, средняя длительность выполнения, открываемые файлы, исп-ые устройства и т. д. Поэтому для них заранее заводят дискрипторы процесса, чтобы в последствии не тратить время на организацию дискрипторов таким образом в ОСРВ многие процессы находятся в состоянии бездействия.
Процесс состояния бездействия может перейти в состояние готовности в следующих случаях:
1. По команде оператора.
2. При выборе из очереди планировщиком.
3. По вызову из другой задачи. Один процесс может создать, инециировать, приостановить, уничтожить другой процесс.
4. По прерыванию от внешнего инециативного устройства. (Сигнал о завершении некоторого события может запускать соответствующий процесс).
5. При наступлении запланированного времени запуска программ.
Последние два способа запуска характерны для ОСРВ (реал. времени).
Из состояния выполнения процесс может выйти по одной из следующих причин:
1)Процесс завершается, при этом он передаёт управление ОС и сообщает о своём завершении.
2)Процесс переводится ОС в состояние готовности к выполнению в связи с появлением более приоритетной задачи и в связи с окончанием выделенного ему кванта времени.
3)процесс блокируется (переводится в состояние ожидания) либо в силу невозможности предоставить ему ресурс, запрошенный в настоящий момент. При наступлении соответствующего события (завершилась операция вв/выв, освободился затребованный ресурс в опер. памяти, загружена необходимая страница виртуальной памяти и т. д. ) процесс деблокируется и переводится в состояние готовности к исполнению. Таким образом движущей силой, меняющей состояние процесса является событие. Один из ост. видов- прерывание.
Для того чтобы ОС могла управлять процессами, она должна распологать необходимой для этого информацией. С этой целью на каждый процесс заводится специальная специальная информационная структур, называемая диструктором процесса. (описатель задачи, блок управления задачей) Деструктор содержит следующую информацию:
1. Идентификатор процесса (Process Identificator (ID))
2. Тип или класс процесса, который определяет для ОС некоторые правила предоставления ресурсов.
3. Приоритет процесса. В соответствии с которым ОС предоставляет ресурсы В рамках одного класса процессов в первую очередь обслуживается более приоритетный процесс.
4. Переменную состояния, которая определяет в каком состоянии находится процесс (готов кработе, состояние выполнения, ожидание устройства ввода/вывода и т. д.)
5. Защищённую область памяти в которой хранится текущее значение регистров процессора, если прерывается не закончив работу. Эта информация называется контекстом процесса(задачи).
6. Информацию о ресурсах, которыми процесс владеет и имеет право пользоваться (указатели на открытые файлы, инфа о независимых операциях вв/выв и т. т.)
7. Место памяти или адрес этого места для организации общения с другими процессами.
8. Параметры времени запуска. (момент времени, когда процессор должен активизироваться и периодичность этой операции).
Дескрипторы процесса постоянно находятся в опер. памяти, чтобы ускорить работу ОС, которая организует их в списки (очереди) и отображает изменение состояния процесса, перемещением соответствующего дескриптора из одного списка в другой. В некоторых ОС количество дескрипторов определяется жёстко и заранее на этапе генерации варианта ОС или в конфигурационном файле, который исполняется при загрузке ОС. В других ОС по мере необходимости система выделяет участки памяти под новые дескрипторы.
Для аппаратной поддержки работы ОС с дескрипторами задач процессора реализованы соответствующие механизмы. Например процессора intel (i80*86) имеется специальный регистр Task Register (TR) указывающий местонахождение сигмента состояния задачи Task State Segment (TSS) в котором при переключении с процесса на процесс автоматически сохраняется содержимое регистров процессора.
Лекция № 7 ПОТОКИ
Концепцию процесса можно охарактеризовать двумя параметрами:
1. Владение ресурсами.
Процесс включает виртуальное адресное пространство в котором содержится образ процесса и время от времени может владеть такими ресурсами, как основная память, устройство вв/выв, файлы. ОС выполняет защитные функции предотвращая нежелательные взаимодействия процессов.
2. Планирование и выполнение.
Выполнение процесса осуществляется путём выполнения кода программы при этом выполнение процесса может чередоваться с выполнением других процессов. Таким образом процесс имеет такие параметры как состояние и текущий приоритет, в соответствии с которым ОС осуществляет его планирование и диспетчеризацию.
В большинстве ОС эти две характеристики являются сущностью процесса. Однако они являются независимыми и ОС может рассматривать их отдельно друг от друга. Чтобы различать эти две характеристики единицу диспетчеризации называют потоком (термин нить, волокно), а единицу владения ресурсами – процессом или задачей. Многопоточностью называется способность ОС поддерживать в рамках одного процесса выполнение нескольких потоков.
Традиционный подход, при котором каждый процесс представляет собой единый поток выполнения называется однопоточным. Например MS-DOS.
В однопоточной модели процесса, в его представление входит управляющий блок этого процесса и пользовательского адресного пространства, а также стеки ядра и пользователя, с помощью которого осуществляются вызовы процедур и возвраты из них при выполнении процесса, когда выполнение процесса прерывается, содержимое регистра процессора сохраняе-тся в памяти, в много-пользовательской сре-де с каждым процесс-сом также связан уп-равляющий блок и адресное прост-ранство, но теперь для каждого потока соз-даются свои отдельные стеки, а также свой уп-равляющий блок, в котором содержатся значения регистра, приоритет и другая информация о сос-тоянии потока.
Таким образом все потоки процесса разделены между собой состоянием и ресурсами этого процесса, они нахо-дятся в одном и том же адресном пространстве и имеют доступ к од-ним и тем же данным. Если один поток изме-няет в памяти какие-то данные, то другой поток, во время этого доступа к этим данным , может отследить эти изменения. Если один поток открывает файл с правом чтения, то другие потоки данного процесса могут читать данные из этого файла. Основные преимущества использования потоков:1)создание нового потока в уже существующем процессе занимает меньше времени, чем создание нового процесса2) поток можно завершить быстрее чем процесс3)переключение потоков в рамках одного и того же процесса происходит быстрее4)при использовании потока повышается эффективность обмена информацией между двумя выполняющимися программами. В большинстве о.с. обмен между независимыми процессами происходит с участием ядра, в функции которого входит обеспечение защиты и механизма необходимого для осуществления обмена. Однако благодаря тому, что различные потоки одного и того же процесса используют одну и ту же область памяти и одни и те же файлы, они могут обмениваться информаций без участия ядра.
Таким образом если приложение или функцию надо реализовать в виде набора взаимосвязанных модулей, намного эффективнее реализовать ее в виде потока, чем в виде набора отдельных процессов. Пример программы, где удачно применяются потоки является файловый сервер. При получении каждого нового файлового запроса программа, управляющая файлами, порождает новый поток, из-за того, что серверам приходится обрабатывать очень большое количество запросов за короткий промежуток, будут создаваться и удалятся много потоков. Если такая серверная программа работает на многопроцессорной машине, то на разных процессорах в рамках одного процесса могут одновременно выполнятся несколько потоков, кроме того из-за того , что процессы или потоки файлового сервера должны использовать совместно данные из файлов , рациональнее использовать потоки и общую область памяти, а не процессы и обмен сообщениями. Потоковая конструкция процессов полезна и на однопроцессорных машинах, так как она помогает упростить структуру программы, выполняющую несколько логически различных функций.
Реальные и защищенные режимы работы процессора.
Первые микропроцессоры фирмы INTEL предназначались для работы в однозадачном режиме, то есть
специальных аппаратных средств для поддержки надежности и эффективных мультипрограммных о.с. в них не было. Поэтому для совместимости с однопроцессорными компьютерами в последних версиях микропроцессорах была реализована возможность использовать их в двухпроцессорном режимах: реальном и защищенном.Защищенный режим означает , что параллельное вычисление защищено аппаратно-програмными средствами. При работе микропроцессора в реальном режиме обращение к памяти с возможным адресным пространством в одном мегабайт, осуществляется посредством механизма сегментной адресации. Этот механизм был использован для увеличения количества разрядов, участвующих в образовании ячеек памяти с 16 до 20, тем самым увеличения объема памяти. Для определения физического адреса команды, содержимое сегментного регистра умножают на 16, за счет добавления СП-рава 4 нулей, после чего к полученному значению прибавляют содержимое указателя команды, получим 20-и битное значение, которое и позволяет указать любой байт из количества, равного 220.
В защищенном режиме определение физии-ческого адреса осущ-ествляется испол-ьзованием сегментных механизмов для орган-изации виртуальной памяти. При этом адр-есат задается 32-битн-ым значением, кроме того возможна стран-ичная трансляция адресов с 32-битного значения. При работе в защищенном режиме, который по умолчанию предполагает 32-битный код, возможно использование двоичных команд, созданных для работы в 16-битном режиме. Для этого введем режим виртуальной машины и 20-битные адреса реального режима, которые транслируются с помощью страничного механизма в 32-битное значение защищенного режима.
Защита адресногопространства задач.
Для возможности создания надежных мультипрограммных о.с. в процессорах семейства i80x86 имеются несколько механизмов защиты: это и разделение адресных пространств задач и введение уровней привилегий для сегментов кода и сегмента данных, все это позволяет обеспечить как защиту задач друг то друга, так и защиту самой о.с. от прикладных задач, защиту одной части о.с. от других ее компонентов, защиту самих задач от своих ошибок. Защита адресного пространства задач осуществляется за счет того, что каждая задача имеет свое собственное локальное адресное пространство. О.с. должна корректно манипулировать дескрипторами таблиц.
Сами таблицы дескрипторов относятся к адресному пространству о.с. и имеют соответствующие привилегии доступа, исправлять их, задачи не могут. Для организации взаимодействия задач имеющих разные виртуальные пространства надо иметь общее адресное пространство, и здесь для обеспечения защиты самой о.с. используется механизм защиты сегментов с помощью уровней привилегий.