Операционная система должна решать следующие задачи

Операционная система должна решать следующие задачи

1. Обеспечивает аппаратно-программное «сцепление»

Операционная система служит своего рода «переводчиком» между аппаратной частью компьютера и его программным обеспечением. Если открыть корпус компьютера, то можно увидеть различные платы, чипы, кабели и другие компоненты. Это та физическая база, которая делает возможным выполнение программы. Но программа не может просто взять и использовать аппаратные ресурсы компьютера. Она делает это посредством операционной системы.

В последнее время операционные системы стали все чаще называть «платформами». И это название очень точно отражает суть. ОС является той платформой, на которой располагаются программы. Или, как сейчас, принято говорить, приложения к операционной системе. Именно операционная система позволяет программному обеспечению «общаться» с аппаратным. Это касается также устройств ввода и вывода. Самым простым примером устройства ввода является клавиатура, а вывода — монитор.

Это очень важная работа. Теоретически, к одному компьютеру могут быть подключены сотни различных устройств ввода и вывода. Возьмем обычную мышь. Но «мышь» понятие общее. Существуют десятки различных моделей этого манипулятора. Было бы непосильной задачей обеспечить отдельную программную поддержку каждого типа мыши так, чтобы она напрямую «общалась» с ресурсами компьютера. Но выходом является содержащаяся в операционной системе база драйверов. Для пользователя это выглядит так, как будто бы он просто подключил любую мышь к своему компьютеру и она сразу взяла и заработала.

2. Заставляет одно и то же приложение работать на разном «железе»

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

Но в наши дни ОС взяла на себя роль своего рода «переходника» между программами и компьютерным «железом». Если взять любые две модели компьютеров, то наборы компонентов, из которых они собраны, будут различаться. Это касается даже известных своим подобием друг другу «Макинтошей», не говоря уже о всем том огромном многообразии, которое можно найти на современном рынке ПК.

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

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

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

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

3. Поиск необходимого приложению файла

Одних только физических ресурсов компьютера программам было бы недостаточно для того, чтобы корректно справляться со своими задачами. Вся информация хранится в файлах и этим файлам следует подчиняться определенным правилам. Эти правила касаются того, как именовать и хранить файлы. Мы называем этот общий набор правил «системой управления файлами» (file management system) или просто «файловым менеджером» («file manager»).

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

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

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

4. Эффективное распределение доступной оперативной памяти

Раз уж речь зашла о памяти, то имеет смысл вспомнить о памяти оперативной (ОЗУ, RAM). О том самом хранилище, которое всегда находится «под рукой» у процессора.

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

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

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

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

располагает определенным объемом оперативной памяти, который всегда ограничен. Этот объем зависит в том числе и от того, сколько программ вы одновременно запустили. Операционная система должна каждое мгновение «знать», сколько оперативной памяти у нее осталось в запасе, чтобы вовремя выделить ее процессу, который нуждается в этом важном ресурсе.

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

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

5. Акцентирует внимание процессора на той или иной задаче

Центральный процессор (CPU) является тем физическим модулем, который решает те задачи, которые ставит перед своим компьютером пользователь. Другое дело, что редкий пользователь владеет тем языком, который понимает процессор. Что там, даже не каждый программист близко знаком с машинным кодом. Человек может даже не задумываться над тем, что любая программа является сложным набором математических проблем.

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

Читайте также:  Тормозит видео в powerpoint

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

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

Незаметная и незаменимая помощница

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

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

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

Особенности

Широкая распространенность продукта

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

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

В общем и целом стабильность работы современной OC можно назвать приемлемой. Однако слово "приемлемой" здесь должно сопровождаться массой оговорок:

1. Приемлемой стабильность работы ОС становится только после ее качественной и грамотной настройки — про ненастроенную систему (впрочем, как и ненастроенную гитару) здесь говорить вообще не стоит.

2. Стабильность современной ОС также в большой степени зависит от версии продукта и наличия установленных сервис-паков и дополнений — увы, но без их присутствия в работе ОС происходят частые сбои.

3. Стабильность ОС также зависит и от самих приложений, установленных на ОС пользователем: чем они стабильнее в работе и чем более совместимы с самой программной оболочкой Windows, тем меньше сбоев мы сможем наблюдать в работе основной ОС.

4. На стабильность работы современной ОС большое влияние оказывает и само "железо", которое используется совместно с работающей ОС.

5. Также на стабильную работу современной OC далеко не последнее влияние оказывают драйверы устройств. Эти мини-программы, отвечающие за сопряжение определенного софта с определенным “железом”.

Хорошая совместимость с продуктами разных разработчиков (об OC Windows)

Современная OC способна корректно понимать любые типы файлов, появившиеся в ее ранних реинкарнациях. Если вспомнить те же расширения файлов, то станет ясно, что их родоначальником, по сути, является та самая примитивная и архаичная ОС, некогда перекупленная у стороннего разработчика и доведенная до ума Microsoft — MS-DOS. Эта преемственность файловых форматов тянется нитью через все версии Windows, что само по себе просто замечательно.

Но есть и минус у ОС от Microsoft. К сожалению, даже современная ОС от Microsoft напрочь отказывается воспринимать файлы, созданные в сторонних ОС, таких как «Линукс» и «Mac OC».

Современная ОС поддерживает много иных оборудований. Не без соотвествующих драйверов разумеется.

Широкие возможности настройки ОС (о Windows)

Современная Windows обладает достаточно широкими возможностями настойки. Сегодня при грамотном подходе каждый пользователь ПК сможет настроить операционную систему под свои нужды. И это касается абсолютно всего: установленного в ПК оборудования, программ и приложений, драйверов, производительности ПК настройка через BIOS и с помощью ОС, особенностей настройки самой операционной системы — одним словом, настройке в современной Windows подлежит практически все. Для всесторонней настройки ОС у пользователей есть много возможностей: настройка политик безопасности, настройка интерфейса Windows и режимов его отображения, настройка запущенных процессов и установленных программ, настройка драйверов и всего оборудования и, конечно же, главный козырь пользователя — это настройка Windows с помощью системного реестра и специальных программ-твикеров. При правильной и грамотной настройке операционной системы ваш компьютер станет намного стабильнее и быстрее в работе и долго будет радовать пользователя высокой производительностью. К тому же, современная Windows способна поддерживать все "примочки" современного железа:

— Многоканальный звук и поточное видео (таким образом, современный ПК сегодня в первую очередь стал не рабочей лошадкой, а мультимедийным центром развлечений).

— Поддержка операционной системой инструкций процессоров (с их помощью работа с большим количеством информации становится намного эффективнее: режимы сглаживания и фильтрации для видеопроцессоров; поддержка 3D-NOW, SSE, MMX и других инструкций центрального процессора для увеличения производительности и понижения энергопотребления при простое компьютера).

— Более производительные 64-битные вычисления (сегодня наблюдается пусть постепенный, но верный переход пользователей с 32-битной платформы на 64-битную, и для этого есть все предпосылки — 64-битные процессоры и 64-битная Windows ХР).

Все перечисленные выше особенности оставляют впечатление действительно развитой и интеллектуально продвинутой ОС.

Некорректная работа с DOS-приложениями

Несмотря на то, что MS DOS была прародительницей Windows, последняя в современной своей реинкарнации отказывается корректно работать с приложениями, написанными для DOS.

Низкий уровень общей защиты (об ОС Windows)

Уровень внутренней защиты Windows можно рассматривать как вполне стандартный и ничем особым не выделяющийся. У администратора ОС есть возможность урезать для любого пользователя практически все с помощью политик безопасности. Количество пользователей на одном ПК также не ограничено, а значит, вариантов защиты тех или иных ресурсов ОС может быть сколь угодно много. Плюс можно поставить пароль на вход в систему и т.д. Внешняя же защита ОС — самый главный на сегодня вопрос и основная головная боль корпорации Мicrosoft. С тех давних пор, когда Windows стала лидирующей операционной системой по степени распространенности в мире, к ней пришла слава и самой беззащитной. Ни для одной ОС еще никогда не было написано такое огромное количество вредоносных программ.

Применение

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

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

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

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

Читайте также:  С 2027 будет 12 классов

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

Заключение

Важной особенностью многих ОС является способность их взаимодействия друг с другом, посредством сети, что позволяет компьютерам взаимодействовать друг с другом, как в рамках локальных вычислительных сетей (ЛВС), так и в глобальной сети Интернет.

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

Э. Таненбаум «Современные операционные системы» 3-е издание

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

  • 1) хранение, загрузка и исполнение прикладных программ;
  • 2) организация файловой системы на устройствах долговременной памяти;
  • 3) планирование и динамическое перераспределение ресурсов компьютера;
  • 4) взаимодействие параллельных программ и синхронизация их работы;
  • 5) учет и разграничение полномочий пользователей системы;
  • 6) предоставление пользовательского интерфейса для работы с компьютером;
  • 7) защита данных от несанкционированного доступа, разрушения, других случайных или намеренных вредоносных действий, как во время выполнения программ, так и при хранении данных в файлах.

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

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

Рисунок 1 Состав и назначение основных подсистем операционной системы

Ряд подсистем операционной системы на рисунке (Рисунок 1) объединены в общий блок, названный ядро операционной системы.

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

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

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

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

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

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

По управлению памятью

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

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

Функции ОС по управлению памятью в мультипрограммной системе следующие:

 отслеживание свободной и занятой памяти;

 выделение памяти процессам и освобождение памяти по завершении процессов;

 вытеснение кодов и данных процессов из оперативной памяти на диск (полное или частичное), когда размеры основной памяти не достаточны для размещения в ней всех процессов, и возвращение их в оперативную память, когда в ней освобождается место;

 настройка адресов программы на конкретную область физической памяти.

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

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

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

Для идентификации переменных и команд на разных этапах жизненного цикла программы используются символьные имена (метки), виртуальные адреса и физические адреса (рис. 1).

Символьные имена присваивает пользователь при написании программы на алгоритмическом языке или ассемблере.

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

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

Рис. 1. Типы адресов

Совокупность виртуальных адресов процесса называется виртуальным адресным пространством. Диапазон возможных адресов виртуального пространства у всех процессов является одним и тем же. Например, при использовании 32-разрядных виртуальных адресов этот диапазон задается границами 0000000016и FFFFFFFF16. Тем не менее каждый процесс имеет собственное виртуальное адресное пространство – транслятор присваивает виртуальные адреса переменным и кодам каждой программе независимо (рис. 2).

Рис. 2. Виртуальные адресные пространства нескольких программ

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

В разных операционных системах используются разные способы структуризации виртуального адресного пространства. В одних ОС виртуальное адресное пространство процесса подобно физической памяти представлено в виде непрерывной линейной последовательности виртуальных адресов. Такую структуру адресного пространства называют также плоской (flat). При этом виртуальным адресом является единственное число, представляющее собой смещение относительно начала (обычно это значение 000…000) виртуального адресного пространства (рис 3, а). Адрес такого типа называют линейным виртуальным адресом

Читайте также:  Русификатор для wps writer

В других ОС виртуальное адресное пространство делится на части, называемые сегментами (или секциями, или областями, или другими терминами). В этом случае помимо линейного адреса может быть использован виртуальный адрес, представляющий собой пару чисел (n, m), где n определяет сегмент, а m – смещение внутри сегмента (рис. 3, б).

Рис. 3. Типы виртуальных адресных пространств:

а) плоское; б) сегментированное

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

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

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

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

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

Рис. 4. Схема динамического преобразования адресов

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

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

Необходимо различать максимально возможное виртуальное адресное пространство процесса и назначенное (выделенное) процессу виртуальное адресное пространство. В первом случае речь идет о максимальном размере виртуального адресного пространства, определяемом архитектурой компьютера, на котором работает ОС, и, в частности, разрядностью его схем адресации (32-битная, 64-битная и т. п.). Например, при работе на компьютерах с 32-разрядными процессорами Intel Pentium операционная система может предоставить каждому процессу виртуальное адресное пространство до 4 Гбайт (232). Однако это значение представляет собой только потенциально возможный размер виртуального адресного пространства, который редко на практике бывает необходим процессу. Процесс использует только часть доступного ему виртуального адресного пространства.

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

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

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

Рис. 5. Соотношение объемов виртуального адресного пространства и физической памяти:а) виртуальное адресное пространство превосходит объем физической памяти; б) виртуальное адресное пространство меньше объема физической памяти

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

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

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

Обычно виртуальное адресное пространство процесса делится на две непрерывные части: системную и пользовательскую. В некоторых ОС (например, Windows NT, OS/2) эти части имеют одинаковый размер – по 2 Гбайт, хотя в принципе деление может быть и другим, например 1 Гбайт – для ОС и 2 Гбайт – для прикладных программ. Часть виртуального адресного пространства каждого процесса, отводимая под сегменты ОС, является идентичной для всех процессов. Поэтому при смене активного процесса заменяется только вторая часть виртуального адресного пространства, содержащая его индивидуальные сегменты, как правило, – коды и данные прикладной программы. Архитектура современных процессоров отражает эту особенность структуры виртуального адресного пространства, например в процессорах Intel Pentium существует два типа системных таблиц – одна для описания сегментов, общих для всех процессов, а другая для описания индивидуальных сегментов данного процесса. При смене процесса первая таблица остается неизменной, а вторая заменяется новой.

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

Статьи к прочтению:

03 — Архитектура ЭВМ. Базовые элементы операционной системы

Похожие статьи:

Операционная система (ОС) — это пакет системных программ, выполняющих управление прикладными программами и управляющих работой устройств вычислительной…

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

Ссылка на основную публикацию
Номера телефонов мальчиков 12 13
Одиноким девушкам, зачастую, хочется как можно быстрее обрести личное счастье, и нередко эта спешка приводит к большим ошибкам. Как найти...
Не удалось однозначно определить состояние установленной программы
Однажды потребовалось установить антивирус Касперского на множество компьютеров, включая не входящие в местный домен. Но задача оказалась естественно не простой...
Не чувствую зубов после удара
Онемело лицо после удара – значит срочно нужно показаться врачу. После сильного удара появляется синяк, отек. Часто возникает онемение. Если...
Омез де нол трихопол
Гастрит — это заболевание, которое вызвано воспалением слизистой оболочки желудка. Возникает болезнь по разным причинам и протекает по-разному. Врачи обозначают...
Adblock detector