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

Учебное пособие 1461

.pdf
Скачиваний:
7
Добавлен:
30.04.2022
Размер:
1.19 Mб
Скачать

– передаёт управление ядру операционной системы.

Ядро

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

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

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

Командный процессор

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

сфункциями системы.

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

Драйверы устройств

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

11

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

В общем случае драйвер не обязан взаимодействовать с аппаратными устройствами, он может их только имитировать (например, драйвер принтера, который записывает вывод из программ в файл), предоставлять программные сервисы, не связанные с управлением устройствами (например, /dev/zero в Unix, который только выдаёт нулевые байты), либо не делать ничего (например, /dev/null в Unix и NUL в DOS/Windows).

Встроенное программное обеспечение

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

1.7. Принципы проектирования операционных систем

Следует выделить следующие принципы построения операционных систем.

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

2.Принцип генерируемости ОС - определяет такой способ исходного представления ядра ОС и основных

компонентов ОС, который позволяет производить их

12

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

3.Принцип функциональной избыточности -

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

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

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

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

7.Принцип открытой и наращиваемой ОС - позволяет не только использовать возможности генерации, но и вводить

вее состав новые модули.

8.Принцип обеспечения безопасности при выполнении вычислений - является желательным свойством

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

1.8. Особенности методов построения ОС

Способы построения ядра системы - монолитное ядро или микроядерный подход. Большинство ОС использует монолитное ядро (Примером систем с монолитным ядром является большинство UNIX-систем. Примеры: Традиционные ядра UNIX (такие как BSD), Linux;), которое компонуется как одна программа, работающая в привилегированном режиме и использующая быстрые переходы с одной процедуры на

13

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

Гибридные ядра — это модифицированные микроядра, позволяющие для ускорения работы запускать «несущественные» части в пространстве ядра. Пример: ядра ОС Microsoft Windows семейства NT: Windows NT, Windows 2000, Windows XP, Windows Vista, Windows 7, Windows 8.

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

14

1.9. Особенности аппаратных платформ

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

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

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

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

15

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

Другие требования предъявляются к операционным системам кластеров. Кластер - слабо связанная совокупность нескольких вычислительных систем, работающих совместно для выполнения общих приложений, и представляющихся пользователю единой системой. Наряду со специальной аппаратурой для функционирования кластерных систем необходима и программная поддержка со стороны операционной системы, которая сводится в основном к синхронизации доступа к разделяемым ресурсам, обнаружению отказов и динамической реконфигурации системы. Одной из первых разработок в области кластерных технологий были решения компании Digital Equipment на базе компьютеров VAX. Недавно этой компанией заключено соглашение с корпорацией Microsoft о разработке кластерной технологии, использующей Windows NT. Несколько компаний предлагают кластеры на основе UNIX-машин.

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

16

1.10. Многопроцессорная обработка

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

В настоящее время становится общепринятым введение в

ОС функций поддержки многопроцессорной обработки данных. Такие функции имеются в операционных системах

Solaris 2.x фирмы Sun, Open Server 3.x компании Santa Crus Operations, OS/2 фирмы IBM, Windows NT фирмы Microsoft и NetWare 4.1 фирмы Novell.

Многопроцессорные ОС могут классифицироваться по способу организации вычислительного процесса в системе с многопроцессорной архитектурой: асимметричные ОС и симметричные ОС. Асимметричная (Asymmetric Multiprocessing — AMP) ОС целиком выполняется только на одном из процессоров системы, распределяя прикладные задачи по остальным процессорам. Симметричная ОС полностью децентрализована и использует весь пул процессоров, разделяя их между системными и прикладными задачами. NT поддерживает только архитектуру с симметричной мультипроцессорной обработкой – SMP (англ. Symmetric Multiprocessing, сокращённо SMP). Системы с симметричной мультипроцессорной обработкой позволяют коду операционной системы выполняться на любом свободном процессоре или на всех процессорах одновременно, причем каждому из процессоров доступна вся память. Чтобы гарантировать правильную работу системы, код таких ОС должен следовать строгим правилам. Windows NT обладает свойствами, которые принципиально важны для мультипроцессорной ОС:

17

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

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

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

Большинство многопроцессорных систем сегодня используют архитектуру SMP.

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

1.11. Команды оболочки операционной системы Unix

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

18

соответствует command.com в DOS, но несравненно мощнее. При помощи командных интерпретаторов можно писать небольшие программы - скрипты (scripts). В Linux доступны следующие командные оболочки:

bash - самая распространенная оболочка под linux. Она ведет историю команд и предоставляет возможность их редактирования

pdksh - клон korn shell, хорошо известной оболочки в

UNIX(tm) системах.

tcsh - улучшенная версия C shell.

zsh - новейшая из перечисленных здесь оболочек. Оболочкой по умолчанию является "Bash" (Bourne Again

Shell ) Чтобы проверить, какую оболочку Вы используете, наберите команду:

echo $shell

У каждой оболочки свой синтаксис. Мы рекомендуем Вам использовать Bash. В дальнейшем мы будем строить свои примеры с использованием этой оболочки.

Командная оболочка Bash.

В bash имеется несколько приемов для работы со строкой команд. Например, используя клавиатуру, Вы можете:

Ctrl + A перейти на начало строки. Ctrl + U удалить текущую строку. Ctrl + C остановить текущую задачу.

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

history

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

! номер команды

19

если Вы введете:

!!

запустится последняя, из набранных команд.

Иногда в Unix, имена программ и команд слишком длинны. К счастью, Bash сам может завершать имена. Нажав клавишу [TAB], Вы можете завершить имя команды, программы или каталога. Например, предположим, что Вы хотите использовать программу декомпрессии bunzip2. Для этого наберите:

bu

затем нажмите [TAB]. Если ничего не происходит, то вероятно существует несколько возможных вариантов завершения команды.

Нажав клавишу [TAB] еще раз, Вы получите список имен начинающихся с bu".

Например у Вас есть:

$ bu buildhash builtin bunzip2

Наберите: n

(bunzip - это единственное имя, третьей буквой которого является "n"), а затем нажмите клавишу табуляции. Оболочка дополнит имя и Вам остается лишь нажать "Enter", чтобы запустить команду.

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

./prog

20