Лекция 4 5.1 Понятие процесса
Процесс (задача), как базовое понятие современных ОС - это программа в стадии выполнения.
Программа,в общем случае,это набор команд (сообщение) о последовательностидействий по получению, преобразованию, обработке, выдаче данных. Выполнение программы реализуется через промежуточные процессы. Процесс собирает и хранит адреса областей на внешних устройствах и оперативной памяти где располагаетюданные (переменные и константы) и куда их нужно направить. С каждым процессом связывается его адресное пространство: список адресов от минимума до максимума, который процесс может прочесть и в которые он может писать. Также он имеет адреса свободной динамической памяти: куча (heap) и стек (stack), в которых будут хранится данные расчетов. В стеке сидят указатели на адреса данных. В «куче» находятся сами структуры данных, которые бывают различными, «запись» и «масив» и т.д.Область стека примыкает к куче расширяется за ее счет.
В адресное пространство входят сама программа, данные к ней, ее стек. Со всяким процессом связывается некий набор регистров, включая счетчик команд, указатель стека и другие. Одна и таже программа написанная на языке высокого уровня на разных компьтерах будет иметь разные процессы, так у нее будут различные стеки, кучи, адресные области данных и команд. В любой момент времени каждый процесс имеет однозначное состояние, описываемое адреесми регистров процессора, областей кода, данных, кучи и стека, счетчиком ккоманд, указывающего следующую к исполнению команду. Эта информация называется контекстом процесса.То, какие регистры и указатели реально используются процессом зависит от самого процессора и компонент операционной системы, взаимодействующих с ним.
5.2Частным проявлением процесса являются потоки (threads). Потоки порождаются процессом если есть возможность параллельно выполнять различные части программы на томже самом или разных процессорах и устройствах. Потоки это «дочки процесса» (childprocess ). Потоки используют даные и переменные их родного процесса, но имееют свои контекст кода программы и стека.Процессы создаются при выполненииипребразованийпрограммы до машинного кода с использованием составных части операционной системы как компиляторы, драйверы связывания с библиотеками ОС (linking), загрузчики (loading), драйверы файловой системы (запись/чтение на носители),драйверы исполнения (execution). После каждой операции объем программы заметно возрастает, а сама программа получает другое имя расширения – obj, lnk, exe. С этими процеесами мы сталкиваемся каждый раз при «установке» программы.
Процесс представляет собой отдельныйфайл, которыйво время исполнения имеет в памяти свои независимые области для кода и данных. В отличие от него потоки могут пользоваться общими участками кода и данных. Так как множество потоков способно размещаться внутри одного EXE-модуля, это позволяет экономить ресурсы как внешней, так и внутренней памяти.
Современные управляющие устройства состоят из нескольких вычислительных процессоров, соединенных между собой с помощью шины связи. Например, в програмируемх контроллерах есть основной процессор, но в каждом модуле ввода/вывода (МВА, МВД, МВВА, МВДА и другие) есть свой собственный процессор. Можно заставить программу пытаться паралельно исполнять операции уже на стадии написания программы.
Пара операторных скобок cobeginиcoendприводит к генерации параллельных потоков в рамках многозадачных систем. Для однозадачной системы конечный Х был бы равен 3. Для случая паралельных потоков результат предсказать нельзя. Какая команда выполнится последней таково и будет значение Х.
В период своего существования процесс проходит через ряд дискретных состояний: - выполняется, если в данный момент времени ему выделен ЦП - готов, если он мог бы сразу использовать ЦП, предоставленный в его распоряжение - блокирован, если он ожидает появление какого-либо события
5.3Когда в операционную систему поступает какое то задание на выполнение программы, она создает соответствующие процессы, которые затем устанавливаются в конец списка готовых процессов. Этот процесс постепенно продвигается к головной части списка по мере завершения выполнения предыдущих процессов. Когда процесс окажется первым в списке готовых и когда освобождается ЦП, этому процессу выделяется ЦП, и происходит смена состояния процесса (переходит из состояния готовности в состояние выполнения). Чтобы предотвратить либо монопольный захват ресурсов компьютера каким-то одним процессом, ОС устанавливает в специальном аппаратном таймере прерываний временной интервал, в течении которого любому процессу разрешается занимать ЦП. Если процесс добровольно не освобождает ЦП в течение указанного временного интервала, таймер вырабатывает сигнал прерывания, по которому управление будет передано ОС. После этого ОС переведет ранее выполнявшийся процесс в состояние готовности, а первый процесс списка готовых – в состояние выполнения.
Представителем процесса в ОС является блок управления процессом (дескриптор процесса). Это структура данных, содержащая: идентификатор процесса, приоритет процесса, состояние, указатели памяти, указатели выделенных ресурсов. Когда ОС переключает ЦП с процесса на процесс, она использует области сохранения регистров, предусмотренные в блоке управления процессом, чтобы запомнить информацию, необходимую для рестарта каждого процесса, необходимую при следующем обращении процесса к ЦП.ОС предусматривает следующие операции над процессами: Создание, - Уничтожение, - Возобновление, - Блокирование, - Пробуждение, - Выбор
5.4 Во время выполнения процесса может быть многократно прервана и продолжена его работа. Чтобы возобновить выполнение процесса, необходимо возобновить контекст процесса, который хранится операциой системой. Еще раз: у процесса есть адресное пространство, содержащее текст программы и данные, есть открытые файлы, дочерние процессы, аварийные сообщения.С другой стороны, это поток команд на исполнение. У этого потока есть свой счетчик команд, свои регистры, с текущими переменными, стек, содержащий истрию выполнения процесса исполняемой программы. Концепция потока добавляет процессу возможность выполнения в одной и той же среде процесса нескольких независимых программ.В ОС нет однозначного соответствия между процессами и программами, т.е. один программный файл может породить несколько параллельно выполняемых процессов, а поток в ходе выполнения может сменить программный файл и начать выполнять другую программу.
Лекция 5. 6.1Понятие ресурса, так же как и понятие процесса, являетсяосновным при рассмотрении операционных систем. Ресурсом называется всякий объект, который может распределяться внутри системы. Ресурсы могут быть разделяемыми, когда несколько процессов могут их использовать одновременно (в один и тот же момент времени) или параллельно (в течение некоторого интервала времени процессы используют ресурс попеременно), а могут быть и неделимыми.
Ресурсами считатся процессорное время, память, каналы ввода/вывода, периферийные устройства. К ресурсам относят и такие объекты, как сообщения и синхросигналы, которыми обмениваются задачи. Операционная система использует ресурсы путем организации к ним очередей запросов. В памяти находятся очередь из несколько процессов, ожидающих процессор, и несколькихпроцессов, готовых использовать другие ресурсы, как только они станут доступными.
Задача (т.е процесс или поток) обращается к супервизору операционной системы — ее центральному управляющему модулю, посредством специальных запросов (вызовов и команд) и сообщает о своем требовании. При этом указывается приоритет, вид ресурса и его объем. Приоритет – это целое число, присваиваемое задаче и характеризующее ее важность по сравнению с другими задачами, выполняемыми в системе. Приоритет используется планировщиком задач для определения того, какая из готовых к работе задач должна получить управление. Ресурс выделется задаче, обратившейся к супервизору с запросом, если он свободен и в системе нет запросов от задач более высокого приоритета к этому же ресурсу; Текущий запрос и ранее выданные запросы допускают совместное использование ресурсов; Ресурс используемый задачей низшего приоритета может быть временно отобран (разделяемый ресурс).
Получив запрос, операционная система либо удовлетворяет его и дает управление задаче, выдавшей данный запрос, либо, если ресурс занят, ставит задачу в очередь к ресурсу. После окончания работы с ресурсом задача специальным вызовомдля супервизора сообщает операционной системе об отказе от ресурса.Операционная система может забирать ресурс сама, по требованию от супервизорадля выполнения какой-либо системной функции.
6.2Виртуальная память.Основная память компьютера ограничена, и если бы ОС располагала лишь ей, то это бы ограничело возможности функциональных приложений. Идея виртуальной памяти заключается в том, чтобы распологать данные на внешнем носителе и иметь адресное пространство с указанием, где лежитиформация о данных вовнешей памяти. Для этого занимаемая процессомпамять разбивается на несколько частей, назыкаемых страницами.Часть страниц находится в ОЗУ, другая часть должна быть на внешней пямяти. Для контроля наличия страницы во внешней памяти процессомвводится специальный бит присутствия, входящий в состав атрибутов страницы в таблице страниц. В тех случаях, когда страница, к которой обращается процесс, не находится в ОЗУ, нужно организовать ее подкачку с внешнего диска через структуру, называемую «виртуальная память». Виртуальная память находится на жестком диске. Она связана с процессоми имеет адреса нужной информации на внешнем носителе. Каждый процесс получет в своё распоряжение дополнительное адресное пространство.Виртуальная память является логическим представлением расположения информации в памятина внешнем носителе и не является хранилищем самих страниц. Блок управления памятью ( memorymanagementunit, MMU) — компонент аппаратного обеспечения компьютера, отвечающий за управление доступом к памяти, запрашиваемым центральным процессором. Его функции заключаются в трансляции адресов виртуальной памяти в адреса внешней физической памяти.Менеджер памяти откачивает часть данных на вторичное хранилище и указывает это в виртуальной памяти.
В результате процессы используют существенно меньше физической памятиОЗУ, чем им доступно через виртуальную.Как физическая так и виртуальная память делится на части фиксированного размера, называемые страницами (Page). Процессоры х86 делят физическое адресное пространство на страницы размером 5кВ, используя для этого устройство управления памятью MMU (MemoryManagementUnit). При выполнении процесса в физическую память загружаются лишь используемые страницы, остальные же хранятся во вторичной памяти.
Когда процесс обращается по виртуальному адресу, к данным хранящемися в массовой памяти, менеджер памяти загружает требуемую страницу в основную память. Приложения не должны учитывать откачку/подкачку страниц - этим с аппаратной поддержкой занимается менеджер памяти, и весь процесс незаметен для приложений. Для увеличения объема виртуальной памяти необходимо войти в систему с учетной записью «Администратор». Если компьютер подключен к сети, то параметры сетевой политики могут запретить выполнение данной процедуры.
Адресное пространство виртуальной памяти зависит от аппаратной платформы. Так, адресное пространство 32-битных х86 систем составляет 4ГБ. Операционные системы, работающие с этими платформами не могут видить большие объемы ОЗУ, хотя физически память установлена.
Физической памяти (ОЗУ) компьютера должно быть достаточно, чтобы в нее поместились все текущие страницы пользовательских программ. Если основной памяти не хватает, то производительность системы резко падает из-за ошибок страниц и, соответственно постоянного подкачивания страниц.
Ошибка страница (PageFault) - это ситуация, когда процесс обращается по логическому адресу, но соответствующая страница не загружена в основную память. Если возникает ошибка страницы, ОС запускает процедуру управления ошибка страниц, которая блокирует обратившийся по этому адресу процесс, находит во виртуальной вторичной памяти требуемую страницу и загружает её в основную память. Затем процедура управления ошибками обновляет запись страницы физическим адресом и запускает заблокированный процесс, чтобы тот мог возобновить свою работу.
Если в оперативной памяти недостаточно места для создания новой страницы, ОС применяет алгоритм замещения страниц, согласно которому в памяти отыскивается страница, которую в данный момент можно перенести во вторичную память. Выбор страницы для переноса во вторичную память является очень ответственным, поскольку, если будет выбрана страница, которая скоро потребуется, операционной системе скоро вновь придётся решать проблему ошибки страницы и переносить недавно удалённую страницу обратно в основную память. Может случиться, что в системе возникает большое число ошибок страниц, и ОС приходится непрерывно заниматься их подкачкой.
Процессы при этом простаивают в ожидании страниц. Такая ситуация называется пробуксовкой (Thrashing). Это патологическая ситуация, когда ОС тратит большую часть времени на разрешение ошибок страниц, а процессы не могут выполнять свои задачи. Для решения этой проблемы ОС должна сократить число запущенных процессов. Этого можно выполнить блокировкой поцесса и переносом его на жёсткий диск, высвободив при этом место в основной памяти.