Лекции по "Операционные системы"

Автор работы: Пользователь скрыл имя, 16 Апреля 2012 в 12:17, курс лекций

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

Это основные функции ОС. Например, MS-DOS кроме этих 5 пунктов больше ничего не умеет.
Более развитые ОС обладают также следующими возможностями:
1) Параллельное (или псевдопараллельное, в случае одного процессора) исполнение нескольких задач.
2) Организация взаимодействия задач друг с другом
3) Организация межмашинного взаимодействия и разделения ресурсов

Содержание

1. Функции операционных систем 3
2. Классификация ОС 4
3. Загрузка программ 6
Абсолютная загрузка 6
Разделы памяти 6
Относительная загрузка 6
Базовая адресация 7
Позиционно-независимый код 7
Оверлеи (перекрытия) 7
Сборка программ 8
Объектные библиотеки 9
Сборка в момент загрузки 9
Динамические библиотеки 10
Разделяемый код в системах семейства Windows 11
Загрузка самой ОС 12
4. Параллелизм с точки зрения программиста 14
Основные понятия и определения 14
Примитивы взаимоисключения 15
Мертвые и живые блокировки 16
Примитивы синхронизации 17
Семафоры 18
Захват участков файлов 19
Мониторы и серверы транзакций 19
Системы, управляемые событиями 20
5. Реализация многозадачности на однопроцессорных компьютерах 22
Кооперативная многозадачность 22
Вытесняющая многозадачность 23
Планировщики с приоритетами 24
Монолитные системы и системы с микроядром 25
6. Управление оперативной памятью 27
Открытая память 27
Алгоритмы динамического управления памятью 27
Сборка мусора 30
Открытая память (продолжение) 30
Управление памятью в MacOS и Win16 31
Системы с базовой виртуальной адресацией 32
7. Сегментная и страничная виртуальная память 34
Сегменты, страницы и системные вызовы 35
Взаимно недоверяющие подсистемы 36
Разделяемые библиотеки 36
Страничный обмен 37
8. Драйверы внешних устройств 39
Функции драйверов 39
Многоуровневые драйверы 40
Загрузка драйверов 40
Архитектура драйвера 41
Сервисы ядра, доступные драйверам

Вложенные файлы: 1 файл

Лекции по ОС v.1.8.doc

— 386.00 Кб (Скачать файл)
 
 
 
 
 
 

Конспект  лекций

по  курсу

ОПЕРАЦИОННЫЕ  СИСТЕМЫ 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

    СодержаниеФункции операционных систем

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

      Основные  функции ОС:

  1. Обеспечение загрузки пользовательских программ в оперативную память и их исполнения (этот пункт не относится к ОС, предназначенным для прошивки в ПЗУ)
  2. Обеспечение управления памятью. В простейшем случае это указание единственной загруженной программе адреса, на котором кончается память, доступная для использования, и начинается память, занятая системой.
  3. Обеспечение работы с устройствами долговременной памяти, такими как магнитные диски, ленты, оптические диски, флэш-память и т.д. Как правило, ОС управляет свободным пространством на этих носителях и структурирует пользовательские данные в виде файловых системы.
  4. Предоставление более или менее структурированного доступа к различным периферийным устройствам, таким как терминалы, модемы, принтеры, двигатели, поворачивающие рулевые плоскости истребителя и т.д.
  5. Предоставление некоторого пользовательского интерфейса. Часть систем ограничивается командной строкой, другие на 90% состоят из интерфейсной подсистемы, а некоторые (встраиваемые системы) часто не имеют никакого пользовательского интерфейса.
 

      Это основные функции ОС. Например, MS-DOS кроме этих 5 пунктов больше ничего не умеет.

      Более развитые ОС обладают также следующими возможностями:

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

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

1) Дисковые операционные  системы (ДОС)

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

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

Примером  таких операционных систем являются загрузочные мониторы для машин  класса Spectrum, MS DOS, IBM DOS/360.

Такие системы очень просты и потребляют очень мало ресурсов. 

2) Операционные системы  общего назначения

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

Пример  таких систем - Windows2000, системы семейства Unix, Mac OS. 

3) Системы виртуальных  машин

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

Такие системы отличаются высокими накладными расходами и невысокой надежностью.

Часто система виртуальных машин является подсистемой общего назначения: MS DOS и Windows-эмуляторы для UNIX и OS/2, подсистема WoW в Windows NT/2000/XP, сессия DOS в Windows 3.x/95/98/ME. 

4) Системы реального  времени

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

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

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

Системы Win32 позволяют использовать так называемое «мягкое реальное время» (soft real time), которое обеспечивает среднее время  реакции (но не гарантирует его). Но этого вполне достаточно мультимедийных приложений и игр.

Примеры таких систем: RT-11, OS-9, QNX. 

5) Средства кросс-разработки

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

Примерами таких систем являются системы программирования микроконтроллеров Intel, Atmel, PIC и др., системы Windows CE, Palm OS и т.д.

Такие системы, как правило, включают в  себя:

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

6) Системы промежуточных  типов

Это системы, которые нельзя отнести к одному из предыдущих пяти классов.

Например RT-11 по сути своей является DOS. Другой пример промежуточной системы является MS Windows 3.x и Windows 95, которые используют аппаратные средства процессора для защиты и виртуализации памяти и даже могут обеспечить некоторое подобие многозадачности, но не защищают себя и программы от ошибок других программ.

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

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

     В настоящее время можно выделить 3 основных используемых семейства  ОС:

  1. Системы для больших компьютеров фирмы IBM - OS/390, z/OS и IBM VM.
  2. Обширное, бурно развивающееся и имеющее трудно определимые границы семейство Unix. Это семейство можно разделить на 3 рода:

    - Unix System V Release 4.x: Solaris, SCO Unixware.

    - BSD (Berkeley Software Distribution) Unix: BSDI, FreeBSD.

    - Linux.

    3) Семейство прямых и косвенных потомков Control Program/Monitor (CP/M) фирмы Digital Research. В этом семействе можно выделить весьма широко известное подсемейство Win32-платформ. 

 

  1. Загрузка  программ

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

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

     В рамках одного процесса выполняется  один или более потоков или нитей управления.

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

  • Абсолютная  загрузка
  •    При таком способе программа всегда загружается с одного и того же адреса. Это возможно в следующих случаях:

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

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

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

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

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

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

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

    int Buf[10];

    int* pBuf = Buf;

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

         Ассемблер при каждой ссылке на такой символ генерирует не только «заготовку» адреса в коде (как правило, смещение адресуемого объекта от начала программы), но и запись в таблице перемещений (relocation table). Эта запись хранит место ссылки на такой символ в коде или данных. Если в ссылке используется только часть адреса, этот факт тоже запоминается.

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

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

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

    Информация о работе Лекции по "Операционные системы"