Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Шпоры

.doc
Скачиваний:
20
Добавлен:
26.05.2014
Размер:
354.3 Кб
Скачать
  1. Понятие СПО. Структура ВС. Ресурсы ОС.

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

Структура ВС:

- аппаратные средства;

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

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

- интерфейсные оболочки и среды;

- система программирования;

- прикладные программы.

Аппаратные средства.

Ресурсы – это то, что может располагаться внутри системы.

Ресурсы ВС разделяются на два типа:

- не участвующие в управлении программой (объем винч.)

- участвующие в управлении программой (размер ячейки памяти, объем оперативной памяти).

Ресурсы второго типа называются физическими ресурсами аппаратуры.

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

Управление логическими устройствами.

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

Система программирования — это комплекс программ для поддержки всего технологического цикла разработки программного обеспечения.

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

Ресурсы под управлением ОС:

  • время ЦП

  • память, управление памятью

  • внешние устройства

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

  1. Функции и устройство ЦП. Регистры ЦП.

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

ЦП состоит из двух компонентов:

- Устройство Управления (УУ) принимает очередное слово из ОЗУ и разбирается — команда это или данные. Если это команда — то УУ выполняет ее, иначе передает АУ.

- Арифметическое Устройство (АУ) занимается только вычислениями.

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

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

Существуют регистры системного назначения. Делятся на 2 подгруппы:

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

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

Условия мультипрограммирования

  • защита памяти

  • наличие привилегированного режима в системе

  • наличие прерываний по таймеру

  • аппаратно-программное условие – наличие подкачки

9. Операционная система. Структура, функции. Классификация ОС.

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

Логические ресурсы – процесс, вирт. адресное простр-во.

Физические ресурсы – ЦП, ОП, ВУ.

Функции

  1. Управление использованием времени ЦП. Планир-е ЦП.

  2. Управление подкачкой и буфером ввода процесса.

  3. Управление разделяемыми ресурсами.

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

Управление использованием времени ЦП

ОС можно разделить на 3 класса по выбору алгоритма активного процесса:

1. Пакетные ОС (IBM 360, OC EC)

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

  • обращение к внешнему устройств

  • завершение процесса

  • зацикливание процесса

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

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

  • обращение к внешнему устройств

  • завершение процесса

  • зацикливание процесса

  • квант, выделенный процессу истек

Т.е. это многопользовательские системы.

3. Системы реального времени (QNX)

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

Управление подкачкой и буфером ввода

В реальных ОС буфер подкачки и буфер ввода совмещены. Буферизацию можно отнести к одной из основных функций ОС. В системе существует структура данных фиксированного размера. Ее называют buffer pool. Ядро оптимизирует работу системы с помощью снижения кол-ва обращений к ВЗУ путем буферизации большинства операций ввода/вывода в буферном пуле.

Буферный пул – набор буферов, которые используются для кэширования блоков файла в ОЗУ. Это позволяет оптимизировать работу ОС.

Управление разделяемыми ресурсами

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

Классификация по типу ядра

1. Монолитное ядро (компилир. как одна программа).

2. Слоистое ядро (все компоненты ОС образуют уровни с продуманным интерфейсом; работают в привил. режиме).

3. Микроядро (ядро вып. мин. ф-ций по управл. аппаратурой; функции высокого уровня выполняют спец. компоненты ОС)

Дисциплины диспетчеризации.

1. Для пакетных систем.

  • FCFS (first come first server) – в порядке поступления

  • SJN (shortest job next) – следующим будет выполняться самое короткое.

  • SRT (shortest remaining time) – самое короткое время до завершения задания.

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

2. Для систем с разделением времени используется дисциплины с диспетчеризацией.

  • round robin (RR) – по окончании кванта времени задача снимается с ЦП и ставится в очередь на выполнение в конец готовых задач (используется в системах с вытесн. многозадач. Unix, NT, OS/2)

При невытесн. многозад. механизм распр-я времени ЦП распределен между центр. системой и диспетчером задач.

14. Планирование процессов в UNIX. Правила планир-я.

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

ПРИОРИТЕТ = P_USER + P_NICE + P_CPU

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

Правила планирования

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

2. Каждые 0,1 сек. планировщик выбирает процесс с самым высоким приоритетом в очереди приоритета и выделяет ему время ЦП.

3. При каждом аппаратном прерывании таймером (100 р. в 1 сек.) увеличивается счетчик импульсов времени процесса . Каждый 4-й импульс планировщик повторно вычисляет значение приоритета.

15. Swapping. Paging.

Пространство обмена, или swap space – это непрерывная область диска, кот. расположена отдельно и предназначена для эффективной подкачки страниц в ОЗУ и соотв. откачки обратно на диск. Пр-во обмена может находится как на корневом устройстве, так и на отдельном диске, чтобы доступ и подкачка были одновременными. Сведения о состояния swap space поддерживается спец. структурой ядра swap map. Эта карта нужна для отслеживания сост. блоков в самой области обмена. Карта обмена автоматически объединяет любые свободные смежные боки в отдельные большие участки памяти. Кроме того, каждый элемент таблицы страниц включает 3 важных поля:

  • бит модификации страницы

  • бит обращения

  • возраст страницы

Освобождение страниц в ОЗУ происходит с помощью демонов страниц (daemon).

16. Файловая система и ее функции. Св-ва файла. Файловый указатель. Индексный дескриптор.

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

Файловая система UNIX характеризуется:

  • иерархической структурой,

  • согласованной обработкой массивов данных,

  • возможностью создания и удаления файлов,

  • динамическим расширением файлов,

  • защитой информации в файлах,

  • трактовкой периферийных устройств как файлов.

Иерархическая файловая система

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

Файл в Unix – это последовательность битов.

Свойства файлов:

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

2. Файл независим от расположения.

3. Защита файлов.

Функции ФС:

- Открыть файл для работы в данном процессе.

- Чтение/запись.

- Управление файловым указателем.

- Закрытие файла.

Файловый указатель

Блок 0

->

Блок 1

...

Блок N-1

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

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

Индексный дескриптор (ИД)

ИД — это объект Unix, который ставится во взаимно-однозначное соответствие с содержимым файла. То есть для каждого ИД существует только одно содержимое. Содержимое ИД: 1) поле, определяющее тип файла (каталоги и все остальные файлы); 2) код привилегии/защиты;

3) количество ссылок к данному ИД из каталогов ФС;

4) (нулевое значение означает свободу ИД); 5) длина файла в байтах; 6) даты и времена (время последней записи, дата создания и т.д.); 7) поле адресации блоков файла,

3. Система прерываний.

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

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

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

2) В некоторый специальный управляющий регистр (регистр прерываний) помещается код возникшего прерывания.

3) Запускается программа обработки прерываний ОС.

4. Кэш. Регистры буферной памяти.

Работа производится таким образом: в какие-то моменты идут обращения за операндами в оперативную память, в какие-то моменты обработанные данные записываются в ОП. Помимо аппаратного КЭШа есть еще и программный кэш. Один из способов, который позволяет сгладить несоответствие скорости ЦП и ОП заключается в сокращении кол-ва обращений к ОП. Процессоры содержат быстродействующую регистровую память, которая позволяет буферизовать обращения к ОП. Асинхронная работа ПЗУ позволяет повысить быстродействие системы.

5. Организация ОЗУ. Стратегии управления.

Адресное пространство ЭВМ организовано таким образом, что подряд идущие адреса (ячейки памяти) находятся в соседних или смешанных участках.

1-й блок

2-й блок

k-й блок

0

1

...

k-1

k

k+1

...

2k-1

...

...

...

...

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

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

  • первая подходящая

  • наиболее подходящая

  • наименее подходящая

Стратегия замещения:

  1. FIFO (first in first out) – выталкивается страница, которая находиться в ОП дальше всех.

  2. LRU (last recently used) – выталкивается страница, которая дольше всех не использовалась.

  3. LFU (last frequently used) - выталкивается страница, которая используется реже всех

  4. Random – случайный способ.

Для реализации 2 и 3 способов нужны доп. аппарат. средства.

В абсолютном бол-ве ОС испол-ся LRU (самый эффективный).

Связное и несвязное распределение памяти. Связное – каждая программа должна занимать один сплошной блок памяти.

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

6. Мультипрограммирование. Разделы.

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

Разделы фиксированного размера

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

Использование этой схемы наиболее эффективно для больших заданий.

Преимущества: самый простой способ.

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

Разделы переменного размера

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

Достоинство: нет перерасхода памяти.

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

10. Внешние устройства.

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

ВЗУ — это устройства, способные хранить информацию некоторое время, связанное с физическими свойствами конкретного устройства, и обеспечивать чтение и/или запись этой информации в оперативную память. К ним можно отнести магнитные диски (винчестер, флоппи). Имеется несколько дисков, размещенных на одной оси, которые вращаются с некоторой постоянной скоростью. Каждый такой диск может иметь две поверхности, способные фиксировать информацию. Концентрическим окружностям одного радиуса на каждом диске соответствует условный цилиндр. Диск также разбит на сектора. Координаты информации на диске (№Диска, №Поверхности, №Цилиндра, №Сектора). Обмен информацией осуществляется следующим образом: на блок управления диском подается набор координат с требуемым объемом информации. Блок головок вводится внутрь диска между поверхностями до заданного номера цилиндра. Затем, включается головка, читающая заданную поверхность заданного диска. После этого ожидается подход заданного сектора и начинается обмен.

Устройство управления ВУ (УУВУ). Канал Ввода/Вывода.

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

Функция канала — выполнение макрокоманд, обеспечив. ввод-вывод. ЦП подает не последовательность команд, а команду более общую (произвести обмен данными указанного объема с заданным устройством). Маленькие команды (перемещение головок, ожидание сектора) выполняет уже канал. Таким образом каналы разгружают ЦП.

11. Понятие вычислительного процесса и задачи. Управление процессами. Смена состояний. Дескриптор.

Процесс - это программа, имеющая права собственности на ресурсы системы.

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

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

Виды состояний:

Смены состояний:

  • выполняется

  • запуск

  • блокирован

  • истечение кванта времени ЦП

  • готов

  • блокировка

  • пробуждение процесса

Действия с процессами

  • создание процесса

  • уничтожение

  • возобновление

  • изменение приоритета

  • блокирование

  • пробуждение

  • запуск (выбор) процесса

Дескриптор

Дескриптор содержит:

  1. PID процесса

  2. приоритет текущего состояния процесса

  3. переменная текущего состояния

  4. область сохранения регистров ЦП

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

Процессы и треды.

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

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

16. Файловая система OC Unix. Концептуальная схема.

Файловая система Unix, это иерархическая, многопользовательская файловая система. Ее можно представить в виде дерева. В корне дерева находится “корневой каталог”, узлами, отличными от листьев дерева являются каталоги. Листьями могут являться: файлы, пустые каталоги.

Файловая система Unix:

- иерархическая;

- многопользовательская;

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

- является информац. основой функционирования самой ОС;

- расширяемая;

Концептуальная схема:

0 блок

1 блок

област. ИД

блоки файлов

загр. блок

суперблок

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

2. Суперблок – содержит всю информацию о диске: а) число свободных блоков; б) размер ФС; в) кол-во индекс. дескр. в ФС.

3. Область индекс. дескрипторов.

4. Область, которая содержит блоки файлов.

17. Функции fork, exec, exit, kill, signal, wait.

Функция fork выполняет создание нового процесса, который является копией текущего процесса.

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

Функция exit или kill – завершение процесса. kill (pid, SIGKILL).

Функция wait – останавливает выполнение текущего процесса до завершения какого-либо из его процессов-потомков.

Функция signal – обработка сигнала. Возможности системного вызова singal позволяют обрабатывать сигналы след. способами:

1) реакция по умолчанию; 2) замаскировать сигнал (игнориров.);

3) перехватить посланный процессу сигнал и написать свою ф-ю для обработки прерывания.

Пример:

#include <stdio.h> #include <unistd.h> #include <sys/types.h>

#include <signal.h>

void catch_int(int sig_num) // обработчик

{signal(SIGINT, catch_int); printf("Don't do that"); fflush(stdout);}

….

/* set the INT (Ctrl-C) signal handler to 'catch_int' */

signal(SIGINT, catch_int);

18. Взаимодействие процессов IPC.

Программные каналы (pipe)

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

Пример:

main(){

int fd[2];

pipe(fd); // в отцовском процессе образуем 2 дескриптора канала

if (fork()) // образуем процесс-сын, у которого будут те же дескр.

{ /* эта часть программы происходит в процессе-отце */

dup2(fd[1],1); /* заменяем станд. вывод выводом в канал */

close(fd[1]); /* закрываем дескрипторы канала */

close(fd[0]); /* теперь весь вывод будет происходить в канал */

execl(“/bin/ls”,“ls”,(char*)0); /* заменяем тело отца на ls */

} /* отсюда начинает работать процесс-сын */

dup2(fd[0],0); /* в процессе сыне все делаем аналогично */

close(fd[0]); close(fd[1]);

execl(“/bin/wc”,“wc”,(char*)0);

}

Этот пример связывает конвейером две команды — ls и wc. Команда ls выводит содержимое каталога, а команда wc подсчитывает количество строк. Результатом выполнения нашей программы будет подсчет строк, выведен. командой ls.

Разделяемая память

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

Недостаток – отсутствие средства синхронизации. Для решения этой проблемы необходимо использовать технику семафоров.

int shmget (key_t key, int size, int shmemflg) - создание общей памяти

char *shmat(int shmid, char *shmaddr, int shmflg) - доступ к разделяемой памяти

int shmdt(char *shmaddr) - открепление разделяемой памяти

Семафоры (Дейкстра)

Семафоры – это некие средства для задержки процессов.

Семафор - это некоторый объект, который имеет целочисл. значение s, и две операции — P(s) и V(s). P — уменьшает значение семафора на 1 и, если s>=0 после уменьшения процесс продолжает работать, если s<0, то процесс будет приостановлен и встанет в очередь ожидания, связанную с семафором s. Операция V увеличивает семафор на 1. Если s>0 после увел-я, то процесс продолжает свое выполнение, если s<=0, то разблокируется один из процессов в очереди ожидания. Считается, что операции P и V неделимы, то есть их выполнение не может прерываться.

int semget(key_t key, int n, int flags) – создание семафора

Очереди сообщения

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

Длина данных выбирается польз-м и м.б. произвольной. Ядро не интерпретир сообщение, а только обесп. размещение и выборку.

7. Виртуальная память.

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

8. Способы организации виртуальной памяти.

  • страничный (Linux, Win NT)

  • сегментный (OS/2)

  • сегментно-страничный

Страничная организация

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

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

Достоинство: низкая фрагментация.

Недостатки: необходимо таблицы страниц размещать в памяти, необходимо обрабатывать таблицы (т.к. с ними непосредственно работает диспетчер памяти). Кроме того, программы разбиваются на страницы случайно без учета логических связей программы, => межстраничные переходы осуществляются чаще, чем межсегментные.

Сегментный способ организации

Сегмент – группа информации, рассматриваемая как единое целое. Программа делиться на сегменты неравной длины. Логическое обращение к модулям программы будет представлять собой имя сегмента и смещение внутри сегмента. Физически имя сегмента соответствует некоторому адресу в памяти, и смещение должно прибавляться к этому адресу. Преобразование имени сегмента в его порядковый номер осуществляет система программирования. ОС будет размещать сегменты в памяти и для каждого сегмента получит информацию о его начале. Виртуальный адрес: V=(b, d), где b – номер блока, в котором размещен сегмент; d – смещение относительно адреса начала блока. Сегмент в отличии от страницы может иметь различный размер, что позволяет хранить в нем логически законченные блоки (процедуры, массив и т. д.). Это дает увеличивается быстродействие за счет локальности ссылок и облегчается организация динамической загрузки.

Недостатки:

1) Этот способ сложнее страничного т. к. необходимо обрабатывать и хранить много дополнительной информации.

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

3) Максимальный размер сегмента ограничен размером ОЗУ.

Сегментно-страничная организация

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

Vадр. = (S, p, d), где S – номер сегмента, p – номер страницы,

d – смещение внутри страницы.

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

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

12. История создания Unix. Особенности функцион-я Unix. Системные вызовы.

В середине 60х годов в Bell лаборатории фирмы AT&T проводились исследования и разработка одной из первых ОС в современном ее понимании — ОС Multics. Это ОС разделения времени, многопользовательская, а также в этой системе была предложена иерархическая древообразная файловая система. От этой разработки через некоторое время получила начало ОС Unix. Ее разработчики - Томпсон и Ритчи. Особенностью этой системой являлось то, что она являлась первой системной программой написанной на языке, отличном от языка ассемблера. Для написания программы использовался сначала язык BCPL, из него был образован язык B, который оперировал с машинными словами, далее язык BN и, наконец, язык “C”. И после 1973 года ОС Unix была переписана окончательно на язык “С”. В результате появилась ОС, 90% кода которой было написано на языке высокого уровня, а 10% - ассемблер.

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

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

Особенности функционирования:

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

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

ОС Unix предусматривает 2 режима:

  • пользовательский

  • режим ядра

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

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

  • ввод/вывод

  • управление процессами

  • взаимодействие процессов

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

13. Процессы в Unix. Нулевый и первый процесс. Демоны.

С точки зрения Unix, процесс является объектом, создаваемым в результате выполнения системной операции fork. У каждого процесса есть некоторый код, данные, стек и PID. Каждый процесс, за исключением нулевого, порождается в результате запуска другим процессом командой fork. Процесс, запустивший операцию fork, называется родительским, а вновь созданный процесс - порожденным. Каждый процесс имеет одного родителя, но может породить много процессов. Ядро системы идентифицирует каждый процесс по его номеру, который называется идентификатором процесса (PID). Нулевой процесс является особенным процессом, который создается "вручную" в результате загрузки системы; после порождения нового процесса (процесс 1) нулевой процесс становится процессом подкачки. Процесс 1, известный под именем init, является предком любого другого процесса в системе и связан с каждым процессом. Любой процесс состоит из тела и контекста процесса. Телом процесса называется набор команд и данных, которыми оперирует процесс. Контекст процесса состоит из области пользователя и таблицы страниц. Область пользователя создается внутри области данных ядра и доступна только ядру. Пользовательские процессы не могут получать доступ к своим пользовательским областям.

Контекст содержит:

  • номера пользователя и группы

  • указатель на ИД текущего каталога

  • специфические условия работы процесса:

  • обработка сигналов

  • информация об открытых в процессе файлах

  • инф-я о тек. сост. процесса на случай его приостановки

Состояния процесса

- Процесс выполняется в режиме задачи.

- Процесс выполняется в режиме ядра.

- Процесс не выполняется, но готов к выполн-ю и ждет очереди.

- Процесс приостановлен ("спит").

Демоны – постоянно находятся в режиме ядра. Они отличаются от обычных процессов тем, что демоны выполняют некоторые спец. функции, например, администрирование и управление в сетях. Процессом-демоном является обработчик входящих вызовов на Unix-сервере.

19. Система программирования. Трансляторы. Компил-ры.

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

проектирование, кодирование, тестирование и отладка.

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

Трансляторы и компиляторы

Они имеют модульную структуру и разделяются на 2 этапа: анализ и синтез. Этап анализа. Анализ бывает лексический, синтаксический и семантический. Лексический анализатор производит анализ исходного текста на предмет правильности записи лексических единиц входного языка. Затем он переводит программу из нотации исходного текста в нотацию лексем. Лексические единицы — это минимальные конструкции, которые могут быть продекларированы языком. К лексическим единицам относятся: идентификаторы, ключевые слова, код операции, разделители,

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

На стадии синтаксического анализа определяется общая структура программы. Здесь имеет значение порядок следования символов и слов в программе. Результат работы – представление программы в древовидной форме (синт. дерево). Синтаксический анализатор считывает символы слева направо и умеет определять начало программы.

На стадии семантического анализа исходная программа проверяется на предмет соответствия семантических правил языка, а также идет проверка типов.

Этап синтеза: 1) генерация машинонезавис. кода; 2) оптимизация машинонезавис кода; 3) распределение памяти (ключевой); 4) генерация машинного кода; 5) оптим. маш. кода.

Некоторые из этих стадий могут отсутствовать.

20. Понятие прохода. Одно-, многопроходные компиляторы.

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

1.

Понятие СПО. Структура ВС. Ресурсы ОС.

2.

Функции и устройство ЦП. Регистры ЦП.

3.

Система прерываний.

4.

Кэш. Регистры буферной памяти.

5.

Организация ОЗУ. Стратегии управления.

6.

Мультипрограммирование, его условия. Разделы.

7.

Виртуальная память.

8.

Способы организации виртуальной памяти.

9.

Операционная система. Структура, функции. Классификация ОС.

10.

Внешние устройства.

11.

Понятие вычислительного процесса и задачи. Управление процессами. Смена состояний. Дескриптор.

12.

История создания Unix. Особенности функцион-я Unix. Системные вызовы.

13.

Процессы в Unix. Нулевый и первый процесс. Демоны.

14.

Планирование процессов в UNIX. Правила план-я.

15.

Swapping. Paging.

16.

Файловая система OC Unix. Концептуальная схема.

17.

Функции fork, exec, exit, kill, signal, wait.

18.

Взаимодействие процессов IPC.

19.

Система програм-ния. Трансляторы. Компиляторы.

20.

Понятие прохода. Одно-, многопроходные компиляторы.

Соседние файлы в предмете Системное программное обеспечение