Компоненты операционной системы

advertisement
1. Понятие операционной системы. Основные функции операционной
системы.
Операцио́нная систе́ма, сокр. ОС (англ. operating system, OS) — комплекс
взаимосвязанных программ, предназначенных для управления ресурсами
компьютера и организации взаимодействия с пользователем.
В логической структуре типичной вычислительной системы операционная
система занимает положение между устройствами с их
микроархитектурой,машинным языком и, возможно, собственными
(встроенными) микропрограммами — с одной стороны — и прикладными
программами с другой.
Разработчикам программного обеспечения операционная система позволяет
абстрагироваться от деталей реализации и функционирования устройств,
предоставляя минимально необходимый набор функций (см.: интерфейс
программирования приложений).
В большинстве вычислительных систем операционная система является
основной, наиболее важной (а иногда и единственной) частью системного
программного обеспечения. С 1990-х годов наиболее распространёнными
операционными системами являются системы семейства Windows и системы
класса UNIX (особенно Linux и Mac OS).
Основные функции:







Исполнение запросов программ (ввод и вывод данных, запуск и остановка
других программ, выделение и освобождение дополнительной памяти и
др.).
Загрузка программ в оперативную память и их выполнение.
Стандартизованный доступ к периферийным устройствам (устройства
ввода-вывода).
Управление оперативной памятью (распределение между процессами,
организация виртуальной памяти).
Управление доступом к данным на энергонезависимых носителях (таких
как жёсткий диск, оптические диски и др.), организованным в той или
инойфайловой системе.
Обеспечение пользовательского интерфейса.
Сохранение информации об ошибках системы.
Дополнительные функции:

Параллельное или псевдопараллельное выполнение задач
(многозадачность).






Эффективное распределение ресурсов вычислительной системы
между процессами.
Разграничение доступа различных процессов к ресурсам.
Организация надёжных вычислений (невозможности одного
вычислительного процесса намеренно или по ошибке повлиять на
вычисления в другом процессе), основана на разграничении доступа к
ресурсам.
Взаимодействие между процессами: обмен данными, взаимная
синхронизация.
Защита самой системы, а также пользовательских данных и программ от
действий пользователей (злонамеренных или по незнанию) или
приложений.
Многопользовательский режим работы и разграничение прав доступа
(см.: аутентификация, авторизация).
Компоненты операционной системы





Загрузчик
Ядро
Командный процессор
Драйверы устройств
Встроенное программное обеспечение
2. Режимы взаимодействия пользователя с операционной системой.
Понятие пакетного режима работы
Режим взаимодействия пользователя с ЭВМ, при котором каждый запрос
пользователя с терминала вызывает немедленные ответные действия ЭВМ;
обмен сообщениями между пользователем и системой в реальном масштабе
времени.
Существует три режима взаимодействия пользователя с ЭС, когда
пользователь выступает в качестве: 1) потребителя, если ему необходимо
получить решение поставленных задач; 2) учителя, если он обучает ЭС, 3)
ученика, если он знакомится с предметом на основе общения с базой знаний.
Материализованное воплощение технологического обеспечения
осуществляется через режимы взаимодействия пользователя с ЭВМ и
различные технологии обработки данных, в том числе в распределенных
системах.
Имеются также данные [61], что режим взаимодействия пользователя с
машиной на вербальном уровне наиболее благоприятен для рутинной
работы, для проверки обдуманных и легко понимаемых идей и тактического
решения задач. Однако более сложные стратегические решения могут
потребовать другой организации взаимодействия. Таким образом, вопрос о
том, необходим ли речевой уровень общения с ЭВМ, не может быть решен
без проведения соответствующих экспериментальных исследований.
Различают два режима пакетной обработки. В первом число задач,
выполняемых одновременно, фиксируется, а во втором не фиксируется,
но в процессе обработки пакета ЭВМ оно может изменяться пакета ЭВМ
оно может изменяться динамически. Пакет, предварительно записанный
на том или ином носителе информации, вводится в ОЗУ ЭВМ. Когда
пакет загружен, ЭВМ выбирает на обработку несколько задач и начинает
выполнять их мультипрограммном режиме. Когда решение одной группы
задач пакета закончено, из него выбирается для обработки следующая
группа, это продолжается до тех пор, пока не будет обработана последняя
группа задач пакета. После этого в ЭВМ вводится новый пакет задач.
Пакетная обработка данных позволяет увеличить производительность
ЭВМ и уменьшить стоимость машинной обработки информации.
3. Основные принципы построения операционных систем.








Принцип модульности - обособление составных частей ОС в отдельные
модули (функционально законченные элементы системы), выполненное в
соответствии с принятыми межмодульными интерфейсами;
Принцип генерируемости ОС - определяет такой способ исходного
представления ядра ОС и основных компонентов ОС, который позволяет
производить их настройку, исходя из конкретной конфигурации конкретного
вычислительного комплекса и круга решаемых задач;
Принцип функциональной избыточности - учитывает возможность
проведения одной и той же работы различными средствами;
Принцип виртуализации - представляет структуру системы в виде
определенного набора планировщиков процессов и распределителей
ресурсов и позволяет использовать единую централизованную схему
распределения ресурсов, организуя тем самым работу виртуальной машины;
Принцип независимости программ от внешних устройств - связь
программ с конкретными устройствами производится не на уровне
трансляции программы, а в период планирования ее исполнения;
Принцип совместимости - способность ОС выполнять программы,
написанные для других ОС или для более ранних версий данной
операционной системы, а также для другой аппаратной платформы;
Принцип открытой и наращиваемой ОС - позволяет не только
использовать возможности генерации, но и вводить в ее состав новые
модули;
Принцип обеспечения безопасности при выполнении вычислений является желательным свойством для любой многопользовательской
системы;
5. Организация ввода-вывода с
процессоров – «каналы ввода вывода».
применением
периферийных
Каналы ввода-вывода (англ. IOC - input-output channel), далее КВВ,
и интерфейсы обеспечивают взаимодействие центральных
устройств машины и периферийных устройств.
КВВ — самостоятельные в логическом отношении устройства,
которые работают под управлением собственных программ,
находящихся в памяти.
В современных машинах КВВ называют
периферийными процессорами или процессорами ввода-вывода.
КВВ и интерфейсы выполняют следующие функции
1. Позволяют иметь машины с переменным составом
периферийных устройств.
2. Обеспечивают параллельную работу периферийных устройств
как между собой, так и по отношению к процессору.
3. Обеспечивают автоматическое распознавание и реакцию
процессора на различные ситуации, возникающие в
периферийных устройствах.
6. Буферизация ввода – вывода. Преимущества и недостатки.
Ввод/вывод для дисков в операционной системе MS-DOS буферизован. Это
означает, что данные не сразу записываются на диск, а накапливаются в
специальном массиве (буфере). По мере заполнения буфер сбрасывается на
диск. При чтении информация заполняет весь входной буфер, независимо от
количества байтов, которые программа читает из файла. В дальнейшем, если
программе потребуются данные, которые уже были считаны с диска и
записаны во входной буфер, она получит данные непосредственно из этого
буфера. Обращения к диску при этом не будет.
Буферизация сокращает затраты времени на ввод/вывод, особенно в тех
случаях, когда программе периодически требуется одни и те же участки
файлов. При копировании файлов буферизация сокращает время на
перемещение головок от исходного файла к результирующему и обратно,
причем эффект получается тем больше, чем больше размер используемого
буфера.
Операционная система MS-DOS имеет несколько буферов. Их количество
зависит от оператора BUFFERS, находящегося в файле CONFIG.SYS. Этот
оператор позволяет определить от 2 до 99 буферов. Если
файл CONFIG.SYS не содержит оператора BUFFERS, по умолчанию
используются два буфера.
При увеличении количества буферов увеличивается вероятность того, что
нужная часть файла уже считана и находится в оперативной памяти. Однако
необходимо учитывать, что для хранения буферов расходуется основная
оперативная память. Кроме того, с ростом количества буферов увеличивается
время, необходимое операционной системе на анализ состояния буферов, что
может привести к снижению производительности. Значительное снижение
скорости работы наступает при количестве буферов порядка 50.
Обычно для машин класса AT с диском размером 20-40 мегабайтов
рекомендуется использовать 32 буфера, однако для каждого конкретного
случая может потребоваться подбор этого параметра для оптимизации
производительности системы.
Если ваша программа интенсивно использует обращение к каталогам
файловой системы, вы можете использовать утилиту MS-DOS FASTOPEN,
которая запоминает в оперативной памяти расположение на диске файлов и
каталогов, уменьшая интенсивность обращения к диску. Например, при
использовании следующей команды в оперативной памяти будет храниться
информация о расположении максимально о 100 файлах и каталогах:
Буферизация (от англ. buffer) — метод организации ввода и вывода
данных в компьютерах и других вычислительных устройствах, который
подразумевает использование буфера для временного хранения
данных. При вводе данных одни устройства или процессы производят
запись данных в буфер, а другие — чтение из него, при выводе —
наоборот. Процесс, выполнивший запись в буфер, может немедленно
продолжать работу, не ожидая, пока данные будут обработаны другим
процессом, которому они предназначены. В свою очередь, процесс,
обработавший некоторую порцию данных, может немедленно
прочитать из буфера следующую порцию. Таким образом,
буферизация позволяет процессам, производящим ввод, вывод и
обработку данных, выполняться параллельно, не ожидая, пока другой
процесс выполнит свою часть работы. Поэтому буферизация данных
широко применяется в многозадачных ОС.
7. Основные режимы адресации оперативной памяти. Преимущество
адресации по схеме «базовый регистр + смещение» для построения
мульти задачных операционных систем.
Режим адресации памяти - это процедура или схема преобразования
адресной информации об операнде в его исполнительный адрес.
Все
способы
адресации
памяти
можно
разделить
на:
1) прямой, когда исполнительный адрес берется непосредственно из
команды или вычисляется с использованием значения, указанного в
команде, и содержимого какого-либо регистра (прямая адресация,
регистровая,
базовая,
индексная
и
т.д.);
2) косвенный, который предполагает, что в команде содержится значение
косвенного адреса, т.е. адреса ячейки памяти, в которой находится
окончательный исполнительный адрес (косвенная адресация).
В каждой микроЭВМ реализованы только некоторые режимы
адресации, использование которых, как правило, определяется
архитектурой МП.
8. Основная идея реализации мульти задачных операционных
систем Понятие программного процесса.
Многозада́чность (англ. multitasking) — свойство операционной
системы или среды выполнения обеспечивать возможность
параллельной (илипсевдопараллельной) обработки
нескольких процессов. Истинная многозадачность операционной
системы возможна только в распределённых вычислительных
системах.
Существует 2 типа многозадачности:


Процессная многозадачность (основанная на процессах —
одновременно выполняющихся программах). Здесь программа —
наименьший элемент кода, которым может управлять планировщик
операционной системы. Более известна большинству
пользователей (работа в текстовом редакторе и прослушивание
музыки).
Поточная многозадачность (основанная на потоках). Наименьший
элемент управляемого кода — поток (одна программа может
выполнять 2 и более задачи одновременно).
Многопоточность — специализированная форма многозадачности.
Программные процессы, связанные с обшим управлением файлами
В простых программных процессах для продолжения программы после
прерывания достаточно адреса следующей выполняемой команды. При
возрастающей сложности ЭВМ эту информацию необходимо значительно
расширить. Чтобы можно было прервать программу в каком-нибудь месте, а
затем снова ее продолжить, наряду с адресом команды требуется передать
информационные данные маски относительно прерываний, информацию о
защите ЗУ, разряды состояния системы, сообщения о длине команд и условия
разветвлений. Эта важная для выполнения программы информация
управления о имеющемся состоянии программы хранится в регистре
состояния, или, как его еще обозначают, в регистре состояния программы.
9. Понятие «ресурс ЭВМ». Основные ресурсы ЭВМ.
Операционные ресурсы ЭВМ напрямую связаны с аппаратными
средствами, которые характеризуют степень приспособленности ЭВМ
для решения тех или иных задач. 2. Емкость памяти (внешняя и
основная) Основная память, какой бы большой она не была, всегда
ограничена. Внешняя память не ограничена. Для характеристики
компьютера используют емкость основной памяти. Использование
памяти идет многобайтно, следовательно, доступ измеряется в байтах
(максимальная память 4Гб). Внешняя память – суммарная емкость
всех накопительных устройств. Следовательно, необходимо
использовать косвенную характеристику – количество накопителей
подключаемых к ЭВМ. В современных компьютерах есть также и
сверхоперативная память (cashe), ее объем – один из важнейших
параметров влияющих на время решения задачи. 3. Быстродействие
ЭВМ характеризует скорость обработки информации компьютером
(число операций в секунду (V), время выполнения (τ=1/v)). Но для
различных операций эти показатели различны, следовательно,
реальная характеристика – номинальное быстродействие (Vн)–
количество коротких операций в единицу времени (обычно берут
операцию “+”, а операнды хранятся во внутренних регистрах
процессора (R-R)). Иногда также используют в качестве
характеристики быстродействия – цикл обращения к основной памяти,
а также эффективное быстродействие (Vф) Vф=1/ Σpiτi pi –
вероятность выполнения i-ой операции. По содержанию
производительность ЭВМ – это среднее число операций в единицу
времени. Производительность ЭВМ зависит от: 1. Быстродействия
процессора 2. Класса решаемых задач 3. Порядка прохождения
задачи через ЭВМ
10. Основные функции операционных систем.
Операционная система (ОС) представляет собой комплекс системных
управляющих и обрабатывающих программ, которые, с одной стороны,
выступают как интерфейс между аппаратурой компьютера и пользователем с
его задачами, а с другой стороны, предназначены для наиболее эффективного
расходования ресурсов вычислительной системы и организации надежных
вычислений. Можно попробовать перечислить основные функции
операционных систем.
 Прием от пользователя (или от оператора системы) заданий, или команд,
сформулированных на соответствующем языке, и их обработка. Задания
могут передаваться в виде текстовых директив (команд) оператора или в
форме указаний, выполняемых с помощью манипулятора (например, с
помощью мыши). Эти команды связаны, прежде всего, с запуском
(приостановкой, остановкой) программ, с операциями над файлами
(получить перечень файлов в текущем каталоге, создать, переименовать,
скопировать, переместить тот или иной файл и др.), хотя имеются и иные
команды.
 Загрузка в оперативную память подлежащих исполнению программ.
 Распределение памяти, а в большинстве современных систем и
организация виртуальной памяти.
 Запуск программы (передача ей управления, в результате чего процессор
исполняет программу).
 Идентификация всех программ и данных.
 Прием и исполнение различных запросов от выполняющихся приложений.
Операционная система умеет выполнять очень большое количество
системных функций (сервисов), которые могут быть запрошены из
выполняющейся программы. Обращение к этим сервисам осуществляется
по соответствующим правилам, которые и определяют интерфейс
прикладного программирования (Application Program Interface, API) этой
операционной системы.
 Обслуживание всех операций ввода-вывода.
 Обеспечение работы систем управлений файлами (СУФ) и/или систем
управления базами данных (СУБД), что позволяет резко увеличить
эффективность всего программного обеспечения.
 Обеспечение режима мультипрограммирования, то есть организация
параллельного выполнения двух или более программ на одном
процессоре, создающая видимость их одновременного исполнения.
 Планирование и диспетчеризация задач в соответствии с заданными
стратегией и дисциплинами обслуживания.
 Организация механизмов обмена сообщениями и данными между
выполняющимися программами.
 Для сетевых операционных систем характерной является функция
обеспечения взаимодействия связанных между собой компьютеров.





Защита одной программы от влияния другой, обеспечение сохранности
данных, защита самой операционной системы от исполняющихся на
компьютере приложений.
Аутентификация и авторизация пользователей (для большинства
диалоговых операционных систем). Под аутентификацией понимается
процедура проверки имени пользователя и его пароля на соответствие тем
значениям, которые хранятся в его учетной записи’. Очевидно, что если
входное имя (login^) пользователя и его пароль совпадают, то, скорее
всего, это и будет тот самый пользователь. Термин авторизация означает,
что в соответствии с учетной записью пользователя, который прошел
аутентификацию, ему (и всем запросам, которые будут идти к
операционной системе от его имени) назначаются определенные права
(привилегии), определяющие, что он может, а что не может делать на
компьютере.
Удовлетворение жестким ограничениям на время ответа в режиме
реального времени (характерно для операционных систем реального
времени).
Обеспечение работы систем программирования, с помощью которых
пользователи готовят свои программы.
Предоставление услуг на случай частичного сбоя системы. Операционная
система изолирует аппаратное обеспечение компьютера от прикладных
программ пользователей. И пользователь, и его программы
взаимодействуют с компьютером через интерфейсы операционной
системы.
11. Понятие «прерывание программного процесса». Основные
причины возникновения прерывания.
Прерывание (англ. interrupt) — сигнал, сообщающий процессору о
наступлении какого-либо события. При этом выполнение текущей
последовательности команд приостанавливается, и управление
передаётся обработчику прерывания, который реагирует на событие и
обслуживает его, после чего возвращает управление в прерванный код.
В зависимости от источника возникновения сигнала прерывания делятся на:



асинхронные, или внешние (аппаратные) — события, которые исходят от
внешних источников (например, периферийных устройств) и могут
произойти в любой произвольный момент: сигнал от таймера, сетевой
карты или дискового накопителя, нажатие клавиш клавиатуры, движение
мыши. Факт возникновения в системе такого прерывания трактуется
как запрос на прерывание (англ. Interrupt request, IRQ);
синхронные, или внутренние — события в самом процессоре как
результат нарушения каких-то условий при исполнении машинного кода:
деление на ноль или переполнение стека, обращение к недопустимым
адресам памяти или недопустимый код операции;
программные (частный случай внутреннего прерывания) —
инициируются исполнением специальной инструкции в коде программы.
Программные прерывания как правило используются для обращения к
функциям встроенного программного обеспечения
(firmware), драйверов и операционной системы.
12. Понятие «прерывание программного процесса». Схема обработки
прерывания – «смена контекста».
Программное прерывание — синхронное прерывание, которое может
осуществить программа с помощью специальной инструкции.
В процессорах архитектуры x86 для явного вызова синхронного прерывания
имеется инструкция Int , аргументом которой является номер прерывания (от
0 до 255). В IBM PC-совместимых компьютерах обработку некоторых
прерываний осуществляют подпрограммы BIOS, хранящиеся вПЗУ, и это
служит интерфейсом для доступа к сервису, предоставляемому BIOS. Также,
обслуживание прерываний могут взять на себя BIOS карт расширений
(например, сетевых или видеокарт), операционная система и даже обычные
(прикладные) программы, которые постоянно находятся в памяти во время
работы других программ (т. н. резидентные программы). В отличие
от реального режима, в защищённом режиме x86-процессоров обычные
программы не могут обслуживать прерывания, эта функция доступна только
системному коду (операционной системе).
MS-DOS использует для взаимодействия со своими модулями и
прикладными программами прерывания с номерами от 20h до 3Fh (числа
даны вшестнадцатеричной системе счисления, как это принято при
программировании на языке ассемблера x86). Например, доступ к основному
множеству функций MS-DOS осуществляется исполнением инструкции Int
21h (при этом номер функции и её аргументы передаются в регистрах). Это
распределение номеров прерываний не закреплено аппаратно и другие
программы могут устанавливать свои обработчики прерываний вместо или
поверх уже имеющихся обработчиков, установленных MS-DOS или другими
программами, что, как правило, используется для изменения
функциональности или расширения списка системных функций. Также, этой
возможностью пользуются вирусы.
14. Понятие программного процесса. Основные состояния программного
процесса
В простых программных процессах для продолжения программы после
прерывания достаточно адреса следующей выполняемой команды. При
возрастающей сложности ЭВМ эту информацию необходимо значительно
расширить. Чтобы можно было прервать программу в каком-нибудь месте, а
затем снова ее продолжить, наряду с адресом команды требуется передать
информационные данные маски относительно прерываний, информацию о
защите ЗУ, разряды состояния системы, сообщения о длине команд и условия
разветвлений. Эта важная для выполнения программы информация
управления о имеющемся состоянии программы хранится в регистре
состояния, или, как его еще обозначают, в регистре состояния программы.
Создание и основные состояния процесса.
Процесс порождается с помощью системного
вызова forkили CreateProcess, при котором происходит проверка на
наличие свободной памяти, доступной для размещения нового процесса:
если требуемая память доступна, то создается дочерний процесс (потомок),
представляющий собой точную копию вызывающего процесса; при этом в
таблице процессов для нового процесса строится соответствующая
структура; новая структура создается также в таблице пользователя, и все
ее переменные инициализируются нулями; создаваемому процессу
присваивается новый уникальный идентификатор, а идентификатор
родительского процесса запоминается в блоке управления процессом.
В UNIX-системах каждому процессу присваивается идентификатор
процесса PID - Process Identifier.
Основные события, приводящие к созданию
процесса (вызов fork или CreateProcess):
· загрузка системы;
· работающий процесс подает системный вызов на создание процесса;
· запрос пользователя на создание процесса.
Во всех случаях, активный текущий процесс посылает системный вызов
на создание нового процесса.
· Выполнение – состояние, когда процесс занимает процессор, т. е.
состояние активности процесса.
· Готовность – состояние, когда процесс временно приостановлен,
чтобы позволить выполняться другому процессу; приостановленный
процесс состоит из собственного адресного пространства,
называемого образом памяти(core image), и компонентов таблицы
процессов – в числе компонентов и его регистры.
· Ожидание – состояние, когда процесс заблокирован и не может быть
запущен прежде, чем произойдет какое-то внешнее событие (например,
операция ввода/вывода).
· Первые два состояния идентичны, поскольку процесс может быть
запущен, но во втором состоянии процессор недоступен. В третьем
состоянии запустить процесс невозможно.
15. Понятие мульти задачной операционной системы. Вытесняющая
и не вытесняющая мультизадачность.
Подмультипрограммированиемпонимается способ организации вычислений,
когдана однопроцессорной вычислительной системе создается видимость
одновременноговыполнения нескольких программ.
Основным различием между вытесняющим и не вытесняющим
вариантами является степень централизации механизма планирования
процесса. В первом случае он целиком сосредоточен в ОС, во втором
распределен между системой и прикладными программами.
При не вытесняющей многозадачности активный процесс выполняется до
тех пор пока он сам по собственной инициативе не отдаст управление ОС
для того чтобы та выбрала из очереди другой, готовый к выполнению
процесс.
При вытесняющей многозадачности решение о переключении процессора
с одного процесса на другой принимается ОС, а не самим активным
процессом.
16. Понятие мульти задачной операционной системы. Вытесняющая
мультизадачность. Схема вытесняющей мультизадачности
квантованием по времени..
Подмультипрограммированиемпонимается способ организации вычислений,
когдана однопроцессорной вычислительной системе создается видимость
одновременноговыполнения нескольких программ.
При вытесняющей многозадачности решение о переключении процессора с
одного процесса на другой принимается ОС, а не самим активным
процессом.
17. Выделение процессу ресурса. Понятие монопольного выделения и
совместного использования ресурса
выделяемые (монопольно используемые, неперераспределяемые) ресурсы
характеризуются тем, что выделяются процессам в момент их возникновения
и освобождаются только в момент завершения процессов; в качестве такого
ресурса может рассматриваться, например, устройство чтения на магнитных
лентах;
многократно используемые (реентерабельные) ресурсы выделяются
возможностью одновременного использования несколькими процессами (что
может быть обеспечено, например, при неизменяемости ресурса при его
использовании; в качестве примеров таких ресурсов могут рассматриваться
реентерабельные программы, файлы, используемые только для чтения и т.д.).
18. Задача синхронизации процессов. Понятие критического пути.
Процессы могут выполняться параллельно до тех пор, пока не возникнет
потребность в общении между ними. Для обеспечения такого рода
взаимодействия необходимо специальным образом планировать и управлять
ими в составе любой ОС. Специальные средства ОС устанавливают
определенные ограничения на последовательность (очередность) выполнения
взаимосвязанных параллельных процессов, обеспечения тем самым их
синхронизацию и общение. В каждом конкретном случае синхронизация
задается с помощью синхронизирующих правил, которые устанавливаются
системой между процессами и определяют порядок их выполнения с целью
обеспечения должного взаимодействия. Ранее нами были определены
основные отношения типа: отношение предшествования, отношение
приоритетности, отношение взаимного исключения. Эти отношения и
определяют существо синхронизирующих правил. Реализация
синхронизирующих правил осуществляется с помощью механизмов (средств)
синхронизации. Такие механизмы весьма многочисленны по способам
реализации, отличаются степенью эффективности и областями
использования в различных ОС и будут рассмотрены в последующих
разделах.
Особенности каждого конкретного взаимодействия между двумя или более
параллельными процессами определяются задачей синхронизации.
Количество различных задач синхронизации неограниченно. Однако
некоторые из них являются типичными. К ним относятся: взаимное
исключение, производители-потребители, читатели-писатели, обедающие
философы и т.д. Большинство задач в реальных ОС по согласованию
параллельных процессов можно ре шить либо с помощью этих типовых
задач, либо с помощью их модификаций.
КРИТИЧЕСКИЙ ПУТЬ [critical path] — центральное понятие
методов сетевого планирования и управления (СПУ): непрерывная
последовательность работ и событий от начального до конечного события,
требующая наибольшего времени (в некоторых системах — наибольших
затрат) для ее выполнения.
Метод критического пути — инструмент планирования расписания
и управления сроками проекта.
В основе метода лежит определение наиболее длительной
последовательности задач от начала проекта до его окончания с учетом их
взаимосвязи. Задачи, лежащие на критическом пути (критические задачи),
имеют нулевой резерв времени выполнения, и, в случае изменения их
длительности, изменяются сроки всего проекта. В связи с этим, при
выполнении проекта критические задачи требуют более тщательного
контроля, в частности, своевременного выявления проблем и рисков,
влияющих на сроки их выполнения и, следовательно, на сроки выполнения
проекта в целом. В процессе выполнения проекта критический путь проекта
может меняться, так как при изменении длительности задач некоторые из них
могут оказаться на критическом пути.
19. «Состязания» и «клинчи» для выполняющихся процессов в ОС.
20. Задача синхронизации процессов. Семафоры Дейкстры
Синхронизация процессов – актуальная задача, исследование которой
началось с работ Э. Дейкстры в 1960-х гг. Совместный доступпроцессов к
общим данным (race condition) может привести к нарушению их целостности,
поэтому необходима их синхронизация.
При решении задачи ограниченного
буфера, переменная counter (счетчик числа элементов в буфере) играет роль
общего ресурса для производителя и потребителя, по которому необходима
их синхронизация. Если ее не использовать, переменная может принять
некорректное значение из-за совместного исполнения операций над ней в
двух процессах (interleaving). Операции над ней должны быть атомарны, и
должно быть обеспечено их взаимное исключение.
В общем случае, если имеется n процессов, у каждого из них есть
своя критическая секция – фрагмент кода, работающий с общим ресурсом, и
необходимо обеспечить взаимное исключение исполнения критических
секций. Для решения проблемы критических секцийнеобходимо выполнение
трех условий: взаимное исключение, прогресс (выбор системой за конечное
время одного из процессов для исполнения критической секции),
ограниченное ожидание (ограничение на время ожидания от момента заявки
процесса на исполнениекритической секции до момента ее удовлетворения).
Рассмотрены три алгоритма решения проблемы критических секций. Первый
использует переменную для номера текущего процесса,
исполняющего критическую секцию (не удовлетворяет условию прогресс ).
Второй хранит информацию о процессах-претендентах
наисполнение критических секций, но не хранит информацию о номере
текущего процесса (также не удовлетворяет условию прогресс ). Третий
использует комбинацию этих подходов и решает проблему, однако он
оказывается достаточно сложным для понимания и реализации.
Алгоритм булочной – еще один подход к решению проблемы критических
секций. Использует присвоение уникального номера в очереди (приоритета)
каждому процессу.
Алгоритмы синхронизации более просты, если они используют аппаратную
поддержку атомарных операций – проверка и установка (test-and-set)
и перестановка значений двух переменных (swap). Приведена
реализация синхронизации процессов с использованием обеих операций.
Общий семафор (по Э. Дейкстре) – синхронизирующий примитив:
целая переменная, над которой определены семафорные операцииwait
и signal. Приведено решение проблемы критических секций с помощью
семафоров. Семафор реализуется в виде структуры из двух
полей: счетчик и ссылка на список ждущих процессов. Для реализации
операций над семафором достаточно двух примитивов: block –
блокировка текущего процесса, wakeup(P) – разблокировка процесса P.
Семафоры могут использоваться как общее средство
синхронизации по ресурсам и по событиям.
Используются две разновидности семафоров – общие (с целым значением) и
двоичные (значениями могут быть только 0 и 1). Общий семафор может быть
реализован с помощью двоичных семафоров.
В системе "Эльбрус" имеется вариант операции ожидания жуж (жужжать на
процессоре) для системных процессов – без прерывания, с удержанием
процессора до момента разблокировки.
Имеются три классических задачи (схемы) синхронизации процессов –
ограниченный буфер, читатели-писатели и обедающие философы.
Рассмотрены решения этих задач с использованием семафоров.
Критические области – высокоуровневая конструкция для синхронизации,
основанная на описаниях разделяемых ресурсов (shared) и
конструкции region, обеспечивающей взаимное исключение критических
секций более удобным и надежным способом, чем семафоры. Рассмотрено
решение задачи "ограниченный буфер" с помощью критических областей.
Рассмотрена схема реализации критических областей с использованием
семафоров.
Монитор (по Ч. Хоару) – высокоуровневая конструкция для синхронизации:
многовходовый модуль, содержащий описание общих данных и операций
над ними в виде процедур. Обеспечивается
взаимное исключение исполнения мониторных операций. Мониторможет
также содержать условные переменные, для которых
определены операции wait и signal для организации дополнительных
очередей процессов. Рассмотрено решение задачи "обедающие философы" с
использованием монитора. Описана реализация монитора и условных
переменных с помощью семафоров.
Семафор Дейкстры представляет собой целочисленную переменную, с
которой ассоциирована очередь ожидающих нитей. Пытаясь пройти через семаФор, нить пытается вычесть из значения переменной 1. Если значение
переменной больше или равно 1, нить проходит сквозь семафор успешно
(семафор открыт). Если переменная равна нулю (семафор закрыт), нить
останавливается и ставится в очередь.
Закрытие семафора соответствует захвату объекта или ресурса, доступ к
которому контролируется этим семафором. Если объект захвачен, остальные
нити вынуждены ждать его освобождения. Закончив работу с объектом (выйдя из
критической секции), нить увеличивает значение семафора на единицу, открывая
его. При этом первая из стоявших в очереди нитей активизируется и вычитает из
значения семафора единицу, снова закрывая семафор.
Если же очередь была пуста, то ничего не происходит, просто семафор
остается открытым. Тогда первая нить, подошедшая к семафору, успешно
пройдет через него. Это действительно похоже на работу железнодорожного
семафора, контролирующего движение поездов по одноколейной ветке
емафоры общего вида могут принимать любые неотрицательные значения. В
современной
литературе
такие
семафоры
называют семафорамисчетчиками (counting semaphore). Это соответствует случаю, когда несколько
нитей могут работать с объектом одновременно, или когда объект состоит из
нескольких независимых, но равноценных частей – например, несколько
одинаковых принтеров. При работе с такими семафорами часто разрешают
процессам вычитать и добавлять к флаговой переменной значения, большие
единицы. Это соответствует захвату/освобождению нескольких частей ресурса.
Многие системы предоставляют также сервисы, позволяющие просмотреть
состояние семафора без его изменения и произвести "неблокируюшуюся" форму
захвата, которая возвращает ошибку в ситуации, когда нормальный захват
семафора привел бы к блокировке. Теоретики не очень любят такие примитивы,
но при разработке сложных сценариев взаимодействия с участием многих
семафоров они бывают полезны.
Во многих современных книгах и операционных системах семафорами
называются только семафоры общего вида, двоичные же семафоры носят более
краткое и выразительное имя мутекс (mutex – от MUTual EXclusion, взаимное
исключение). Проследить генезис этого названия автору не удалось, но можно с
уверенностью сказать, что оно вошло в широкое употребление не ранее конца 80х. Так, в разрабатывавшейся в середине 80-х годов OS/2 1.0, двоичные семафоры
еще называются семафорами, а в Win32, разработка которой происходила в
начале 90-х, уже появляется название mutex. Операции над мутексом
называются захватом (acquire) (соответствует входу в критическую секцию)
и освобождением (release) (соответствует выходу из нее).
Многие ОС предоставляют для синхронизации семафоры Дейкстры или
похожие на них механизмы.
21. Основные схемы управления оперативной памятью. Понятие
«виртуальная память»




Функции ОС по управлению памятью
Под памятью (memory) здесь подразумевается оперативная память
компьютера. В отличие от памяти жесткого диска, которую называют
внешней памятью (storage), оперативной памяти для сохранения информации
требуется постоянное электропитание.
Память является важнейшим ресурсом, требующим тщательного управления
со стороны мультипрограммной операционной системы. Особая роль памяти
объясняется тем, что процессор может выполнять инструкции протравы
только в том случае, если они находятся в памяти. Память распределяется
как между модулями прикладных программ, так и между модулями самой
операционной системы.
В ранних ОС управление памятью сводилось просто к загрузке программы и
ее данных из некоторого внешнего накопителя (перфоленты, магнитной
ленты или магнитного диска) в память. С появлением
мультипрограммирования перед ОС были поставлены новые задачи,
связанные с распределением имеющейся памяти между несколькими
одновременно выполняющимися программами.
Функциями ОС по управлению памятью в мультипрограммной системе
являются:
отслеживание свободной и занятой памяти;
выделение памяти процессам и освобождение памяти по завершении
процессов;
вытеснение кодов и данных процессов из оперативной памяти на диск
(полное или частичное), когда размеры основной памяти не достаточны для
размещения в ней всех процессов, и возвращение их в оперативную память,
когда в ней освобождается место;
настройка адресов программы на конкретную область физической памяти.
22. Методы выделения и разделения внешних устройств между
программными процессами в операционной системе.
23. Основные методы организации записей в файл. Понятие прямого и
последовательного метода доступа.
организация файлов и доступ к ним
Программист воспринимает файл в виде набора однородных записей. Запись
- это наименьший элемент данных, который может быть обработан как
единое целое прикладной программой при обмене с внешним устройством.
Причем в большинстве ОС размер записи равен одному байту. В то время как
приложения оперируют записями, физический обмен с устройством
осуществляется большими единицами (обычно блоками). Поэтому записи
объединяются в блоки для вывода и разблокируются для ввода.
Файл прямого доступа
В реальной практике файлы хранятся на устройствах прямого (random)
доступа, например на дисках, поэтому содержимое файла может быть
разбросано по разным блокам диска, которые можно считывать в
произвольном порядке. Причем номер блока однозначно определяется
позицией внутри файла.
Здесь имеется в виду относительный номер, специфицирующий данный блок
среди блоков диска, принадлежащих файлу.
Естественно, что в этом случае для доступа к середине файла просмотр всего
файла с самого начала не обязателен. Для специфицирования места, с
которого надо начинать чтение, используются два способа: с начала или с
текущей позиции, которую дает операция seek.
Файл, байты которого могут быть считаны в произвольном порядке,
называется файлом прямого доступа.
Таким образом, файл, состоящий из однобайтовых записей на устройстве
прямого доступа, - наиболее распространенный способ организации файла.
Базовыми операциями для такого рода файлов являются считывание или
запись символа в текущую позицию. В большинстве языков высокого уровня
предусмотрены операторы посимвольной пересылки данных в файл или из
него.
Подобную логическую структуру имеют файлы во многих файловых
системах, например в файловых системах ОС Unix и MS-DOS. ОС не
осуществляет никакой интерпретации содержимого файла. Эта схема
обеспечивает максимальную гибкость и универсальность. С помощью
базовых системных вызовов (или функций библиотеки ввода/вывода)
пользователи могут как угодно структурировать файлы. В частности, многие
СУБД хранят свои базы данных в обычных файлах.
24. Основные методы организации хранения файлов на внешних
устройствах прямого метода доступа. Понятие библиотечной, индексно
последовательной и кластерной структуры.
Выделяют три основных группы методов доступа к данным:
последовательные, индексные, произвольные методы доступа.
Последовательные методы используются при поиске большого числа
записей (от 10 до 100%), индексные для получения одной или нескольких
записей, произвольные для получения отдельных записей.
В группе последовательных методов доступа к данным используется один
файл базы данных. Перебор записей выполняется, начиная с первой,
последовательно одна за другой. Записи не упорядочены и обычно имеют
фиксированный размер. В зависимости от способа организации записей в
файле различают последовательный метод доступа на смежной и
несмежной памяти.
а) В случае последовательного метода доступа на смежной
памяти записи хранятся в виде логической последовательности,
организация которой похожа на одномерный линейный массив. Например,
в файле хранятся имена:
Индекс - структура данных, которая помогает СУБД быстрее обнаружить
отдельные записи в файле и сократить время выполнения запросов
пользователей.
Индекс в базе данных аналогичен предметному указателю в книге. Это —
вспомогательная структура, связанная с файлом и предназначенная для поиска
информации по тому же принципу, что и в книге с предметным указателем. Индекс
позволяет избежать проведения последовательного или пошагового просмотра
файла в поисках нужных данных. При использовании индексов в базе данных
искомым объектом может быть одна или несколько записей файла. Как и
предметный указатель книги, индекс базы данных упорядочен, и каждый элемент
индекса содержит название искомого объекта, а также один или несколько
указателей (идентификаторов записей) на место его расположения.
Хотя индексы, строго говоря, не являются обязательным компонентом СУБД, они
могут существенным образом повысить ее производительность. Как и в случае с
предметным
указателем
книги,
читатель может
найти
определение
интересующего его понятия, просмотрев всю книгу, но это потребует слишком
много времени. А предметный указатель, ключевые слова в котором расположены
в алфавитном порядке, позволяют сразу же перейти на нужную страницу.
Структура индекса связана с определенным ключом поиска и содержит записи,
состоящие из ключевого значения и адреса логической записи в файле,
содержащей это ключевое значение. Файл, содержащий логические записи,
называется файлом данных, а файл, содержащий индексные записи, —
индексным файлом. Значения в индексном файле упорядочены по полю
индексирования, которое обычно строится на базе одного атрибута.
25. Основные методы ведения диалога «человек – ЭВМ». Диалог типа
«меню» и «командная строка».
Наиболее распространенным классом диалоговых систем в настоящее время
являются визуальные диалоговые системы (ВДС). Отличительной их
особенностью является использование визуальной формы представления
информации человеку в процессе диалога. Инженерно-психологический
анализ и оценку разрабатываемых ВДС следует производить на нескольких
уровнях проектирования: проблемно-функциональном, процедурном,
операционном.
На проблемно-функциональном уровне задачами инженернопсихологического проектирования являются формулировка задач и целей,
реализуемых человеком в процессе диалога, и распределение функций между
партнерами диалоговой системы.
Диалог типа меню– это диалог, при котором среди набора опций,
отображаемых на экране (меню), пользователи могут выбирать и выполнять
действия, тем самым производя изменения в состоянии интерфейса.
Достоинство меню в том, что пользователи не должны помнить название
элемента или действия, которые они ходят выполнить – они должны только
распознать его среди пунктов меню. Таким образом, меню может
использовать даже неопытный пользователь.
Download