Лекции по "Системному программированию"

Автор: Пользователь скрыл имя, 20 Февраля 2013 в 20:15, лекция

Описание работы

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

Работа содержит 1 файл

Konspekt_SPOVM.docx

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

Сегментация с использованием страниц в системах Intel Pentium

Виртуальная память компьютера Pentium поддерживает 16к независимых сегментов. Основой виртуальной памяти являются две таблицы: GDT, LDT (глобальная и локальная таблицы дескрипторов). У каждой программы есть своя собственная локальная таблица дескрипторов. Глобальная таблица одна для всех программ и несет информацию о системных сегментах, в том числе сегментах ОС. Чтобы получить доступ к сегменту, программа должна загрузить в один из сегментных регистров 16-разрядный селектор.

Третий бит  указывает на принадлежность сегмента к локальному либо глобальному. Индекс указывает на номер дескриптора соответствующей таблицы. Каждая таблица содержит 8к дескрипторов. Дескриптор 0 является запрещенным. Во время загрузки селектора соответствующий дескриптор извлекается из таблицы и записывается в микропрограммные регистры для быстрого доступа к нему. Размер дескриптора - 8 байт.

При обращении  к сегментному регистру (селектору), программа может найти в микропрограммных регистрах соответствующий дескриптор. Если сегментный регистр (селектор) равен  нулю, то сегмент не существует и  система вызывает прерывание. Далее  проверяется бит присутствия. В  случае нуля так же происходит прерывание. Далее проверяется, не выходит ли смещение за границы сегмента (смещение сравнивается со значением поля Lim). Если бит G равен нулю, то поле Lim указывает размер в сегментах с точностью до 1 байта. Если G равно единице, то размер указывается в страницах по 4к каждая. При выходе за пределы сегмента вызывается прерывание. Если все проверки пройдены, то значение Base (адрес начала сегмента) складывается со смещением Offset и получается 32-разрядный линейный адрес. Если бит G равен нулю, линейный адрес интерпретируется как физический. Если бит G равен единице, то доступна страничная подкачка и линейный адрес преобразуется в физический с помощью двухуровневой таблицы страниц.

Система Pentium поддерживает 4 уровня защиты (привилегии):

0 - ядро;

1 - системные  службы;

2 - DLL;

3 - программы  пользователя.

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

38. Устройства ввода-вывода. Доступ  к УВВ.

У каждого  устройства ввода/вывода есть контроллер для общения с ЦП. Контроллер и  процессор общаются через специальные  регистры, располагающиеся на контроллере. При помощи управляющих регистров  процессор управляет устройством  вводы/вывода. Из регистров данных процессор  может узнать состояние устройства, а так же выдаваемую информацию. Существует 2 альтернативных подхода для доступа к регистрам:

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

‡ in reg, port - считывает данные из порта в определенный регистр процессора;

‡ out port, reg - записывает данные из регистра процессора в определенный порт;

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

Достоинства:

‡ для  обращения к устройствам ввода/вывода не требуется специальных команд, например in и out;

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

‡ каждая команда процессора, которая обращается к памяти, может с тем же успехом  обращаться к регистрам устройств ввода/вывода, например команда tsl.

Недостатки:

‡ в большинстве  современных компьютеров используется кэширование памяти, поэтому необходима специальная аппаратура либо программные  средства, которые позволяют запрещать  кэширование для определенных страниц;

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

39. Прямой доступ к памяти.

 

Прямой доступ к памяти (DMA)

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

 

1 - ЦП программирует  контроллер DMA;

2 - контроллер  DMA дает команду контроллеру HDD прочитать данные во внутренний буфер и проверить контрольную сумму.

3 - контроллер  DMA инициирует перенос данных из буфера в RAM. Контроллер HDD не отличает запросы ЦП и контроллера DMA;

4 - по завершении  записи буфера контроллер HDD отправляет сигнал подтверждения контроллеру DMA (вместо прерывания ЦП). При необходимости шаги 2-4 повторяются;

5 - по завершении  цикла копирования контроллер  DMA вызывает прерывание процессора

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

 

41. Осуществление операций ввода-вывода. Программный ввод-вывод. 

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

  1. процесс пользователя собирает строку в буфере в пространстве пользователя.
  2. Процесс обращается к системн. выз. и получает принтер на врем. пользование.
  3. Процесс указывает ОС о необходимости печати строки из буфера.
  4. ОС копирует содержимое буфера в массив в пространстве ядра.
  5. Если принтер свободен, ОС копирует массив в регистр данных принтера.
  6. ОС подает на принтер команду печати.
  7. По завершению печати управление передается процессу пользователя.

42. Осуществление операций ввода-вывода. Управляемый прерываниями ввод-вывод.  Ввод-вывод с использованием DMA.

Управляемый прерываниями в/в

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

43. Программые уровни ввода-вывода.

 

 

 

 

 

 

 

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

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

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

Независимое от устройств ПО

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

  1. Единообразие интерфейсов для драйверов устройств.
  2. Буферизация
  3. Сообщение об ошибках (программирования, в/в)
  4. Захват и освобождение устройств.
  5. Независимый от устройств размер блока.

44. Файловые системы. Файлы. Структура  файлов.

Файловые системы

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

Файлы

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

Структуры файлов

1) Неструктурированная  последовательность байт.

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

2) Последовательность записей фиксированной длины.

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

3) Дерево  записей

45. Типы файлов. Доступ к файлам. Отображение на адресное пространство.

Типы файлов

- Регулярные  файлы – все файлы содержащие  инфу пользователя.

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

- Символьные специальные файлы, которые используются для моделирования последовательных устройств ввода/вывода;

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

Регулярные  файлы бывают либо двоичными, либо ASCII-файлами. ASCII-файлы состоят из текстовых строк, которые заканчиватся либо символом возврата каретки, либо символом перевода строки (UNIX), либо обеими символами (DOS). ASCII-файлы выводятся на экран либо на печать без какого-либо преобразования, то есть так, как они хранятся. Обмен данными при этом не становится проще, но облегчается интерпретация.

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

Все ОС должны распознавать по крайней мере один тип файлов: свои собственные исполняемые файлы.

Отображение на адресное пространство.

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

Системный вызов  map в качестве параметров использует имя файла и виртуальный адрес, по которому ОС отображает данный файл. Такой подход позволяет для работы с файлами использовать не специальные функции ввода/вывода (fread, fwrite), а обычные функции для работы с памятью. Удобнее всего использовать отображение файлов в ОС, поддерживающих сегментацию. В этом случае каждый файл может быть отображен на свой собственный сегмент. Недостатки:

- заранее  невозможно узнать размер выходного  файла, чтобы зарезервировать  место для него;

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

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

46. Каталоги. Каталоговые системы. Имя пути.

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

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

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

‡ каждый пользователь имеет свободу в  именовании файлов;

‡ защита файлов от несанкционированного доступа;

Недостатки:

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

Информация о работе Лекции по "Системному программированию"