Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Информационные системы и технологии. Функции операционных систем персональных компьютеров.

Содержание:

Введение

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

• предоставляет пользователю или программисту вместо реальной аппаратуры компьютера расширенной виртуальной машины;

• повышает эффективность использования компьютера путем рационального управления его ресурсами в соответствии с некоторым критерием.

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

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

Применение универсальных компьютеров для управления производственными процессами потребовало реализации «масштаба реального времени» («реального времени») — синхронизации исполнения программ с внешними физическими процессами.

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

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

Есть приложения вычислительной техники, для которых операционные системы излишни. Например, встроенные микрокомпьютеры, содержащиеся во многих бытовых приборах, автомобилях (иногда по десятку в каждом), простейших сотовых телефонах, постоянно исполняют лишь одну программу, запускающуюся по включении. Многие простые игровые приставки — также представляющие собой специализированные микрокомпьютеры — могут обходиться без операционной системы, запуская при включении программу, записанную на вставленном в устройство «картридже» или компакт-диске.

Универсальные операционные системы можно охарактеризовать, прежде всего, как:

  • использующие файловые системы (с универсальным механизмом доступа к данным)
  • многопользовательские (с разделением полномочий)
  • многозадачные (с разделением времени)

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

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

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

Начальные сведения об операционной системе windows

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

- Управление оперативной памятью;

- Управление файловой системой;

- Управление внешними устройствами;

- Управление приложениями, которые выполняются в данный момент времени;

- Защита данных

По способу организации вычислительного процесса ОС делятся на два больших класса:

- Однопрограммные

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

- Многопрограммные

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

Мультипрограммирование реализовано в двух вариантах:

- Системы пакетной обработки

- Системы разделения времени

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

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

Кроме того, в состав ОС были включены средства, которые позволяли автоматически выбирать следующее задание из пакета, загружать его в освободившиеся место в ОП и запускать его. Пакет заданий загружался на жесткий диск, и можно было добавлять задание по мере поступления. Этот технический прием называется «подкачкой» данных. Был организован спулинг внешних устройств, то есть несколько внешних устройств могли одновременно вводить или выводить данные. Спулинг – совместная периферийная операция в интерактивном режиме (Simultaneous Peripheral Operation On Line).

По своему функциональному назначению ОС делятся на несколько типов:

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

Серверные операционные системы – обеспечение работы компьютерных сетей

Операционные системы для персональных компьютеров – ориентированы на широкий класс пользователей, имеют удобный интерфейс – Windows, UNIX, Macintosh.

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

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

Встроенные операционные системы работают на карманных компьютерах (электронные справочники, электронные записные книжки) или технических устройствах, не считающихся компьютерами, например телевизоры, микроволновые печки, мобильные телефоны и т.д. Имеют ограниченный набор функций, ограничения на размер памяти, мощности. Пример Windows CE (Consumer Electronics – бытовая техника)

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

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

Например:

WINDOWS является полноценной операционной системой, в ее состав входит MS DOS 7.x. WINDOWS использует объектно-ориентированную оконную технологию. Суть работы компьютера - исполнение прикладных программ под управлением той или иной операционной системы. WINDOWS  позволяет:

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

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

- Выполнять DOS-приложения.

- WINDOWS имеет единые средства обмена данными - буфер обмена. Это позволяет использовать в программах объекты, создаваемые средствами других программ.

- WINDOWS поддерживает масштабируемые шрифты.

- WINDOWS поддерживает мультимедиа

В ОС Windows системные вызовы и библиотечные процедуры разделены. Корпорацией Microsoft определен набор процедур – WIN32 API (Application Program Interface – интерфейс прикладного программирования), который доступен программисту при разработке приложений. Количество системных вызовов достаточно большое, более 1000.

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

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

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

История развития операционных систем Windows

Первая версия этой операционной системы -Windows 1.0увидела свет в ноябре 1985 года. Windows 1.0 «умела» совсем немного и была скорее графической оболочкой для MS-DOS, однако эта система позволяла пользователю запускать несколько прог­рамм одновременно. Главным неудобством при работе с Windows 1.0 было то, что открытые окна не могли накладываться друг на друга (чтобы увеличить размеры одного окна, приходилось уменьшать размеры находящегося рядом). Кроме того, для Windows 1.0 было написано слишком мало программ, поэтому данная система не получила широкого распространения.

Windows 3.1(1992 г.), Windows for Workgroups 3.11(1993 г.) - это популярные в прошлом графические операционные оболочки, работающие под управлением операционной системы MS DOS и использующие на нижнем уровне встроенные функции и процедуры данной ОС. Это объектно-ориентированные приложения, основу которых составляет иерархически организованная система окон.

Windows NT (1993 г.) - это многопользовательская и масштабируемая сетевая операционная система для персональных компьютеров, поддерживающая архитектуру «клиент-сервер» и включающая свою систему безопасности. Она может взаимодействовать с различными операционными системами как корпорации Microsoft, так и других фирм(например, MacOS или UNIX), установленными на однопроцессорных и многопроцессорных компьютерах, построенных на базе CISC- или RISC- технологий.

Windows 95 - это многозадачная и многопотоковая 32-битная операционная система с графическим интерфейсом. Система полностью поддерживает 16-битные приложения, созданные для MS DOS. Это интегрированная мультимедийная среда для обмена текстовой, графической, звуковой и другой информации.

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

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

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

Window XP(2001 г.) явилась шагом корпорации Microsoft на пути осуществления интеграции пользовательской ОС Windows ME и сетей ОС Windows 2000. В результате подобной интеграции их сильных сторон была получена одна из лучших операционных систем, которая обрела новый пользовательский интерфейс, значительно упрощающий использование персонального компьютера для различных целей, в том числе, для управления локальными сетями. Разработаны две различные версии этой ОС: для домашних пользователей (Windows XP Home Edition) и корпоративных пользователей (Windows XP Professional).

Window Vista(2007 г.) -это новейшая операционная система (имеет ядро версии 6.0). В отличие от предыдущих версий Vista поставляется на DVD-носителях в связи с ее возросшей сложностью и новым «навороченным» интерфейсом (Aero). Кроме того, каждый диск содержит все ее пять модификаций: Home Basic, Home Premium, Enterprise и Ultimat.

Windows 7 - последняя на сегодняшний день операционная система семейства Windows NT, следующая за Windows Vista. В линейке Windows NT система носит номер версии 6.1, которая в своем окончательном виде вышла 22 октября 2009 г.

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

Дополнительным преимуществом Windows 7 можно считать более тесную интеграцию с производителями драйверов. Большинство из них определяются автоматически, при этом в 90 % случаев сохраняется обратная совместимость с драйверами для Windows Vista.7 поддерживает псевдонимы для папок на внутреннем уровне. К примеру, папка Program Files в некоторых локализованных версиях Windows была переведена и отображалась с переведённым именем, однако на уровне файловой системы оставалась англоязычной.

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

Windows 8 — операционная система, принадлежащая к семейству ОС Microsoft Windows, в линейке следующая за Windows 7 и разработанная транснациональной корпорацией Microsoft. Номер версии в линейке NT — 6.2. Поступила в продажу 26 октября 2012 года. По различным данным, на апрель 2013 года доля Windows 8 среди используемых в мире операционных систем для доступа к сети Интернет, составила от 3,82 %

Windows 8, в отличие от своих предшественников — Windows 7 и Windows XP, — использует новый интерфейс под названием Modern (ранее — Metro). Этот интерфейс появляется первым после запуска системы; он схож по функциональности с рабочим столом — стартовый экран имеет плитки приложений (сродни ярлыкам), по нажатию на которые запускается приложение, открывается сайт или папка (в зависимости от того, к какому элементу или приложению привязана плитка).

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

История развития операционных систем Unix

История ОС UNIX началась в 1969 году.

1971 год .

V1. Первая версия UNIX Time-Sharing System на ассемблере для PDP-11/20. Включала файловую систему, системный вызов fork() для порождения процессов, утилиты типа cat, ed, roff. Использовалась для обработки текстов при подготовке патентов. Системный вызов pipe() и поддержка программных каналов появилась в V2.

UNIX зародился в лаборатории Bell Labs фирмы AT&T более 30 лет назад. В то время Bell Labs занималась разработкой многопользовательской системы разделения времени MULTICS (Multiplexed Information and Computing Service) совместно с MIT и General Electric, но эта система потерпела неудачу. Bell Labs отказалась от участия в проекте MULTICS, что дало возможность одному из ее исследователей, Кену Томпсону, заняться поисковой работой в направлении улучшения операционной среды Bell Labs. Томпсон, а также сотрудник Bell Labs Денис Ритчи и некоторые другие разрабатывали новую файловую систему, многие черты которой вели свое происхождение от MULTICS. Для проверки новой файловой системы Томпсон написал ядро ОС и некоторые программы для компьютера GE-645, который работал под управлением мультипрограммной системы разделения времени GECOS. У Кена Томпсона была написанная им еще во времена работы над MULTICS игра "Space Travel" - "Космическое путешествие". Он запускал ее на компьютере GE-645, но она работала на нем не очень хорошо из-за невысокой эффективности разделения времени. Кроме этого, машинное время GE-645 стоило слишком дорого. В результате Томпсон и Ритчи решили перенести игру на машину PDP-7 фирмы DEC, имеющую 4096 18-битных слов, телетайп и хороший графический дисплей. Но у PDP-7 было неважное программное обеспечение, и, закончив перенос игры, Томпсон решил реализовать на PDP-7 ту файловую систему, над который он работал на GE-645. Из этой работы и возникла первая версия UNIX. Уже тогда она включала характерную для современной UNIX файловую систему, основанную на индексных дескрипторах inode, имела подсистему управления процессами и памятью, а также позволяла двум пользователям работать в режиме разделения времени. Система была написана на ассемблере. Имя UNIX (Uniplex Information and Computing Services) было дано ей одним сотрудником Bell Labs, Брайаном Керниганом,

Первыми пользователями UNIX'а стали сотрудники отдела патентов Bell Labs, которые нашли ее удобной средой для создания текстов. Большое влияние на судьбу UNIX оказала перепись ее на языке высокого уровня С, разработанного Денисом Ритчи специально для этих целей. Это произошло в 1973 году, UNIX насчитывал к этому времени уже 25 инсталляций, и в Bell Labs была создана специальная группа поддержки UNIX.

После описания системы Томпсоном и Ритчи в компьютерном журнале CACM в 1974 г. UNIX получил широкое распространение. ОС стала востребована в университетах, так как для них она поставлялась бесплатно вместе с исходными кодами на С. Широкое распространение эффективных C-компиляторов сделало UNIX уникальной для того времени ОС из-за возможности переноса на различные компьютеры. Университеты внесли значительный вклад в улучшение UNIX и дальнейшую его популяризацию. Еще одним шагом на пути к признанию UNIX, как стандартизованной среды стала разработка Денисом Ритчи библиотеки ввода-вывода stdio. Благодаря использованию этой библиотеки для компилятора С, программы для UNIX стали легко переносимыми.

ОС UNIX является интерактивной операционной системой, это традиционно сетевая операционная система.

Обзор аппаратного обеспечения компьютера

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

Аппаратное обеспечение компьютера – это набор устройств, из которых состоит компьютер, и тех, которые могут быть к нему подключены.

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

В состав системного блока входят:

-Материнская плата

- центральный процессор

- BIOS

- кулер,

- оперативная память и кэш

- слоты расширения шин — PCI, PCI-E, USB, FireWire, AGP (устарела), ISA (устарела), EISA (устарела)

- контроллеры устройств — хранения: IDE, SCSI, SATA, SAS или других типов, находящиеся непосредственно на материнской плате (встроенные) либо на платах расширения.

- Видеоконтроллер (встроенный или в виде отдельной платы), передающий сигнал на монитор

- Звуковой контроллер

- Сетевой интерфейс (сетевая плата)

- Блок питания

- Система охлаждения — необходима в случае установки блоков, имеющих повышенное тепловыделение.

Через контроллеры к материнской плате при помощи шлейфов кабелей, сигнальных и питания, подключены жёсткий диск (их так же можно объединить в RAID-массив), SSD, накопитель на гибких дисках, оптический накопитель типа CD-ROM и другие устройства.

Кроме того, в аппаратное обеспечение компьютера также входят внешние (по отношению к системному блоку) компоненты — периферийные устройства:

  • Устройства ввода
  • Клавиатура
  • Мышь, трекбол или тачпад
  • Джойстик
  • Сканер
  • Микрофон
  • Устройства вывода
  • Монитор
  • Колонки/наушники
  • Печатающие устройства типа принтера или плоттера
  • Для связи используются различные модемы и сетевое оборудование: маршрутизатор, сетевой коммутатор, беспроводная точка доступа.

Самым важным из этих трех устройств является системный блок. В системном блоке располагаются основные элементы компьютера:
- микропроцессор (центральный процессор) – электронная микросхема, предназначенная для обеспечения общего управления компьютером, а также для выполнения всех операций, команд и программ;
- сопроцессор – устройство (микросхема), обеспечивающая повышение производительности компьютера. Работает сопроцессор не всегда, а только в тех случаях, действительно «две головы лучше»;
- оперативная память (ОЗУ или RAM) – область памяти, предназначенная для временного хранения программ и данных. После включения компьютера, туда помещается выполняемая в данное время программа, и компьютер работает с ней. При выключении питания ЭВМ, содержание оперативной памяти теряется;
- кэш-память – сверхбыстродействующая память, которая является промежуточной между основной памятью и процессором. Кэш диска – область оперативной памяти, в которой операционная система сохраняет содержимое части магнитного диска, к которой происходили обращения. В результате при повторном обращении к диску данные выбираются из дискового КЭШа, не требуя выполнения медленных операций ввода-вывода.

Архитектура операционной системы

Классическая архитектура

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

  • ядро – модули, выполняющие основные функции операционной системы; 
  • модули, выполняющие вспомогательные функции операционной системы.
  • Модули ядра выполняют такие базовые функции операционной системы, как управление процессами, памятью, устройствами ввода-вывода и т. п. Ядро составляет сердцевину операционной системы, без него она является полностью неработоспособной и не сможет выполнить ни одну из своих функций.
  • В состав ядра входят функции, решающие внутрисистемные задачи организации вычислительного процесса, такие как переключение контекстов, загрузка/выгрузка станиц, обработка прерываний. Эти функции недоступны для приложений. Другой класс функций ядра служит для поддержки приложений, создавая для них так называемую прикладную программную среду. Приложения могут обращаться к ядру с запросами – системными вызовами – для выполнения тех или иных действий, например для открытия и чтения файла, вывода графической информации на дисплей, получения системного времени и т. д. Функции ядра, которые могут вызываться приложениями, образуют интерфейс прикладного программирования – API.
  • Функции, выполняемые модулями ядра, являются наиболее часто используемыми функциями операционной системы, поэтому скорость их выполнения определяет производительность всей системы в целом. Для обеспечения высокой скорости работы операционной системы все модули ядра или большая их часть постоянно находятся в оперативной памяти, то есть являются резидентными.
  • Некоторые компоненты операционной системы оформлены как обычные приложения, то есть в виде исполняемых модулей стандартного для данной операционной системой формата, поэтому очень сложно провести четкую грань между операционной системой и приложениями.
  • Вспомогательные модули операционной системы обычно подразделяются на следующие группы:
  • утилиты – программы, решающие отдельные задачи управления и сопровождения компьютерной системы, такие, например, как программы сжатия дисков, архивирования данных на магнитную ленту;
  • ·  системные обрабатывающие программы – текстовые или графические редакторы, компиляторы, компоновщики, отладчики;
  • ·  программы предоставления пользователю дополнительных услуг – специальный вариант пользовательского интерфейса, калькулятор и даже игры;
  • ·  библиотеки процедур различного назначения, упрощающие разработку приложений, например библиотека математических функций, функций ввода-вывода и т. д.

Микроядерная архитектура

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

Перенос основного объема функций ядра в пользовательское пространство

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

Процессы и потоки

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

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

Например:

Процесс

  • Идентификатор процесса
  • Окружение
  • Рабочая папка
  • Регистры
  • Стек
  • Куча
  • Файловый дескриптор
  • Общие библиотеки (dll, so)
  • Инструменты межпроцессорного взаимодействия (пайпы, очереди сообщений, семафоры или обобщённая память)
  • Специфические для операционной системы ресурсы

Поток

  • Stack Pointer (указатель на вершину стека, на самом деле «своего» стека, как у процесса, у потока нет)
  • Регистры
  • Свойства (необходимые для планировщика, такие как приоритет или политики)
  • Специфичные для потока данные
  • Специфические для операционной системы ресурсы

Планирование в системах пакетной обработки данных

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

  1. Системы пакетной обработки данных;
  2. Интерактивные системы;
  3. Системы реального времени.

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

Пример:

     “Первым пришел - первым обслужен”.
     Процессам предоставляется доступ к процессору в том порядке, в котором они его запрашивают.

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

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

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

Методы распределения

Все методы распределения памяти по критерию использования раз- личных видов запоминающих устройств можно разделить на два класса:

  1. В которых используется перемещение сегментов процессов между ОП и диском;
  2. В которых внешняя память не привлекается

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

При произвольном методе динамического распределения памяти выделение и освобождение фрагментов памяти осуществляется по произвольным запросам без какой-либо системы. Произвольное динамическое распределение памяти может производиться самим разработчиком  программы (т. е. явно) или осуществляться автоматически (т. е. неявно). Динамическое  распределение памяти для переменных, создаваемых по явному запросу, разработчик проводит, как правило, с помощью специальных операторов или библиотечных функций (например, операторы ALLOCATE в языке PL/1, new в Pascal и Ci++, функция malloc в Ci). Эти операторы и функции, в свою очередь, могут использовать возможности операционной системы, а могут производить динамическое распределение памяти самостоятельно, в рамках статически выделенного большого участка памяти.

Автоматическое динамическое распределение памяти осуществляется, если в программе используются такие операции над данными, которые требуют перераспределения памяти, а сами операторы перераспределения в программе отсутствуют [например, операция слияния значений (конкатенации) строковых переменных в языке Basic или в языке Object Pascal]. Также автоматически проводится управление сегментами и страницами памяти в операционных системах, которые для этого могут пользоваться аппаратной поддержкой.

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

Организация памяти

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

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

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

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

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

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

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

Защита данных в процессорах

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

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

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

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

Иерархия уровней безопасности, помечает низший уровень безопасности как D, а высший - как А.

  • В класс D попадают системы, оценка которых выявила их несоответствие требованиям всех других классов.
  • Основными свойствами, характерными для С-систем, являются: наличие подсистемы учета событий, связанных с безопасностью, и избирательный контроль доступа. Уровень С делится на 2 подуровня: уровень С1, обеспечивающий защиту данных от ошибок пользователей, но не от действий злоумышленников, и более строгий уровень С2. На уровне С2 должны присутствовать средства секретного входа, обеспечивающие идентификацию пользователей путем ввода уникального имени и пароля перед тем, как им будет разрешен доступ к системе. Избирательный контроль доступа, требуемый на этом уровне позволяет владельцу ресурса определить, кто имеет доступ к ресурсу и что он может с ним делать. Владелец делает это путем предоставляемых прав доступа пользователю или группе пользователей. Средства учета и наблюдения (auditing) - обеспечивают возможность обнаружить и зафиксировать важные события, связанные с безопасностью, или любые попытки создать, получить доступ или удалить системные ресурсы. Защита памяти - заключается в том, что память инициализируется перед тем, как повторно используется. На этом уровне система не защищена от ошибок пользователя, но поведение его может быть проконтролировано по записям в журнале, оставленным средствами наблюдения и аудитинга.
  • Системы уровня В основаны на помеченных данных и распределении пользователей по категориям, то есть реализуют мандатный контроль доступа. Каждому пользователю присваивается рейтинг защиты, и он может получать доступ к данным только в соответствии с этим рейтингом. Этот уровень в отличие от уровня С защищает систему от ошибочного поведения пользователя.
  • Уровень А является самым высоким уровнем безопасности, он требует в дополнение ко всем требованиям уровня В выполнения формального, математически обоснованного доказательства соответствия системы требованиям безопасности.

Различные коммерческие структуры (например, банки) особо выделяют необходимость учетной службы, аналогичной той, что предлагают государственные рекомендации С2. Любая деятельность, связанная с безопасностью, может быть отслежена и тем самым учтена. Это как раз то, что требует С2 и то, что обычно нужно банкам. Однако, коммерческие пользователи, как правило, не хотят расплачиваться производительностью за повышенный уровень безопасности. А-уровень безопасности занимает своими управляющими механизмами до 90% процессорного времени. Более безопасные системы не только снижают эффективность, но и существенно ограничивают число доступных прикладных пакетов, которые соответствующим образом могут выполняться в подобной системе. Например для ОС Solaris (версия UNIX) есть несколько тысяч приложений, а для ее аналога В-уровня - только сотня.

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

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

Примеры:

Шифрование файлов.

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

  • предоставляет пользователю возможность выбора метода установки ключа шифрования (внутренний ключ или внешний);
  • поблочно читает файл и передает считанные данные в контроллер.

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

Прозрачное шифрование разделов диска.

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

  • считанные данные расшифровываются перед передачей приложению;
  • записываемые данные зашифровываются перед передачей драйверу раздела.

.

Наложенная сеть.

Еще одной СЗИ, является "наложенная сеть". Эта СЗИ обеспечивает защищенную передачу данных по ЛВС. В рамках существующей ЛВС выделяется некоторая совокупность ПЭВМ, которые будут обмениваться данными только между собой. Причем, передача данных осуществляется в зашифрованном виде. В такой СЗИ внутреннее ПО контроллера выполняет следующие функции:

  • управление базой данных ключей (каждой ПЭВМ соответствует свой ключ шифрования);
  • шифрование данных на том ключе, который соответствует адресу получателя;
  • расшифрование данных на собственном ключе.

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

  • фильтрация пакетов по адресам источника и приемника;
  • передача данных для модификации в контроллер;
  • обеспечение работоспособности сети.

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

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

Принципы программного обеспечения ввода и вывода

Устройства делят на две категории (некоторые не попадают ни в одну):

  • блочные устройства - информация считывается и записывается по блокам, блоки имеют свой адрес (диски)
  • символьные устройства - информация считывается и записывается посимвольно (принтер, сетевые карты, мыши)

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

Устройства ввода-вывода можно условно разделить на две категории: блочные устройства и символьные устройства. К блочным относятся такие устройства, которые хранят информацию в блоках фиксированной длины, у каждого из которых есть собственный адрес. Обычно размеры блоков варьируются от 512 до 65 536 байт. Вся передача данных ведется пакетами из одного или нескольких целых (последовательных) блоков. Важным свойством блочного устройства является то, что оно способно читать или записывать каждый блок независимо от всех других блоков. Среди наиболее распространенных блочных устройств жесткие диски, приводы Blu-ray-дисков и флеш накопители USB.

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

Независимо от наличия или отсутствия у центрального процессора ввода-вывода, отображаемого на пространство памяти, ему необходимо обращаться к контроллерам устройств, чтобы осуществлять с ними обмен данными. Центральный процессор может запрашивать данные у контроллера ввода-вывода побайтно, но при этом будет нерационально расходоваться его рабочее время, поэтому чаще всего используется другая схема, которая называется прямым доступом к памяти (Direct Memory Access (DMA)). Чтобы не усложнять объяснение, предполагается, что центральный процессор обращается ко всем устройствам и к памяти посредством единой системной шины, соединяющей центральный процессор, память и устройства ввода-вывода.

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

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

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

Способы

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

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

Уровни программного обеспечения ввода-вывода:

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

    1. Программное обеспечение ввода – вывода уровня пользователя
    2. Устройство – независимое программное обеспечение операционной системы
    3. Драйверы устройств
    4. Обработчики прерываний
    5. Аппаратура

Более подробно:

Обработчики прерываний

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

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

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

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

Для каждой операционной системы нужны собственные драйверы, производитель устройства обычно поставляет драйверы для нескольких наиболее популярных операционных систем. Каждый драйвер устройства обычно управляет одним типом устройства или как максимум одним классом родственных устройств. Например, драйвер SCSI-диска обычно может управлять несколькими SCSI-дисками разного объема и разной скорости и, может быть, приводом Blu-ray-диска со SCSI-интерфейсом. А вот мыши и джойстики настолько отличаются друг от друга, что для них, как правило, требуются разные драйверы. Тем не менее технически вполне возможно создание одного драйвера устройства, управляющего несколькими разнородными устройствами. Но это в большинстве случаев не самая лучшая идея. Но иногда совершенно разные устройства основаны на одной и той же базовой технологии. Наверное, наиболее известным примером может послужить USB — технология последовательной шины, которая не зря называется универсальной. К USB-устройствам относятся диски, карты памяти, фотоаппараты, мыши, клавиатуры, мини-вентиляторы, беспроводные сетевые карты, роботы, считыватели кредитных карт, аккумуляторные бритвы, измельчители бумаг, сканеры штрих-кодов и портативные термометры. Все они используют USB, хотя занимаются совершенно разными вещами. Характерная особенность заключается в том, что из USB-драйверов обычно формируется стек, подобный TCP/IP-стеку в сетях. Внизу, как правило, в оборудовании, находится уровень USB-ссылок (последовательного ввода-вывода), обрабатывающий все, что касается аппаратуры, например сигнализацию и декодирование потоков сигналов в USB-пакеты. Он используется для более высоких уровней, работающих с пакетами и функциями USB, общими для большинства устройств. И наконец, наверху над всем этим находятся высокоуровневые API-интерфейсы, например интерфейсы для накопителей, камер и т. д. Таким образом, у нас по-прежнему имеются отдельные драйверы устройств, несмотря на то что ими совместно используются части стека протокола. Чтобы получить доступ к аппаратной части устройства, то есть к регистрам контроллера, драйвер устройства, как правило, должен быть частью ядра операционной системы, по крайней мере в существующих на сегодняшний день архитектурах. Но вообще-то можно создавать и драйверы, работающие в пространстве пользователя, используя при этом системные вызовы для чтения и записи регистров устройств. Такое решение позволит изолировать ядро от драйверов и драйверы друг от друга, устранив при этом основной источник системных сбоев — «сырые» драйверы, тем или иным образом мешающие работе ядра. Несомненно, это хороший выход из положения при создании высоконадежных систем .

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

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

Многие драйверы устройств имеют сходную общую структуру. Типичный драйвер начинает свою работу с проверки приемлемости входных параметров. Если они неприемлемы, возвращается сообщение об ошибке. Если с параметрами все в порядке, может понадобиться перевод абстрактных понятий в конкретные. Для драйвера диска это может означать преобразование обычного номера блока в номера головки, дорожки, сектора и цилиндра, относящихся к геометрии диска. Затем драйвер может проверить, используется ли устройство в данный момент. Если оно используется, запрос будет поставлен в очередь для последующей обработки. Если устройство простаивает, проверяется состояние аппаратуры, чтобы определить, может ли запрос быть обработан. Перед началом передачи данных может понадобиться включить устройство или запустить его двигатель. Как только устройство включится и будет готово к работе, им можно будет управлять. Управление устройством означает выдачу в его адрес последовательности команд. Именно драйвер определяет последовательность команд в зависимости от того, что должно быть сделано. После того как драйвер поймет, какие команды он собирается выдать, он начнет записывать их в регистры контроллера устройства. После записи каждой команды в контроллер может потребоваться проверка того, принял ли контроллер команду и готов ли к приему следующей команды. Эта последовательность повторяется до тех пор, пока не будут выданы все команды. Некоторым контроллерам можно указывать на связанный список команд (в памяти) и предписывать самостоятельное чтение и обработку этих команд без дальнейшей помощи со стороны операционной системы.

Программное обеспечение ввода и вывода не зависящее от внешних устройств.

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

.

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

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

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

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

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

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

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

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

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

1. операции чтения-записи данных;

2. операции управления ПУ;

3. операции по проверке состояния ПУ.

Основные задачи, которые должно решать программное обеспечение ввода-вывода:

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

Заключение

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

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

Литература

  • А. Кручинин - Операционные системы
  • Пахмурин Д. О. - Операционные системы ЭВМ: учебное пособие
  • Беленькая В.М. – Администрирование в операционных системах
  • Киселев С.В. , Алексахин С.В. Остроух А.В. – Аппаратные средства персонального компьютера
  • Лихоносов А.Г. , Лядов М.Г. – Аудит информационной безопасности
  • Фуфаев Э.В. – Базы данных
  • Лихоносов А.Г. – Инженерно – техническая защита информации
  • Гуриков С.Р. – Информатика
  • Дик В.В. , Иванов В.В. , Шайтура С.В. – Представление знаний в информационных системах
  • Сидоркина И.Г. – Системы искусственного интеллекта
  • Колдаев В.Д. – Структуры и алгоритмы обработки данных
  • Прокимнов Н.Н. – Теория информационных процессов и систем
  • Денисов Д.В. – Технические средства информатизации
  • Емельянова Н.З. , Партыка Т.Л., Попов И.И. – Устройства и функционирование операционных систем
  • Колдаев В.Г. – Численные методы и программирование
  • Гулиян В. Г., Нестеров И. А. – языки Internet- программирования