Функции операционной системы. Операционная система как расширенная машина и менеджер ресурсов
Состав компьютерной системы
Операционная система в наибольшей степени определяет облик всей вычислительной системы в целом. Несмотря на это, пользователи, активно использующие вычислительную технику, зачастую испытывают затруднения при попытке дать определение операционной системе. Частично это связано с тем, что ОС выполняет две по существу мало связанные функции: обеспечение пользователю-программисту удобств посредством предоставления для него расширенной машины и повышение эффективности использования компьютера путем рационального управления его ресурсами.
6 уровней:
1. физический уровень: аппаратное обеспечение
2. микроархитектура: набор блоков, выполняет определенные ф-ции (АЛУ)
3. машинный язык: набор команд, который выполняет процессор и аппаратура
4. ОС: работа с аппаратурой
5. компиляторы, текстов редакторы, интерпритаторы команд
6. программные приложения: web браузер, банковская система.
1-3 оборудование; 4-5 система программирования.
Типы ОС
1) ОС для mainframe (OS/390)
2) Серверные ОС (мощные PC – Windows, Unix)
3) ОС для PC (Novell Netware, Windows …)
4) ОС реального времени
ПО для них разрабатывается специально для конкретный задач. Они используются для управления технологическим оборудованием и техникой. Их работа заключается в регулировании процессов.
Выполняют несколько ф-ций:
1. регулирование (определяемые параметры должны находиться в заданных диапазонах)
2.регистрация (данные измерений должны регистрироваться в спец журналах и записываться либо в файлы, либо выдаваться на контрольные лампы)
3.обеспечение безопасности. (если значения с датчиков превышают критические значения, то ход процесса должен быть остановлен)
Жесткая система реального времени (системы управления (ядерный реактор))
Гибкая система реального времени (мультимедийная система)
Критерий для определ с-мы реал времени:
1. T-периодичность измерений
2. t-время, необходимое для обработки всей полученной информации, выдача импульса на исполнительное устройство.
ОС – ОС реал времени, если T>>t
5) Встроенные ОС (работают на устройствах, не являющихся компьютерами (Symbian))
6) ОС для смарт-карт (ex: проездной на метро)
7) Распределенные ОС (работают либо в локальной, либо в глобальной сети, обеспечивают доступ к общим услугам / ресурсам)
Принципы разработки и основные функции современных ОС
Операционная система является сердцевиной сетевого программного обеспечения, она создает среду для выполнения приложений и во многом определяет, какими полезными для пользователя свойствами эти приложения будут обладать. В связи с этим рассмотрим требования, которым должна удовлетворять современная ОС.
Очевидно, что главным требованием, предъявляемым к операционной системе, является способность выполнения основных функций: эффективного управления ресурсами и обеспечения удобного интерфейса для пользователя и прикладных программ. Современная ОС, как правило, должна реализовывать мультипрограммную обработку, виртуальную память, свопинг, поддерживать многооконный интерфейс, а также выполнять многие другие, совершенно необходимые функции. Кроме этих функциональных требований к операционным системам предъявляются не менее важные рыночные требования
Ф-ции современной ОС поддерживают: мультипрограммный режим, раб с виртуальной памятью, многооконный интерфейс.
2 осн. задачи ОС – расширение возможностей машины и управление её ресурсами
Микропроцессоры
Начало 70-х годов ознаменовалось рождением нового и, как оказалось, весьма перспективного и беспрецедентного по своим последствиям направления в развитии вычислительной техники – в 1971 г. был выпущен первый в мире микропроцессор. С тех пор за короткое время появилось несколько поколений микропроцессоров, а для прогнозирования перспектив их будущих применений не хватает даже самой богатой фантазии. Совершенствование микропроцессоров идёт параллельно с развитием микроэлектронной технологии, которая позволяет размещать на кристалле всё больше и больше логических схем.
Микропроцессоры, а в более общем плане – большие и сверхбольшие интегральные схемы, революционизировали вычислительную технику в том отношении, что она становится всё более дешёвой, массовой и надёжной, а её применение оказывается экономически эффективным практически во всех областях народного хозяйства. По существу, микропроцессорная техника является фундаментом грандиозной программы компьютеризации общества.
История развития однокристальных микропроцессоров в 1970-х – 1990-х годах показывает их эволюцию от первого 4-битного микропроцессора Intel 4004 через 8- и 16-битные устройства к более новым 32-битным процессорам, функциональные возможности которых превосходят возможности процессоров крупных компьютеров прошлого. И хотя первые микропроцессоры подходили только для калькуляторов и простых контроллеров, современные микропроцессоры используются в качестве ЦП сложных компьютеров широкого назначения.
По степени интеграции микропроцессорных приборов традиционно различают:
Малую 1 – менее 10 логических вентилей;
Среднюю 2 – от 10 до 100 вентилей;
Большую 3 – от 100 до нескольких тысяч вентилей;
сверхбольшую4 – десятки тысяч вентилей;
Все современные микросхемы имеют сверхбольшую степень интеграции (на самом деле, они содержат десятки миллионов логических вентилей).
Микропроцессоры фирмы Intel в значительной степени определяют направление развития компьютерной техники. Каждые несколько лет фирма Intel демонстрирует новые прорывы в своей технологии, существенно меняя наши представления о возможностях компьютеризации. Базовое семейство микропроцессоров Intel началось с первого в мире 4-битного микропроцессора 4004 (1971), ориентированного на применение в микрокалькуляторах. Затем фирма Intel выпустила 8-битные микропроцессоры 8008 (1972), 8080 (1974) и 8085 (1976), достаточно мощные для построения небольшого компьютера. Они могли выполнять двоичные и двоично-десятичные5 16-битные арифметические операции и адресовать память до 64 Кбайт с помощью 16-битной шины данных. Наконец, был выпущен 16-битный микропроцессор 8086 (1978) с его 8-битным вариантом 8088 (1979) и расширенными вариантами 80186 и 80286 (1982), обладающими более высоким быстродействием и дополнительными возможностями. Процессоры 8086, 8088 и 80186 могли оперировать с 32-битными двоичными и 16-битными двоично-десятичными числами и адресовать память до 1 Мбайт блоками по 64 Кбайт. Новое поколение микропроцессоров ознаменовалось появлением 32-битных процессоров 80386 (1985) и 486SX (1989), которые могли адресовать до 4 Гбайт памяти и выполнять несколько задач одновременно. За 18 лет производительность микропроцессоров фирмы Intel выросло от 60 тыс. до 41 млн операций в секунду. Процессор 486DX имел дополнительно встроенные кэш-память первого уровня и устройство обработки чисел с плавающей точкой, а следующие процессоры фирмы Intel – 64-разрядную шину данных, возможность обработки нескольких инструкций одновременно и набор дополнительных регистров и инструкций. Таковы процессоры Pentium, Pentium MMX, Pentium Pro и Pentium II. Последние два из них также содержат в одном корпусе с процессором встроенную кэш-память второго уровня.
Но фирма Intel не является монополистом в области разработки микропроцессоров. Группа инженеров, отделившихся от фирмы Intel и образовавших фирму Zilog, выпустило 8-битный микропроцессор Z80 (1976), аналогичный Intel 8080, но содержащий дополнительные регистры и команды. Большинство программ процессора 8080 могут выполняться и на процессоре Z80. Аналогичные 8-битные микропроцессоры были выпущены и другими фирмами: процессор 6800 – фирмой Motorola, процессор 6502 – фирмой MOS Technology. Ещё позже фирма Motorola выпустила микропроцессор 68000 (1980), который имеет 16-битную шину данных, но может обрабатывать 32-битные данные и адресовать память до 4 Гбайт. Он выполнял около 800 тыс. операций в секунду. Его преемниками стали микропроцессоры 68010, 68020 и 68030, длительное время составлявшие основную конкуренцию микропроцессорам фирмы Intel.
Другой группой конкурентов фирмы Intel являются фирмы, выпускающие микропроцессоры, совместимые с процессорами фирмы Intel. Таковы фирмы AMD, Cyrix, NexGen, Centaur Technology. Большинство из этих фирм сначала выпускало копии микропроцессоров 80386 по лицензии фирмы Intel, а затем лицензия была отозвана, и таким фирмам пришлось самостоятельно разрабатывать свои следующие микропроцессоры.
Процессоры (по набору команд):
- RISC – сокращённый набор команд. Большинство команд выполняется за одинаковое кол-во тактов, очень просто реализовать конвейерный метод обработки
- CISC – сложный набор команд. Одной командой можно выполнить множество действий, сложно повышение производительности (технически сложен в изготовлении).
При конвейерной обработке за каждый такт выполняется одна команда.
1-загрузка
2-декодирование
3-исполнение
4-запись в память
Порядок загрузки ОС
1) Тестирование
2) Запуск первичного загрузчика из ПЗУ
3) Запуск вторичного загрузчика с внешней памяти
Управление получает BIOS, работают подпрограммы для внешних устройств, происходит обращение к накопителю памяти, запуск ОС.
Одной из главных функций ОС является управление всеми устройствами ввода-вывода компьютера. ОС должна передавать устройствам команды, перехватывать прерывания и обрабатывать ошибки; она также должна обеспечивать интерфейс между устройствами и остальной частью системы. В целях развития интерфейс должен быть одинаковым для всех типов устройств (независимость от устройств).
Физическая организация устройств ввода-вывода
Устройства ввода-вывода делятся на два типа: блок-ориентированные устройства и байт-ориентированные устройства. Блок-ориентированные устройства хранят информацию в блоках фиксированного размера, каждый из которых имеет свой собственный адрес. Самое распространенное блок-ориентированное устройство - диск. Байт-ориентированные устройства не адресуемы и не позволяют производить операцию поиска, они генерируют или потребляют последовательность байтов. Примерами являются терминалы, строчные принтеры, сетевые адаптеры. Однако некоторые внешние устройства не относятся ни к одному классу, например, часы, которые, с одной стороны, не адресуемы, а с другой стороны, не порождают потока байтов. Это устройство только выдает сигнал прерывания в некоторые моменты времени.
Внешнее устройство обычно состоит из механического и электронного компонента. Электронный компонент называется контроллером устройства или адаптером. Механический компонент представляет собственно устройство. Некоторые контроллеры могут управлять несколькими устройствами. Если интерфейс между контроллером и устройством стандартизован, то независимые производители могут выпускать совместимые как контроллеры, так и устройства.
Операционная система обычно имеет дело не с устройством, а с контроллером. Контроллер, как правило, выполняет простые функции, например, преобразует поток бит в блоки, состоящие из байт, и осуществляют контроль и исправление ошибок. Каждый контроллер имеет несколько регистров, которые используются для взаимодействия с центральным процессором. В некоторых компьютерах эти регистры являются частью физического адресного пространства. В таких компьютерах нет специальных операций ввода-вывода. В других компьютерах адреса регистров ввода-вывода, называемых часто портами, образуют собственное адресное пространство за счет введения специальных операций ввода-вывода (например, команд IN и OUT в процессорах i86).
ОС выполняет ввод-вывод, записывая команды в регистры контроллера. Например, контроллер гибкого диска IBM PC принимает 15 команд, таких как READ, WRITE, SEEK, FORMAT и т.д. Когда команда принята, процессор оставляет контроллер и занимается другой работой. При завершении команды контроллер организует прерывание для того, чтобы передать управление процессором операционной системе, которая должна проверить результаты операции. Процессор получает результаты и статус устройства, читая информацию из регистров контроллера.
Организация программного обеспечения ввода-вывода
Основная идея организации программного обеспечения ввода-вывода состоит в разбиении его на несколько уровней, причем нижние уровни обеспечивают экранирование особенностей аппаратуры от верхних, а те, в свою очередь, обеспечивают удобный интерфейс для пользователей.
Ключевым принципом является независимость от устройств. Вид программы не должен зависеть от того, читает ли она данные с гибкого диска или с жесткого диска.
Очень близкой к идее независимости от устройств является идея единообразного именования, то есть для именования устройств должны быть приняты единые правила.
Другим важным вопросом для программного обеспечения ввода-вывода является обработка ошибок. Вообще говоря, ошибки следует обрабатывать как можно ближе к аппаратуре. Если контроллер обнаруживает ошибку чтения, то он должен попытаться ее скорректировать. Если же это ему не удается, то исправлением ошибок должен заняться драйвер устройства. Многие ошибки могут исчезать при повторных попытках выполнения операций ввода-вывода, например, ошибки, вызванные наличием пылинок на головках чтения или на диске. И только если нижний уровень не может справиться с ошибкой, он сообщает об ошибке верхнему уровню.
Еще один ключевой вопрос - это использование блокирующих (синхронных) и неблокирующих (асинхронных) передач. Большинство операций физического ввода-вывода выполняется асинхронно - процессор начинает передачу и переходит на другую работу, пока не наступает прерывание. Пользовательские программы намного легче писать, если операции ввода-вывода блокирующие - после команды READ программа автоматически приостанавливается до тех пор, пока данные не попадут в буфер программы. ОС выполняет операции ввода-вывода асинхронно, но представляет их для пользовательских программ в синхронной форме.
Последняя проблема состоит в том, что одни устройства являются разделяемыми, а другие - выделенными. Диски - это разделяемые устройства, так как одновременный доступ нескольких пользователей к диску не представляет собой проблему. Принтеры - это выделенные устройства, потому что нельзя смешивать строчки, печатаемые различными пользователями. Наличие выделенных устройств создает для операционной системы некоторые проблемы.
Для решения поставленных проблем целесообразно разделить программное обеспечение ввода-вывода на четыре слоя (рисунок 2.30):
- Обработка прерываний,
- Драйверы устройств,
- Независимый от устройств слой операционной системы,
- Пользовательский слой программного обеспечения.
Многоуровневая организация подсистемы ввода-вывода
Обработка прерываний
Прерывания должны быть скрыты как можно глубже в недрах операционной системы, чтобы как можно меньшая часть ОС имела с ними дело. Наилучший способ состоит в разрешении процессу, инициировавшему операцию ввода-вывода, блокировать себя до завершения операции и наступления прерывания. Процесс может блокировать себя, используя, например, вызов DOWN для семафора, или вызов WAIT для переменной условия, или вызов RECEIVE для ожидания сообщения. При наступлении прерывания процедура обработки прерывания выполняет разблокирование процесса, инициировавшего операцию ввода-вывода, используя вызовы UP, SIGNAL или посылая процессу сообщение. В любом случае эффект от прерывания будет состоять в том, что ранее заблокированный процесс теперь продолжит свое выполнение.
Драйверы устройств
Весь зависимый от устройства код помещается в драйвер устройства. Каждый драйвер управляет устройствами одного типа или, может быть, одного класса.
В операционной системе только драйвер устройства знает о конкретных особенностях какого-либо устройства. Например, только драйвер диска имеет дело с дорожками, секторами, цилиндрами, временем установления головки и другими факторами, обеспечивающими правильную работу диска.
Драйвер устройства принимает запрос от устройств программного слоя и решает, как его выполнить. Типичным запросом является чтение n блоков данных. Если драйвер был свободен во время поступления запроса, то он начинает выполнять запрос немедленно. Если же он был занят обслуживанием другого запроса, то вновь поступивший запрос присоединяется к очереди уже имеющихся запросов, и он будет выполнен, когда наступит его очередь.
Первый шаг в реализации запроса ввода-вывода, например, для диска, состоит в преобразовании его из абстрактной формы в конкретную. Для дискового драйвера это означает преобразование номеров блоков в номера цилиндров, головок, секторов, проверку, работает ли мотор, находится ли головка над нужным цилиндром. Короче говоря, он должен решить, какие операции контроллера нужно выполнить и в какой последовательности.
После передачи команды контроллеру драйвер должен решить, блокировать ли себя до окончания заданной операции или нет. Если операция занимает значительное время, как при печати некоторого блока данных, то драйвер блокируется до тех пор, пока операция не завершится, и обработчик прерывания не разблокирует его. Если команда ввода-вывода выполняется быстро (например, прокрутка экрана), то драйвер ожидает ее завершения без блокирования.
Независимый от устройств слой операционной системы
Большая часть программного обеспечения ввода-вывода является независимой от устройств. Точная граница между драйверами и независимыми от устройств программами определяется системой, так как некоторые функции, которые могли бы быть реализованы независимым способом, в действительности выполнены в виде драйверов для повышения эффективности или по другим причинам.
Типичными функциями для независимого от устройств слоя являются:
- обеспечение общего интерфейса к драйверам устройств,
- именование устройств,
- защита устройств,
- обеспечение независимого размера блока,
- буферизация,
- распределение памяти на блок-ориентированных устройствах,
- распределение и освобождение выделенных устройств,
- уведомление об ошибках.
Остановимся на некоторых функциях данного перечня. Верхним слоям программного обеспечения не удобно работать с блоками разной величины, поэтому данный слой обеспечивает единый размер блока, например, за счет объединения нескольких различных блоков в единый логический блок. В связи с этим верхние уровни имеют дело с абстрактными устройствами, которые используют единый размер логического блока независимо от размера физического сектора.
При создании файла или заполнении его новыми данными необходимо выделить ему новые блоки. Для этого ОС должна вести список или битовую карту свободных блоков диска. На основании информации о наличии свободного места на диске может быть разработан алгоритм поиска свободного блока, независимый от устройства и реализуемый программным слоем, находящимся выше слоя драйверов.
Пользовательский слой программного обеспечения
Хотя большая часть программного обеспечения ввода-вывода находится внутри ОС, некоторая его часть содержится в библиотеках, связываемых с пользовательскими программами. Системные вызовы, включающие вызовы ввода-вывода, обычно делаются библиотечными процедурами. Если программа, написанная на языке С, содержит вызов
count = write (fd, buffer, nbytes),
то библиотечная процедура write будет связана с программой. Набор подобных процедур является частью системы ввода-вывода. В частности, форматирование ввода или вывода выполняется библиотечными процедурами. Примером может служить функция printf языка С, которая принимает строку формата и, возможно, некоторые переменные в качестве входной информации, затем строит строку символов ASCII и делает вызов write для вывода этой строки. Стандартная библиотека ввода-вывода содержит большое число процедур, которые выполняют ввод-вывод и работают как часть пользовательской программы.
Другой категорией программного обеспечения ввода-вывода является подсистема спулинга (spooling). Спулинг - это способ работы с выделенными устройствами в мультипрограммной системе. Рассмотрим типичное устройство, требующее спулинга - строчный принтер. Хотя технически легко позволить каждому пользовательскому процессу открыть специальный файл, связанный с принтером, такой способ опасен из-за того, что пользовательский процесс может монополизировать принтер на произвольное время. Вместо этого создается специальный процесс - монитор, который получает исключительные права на использование этого устройства. Также создается специальный каталог, называемый каталогом спулинга. Для того, чтобы напечатать файл, пользовательский процесс помещает выводимую информацию в этот файл и помещает его в каталог спулинга. Процесс-монитор по очереди распечатывает все файлы, содержащиеся в каталоге спулинга.
Основные понятия, концепция ОС
Системный вызов - интерфейс между ОС и программой пользователя. Работа с ним полностью идентична работе с подпрограммами. (С их помощью можно создать/удалить файлы/процессы.)
Механизм организации –нет разницы между вызовом подпрограммы пользователем или ОС (системная функция).
При вызове системной функции происходит обращения к ядру ОС. Эта часть ядра работает в режиме пользователя и имеет доступ к адресному пространству процессора.
2 режима работы программы:
- режим ядра (доступ ко всем ячейкам памяти)
- режим пользователя (доступ только к своим адресным данным)
Прерывание -сигнал, по которому компьютер прекращает выполнение текущей программы и начинает выполнять служебную программу. Для определения очередности прерываний устанавливаются приоритеты прерываний. Различают аппаратные(генерируются аппаратурой: клавиатура, модем) и программные прерывания.
Соответствующее аппаратное прерывание имеет определенный номер. Процессор анализирует тип прерывания и передает управление соответствующему обработчику прерываний. В ячейке существует адрес, который называется вектором прерываний.
Исключительная ситуация -особая ситуация (exception). Событие в программе, вызывающее программное прерывание, обработку которого предусматривает программист (деление на нуль, отсутствует объявление доступа к ресурсу). Проблема решается с помощью программ: в этом случае ОС снимает подпрограмму с выполнения.
Системный таймер –для организации многозадачности: выделение каждой программе определенного времени для выполнения.
Файлы –пространство на диске, занятое информацией. ОС предоставляет функции для работы с файлами (открыть/создать).
Процесс (process) -последовательность операций при выполнении программы или ее части вместе с используемыми данными. Операционная система рассматривает П. как единое целое при распределении ресурсов.
Нить:Точно также как многозадачная операционная система может делать несколько вещей одновременно при помощи разных процессов, один процесс может делать много вещей при помощи нескольких нитей. Каждая нить представляет собой независимо выполняющийся поток управления со своим счетчиком команд, регистровым контекстом и стеком. Понятия процесса и нити очень тесно связаны и поэтому трудноотличимы, нити даже часто называют легковесными процессами. Основные отличия процесса от нити заключаются в том, что, каждому процессу соответствует своя независимая от других область памяти, таблица открытых файлов, текущая директория и прочая информация уровня ядра. Нити же не связаны непосредственно с этими сущностями. У всех нитей принадлежащих данному процессу всё выше перечисленное общее, поскольку принадлежит этому процессу. Кроме того, процесс всегда является сущностью уровня ядра, то есть ядро знает о его существовании, в то время как нити зачастую является сущностями уровня пользователя и ядро может ничего не знать о ней. В подобных реализациях все данные о нити хранятся в пользовательской области памяти, и соответственно такие процедуры как порождение или переключение между нитями не требуют обращения к ядру и занимают на порядок меньше времени.
Ядро ОС. Основные понятия (монолитные системы, многоуровневые системы, виртуальные машины).
Ядро ОС –набор подпрограмм, которые организуют работу с ПК (планировщик процессов, менеджер памяти, система управления вводом/выводом)
Многоуровневая архитектура - архитектура приложения, разделяющая пользовательские сервисы, прикладные сервисы и сервисы данных.
Виртуальная машина - совокупность вычислительных ресурсов, реализующая поведение некоторого реального компьютера.
На одном реальном компьютере может быть построено несколько виртуальных машин, каждая из которых выполняет свою программу и не препятствует работе другой виртуальной машины.
Два подхода к проектированию ОС:
Монолитные системы - операционные системы, представляющая собой систему без какой-либо структуры, в которой отсутствуют подпрограммы и функции. ОС вольна обращаться к любой другой функции ОС.
Минусы: 1) Сбой какой-либо компоненты приводит к сбою всей ОС, т.е. разработчику необходимо очень тщательно тестировать программный код. Причиной сбоя ОС могут послужить некачественные драйвера. Для монолитных ОС постоянно выпускаются обновления.
2) Из-за отсутствия четкой структуры сложно производить модернизацию ОС, поддержку нового типа устройств
3) Сложно переносить на другую аппаратную платформу
Плюсы: быстрота, простота реализации.
Распределенные и сетевые ОС
Сетевые ОС: пользователи сетевых ОС знают о том, что есть другие компьютеры, они могут удалённо подключаться и пользоваться их ресурсами. Каждый компьютер является полностью автономным и не зависит от других. Обладает собственным списком пользователей. Реализуется путём добавления малого куска кода к ОС (драйвер сетевого адаптера)
Распределенные ОС: Представляется традиционной ОС, хотя она и состоит из множества компьютеров. Пользователи не знают, на каком компьютере находятся их файлы, где выполняются программы. Все задачи доступа к файлам выполняют программы. Они поддерживают ОС. Они сложнее сетевых ОС.
Классификация ОС
От эффективности алгоритмов управления локальными ресурсами компьютера во многом зависит эффективность всей сетевой ОС в целом. Поэтому, характеризуя сетевую ОС, часто приводят важнейшие особенности реализации функций ОС по управлению процессорами, памятью, внешними устройствами автономного компьютера. Так, например, в зависимости от особенностей использованного алгоритма управления процессором, операционные системы делят на многозадачные и однозадачные, многопользовательские и однопользовательские, на системы, поддерживающие многонитевую обработку и не поддерживающие ее, на многопроцессорные и однопроцессорные системы.
Поддержка многозадачности. По числу одновременно выполняемых задач операционные системы могут быть разделены на два класса:
- однозадачные (например, MS-DOS, MSX) и
- многозадачные (OC EC, OS/2, UNIX, Windows 95).
Однозадачные ОС в основном выполняют функцию предоставления пользователю виртуальной машины, делая более простым и удобным процесс взаимодействия пользователя с компьютером. Однозадачные ОС включают средства управления периферийными устройствами, средства управления файлами, средства общения с пользователем.
Многозадачные ОС, кроме вышеперечисленных функций, управляют разделением совместно используемых ресурсов, таких как процессор, оперативная память, файлы и внешние устройства.
Поддержка многопользовательского режима.По числу одновременно работающих пользователей ОС делятся на:
- однопользовательские (MS-DOS, Windows 3.x, ранние версии OS/2);
- многопользовательские (UNIX, Windows NT).
Главным отличием многопользовательских систем от однопользовательских является наличие средств защиты информации каждого пользователя от несанкционированного доступа других пользователей. Следует заметить, что не всякая многозадачная система является многопользовательской, и не всякая однопользовательская ОС является однозадачной.
Вытесняющая и невытесняющая многозадачность. Важнейшим разделяемым ресурсом является процессорное время. Способ распределения процессорного времени между несколькими одновременно существующими в системе процессами (или нитями) во многом определяет специфику ОС. Среди множества существующих вариантов реализации многозадачности можно выделить две группы алгоритмов:
- невытесняющая многозадачность (NetWare, Windows 3.x);
- вытесняющая многозадачность (Windows NT, OS/2, UNIX).
Основным различием между вытесняющим и невытесняющим вариантами многозадачности является степень централизации механизма планирования процессов. В первом случае механизм планирования процессов целиком сосредоточен в операционной системе, а во втором - распределен между системой и прикладными программами. При невытесняющей многозадачности активный процесс выполняется до тех пор, пока он сам, по собственной инициативе, не отдаст управление операционной системе для того, чтобы та выбрала из очереди другой готовый к выполнению процесс. При вытесняющей многозадачности решение о переключении процессора с одного процесса на другой принимается операционной системой, а не самим активным процессом.
Поддержка многонитевости.Важным свойством операционных систем является возможность распараллеливания вычислений в рамках одной задачи. Многонитевая ОС разделяет процессорное время не между задачами, а между их отдельными ветвями (нитями).
Многопроцессорная обработка.Другим важным свойством ОС является отсутствие или наличие в ней средств поддержки многопроцессорной обработки - мультипроцессирование. Мультипроцессирование приводит к усложнению всех алгоритмов управления ресурсами.
В наши дни становится общепринятым введение в ОС функций поддержки многопроцессорной обработки данных. Такие функции имеются в операционных системах Solaris 2.x фирмы Sun, Open Server 3.x компании Santa Crus Operations, OS/2 фирмы IBM, Windows NT фирмы Microsoft и NetWare 4.1 фирмы Novell.
Многопроцессорные ОС могут классифицироваться по способу организации вычислительного процесса в системе с многопроцессорной архитектурой: асимметричные ОС и симметричные ОС. Асимметричная ОС целиком выполняется только на одном из процессоров системы, распределяя прикладные задачи по остальным процессорам. Симметричная ОС полностью децентрализована и использует весь пул процессоров, разделяя их между системными и прикладными задачами.
Выше были рассмотрены характеристики ОС, связанные с управлением только одним типом ресурсов - процессором. Важное влияние на облик операционной системы в целом, на возможности ее использования в той или иной области оказывают особенности и других подсистем управления локальными ресурсами - подсистем управления памятью, файлами, устройствами ввода-вывода.
Специфика ОС проявляется и в том, каким образом она реализует сетевые функции: распознавание и перенаправление в сеть запросов к удаленным ресурсам, передача сообщений по сети, выполнение удаленных запросов. При реализации сетевых функций возникает комплекс задач, связанных с распределенным характером хранения и обработки данных в сети: ведение справочной информации о всех доступных в сети ресурсах и серверах, адресация взаимодействующих процессов, обеспечение прозрачности доступа, тиражирование данных, согласование копий, поддержка безопасности данных
Мультизадачности
Мультипрограммирование (многозадачность) – способ организации вычислительного процесса при к-ром на одном процессоре попеременно выполняется сразу несколько программ. Эти программы совместно используют оперативную и внешнюю память, процессор, устр-ва ввода\вывода. Призвана повысить выполнение задач.
Критерии эффективности:
- пропускная способность – кол-во задач, вып ОС в единицу времени
- доступ раб пользователей – возможность интерактивно работать с неск программами на одной машине
- реактивность с-мы – способность с-мы выдерживать заранее заданные интервалы времени между запуском программы и получение рез-тов.
Многозадачные ОС подразделяются на три типа в соответствии с использованными при их разработке критериями эффективности:
- системы пакетной обработки (например, OC EC),
- системы разделения времени (UNIX, VMS),
- системы реального времени (QNX, RT/11).
Системы пакетной обработки предназначались для решения задач в основном вычислительного характера, не требующих быстрого получения результатов. Главной целью и критерием эффективности систем пакетной обработки является максимальная пропускная способность, то есть решение максимального числа задач в единицу времени. Для достижения этой цели в системах пакетной обработки используются следующая схема функционирования: в начале работы формируется пакет заданий, каждое задание содержит требование к системным ресурсам; из этого пакета заданий формируется мультипрограммная смесь, то есть множество одновременно выполняемых задач. Для одновременного выполнения выбираются задачи, предъявляющие отличающиеся требования к ресурсам, так, чтобы обеспечивалась сбалансированная загрузка всех устройств вычислительной машины; так, например, в мультипрограммной смеси желательно одновременное присутствие вычислительных задач и задач с интенсивным вводом-выводом. Таким образом, выбор нового задания из пакета заданий зависит от внутренней ситуации, складывающейся в системе, то есть выбирается "выгодное" задание. Следовательно, в таких ОС невозможно гарантировать выполнение того или иного задания в течение определенного периода времени. В системах пакетной обработки переключение процессора с выполнения одной задачи на выполнение другой происходит только в случае, если активная задача сама отказывается от процессора, например, из-за необходимости выполнить операцию ввода-вывода. Поэтому одна задача может надолго занять процессор, что делает невозможным выполнение интерактивных задач. Таким образом, взаимодействие пользователя с вычислительной машиной, на которой установлена система пакетной обработки, сводится к тому, что он приносит задание, отдает его диспетчеру-оператору, а в конце дня после выполнения всего пакета заданий получает результат. Очевидно, что такой порядок снижает эффективность работы пользователя.
Системы разделения времени призваны исправить основной недостаток систем пакетной обработки - изоляцию пользователя-программиста от процесса выполнения его задач. Каждому пользователю системы разделения времени предоставляется терминал, с которого он может вести диалог со своей программой. Так как в системах разделения времени каждой задаче выделяется только квант процессорного времени, ни одна задача не занимает процессор надолго, и время ответа оказывается приемлемым. Если квант выбран достаточно небольшим, то у всех пользователей, одновременно работающих на одной и той же машине, складывается впечатление, что каждый из них единолично использует машину. Ясно, что системы разделения времени обладают меньшей пропускной способностью, чем системы пакетной обработки, так как на выполнение принимается каждая запущенная пользователем з