Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Проверочные и экзамен / Вопросы к экзамену по операционным системам 080500

.pdf
Скачиваний:
270
Добавлен:
25.02.2015
Размер:
1.39 Mб
Скачать

1.Функции и механизмы программ-диспетчеров, предшественников операционных систем.

Вранних mainframe-компьютерах (1940-1950 гг.), первым из которых был компьютер ENIAC (1947 г., США), операционные системы отсутствовали. Обращение к памяти в этих компьютерах осуществлялось по реальным (физическим) адресам, а обращение к внешним устройствам

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

Разумеется, подобный способ взаимодействия с компьютером был очень неудобен. Требовалась хотя бы минимальная автоматизация. Для этого в 1950-х1960-х гг. – были созданы диспетчеры

(dispatchers) - предшественники ОС, системные программы, управлявшие прохождением пакета задач, вводимых с перфокарт. Например, такой диспетчер (названный ДМ-222)

использовался на ЭВМ М-222 в середине 1970-х гг., на котором студенты мат-меха, в том числе и автор курса, пропускали свои студенческие задания. Выглядело это следующим образом. Студент писал свою программу (или исправления к ней – так называемую "добивку") на специальных бланках и сдавал в перфорацию, затем получал перфокарты и отдавал колоду перфокарт с программой оператору машинного зала. Через несколько часов он мог рассчитывать получить результаты своей программы – колоду перфокарт обратно и распечатку результатов. В машинном зале оператор вводил очередное задание с перфокарт. Программа-диспетчер копировала образ введенной колоды перфокарт с заданием на ленту ввода, на которой хранились все образы заданий в хронологическом порядке их ввода, независимо от требуемых для них ресурсов – времени и объема памяти. Диспетчер

осуществлял запуск заданий по очереди, по принципу FIFO (First-In-First-Out) – в порядке поступления. Выбирая из очереди некоторое задание, диспетчер размещал его в памяти и запускал. По окончании задания (или при его прерывании вследствие ошибки) на печатающее устройство выдавалась распечатка результатов. Затем управление передавалось следующему заданию. Такой режим доступа к компьютеру был, конечно, гораздо удобнее, чем работа с пульта. Недостатки его в том, что, во-первых, программы пропускались по очереди (отсутствовала одновременная обработка нескольких заданий), во-вторых, ресурсы, требуемые для выполнения задания, никак не учитывались, и программа, требующая для выполнения всего 1 мин., должна была ожидать завершения большой задачи, требовавшей для выполнения, например, пяти часов, - только потому, что последняя была раньше введена в систему.

ИЗ ЛЕКЦИЙ:

1 этап (40е года) – диспетчеры файлов: Процессор был связан с оперативной памятью и вводом/выводом. Напрямую ввод/вывод с оперативной памятью не взаимодействовали. Программыдиспетчеры появились для автоматизации загрузки и линковки данных, которые писались под конкретную машину. Когда осознали, что многие части кода повторяются, решили отвести специально место в оперативной памяти для библиотек, отсюда возникли задачи:

1.автоматизировать линковку (связь приложений с ячейками памяти),

2.оптимизировать взаимодействия с устройствами ввода/вывода.

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

2.Функции и механизмы мультипрограммных операционных систем.

В1960-х – 1970-х гг. были разработаны классические операционные системы, которые все более и более усложнялись. Все более сложными становились их системы файлов и другие компоненты ОС. Наиболее известные из операционных систем этого периода: среди зарубежных - ATLAS, MULTICS, OS IBM/360, среди отечественных – ОС ДИСПАК для ЭВМ БЭСМ-6. Для классических операционных систем были характерны следующие основные возможности:

1.Мультипрограммирование (multi-programming) – одновременная обработка нескольких заданий;

2.пакетная обработка (batch mode) – обработка пакета заданий, введенных с перфокарт или с терминалов, с учетом их приоритетов и требуемых ресурсов

3.разделение времени (time sharing) – параллельная работа нескольких пользователей с терминалов (телетайпов или дисплеев), управлявших прохождением своих заданий, выполнявших их ввод в текстовых редакторах, компиляцию, выполнение и отладку;

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

параллельного процесса.

ИЗ ЛЕКЦИЙ:

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

Задачи, решавшиеся на данном этапе:

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

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

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

4.Мульти планирование времени

5.Синхронизация и коммуникация между программами

6.Разделение доступа к внешней информации, файлам

3.Функции и механизмы сетевых и мобильных операционных систем.

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

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

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

В1969 году Министерство обороны США инициировало работы по объединению суперкомпьютеров оборонных и научно-исследовательских центров в единую сеть. Эта сеть получила название ARPANET и явилась отправной точкой для создания самой известной ныне глобальной сети — Интернета. Сеть ARPANET объединяла компьютеры разных типов, работавшие под управлением различных ОС с добавленными модулями, реализующими коммуникационные протоколы, общие для всех компьютеров сети.

В1974 году компания IBM объявила о создании собственной сетевой архитектуры для своих мэйнфреймов, получившей название SNA (System Network Architecture). Эта многоуровневая архитектура, во многом подобная стандартной модели OSI, появившейся несколько позже, обеспечивала взаимодействие типа «терминал-терминал», «терминал-компьютер» и «компьютеркомпьютер» по глобальным связям. Нижние уровни архитектуры были реализованы специализированными аппаратными средствами, наиболее важным из которых является процессор телеобработки. Функции верхних уровней SNA выполнялись программными модулями. Один из них составлял основу программного обеспечения процессора телеобработки. Другие модули работали на центральном процессоре в составе стандартной операционной системы IBM для мэйнфреймов.

Вэто же время в Европе велись активные работы по созданию и стандартизации сетей Х.25. Эти сети с коммутацией пакетов не были привязаны к какой-либо конкретной операционной системе. После получения статуса международного стандарта в 1974 году протоколы Х.25 стали поддерживаться многими операционными системами. С 1980 года компания IBM включила поддержку протоколов Х.25 в архитектуру SNA и в свои операционные системы.

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

(мобильные телефоны и операционные системы для них).

Первая мобильная ОС была разработана в 1970 г. Брайаном Керниганом (B. Kernighan) и Деннисом Ритчи (D. Ritchie) в фирме AT & T и получила название UNIX. Даже в самом ее

названии заложено своего рода противопоставление MULTICS (multi - много, uni – один) – последняя известна своей усложненностью. Этим названием авторы подчеркивали основную идею UNIX

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

UNIX, являются Б. Керниган и Д. Ритчи). Использование языка высокого уровня для разработки

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

Впервые система UNIX была использована в 1970 г. на миникомпьютере PDP-10. Компьютеры фирмы PDP образца начала 1970-х гг. принято относить к классу миникомпьютеров. Хотя данное название с современной точки зрения не вполне правомерно: такой компьютер занимал два небольших шкафа, по сравнению с mainframe-компьютером образца 1960-х гг., занимавшим целый зал. Объем оперативной памяти миникомпьютеров составлял всего порядка 32 килобайт (!). Однако на них успешно работала ОС UNIX (были и другие ОС – например, RSX-11), был компилятор с языка Паскаль, была реализована удобная система файлов и программа для работы с ними, были доступны математические библиотеки программ.

ИЗ ЛЕКЦИЙ:

3 этап – сетевые и распределенные ОС: удаленный ввод/вывод данных, появляется распределенный ввод/вывод и хранение.

4 этап – открытые ОС (мобильные): Появление Unix (1969) - Томсон, Кенргин, Рич (создатели языка Си) - за основу взяли систему Балтикс, написанную на языке Би.

ПЕРСОНАЛЬНЫЕ ОС

Вначале 1980-х годов появились персональные компьютеры. Операционные системы для них фактически повторили в своем развитии операционные системы для компьютеров общего назначения: в них были использованы аналогичные идеи и методы. Однако первые персональные компьютеры были менее мощными, чем mainframes, как по объему памяти, так и по быстродействию и разрядности микропроцессора. Первый распространенный микропроцессор фирмы Intel был 8- разрядным, и для него была разработана также 8-разрядная операционная система CP/M. В 1975 г. была создана фирма Microsoft, и ее первой разработкой была 16-разрядная операционная система MS DOS для персональных компьютеров с процессорами Intel 8086 (или, коротко, x86). В командном языке MS-DOS чувствуется явное влияние UNIX, однако MS-DOS предоставляет гораздо меньшие возможности командного языка.

Вначале 1980-х гг. фирма Apple выпустила персональные компьютеры Lisa и Macintosh с операционной системой MacOS. Ее характерной чертой была реализация удобного графического пользовательского интерфейса (GUI) в виде окон, меню, "иконок" и многих других элементов GUI, к которым мы с Вами ныне так привыкли. MacOS стала первой ОС с развитой поддержкой GUI (для сравнения, MS-DOS предоставляла возможности работы непосредственно на командном языке).

Вконце 1980-х - начале 1990-х гг., под влиянием MacOS, Microsoft разработала графическую оболочку Windows над операционной системой MS-DOS. Первая версия Windows, таким образом, еще не была операционной системой; она запускалась командой win из командного языка MS-DOS. Однако многие современные черты GUI, характерного для Windows, ставшие "родными" для пользователей Windows, в ней уже присутствовали. Затем были выпущены Windows 3.x и Windows for Workgroups (уже операционные системы), в 1995 г. – Windows 95 (с развитыми мультимедийными возможностями, большим набором встроенных драйверов для различных устройств и поддержкой механизма Plug-and-Play подключения нового устройства без остановки компьютера) и Windows NT с развитыми сетевыми возможностями и повышенной надежностью. Именно Windows NT стала основой для последующего развития Windows. В настоящее время наиболее популярными моделями Windows являются Windows XP (поддержка которой фирмой Microsoft уже завершается – система выпущена в 2001 г.), Windows 2003 Server, Windows Vista,Windows 2008 Server и Windows 7.

Вначале 1990-х гг. появилась первая версия ОС Linux (ОС типа UNIX с открытыми исходными кодами ядра), которая постепенно приобрела значительную популярность, но, главным образом, используется на серверах. Большинство клиентов (пользователей) в мире предпочитают на своих компьютерах Windows или MacOS (заметим, что, например, в США и Канаде компьютеры Macintosh более популярны, чем Windows-машины с процессорами Intel или их аналогами).

ИЗ ЛЕКЦИЙ:

5 этап – персональные ОС. Развитие ОС: Unix – первая операционная система

-> BSD - свободная ОС с открытым кодом (до нас дожили NetBSD, OpenBSD, FreeBSD) - серверные ОС

-> system V -> HPUX

(От BSD) -> SunOS -> SunSolaris / OpenSolaris (в настоящее время) (От BSD) -> nextstep -> MacOS

(От BSD) -> AIX

GNU/Linux развивался отдельно

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

иаппаратным обеспечением вычислительной системы.

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

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

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

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

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

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

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

7.Учет использования ресурсов. Хорошая ОС имеет средства учета использования различных ресурсов и отображения параметров производительности вычислительной системы. Эта информация важна для настройки (оптимизации) вычислительной системы с целью повышения ее производительности.

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

5.Методы организации эффективного использования ресурсов компьютера. Критерии эффективности. Управление ресурсами.

Организация эффективного использования ресурсов компьютера. ОС не только представляет пользователям и программистам удобный интерфейс к аппаратным средствам компьютера, но и является своеобразным диспетчером ресурсов компьютера. К числу основных ресурсов современных вычислительных систем относятся процессоры, основная память, таймеры, наборы данных, диски, накопители на магнитных лентах (МЛ), внешние накопители памяти(CD/DVD/Blu-Ray/USB), принтеры, сетевые устройства и др. Эти ресурсы распределяются операционной системой между выполняемыми программами. В отличие от программы, которая является статическим объектом, выполняемая программа – это динамический объект, он называется процессом и является базовым понятием современных ОС.

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

Управление ресурсами включает решение ряда общих, не зависящих от типа ресурса задач:

1.планирование ресурса – определение, какому процессу, когда и в каком качестве (если ресурс может выделяться частями) следует выделить данный ресурс;

2.удовлетворение запросов на ресурсы – выделение ресурса процессам;

3.отслеживание состояния и учет использования ресурса – поддержание оперативной информации о занятости ресурса и распределенной его доли;

4.разрешение конфликтов между процессами, претендующими на один и тот же ресурс.

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

6. Принципы управления процессами, памятью, файлами.

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

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

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

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

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

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

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

7. Принципы разработки архитектуры современной операционной системы.

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

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

ядре Linux

2.Принцип функциональной избыточности. Жизненный цикл ОС составляет несколько лет, примерно одно десятилетие (на серверах иногда и дольше ввиду дороговизны перенастройки и переустановки программ и ОС). Принцип функциональной избыточности подразумевает заложение в ОС больших функций, чем требуется и потенциально может потребоваться. Раньше не предполагали о беспроводных устройствах и способах передачи данных, однако в ОС Windows XP изначально разрабатывалась скорость передачи до 1 Гб/с. Также ОС должна предусматривают подключение разных устройств.

3.Принцип функциональной избирательности - ОС должна предусматривать разнообразные устройства, программы, НО пользователь должен иметь возможность отключить или не устанавливать то, что ему не нужно. Современные ОС ввиду этого имеют разнообразные конфигурации (в Linux конфигурации пользователь выбирает сам, в Microsoft – все сборки одинаковы, но в некоторых (в зависимости от версии) функции бывают ограничены).

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

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

8.Виды архитектур ядер операционных систем.

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

под новые версии драйверов и тд, перекомпиляция ядра). Применяются во встраиваемых программах.

Монолитное ядро (МнЯ) предоставляет широкий набор абстракций оборудования. Все части ядра работают в одном адресном пространстве. МнЯ требуют перекомпиляции при изменении состава оборудования. Компоненты операционной системы являются не самостоятельными модулями, а составными частями одной программы. МнЯ более производительно, чем микроядро, поскольку работает как один большой процесс. МнЯ является большинство Unix-систем и Linux. Монолитность ядер усложняет отладку, понимание кода ядра, добавление новых функций и возможностей, удаление ненужного, унаследованного от предыдущих версий кода. "Разбухание" кода монолитных ядер также повышает требования к объёму оперативной памяти.

2.Многослойная монолитная архитектура. Схема данной архитектуры в центре находится железо.

Первый слой - аппаратные средства поддержки ядра (микропрограммы записанные в чипсете материнской платы, например, для перехода в привилегированном режим ОС, защита памяти, системный таймер, механизм прерываний, смена контекста ( )). Именно из-за первого слоя не на все железо можно поставить определенные ОС (если на первом слое это не реализовано, то невозможно).

Второй слой (первый программным слой) - машинно-зависимые модули (слой абстракции железа HAL) - фактически драйвера для железа (чтобы ОС не зависима от конкретной аппаратной платформы). 3 слой - базовые механизмы ядра - на нем реализуется все основные функции ОС (открытие/закрытие файлов, подкачка и тд). Однако данный уровень является только исполнительным, принятие решений здесь не происходит. 4. Менеджеры ресурсов (слой принятия решения) - реализованы все алгоритмы принятия решений (какой процесс будет выполняться следующим, какие файлы открыть). Последний слой - системные вызовы (интерфейс API) - слой отвечает за взаимодействие ПО и ОС (ПО знает о существовании только этого слоя). В таком режиме все слои резиденты в оперативной памяти. Преимущества: реорганизация ядра становится легче (изменение требуется только на одном слое), процессорная производительность довольно высока (на переключение между режимами ядра и приложения время минимально 2дельтаТ(туда-обратно)). Недостатки: большие накладные расходы по оперативной памяти, ПО не может выполняться на нескольких аппаратных средствах (ядра не взаимодействует друг с другом).

3.Микроядерная архитектура. Идея микро ядерной архитектуры (4 и 5 слои вынесем в отдельные программы). В ядре будет содержатся два слоя: машинно-зависимые модули и базовые механизмы ядра. В пользовательское режимы будут находиться сервера (памяти, вычислений), ПО, и все они равноправно могут вызывать ядро. Идея заключается в том, что есть вещи, которые обязательно нужно выполнять в ядре (выделение памяти), а принятие решений будут существовать отдельно как пользовательское ПО (в Microsoft это называется службами). Отсюда сервера не находятся в оперативной памяти, и появляются там только по требованию. В такой ситуации накладные расходы 4дельтаТ. Недостатки: большие процессорные накладные расходы, резкое снижение надежности. Преимущество: удобство работы с несколькими аппаратными системами, занимаем мало оперативной памяти.