Лекции по "Криптология "

Автор: Пользователь скрыл имя, 11 Декабря 2011 в 20:34, курс лекций

Краткое описание

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

Оглавление

Лекция 16. Структура системы ввода-вывода. Функции базовой подсистемы ввода-вывода. 1
Логические принципы организации ввода-вывода 1
Структура системы ввода-вывода 1
Функции базовой подсистемы ввода-вывода 4
Буферизация и кэширование 5
Spooling и захват устройств. 6
Обработка прерываний и ошибок 6
Планирование запросов 7
Лекция 15. Система управления вводом-выводом. Физические принципы организации ввода-вывода. Общие сведения об архитектуре компьютера. Структура контроллера устройства. Опрос устройств и прерывания. 8
Физические принципы организации ввода-вывода 8
Общие сведения об архитектуре компьютера 8
Структура контроллера устройства 10
Опрос устройств и прерывания. Исключительные ситуации и системные вызовы 11
Для внешних прерываний характерны следующие особенности: 13
Прямой доступ к памяти (Direct Memory Access – DMA) 14
Лекция 14. Загрузка программ. Абсолютная загрузка. Относительная загрузка. Позиционно-независимый код. Загрузка ОС. Сборка программ. 15
Загрузка программ 15
Абсолютная загрузка 15
Абсолютная загрузка используется, например, в системе UNIX на 32-разрядных машинах. 16
Относительная загрузка 16
Позиционно-независимый код 17
Загрузка ОС 17
Пример: Загрузка системы MS-DOS. 20
Сборка программ 21
Объектный модуль 21
Библиотеки объектных модулей 22
Варианты построения загрузчиков 23
Лекция 13. Кэширование данных. Иерархия запоминающих устройств. Кэш память. Принцип действия кэш-памяти. Проблемы согласования данных. Проблемы отображения основной памяти в кэш. 25
Иерархия запоминающих устройств 25
Кэш-память 25
Принцип действия кэш-памяти 26
Проблема согласования данных 28
Способы отображения основной памяти на кэш 28
Схемы выполнения запросов в системах с кэш-памятью 29

Файлы: 1 файл

модОС.docx

— 97.55 Кб (Скачать)

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

Буферизация и кэширование

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

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

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

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

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

Под словом кэш (cache – “наличные”), этимологию которого мы не будем здесь рассматривать, обычно понимают область быстрой памяти, содержащую копию данных, расположенных где-либо в более медленной памяти, предназначенную для ускорения работы вычислительной системы. Мы с вами сталкивались с этим понятием при рассмотрении иерархии памяти. 

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

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

  Spooling и захват устройств.

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

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

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

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

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

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

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

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

  Планирование запросов

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

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

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

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

Физические  принципы организации  ввода-вывода

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

Общие сведения об архитектуре  компьютера

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

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

Информация о работе Лекции по "Криптология "