Другие журналы

электронный журнал

МОЛОДЕЖНЫЙ НАУЧНО-ТЕХНИЧЕСКИЙ ВЕСТНИК

Издатель Академия инженерных наук им. А.М. Прохорова. Эл No. ФС77-51038. ISSN 2307-0609

Основные понятия ОС

автор: Грошев С.

Г Л А В А 1

Основные понятия

Операционная система – это компьютерная программа или комплекс программ, обеспечивающая среду для выполнения других программ и дающая этим программам доступ к возможностям процессора и периферийных устройств компьютера, таких как диски, дисплей и так далее. Операционная система очень удобна, но является  абсолютно необходимой для работы с компьютером. На заре компьютерной эпохи техники загружали программы в память, используя ручные устройства ввода: кнопки и переключатели или перфоленты. Затем они вручную задавали стартовый адрес программы и указывали компьютеру, что надо перейти к нему и начать ее выполнение.

Однако современные пользователи компьютеров применяют более совершенные методы. Появилось такое понятие как файл, затем файловая система. Затем  появилось понятие разделения времени, и, следовательно, понятия многозадачности и многопользовательности.

Назначение, функции и характеристики операционных систем

Современные операционные системы выполняют три основные функции. Во-первых, они упрощают использование аппаратных средств компьютера, и делает работу с ним эффективной и удобной. Во-вторых, важным свойством операционных систем является унификация программного обеспечения. Раньше программы были машинно-зависимыми. То есть программа, написанная для одного компьютера, не могла работать на другом,  пусть даже таком же компьютере, без корректировки. С появлением операционных систем, программистам больше не надо переписывать приложения для каждого нового компьютера, так как все машинно-зависимые части программы были перенесены в код операционных систем. В-третьих, операционная система должна быть организована так, чтобы она допускала эффективную разработку, тестирование и внедре­ние новых приложений и системных функций, причем это не должно ме­шать нормальному функционированию вычислительной системы.

Рассмотрим функции операционных систем более подробно. Простой пользователь обычно не интересуется деталями устройства аппаратного обеспечения компьютера, а компьютер видится ему как набор полезных программ, причем для него не существенно, выполняется та или иная функция компьютера аппаратными или программными средствами. Отсюда возникает понятие о виртуальной вычислительной машине, обладающей некоторыми свойствами, реализуемыми совокупностью аппаратных и программных средств. Виртуальная вычислительная машина заметно отличается от реальной, и  зачастую ее характеристики превосходят характеристики просто аппаратных средств. Появление термина «виртуальная машина» явилось очень важным шагом в развитии вычислительной техники.

Для программистов операционная система видится как набор системных функций, используя которые он создает свои собственные программы. Наибо­лее важными функциями являются те, которые скрывают от программиста детали аппаратного обеспечения и предоставляет ему удобный интерфейс для использования системы. Операционная система выступа­ет в роли посредника, облегчая программисту и программным приложениям доступ к различным службам и возможностям.

Типичная современная операционная система предоставляет пользователям некоторых набор сервисов. Во-первых, это разработка программ. Содействуя программисту при разработке программ, операционная  система  предоставляет ему  разнообразные  инструменты  и сервисы, например редакторы, компиляторы или отладчики. Обычно эти сервисы реализо­ваны в виде программ, которые поддерживаются операционной сис­темой, хотя и не входят в ее ядро.

Во-вторых, операционная система предоставляет возможность запуска программ. Для этого производится ряд действий, скрытых от пользователя: следует загрузить в основную память команды и данные, ини­циализировать устройства ввода-вывода и файлы, а также подготовить дру­гие ресурсы. Операционная система выполняет всю эту рутинную работу вместо пользователя.

В-третьих, операционная система предоставляет доступ к устройствам ввода-вывода. Для управления работой каждого уст­ройства ввода-вывода нужен свой особый набор команд или контрольных сигналов. Операционная система предоставляет пользователю единообраз­ный интерфейс, который скрывает все эти детали, и обеспечивает програм­мисту доступ к устройствам ввода-вывода с помощью простых команд чте­ния и записи.

Операционная система обеспечивает доступ к файлам. При работе с файлами под управлением операционной системы, пользователю не нужно глубокое понимание природы устройств ввода-вывода и знание структур данных, записанных в файлах. Многопользователь­ские операционные системы, кроме того, могут обеспечивать работу меха­низмов защиты при обращении к файлам нескольких программ.

При работе компьютерной системы могут происходить разнообразные сбои. К их числу относятся внутренние и внешние ошибки, возникшие в аппаратном обеспечении, например, ошибки памяти, от­каз или сбой устройств. Возможны и различные программные ошибки, такие, как арифметическое переполнение, попытка обратиться к ячейке памяти, дос­туп к которой запрещен, или невозможность выполнения запроса программы. В каждом из этих случаев операционная система должна выполнить действия, минимизирующие влияние ошибки на работу приложения. Реакция операци­онной системы на ошибку может быть различной — от простого сообщения об ошибке до аварийного останова программы, вызвавшей ее.

Современная операционная   система  должна иметь средства учета использования различных ресурсов и отображения па­раметров производительности. Эта информация крайне важна в любой сис­теме, особенно в связи с необходимостью дальнейших улучшений и на­стройки вычислительной системы для повышения ее производительности.

Операционные системы можно классифицировать по нескольким признакам. По назначению выделяют системы общего назначения и специализированные операционные системы. Последние используются в специализированной вычислительной технике, например, бытовой технике, автомобилях, спецвычислителях военного применения. По количеству одновременно работающих пользователей, операционные системы можно разделить на однопользовательские и многопользовательские. По количеству одновременно работающих программ операционные системы делят на однозадачные и многозадачные.

Операционные системы обладают рядом характеристик, позволяющих эффективно использовать ресурсы вычислительной системы.                                 

- Переносимость. Новшества в аппаратном обеспечении возникают быстро и часто непредсказуемо. Например, RISC (Reduced Instructions Set Computer - компьютеры с сокращенным набором команд) - процессоры существенно отличаются от традиционных CISC (Complex Instruction Set Computer – компьютеры со сложным набором команд). Если операционная система написана на переносимом языке - это позволяет быстрее переходить от одной архитектуры компьютеров к другой, то есть использовать всю операционную систему целиком на машине с другим процессором или конфигурацией при минимальных изменениях исходного текста. Хотя операционные системы часто делят на «переносимые» и «непереносимые», строго говоря, переносимость в той или иной степени свойственна всем им. Вопрос не в том, можно ли перенести программу, поскольку, как правило, в конечном счете, это можно сделать, а в том, насколько сложно это сделать. Поэтому большинство современных операционных систем пишутся на языках высокого уровня, обладающих высокой переносимостью.

- Расширяемость и возможность исправлений. Код операционной системы должен быть написан так, чтобы его удобно было дополнять и модифицировать при изменении требований к системе, поскольку операционные системы обязательно изменяются с течением времени. В каждой операционной системе есть ошибки. Время от вре­мени они обнаруживаются и исправляются. Необходимость регулярных изменений операционных систем накладывает оп­ределенные требования на их устройство. Очевидно, что эти системы должны иметь модульную конструкцию с четко определенным взаимодействием модулей. Система представляет собой набор отдельных компонентов, взаимодействующих друг с другом только посредством функциональных интерфейсов. Новые компоненты добавляются к исполнительной системе как новые модули, обращающиеся интерфейсам других компонентов. При этом очень важную роль играет хорошая и полная документированность. Изменения в операционные системы обычно вносятся постепенно, это может быть, например, добавление поддержки новых аппаратных устройств, таких как компакт-диски, способности работать с другим типом сети, поддержки новых программных технологий, таких как графические интерфейсы пользователя.

- Мультипроцессорная обработка. Необходимо, чтобы приложения могли использовать преимущества множества разновидностей компьютеров, известных в настоящее время. Например, компьютеры с несколькими процессорами появляются на рынке регулярно, но лишь немногие из существующих операционных систем могут в полной мере использовать их возможности. Современная операционная система должна позволять запуск одного и того же приложения, как на однопроцессорных, так и на многопроцессорных вычислительных машинах. В предельном случае несколько приложений выполнялось бы одновременно с максимальной скоростью, а приложения, требующие большого объема вычислений, могли бы повысить свою производительность, распределяя работу между несколькими процессорами

- Распределенные вычисления. В связи с тем, что в 80-е годы 20-го века персональные компьютеры стали более доступными, характер вычислении необратимо изменился. Там, где раньше одна большая вычислительная машина обслуживала все предприятие или организацию, теперь появились персональные компьютеры для рядовых служащих. Улучшенные возможности работы в сети позволили малым компьютерам связываться друг с другом, зачастую совместно используя аппаратные или вычислительные ресурсы в форме файл-серверов, серверов печати и серверов вычислений. Учитывая эти изменения, разработчики операционных систем встраивают функции поддержки сети непосредственно в систему, тем самым, обеспечивая приложениям возможность распределять работу между несколькими вычислительными системами.

- Надежность и устойчивость. Система должна защищать себя как от внутренних сбоев, так и от внешнего вторжения. Она должна всегда вести себя предсказуемо, и у приложений не должно быть возможности повредить операционную систему или нарушить ее функционирование.

- Совместимость. Несмотря на то, что новые версии операционной системы призваны расширять существующие технологии, ее пользовательский интерфейс, а также API (Application Programming Interface – интерфейс программирования приложений) должны быть совместимы с предыдущими версиями.

- Производительность. Система должна отвечать, всем требованиям, но при этом быть максимально быстрой и обеспечивать минимальное время отклика на каждой аппаратной платформе.

Вычислительные ресурсы и операционная система

Компьютер представляет собой набор ресурсов, поддерживающих выполне­ние задач накопления, перемещения, хранения и обработки данных, а также контролирующих работу этих и других функций. Ответственность за управление этими ресурсами лежит на операционной системе. Однако это управление осуществляется не обычным образом. Обычно управляющее устройство представляется как нечто внешнее по отношению к управляемому объекту. С операционной системой дело обстоит по-другому, так как этот управляющий меха­низм является необычным в двух отношениях.

- Во-первых, функции операционной системы работают точно так же, как и все осталь­ное программное обеспечение; т.е. они реализованы в виде отдельных про­грамм или набора программ, исполняющихся процессором.

- Во-вторых, операционная   система   часто   передает   управление   другим   процессам   и должна ожидать, когда процессор снова позволит ей выполнять свои обя­занности.

Операционная система – это, по сути, набор компьютерных программ. Как и любая другая программа, она отдает процессору команды. Ключевым отличи­ем является назначение этой программы. Операционная система указывает про­цессору, как использовать другие системные ресурсы и как распределять время при исполнении других программ. Но для того, чтобы реализовать действия, предписываемые операционной системой, процессор должен приостановить рабо­ту с ней и перейти к выполнению других программ. Таким образом, операцион­ная система уступает управление процессору, чтобы он смог выполнить некото­рую работу, а затем возобновляет контроль ровно настолько, чтобы подготовить процессор к следующей части работы. В последующих главах данной книги будет подробно описаны механизмы, принимающих участие в этих процессах.

Рассмотрим основные ресурсы, которыми управляет операционная система (Рис. 1.1). Кроме обеспечения связи прикладных программ с аппаратными средствам компьютера, большинство операционных систем обеспечивают распределение вычислительных ресурсов между пользователями и процессами. Таких ресурсов несколько, но самыми важными вычислительными ресурсами являются время процессора и оперативная память. Часть операционной системы находится в оперативной памяти. В эту часть входит ядро, содержащее основную часть наиболее часто используемых функций. В зарубежной литературе и ряде отечественных изданий вместо ядра используется английский термин – kernel. Также в оперативной памяти находятся и некоторые другие компоненты операционной сис­темы, использующиеся в данный момент времени.

Вычислительные ресурсы

Остальная используемая часть оперативной памяти содержит другие прикладные программы и данные. Операционная система принимает решение, когда исполняющаяся программа может использовать нужные ей уст­ройства ввода-вывода, и управляет доступом к файлам и их использованием. Процессор также является ресурсом, поэтому операционная система должна оп­ределить, сколько времени он должен уделить исполнению той или иной пользо­вательской программы. В многопроцессорной системе решение должно быть принято по отношению ко всем процессорам.

В многозадачной операционной системе выполняемая работа подразделяется на процессы, каждому из которых предоставляется память, системные ресурсы и квант времени. Операционная система выполняет один процесс в течении этого кванта времени, после чего переключается на другой. Многозначность очень полезна даже в однопользовательской системе, так как позволяет компьютеру выполнять две задачи одновременно. Например, пользователь может редактировать один документ, в то время как компьютер в фоновом режиме печатает другой или компилирует большую программу. Каждый из процессов выполняет свою задачу, а для пользователя это выглядит так, как будто все программы работают одновременно.

Различают несколько подходов к организации многозадачной работы операционных систем.

- Программа, получившая время процессора работает до тех пор, пока у нее не возникнет возможность освободить процессор, например, для операции ввода-вывода. Этот метод плох тем, что очень велика вероятность монопольного захвата процессора одной программой и, следовательно, остановкой остальных, в том числе и служебных программ операционной системы, что приводит к зависанию последней. По подобному принципу построены надстройки над системой DOS и ранние версии системы Windows (до Windows 95).

- Программе выделяется строго фиксированный промежуток времени работы процессора, по окончания которого в любом случае, управление передается следующему процессу. Это так называемая вытесняющая многозадачность, и по этому принципу строятся все современные операционные системы.

Естественно в случае конкуренции процессов за время процессора возникает необходимость в регулировании запросов. Для такого регулирования используется система очередей и приоритетов. Вновь поступающие запросы на время процессора, помещаются в конец очереди (Рис. 1.2). Для обслуживания выбирается процесс из ее начала. Если за выделенное время процесс завершен, он покидает очередь, если нет, то помещается в ее конец.

Система с одной очередью

Дисциплина обслуживания с несколькими очередями позволяет сократить потери времени на переключение процессов. Приоритет очереди убывает с возрастанием ее номера. Вновь поступающий запрос ставиться в конец очереди, имеющей старший приоритет (Рис. 1.3).

В такой системе подлежит обслуживанию запрос из начала очереди с номером m, если очереди с меньшим номером пусты. Если за выделенный квант времени обслуживание не завершено, процесс переходит в конец очереди m+1. Таким образом, квант времени, выделяемый процессу, возрастает с увеличением номера очереди по правилу:

Km = K 2m

где    Km - квант, выделяемый программе из очереди m,

          K – квант, выделяемый для процесса из первой очереди.

Система с несколькими очередями

Если во время обслуживания процесса появляется запрос с более высоким приоритетом, то по окончании кванта времени, текущий процесс помещается в конец очереди с текущим приоритетом. Чтобы избежать недопустимо долгого ожидания обслуживания, приоритет можно сделать зависящим от времени ожидания. Если ожидание превысит некоторый предел, процесс помещается в очередь с меньшим номером. Такие системы называют системами с динамическим приоритетом. Подробно механизм диспетчеризации процессов описан в третьей главе данной книги.

Основополагающим принципом при построении многозадачных операционных систем является понятие прерывания. Во время выполнения текущей программы внутри вычислительной машины и связанной с ней внешней среде, например, в технологическом процессе, управляемом данным компьютером, могут возникать события, требующие немедленной реакции на них. Реакция состоит в том, что машина прерывает обработку текущей программы и переходит к выполнению другой программы, специально предназначенной для данного события. По завершении этой программы компьютер возвращается к выполнению прерванной программы. Принципиально важным является то, что моменты возникновения событий, требующих прерывания программ, заранее неизвестны и поэтому не могут быть учтены при программировании.

Каждое событие, требующее прерывания, сопровождаете сигналом, оповещающим вычислительную систему. Эти сигналы называются запросами прерывания. Программа, затребовавшая запрос прерывания, называется прерывающей программой, а программа, которая выполнялась по поступления запроса, называется прерываемой. В сущности, запросы прерывания формируются несколькими существующими параллельно во времени процессами, которые в некоторые моменты требуют вмешательства процессора. К этим процессам, в частности, относятся процесс выполнения самой программы, операции ввода-вывода и так далее.

Совокупность аппаратных и программных средств называется системой прерывания программ. Основными функциями системы прерывания являются:

- Запоминание состояния прерываемой программы и осуществление перехода к прерывающей программе.

- Восстановление состояния прерванной программы и возврат к ней.

При наличии нескольких источников запросов прерывания должен быть установлен определенный порядок, или как говорят - дисциплина в обслуживании поступающих запросов. Другими словами, между запросами должны быть установлены приоритетные соотношения определяющие, какой из нескольких поступивших запросов подлежит обработке в первую очередь, и устанавливающих имеет право или не имеет данный запрос прерывать ту или иную программу.

Для оценки эффективности систем прерывания могут быть использованы следующие характеристики:

- Общее количество обрабатываемых запросов прерывания.

- Время реакции на прерывание, которое определяется как время между появлением запроса прерывания и началом выполнения прерывающей программы.

Упрощенно процесс прерывания можно представить в виде временной диаграммы (Рис. 1.4). Упрощение состоит в предположении, что управление запоминанием состояния и возвратом возложено на саму прерывающую программу, которая в этом случае состоит из трех частей: подготовительной и заключительной, обеспечивающих переключение программ, и собственно прерывающей программы, выполняющей затребованную запросом работу.

Время реакции обозначено tp. Для одного и того же запроса задержки в исполнении прерывающей программы зависят от того, сколько программ с большим приоритетом ждет обслуживания. Поэтому время реакции определяют для запроса с наивысшим приоритетом. Время tз описывает интервал, необходимый для запоминания состояния прерываемой программы. Восстановление состояния прерванной программы по окончании прерывания занимает время tв. Затраты времени на переключение программ или издержки прерывания равны суммарному расходу времени на запоминание и восстановление состояния программы: ttз +tв.

Рис. 1.4. Процесс прерывания

Глубина прерывания – это максимальное число программ, которые могут прерывать друг друга. Если после перехода к прерывающей программе и вплоть до ее окончания прием других запросов запрещается, то говорят, что система имеет глубину прерывания, равную 1. Глубина равна n, если допускается последовательное прерывание до n программ. Глубина прерывания обычно совпадает с числом уровней приоритета в системе прерываний. Системы с большим значением глубины прерывания обеспечивают более быструю реакцию на срочные запросы.

Если запрос прерывания окажется не обслуженным к моменту прихода нового запроса от того же источника, возникает так называемое насыщение системы прерывания. В этом случае предыдущий запрос прерывания от данного источника будет машиной утрачен, что недопустимо.

Многозадачность – это техника, применяемая для использования одного процессора несколькими процессами. Однако если у компьютера имеется более одного процессора, то от понятия многозадачности следует перейти к модели мультипроцессорной обработки. Компьютер, имеющий два процессора, может выполнять два процесса одновременно. Таким образом, если многозадачная операционная система только создает иллюзию одновременного выполнения нескольких процессов, то система с мультипроцессорной обработкой в действительности выполняет несколько процессов одновременно – по одному на каждом процессоре.

Операционные системы с мультипроцессорной обработкой делятся на две категории – с асимметричной либо симметричной обработкой (Рис. 1.5, слева). Операционные системы с асимметричной мультипроцессорной обработкой (ASMP - ASymmetric MultiProcessing,) обычно выбирают для исполнения собственного кода один и тот же процессор, например, А, в то время как другие процессоры выполняют только пользовательские задачи. Так как код операционной системы исполняется на одном процессоре, то систему ASMP довольно просто создать, усовершенствовав существующую однопроцессорную операционную систему.

Виды мультипроцессорной обработки

Особенно хорошо системы ASMP подходят для работы на асимметричном оборудовании, например, процессоре, к которому подключен сопроцессор, или на двух процессорах, совместно использующих не всю доступную память. Однако такую операционную систему трудно сделать переносимой. Аппаратура разных производителей, и даже разные версии аппаратуры одного производителя, имеет тенденцию различаться по типу и степени асимметрии. Либо производители оборудования должны ориентироваться на одну операционную систему, либо саму систему придется постоянно переделывать для каждой аппаратной платформы.

Системы с симметричной мультипроцессорной обработкой (SMP - Symmetric MultiProcessing,) позволяют коду операционной системы выполняться на любом свободном процессоре или на всех процессорах одновременно, причем каждому из процессоров доступна вся память (Рис. 1.5, справа). Такой подход полнее реализует возможности нескольких процессоров, так как сама операционная система может использовать значительную часть процессорного времени компьютера, в зависимости от того, какие приложения на нем исполняются. Исполнение операционной системы только на одном процессоре, как в случае ASMP, может сильно загружать его, в то время как остальные простаивают, что уменьшит производительность системы. При увеличении числа процессоров в системе возрастает вероятность того, что узким местом станут именно действия, выполняемые самой операционной системой. Помимо равномерного распределения системной загрузки, системы SMP сокращают время простоя из-за неисправностей, так как при сбое одного процессора код операционной системы может исполняться на других процессорах. Наконец, поскольку симметричная аппаратура реализуется разными производителями сходным образом, имеется возможность создания переносимой операционной системы с SMP.

В отличие от ASMP, системы SMP обычно проектируют и пишутся полностью заново, так как, чтобы гарантировать правильную работу, их код должен следовать строгим правилам. Конкуренция за ресурсы и другие вопросы производительности принимают в мультипроцессорных системах более острую форму, чем в обычных операционных системах, и должны учитываться при проектировании системы.

Кроме обеспечения совместного использования процессора, операционная система распределяет такой важный ресурс вычислительной системы, как память.

Память современных вычислительных систем имеет иерархическую многоуровневую структуру. Чем выше уровень, тем выше быстродействие соответствующей памяти, но меньше ее емкость.

К верхнему уровню относятся запоминающие устройства, с которыми процессор непосредственно взаимодействует в процессе выполнения программы – регистры процессора. Емкость этой памяти чрезвычайно мала и в зависимости от конструктивного исполнения процессора может составлять  десятки и сотни байт. Данная память работает на частоте процессора и имеет максимальное быстродействие.

На следующем уровне иерархии располагается так называемая кэш-память. Это буферная память между основной памятью компьютера и процессором. Необходимость в такой памяти возникает из-за большой разницы в скорости работы процессора и основной памяти. Кэш-память может располагаться вне центрального процессора, но в большинстве современных систем, данный вид памяти расположен прямо на кристалле центрального процессора. Емкость кэш-памяти в разных системах колеблется от 64 до 4096 мегабайт. Скорость работы данного вида памяти или равна скорости работы процессора или составляет половину от этой скорости для удешевления системы.

Вообще, принцип кэширования основан на двух принципах организации вычислений в современных системах. Первый принцип называется принципом последовательного выполнения программ и заключается в том, что команда, следующая за текущей командой, с большой вероятностью будет находиться по адресу, следующему за текущим адресом в памяти. То есть, считывая информацию из последовательно расположенных адресов памяти, мы считывает несколько команд, и в итоге уменьшаем число обращений к медленной памяти, что повышает производительность работы. Второй принцип называется принципом повторного использования данных и гласит, что с большой вероятностью, данные, которые мы используем в данный момент, понадобятся нам и в ближайшем будущем. В соответствии с этим принципом информация в кэш-памяти хранится какое-то время, и после ее использования. Конечно, при этом возникают проблема синхронизации содержимого основной и кэш-памяти, и эти проблема в разных операционных системах решаются по-разному.

Основная или оперативная память компьютерных систем используется для хранения команд и данных, как операционной системы, так и прикладных программ. Ее объем в современных системах достигает нескольких гигабайт. Скорость работы оперативной памяти в несколько раз ниже скорости работы процессора, поэтому для высокой производительности системы требуется наличие кэш-памяти.

Последней в иерархии памяти находится внешняя память, организуемая на магнитных дисках. Скорость ее работы еще ниже, но зато объем этой памяти очень велик. Современные жесткие диски позволяют хранить несколько сотен гигабайт информации.

Оперативная память является дефицитным ресурсом в вычислительных системах. Проблема усложняется при переходе к мультизадачным системам, так как в них память одновременно используют несколько программ. Эффективное распределение ресурса памяти между программами не может быть статическим, то есть производиться предварительно до пуска программы. В процессе обработки программ потребности в ресурсе памяти отдельных программ изменяются, что заранее не может быть учтено. Необходимо распределять память между программами динамически непосредственно в ходе вычислительного процесса, то есть осуществлять динамическое распределение памяти. При этом должна обеспечиваться возможность независимой работы программистов над своими программами, подлежащими мультипрограммной обработке. Динамическое распределение памяти не должно приводить к дроблению ее свободного пространства – фрагментации памяти, затрудняющему его использование.

Второй проблемой при многозадачной работе является защита памяти. Если в памяти одновременно могут находиться несколько независимых программ, необходимы специальные меры для предотвращения или ограничения обращений одной программы к областям памяти, используемым другими программами. Программы могут содержать такие ошибки, которые, если этому не воспрепятствовать, приводят к искажению информации, принадлежащей другим программам. Последствия таких ошибок особенно опасны, если разрушению подвергнутся программы самой операционной системы.

Чтобы воспрепятствовать разрушению одних программ другими, достаточно защищать область памяти данной программы от попыток записи в нее со стороны других программ, а в некоторых случаях и своей программы. При этом допускается обращение других программ к этой области памяти для считывания данных. В других случаях, например при ограничениях на доступ к информации, хранящейся в системе, необходимо иметь возможность запрещать другим программам, как запись, так и считывание в данной области памяти.

Подробно работа с памятью в операционных системах описана в шестой главе данной книги, а сейчас кратко рассмотрим основные подходы. В м7ногозадачных операционных системах размещение всех исполняемых программ полностью в оперативной памяти во многих случаях невыполнимо: программы часто имеют большую длину, а объем памяти обычно ограничен. Однако нет принципиальной необходимости в том, чтобы вся целевая программа находилась в оперативной памяти, так как в любой момент времени работа программы концентрируется на определенных сравнительно небольших участках. Таким образом, в памяти следует хранить только используемые в данный период части программ, а неиспользуемые части могут располагаться, например, во внешней памяти.

Создавая программу, пользователь не знает, в комбинации с какими программами будет выполняться его программа, какое место в памяти отведет ей операционная система. При работе прикладных программ используются условные адреса и прямая адресация всей памяти, которую предоставляет операционная система. В процессе выполнения программы операционная система выделяет активным частям программы место в памяти, и условные адреса переводятся в реальные. Эта процедура получила название динамического распределения памяти. Осуществление динамического распределения чисто программным путем привело бы к значительным потерям машинного времени. Целесообразнее пользоваться для этой цели аппаратурными средствами.

Один из способов динамического распределения памяти основан на использовании базовых регистров. При выполнении программы реальный или физический адрес образуется суммированием базового и относительного адресов. При динамическом распределении памяти с помощью базовых регистров программа  должна располагаться в последовательных ячейках и вводиться в память целиком, хотя в ближайшем будущем может потребоваться лишь небольшой фрагмент программы. При рассматриваемом способе динамического распределения памяти свободная память может состоять из несвязанных областей, и для ввода нужной программы может понадобиться сдвиг содержимого памяти, если в нужный момент нет свободной области нужного объема.

Отмеченные недостатки в распределении памяти отсутствуют в виртуальной памяти со страничной организацией. Виртуальная память есть способ организации памяти мультипрограммной вычислительной системы, при котором достигается гибкое динамическое распределение памяти, устраняется ее фрагментация и создаются значительные удобства для работы программистов. Это удается достигнуть без заметного снижения производительности машины ценой усложнения аппаратуры и операционной системы и процессов их функционирования.

Принцип виртуальной памяти предполагает, что программа имеет дело не с физической памятью, действительно работающей в составе вычислительной системы и имеющей некоторую фиксированную емкость, а с виртуальной памятью, объем которой равен всему адресному пространству, определяемому размером адресных полей в форматах команд и адресных регистров. В современных 32-разрядных системах это 4 гигабайта.

На всех этапах подготовки программ, включая загрузку в оперативную память, программа представляется в виртуальных адресах, и лишь при самом исполнении машинной команды производится преобразование виртуальных адресов в реальные адреса памяти. Преобразование виртуальных адресов в физические упрощается и устраняется фрагментация памяти, если физическую и виртуальную память разбить на блоки, называемые в этом случае страницами, содержащие одно и то же число байт. Страницам виртуальной и физической памяти присваивают номера, называемые номерами соответственно виртуальных и физических страниц. Каждая физическая страница способна хранить одну из виртуальных страниц. Порядок расположения байт в виртуальной и физической страницах сохраняется одним и тем же.

В мультипрограммной системе страничная организация памяти дает определенные преимущества. Когда новая программа загружается в память, она может быть направлена в любые свободные в данный момент физические страницы независимо от того, расположены они подряд или нет. Не требуется перемещения информации в остальной части памяти. Страничная организация позволяет сократить объем передачи информации между внешней и оперативной памятью,  так как страница программы не должна загружаться до тех пор, пока она действительно не понадобится. Сначала в память загружается начальная страница программы, и ей передается управление. Если по ходу работы делается попытка выборки слов из другой страницы, то производится автоматическое обращение к операционной системе, которая осуществляет загрузку требуемой страницы.

 

 

 

 

 

 

 

 

 

 

Поделиться:
 
ПОИСК
 
elibrary crossref neicon rusycon
 
ЮБИЛЕИ
ФОТОРЕПОРТАЖИ
 
СОБЫТИЯ
 
НОВОСТНАЯ ЛЕНТА



Авторы
Пресс-релизы
Библиотека
Конференции
Выставки
О проекте
Rambler's Top100
Телефон: +7 (499) 263-61-98
  RSS
© 2003-2024 «Молодежный научно-технический вестник» Тел.: +7 (499) 263-61-98