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

 

1.Изучение одной из основных функций ОС: управление устройствами


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

Основными компонентами подсистемы ввода-вывода являются:

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

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

С функциональной точки зрения, внешние устройства, подразделяются:

) Устройства внешней памяти, которые в свою очередь делятся на два класса:

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

устройства памяти с последовательным доступом: стриммеры и т.д.

) Устройства последовательного ввода / вывода: клавиатура, печатающие устройства, телетайпы, терминалы и т.д.

) Векторные и растровые графические терминалы

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

) Сетевые адаптеры

) Устройства звукового ввода / вывода

) Устройства графического ввода: сканеры или видеодекодеры, и вывода: плоттеры, графические принтеры или видеокодеры.

) Специализированная контрольно-измерительная аппаратура и др.

Каждое ВУ характеризуется своей пропускной способностью и структурой передаваемых / принимаемых данных.

Все устройства ввода-вывода по физической организации делятся на два класса:

1)блок-ориентированные(блочные) и

2)байт-ориентированные (последовательные или символьные) устройства.

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

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

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

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

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

В некоторых ЭВМ эти регистры являются частью физического адресного пространства. В таких ЭВМ нет специальных операций ввода-вывода.

В других ЭВМ адреса регистров ввода-вывода, называемых портами, образуют собственное адресное пространство за счет введения специальных операций ввода-вывода (например, команд IN и OUT в процессорах i86).

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

Для последовательных устройств определен следующий набор основных операций:

инициализация (например, перемотка на начало);

чтение данных с устройства;

запись данных на устройство;

закрытие;

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

Для подключения внешних устройств был разработан протокол передачи двоичных данных по последовательной линии RS232. Этот протокол определяет электрические параметры устройств, выполняющих немодулированную передачу данных по витой паре проводов. Немодулированная передача означает, что битовые значения передаются строго последовательно и биту 1 соответствует высокое напряжение (обычно 5 в.), а биту 0 - низкое (обычно 0).

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

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

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

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


Структура системы ввода-вывода


1.1Физическая организация накопителей на магнитных дисках


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

контроллер дисковода;

собственно дисковод;

интерфейсные кабели;

магнитный диск.

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

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

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

Различают: жесткие магнитные диски(Винчестер) и гибкие(Флоппи) съемные магнитные диски.

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

Совокупность дорожек одного радиуса, расположенных на разных поверхностях магнитных дисков, образуют так называемые цилиндры (т.е. все кольца, равноудаленные от оси). Современные жесткие диски (винчестеры) могут иметь несколько десятков тысяч цилиндров. Все дорожки диска разбиваются на некоторое равное число более мелких частей, называемых секторами (sector) и нумеруемых с 1. Каждый сектор состоит из поля данных и поля служебной информации, ограничивающей и идентифицирующей его. Размер сектора устанавливается контроллером или драйвером. BIOS предоставляет возможности работы с секторами размером 128, 256, 512 или 1024 байт, чаще всего 512 байт. Сектор - наименьшая адресуемая единица обмена данными дискового устройства с оперативной памятью.


Схема жесткого диска


Одна из пластинок диска c 40 дорожками и с 8 секторами

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

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

Поверхность жесткого диска можно рассматривать как трехмерную матрицу, измерениями которой являются номера цилиндра, поверхности и сектора. Физический адрес сектора на диске определяется триадой [c-h-s] (трехмерная адресация или CHS-адресация) и равен с+h+s, где c - номер цилиндра (дорожки на поверхности диска, cylinder), h - номер рабочей поверхности диска (магнитной головки, head), а s - номер сектора на дорожке. Номер цилиндра c лежит в диапазоне 0…С-1, где C - количество цилиндров. Номер рабочей поверхности диска h принадлежит диапазону 0…H-1, где H - число магнитных головок в накопителе. Номер сектора на дорожке s указывается в диапазоне 1...S, где S - количество секторов на дорожке. Как правило, у большинства жестких дисков число H составляет - 16, а S - 63, изменяется лишь число цилиндров.

Таким образом объем V диска:

= С * H * S * 512 (байт)


Например, жесткий диск объемом 1624,6 Мб будет описываться в [C-H-S] при размере сектора 512 байт, как [3148-16-63] (3148*16*63*512 байт).

Существует негласное соглашение среди производителей давать обозначение [C-H-S] =[16383-16-63] дискам размером более 8.4 Гб, т. к. эти диски нельзя читать, используя [c-h-s] значения. Для таких дисков используется линейная (последовательная) адресация (Linear Block Addressing, LBA). Между линейной и трехмерной адресацией имеется следующее соответствие: позиция [c-h-s] в трехмерной адресации соответствует позиции c*H*S + h*S + (s-1) в последовательной адресации (минус 1, это следствие того, что по традиции номер сектора в трехмерной адресации начинается с 1, а не с 0).

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

Кластер - это минимальная порция информации, которую ОС считывает / записывает за одно обращение к диску. Кластер «содержит» только последовательно расположенные(смежные) сектора (цель - увеличить скорость обмена с диском).

Размер Кластера = N*(РазмерСектора)= N * 512 байт, где N = 2,4,8 и т.д.


Например, если файл имеет размер 2560 байт, а размер кластера в файловой системе определен в 1024 байта, то файлу будет выделено на диске 3 кластера.

Кол-во поверхностей «задается» при изготовлении диска. Кол-во дорожек и кол-во секторов на дорожке «задается» при форматировании диска, как правило 8, 9, 15 и 18 и 36. Форматирование дисков производится Пользователем с помощью спец. программ.

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

В силу инерционности процесса обработки информации и большой скорости вращения пакета дисков возможна ситуация, когда блок магнитных головок не успеет считать очередной сектор. Для решения этой проблемы используется метод чередования секторов (секторы нумеруются не по порядку, а с пропусками). Например, вместо того, чтобы нумеровать секторы по порядку: 1 2 3 4 5 6 7 8 9 10 11 12 13 14…, их нумеруют так: 1 7 13 2 8 14 3 9…

В настоящее время имеются более скоростные SCSI-контроллеры, которые обеспечивают достаточную скорость обработки информации, и необходимость в чередовании секторов - отпадает.


1.2 Организация программного обеспечения ввода-вывода


ОС должна:

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

При этом ОС должна обеспечивать:

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

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

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

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

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

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

ПО ввода-вывода можно разделить на четыре слоя:


Многоуровневая организация подсистемы ввода-вывода


1)Обработка прерываний,

2)Драйверы устройств,

)Независимый от устройств слой ОС,

)Пользовательский слой ПО.

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


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

Процесс может блокировать себя, используя, например,

1)вызов DOWN для семафора, или

2)вызов WAIT для переменной условия, или

)вызов RECEIVE для ожидания сообщения.

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

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


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


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

Весь зависимый от устройства код помещается в драйвер устройства.

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

Драйверы стандартных устройств образуют в совокупности базовую систему ввода / вывода, которая часто заносится в ПЗУ системного блока ПЭВМ. Драйверы дополнительных устройств могут подключаться к ОС динамически при запуске машины.

Драйвер выполняет следующие функции:

принимает запросы на обращение к ВУ;

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

обрабатывает прерывания от обслуживаемого ВУ.

Чаще всего драйвер сотоит из двух частей:

собственно драйвер, выполняющий обмен данными с устройством.

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

В то же время в ОС OS/2 и Windows NT существует несколько типов драйверов практически для каждого типа ВУ с различными наборами функций.

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

Первый шаг в реализации запроса ввода-вывода, например, для диска, состоит в преобразовании его из абстрактной формы в конкретную. Для дискового драйвера это означает:

1)преобразование номеров блоков в номера цилиндров, головок, секторов,

2)проверку, работает ли мотор, находится ли головка над нужным цилиндром.

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

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


1.5 Независимый от устройств слой операционной системы


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

Типичными функциями слоя, независимого от устройств, являются:

1)обеспечение общего интерфейса к драйверам устройств,

2)именование устройств,

)защита устройств,

)обеспечение независимого размера блока,

)буферизация,

)распределение памяти на блок-ориентированных устройствах,

)распределение и освобождение выделенных устройств,

)уведомление об ошибках.

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

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


1.6 Пользовательский слой программного обеспечения


Хотя большая часть программного обеспечения ввода-вывода находится внутри ОС, некоторая его часть содержится в библиотеках, связываемых с пользовательскими программами. Системные вызовы ввода-вывода делаются библиотечными процедурами. Если программа, написанная на языке С, содержит вызов count = write (fd, buffer, nbytes), то библиотечная процедура write будет связана с программой. Набор подобных процедур является частью системы ввода-вывода. В частности, форматирование ввода или вывода выполняется библиотечными процедурами. Примером может служить функция printf языка С, которая принимает строку формата и, возможно, некоторые переменные в качестве входной информации, затем строит строку символов ASCII и делает вызов write для вывода этой строки. Стандартная библиотека ввода-вывода содержит большое число процедур, которые выполняют ввод-вывод и работают как часть пользовательской программы.

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


2.Исследование алгоритмов распределения памяти в ОС


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

Ход работы:

Исследование влияния размера страницы на количество страничных сбоев и суммарный объём фиктивных областей.



Размер оперативной памяти: 256 байт

Размер страничного файла: 512 байт


Размер страницы8 байт16 байт32 байтаПроцент страничных сбоев13%10%7%Суммарный объём фиктивных областей21 байт29 байт61 байт

Исследование влияния размера страничного файла на уровень мультипрограммирования.


Размер страничного файла2048102451225612864Количество выполняемых процессов555311

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



АБФ = 0011010101 OФС = 1000


Алф = АБФ + OФС = 0011010101 + 1000 = 0011011101


Изучение алгоритма поиска замещаемого блока для стратегии замещения LFU (замещение блока, обращения к которому наименее часты).

Сравнение стратегий замещения LFU и Random.


магнитный диск драйвер операционный

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



1.Изучение одной из основных функций ОС: управление устройствами Одной из функций ОС является обеспечение обмена данными между приложениями и периферийны

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ