
- •1. Вычислительные машины.
- •1.1. Модель эвм фон-Неймана.
- •1.2. Архитектуры современных эвм. Основные принципы работы отдельных компонентов. Центральные процессоры. Каналы (устройства обмена).
- •1.3. Иерархия и организация памяти эвм. Запоминающие устройства с произвольной выборкой. Внешние запоминающие устройства. Стековая память.
- •1.4. Организация и обработка прерываний от внешних устройств эвм. Схема с общей шиной. Буферизация.
- •1.5. Относительная адресация. Виртуальная память. Прямой доступ к памяти.
- •Страничная организация виртуальной памяти
- •Сегментная организация виртуальной памяти
- •1.6. Конвейеризация. Устройства ввода-вывода. Организация ввода-вывода.
- •1.7. Векторные машины. Машины с архитектурой risc. Многопроцессорные машины. Понятие о параллельных процессах.
- •Типы Процессорная симметричность
- •Потоки команд и данных
- •Соединения процессоров
- •Программные реализации Многопроцессорная обработка с sisd
- •Многопроцессорная обработка simd
- •Многопроцессорная обработка misd
- •Многопроцессорная обработка mimd
- •Понятия и терминология параллельного программного обеспечения
- •2. Персональные эвм.
- •2.1. Архитектура семейства микропроцессоров 286/586 (регистры, сегментация памяти, реальный и виртуальный режимы, защита памяти, шина, структура памяти, структура ввода/вывода, прерывания).
- •2.2. Пэвм. Система команд и способы представления информации. Архитектура математического сопроцессора.
- •3. Программный интерфейс вычислительных систем.
- •3.1. Программирование на машинном языке. Ассемблеры и макроассемблеры. Компиляторы.
- •3.2. Система управления вводом/ выводом. Спулинг.
- •3.3. Языки высокого уровня. Интерпретаторы. Абсолютные и перемещающие загрузчики. Связывающие загрузчики и редакторы связей.
- •3.4. Микропрограммы. Эмуляция. Микропрограммная поддержка.
- •4. Операционные системы.
- •4.1. Функции ядра операционной системы.
- •4.2. Управление заданиями и процессами. Понятие процесса, состояния процесса. Обработка прерываний.
- •4.3. Управление памятью, файловые системы. Концепции распределения памяти. Понятия оверлейного перекрытия, свопинга. Концепции виртуальной памяти.
- •4.4. Понятие файла, организация файла, файловой системы. Блок управления файлом.
- •4.5. Управление внешними устройствами и связью. Принципы функционирования систем управления вводом/выводом.
- •4.6. Ос. Поддержка систем программирования. Надежность, безопасность и защита. Поддержка интерфейса прикладного программирования (api)
- •4.7. Понятие о режимах реального времени. Мультизадачность и многопоточость.
- •4.8. Составные части ос ms dos, unix, Windows 95/98.
- •4.9. Загрузка ос. Основные группы команд ms dos, unix.
- •5. Парадигмы программирования.
- •5.1. Процедурное, декларативное и объектно-ориентированное программирование.
- •5.2. Логическое и функциональное программирование.(Принципы и сравнительная характеристика).
- •5.3. Параллельное программирование.
- •5.4. Абстракция данных.
- •6. Формальные языки и грамматики.
- •6.1. Иерархия Хомского.
- •6.2. Регулярные грамматики. Конечные автоматы.
- •6.3. Кс-грамматики и мп-автоматы.
- •6.4. Алгоритмическая разрешимость проблем в автоматных и кс языках.
- •6.5. Нисходящий и восходящий анализ.
4.2. Управление заданиями и процессами. Понятие процесса, состояния процесса. Обработка прерываний.
Управление задачами в операционных системах
Основные функции ОС по управлению задачами включают в себя:
1) создание и удаление задач;
2) планирование процессов и диспетчеризация задач;
3) синхронизация задач.
Создание и удаление задач осуществляется по запросам пользователей, либо самих задач. Задача может породить следующую задачу, и тогда между ними появляются отношения типа «предок-потомок». При этом предок может приостановить или удалить дочернюю задачу, а потомок не может управлять предком.
Основой любого метода управления процессами является организация очередей процессов и ресурсов. Задача подбора множества процессов, для которого количество конфликтов из-за ресурсов при их выполнении будет минимальным, называется задачей планирования вычислительных процессов. Она может быть решена оптимально только на некотором множестве начальных состояний процессов. С изменением состояний процессов принятое решение по планированию не будет оптимальным и требует корректировки. Такая корректировка может быть осуществлена на основе динамического (краткосрочного) планирования или диспетчеризации. Основное различие между краткосрочным и долгосрочным планировщиками состоит в частоте их запуска: первый запускается 1 раз в 30-100 мс, второй − 1 раз в несколько минут.
Долгосрочный планировщик устанавливает и корректирует очередность готовых процессов с целью создания мультипрограммной смеси, обеспечивающей оптимальную загрузку всех ресурсов системы, а краткосрочный − выбирает очередную задачу из готовых для передачи на выполнение. Обычно в существующих системах долгосрочное планирование отсутствует.
Под процессом будем понимать целенаправленную последовательность вычислительных действий, которая характеризуется:
• сопоставленной ему программой/подпрограммой, то есть упорядоченной последовательностью операций, реализующих действия, которые должны осуществляться процессом;
• содержимым соответствующей ему памяти, а также тем множеством данных, которыми этот процесс может манипулировать;
• дескриптором процесса и совокупностью числовых и текстовых сведе-ний, определяющих состояние ресурсов, предоставленных процессу. Все процессы находятся под управлением ОС, поэтому в них всегда имеется часть кода ее ядра (возможно и не находящегося в исполняемом файле!), например, при исполнении специально используемых авторами программы системных вызовов и в непредусмотренных особых ситуациях (например, при обработке внешних или внутренних прерываний).
С другой стороны, существует большая категория программ, для которых специально выделяются ресурсы ОС, резервируется память, делаются записи в специальных структурах, отводится место в очереди диспетчера. Каждая такая программа выполняется независимо от других в своем собственном пространстве и своей программной среде. Будем называть программы, которым соответствуют отдельные записи в очереди диспетчера и отдельно выделенные ресурсы, процессами.
Необходимо заметить, что процессы имеются во всех операционных системах, однако их обслуживание в разных системах может происходить на основе различных механизмов. Кроме того, поскольку процессы могут создавать (порождать) другие процессы, то часто используют термин дерево процессов, аналогично соответствующей структуре данных.
Процессы характеризуются следующей информацией: таблицей распределения памяти процесса; текущим статусом процесса (состоянием); приоритетом выполнения процесса; ресурсами, которые использует процесс; маской обработки и владельцем.
Процессы в ОС могут быть запущены в различных случаях:
• диспетчер вызывает некоторый глобальный процесс по истечении некоторого промежутка времени или при обнаружении некоторого события;
• для получения оценки состояния ОС;
• при запуске программы переформирования очереди диспетчера, с целью повышения производительности системы;
• при вызове из программы пользователя другого клиентского приложе ния. В этом случае может потребоваться еще и синхронизация процес-сов;
• запуск программы пользователя;
В ходе своего исполнения процессы могут находиться в различных состояниях. Возможные состояния процесса показаны на рис. 1.3.
Состояние выполнения - это активное состояние, во время которого процесс обладает всеми необходимыми ему для работы ресурсами и характеризуется моментом времени, когда процесс имеет контроль над процессором.
Состояние готовности характеризуется тем, что процесс стоит в очереди на выполнение.
Пассивное состояние характеризуется тем, что программа загружена в память, но не инициализирована для выполнения.
Состояние ожидания характеризуется тем, что выполнение процесса прервано и процесс ожидает освобождения необходимого ему ресурса или некоторого события, например, ввода данных или освобождения нужного ему устройства.
Дополнив диаграмму двумя состояниями - смерти и рождения, переход из одного состояния в другое можно трактовать, например, как следующее множество (неполное) операций:
Рис. 1.3. Состояния процесса
• Создание процесса - это переход из состояния рождения в состояние готовности;
• Уничтожение процесса - это переход из состояния выполнения в состояние смерти;
• Восстановление процесса - переход из состояния готовности в состояние выполнения;
• Изменение приоритета процесса - переход из выполнения в готовность;
• Блокирование процесса - переход в состояние ожидания из состояния выполнения;
• Пробуждение процесса ~ переход из состояния ожидания в состояние готовности;
• Запуск процесса (или его выбор) - переход из состояния готовности в со стояние выполнения;
Более подробно переходы процессов из одного состояния в другое состояние показаны на рис. 1.4, который представляет собой полную диаграмму переходов процесса из состояния в состояние.
Понятие прерываний в ОС
Прерывания и особые ситуации
Любая операционная система должна быть построена так, чтобы разрешать таким устройствам, как диски, сетевые устройства, таймер и т.п. асинхронно прерывать работу центрального процессора.
При получении сигнала прерывания ядро операционной системы сохраняет свое текущее состояние, образ выполняемого процесса, устанавливает причину прерывания и обрабатывает прерывание. После того, как прерывание будет обработано ядром, прерванный контекст восстановится и работа продолжится так, как будто ничего не случилось.
Устройствам обычно приписываются приоритеты в соответствии с очередностью обработки прерываний. В процессе обработки прерываний ядро учитывает их приоритеты и блокирует обслуживание прерывания с низким приоритетом во время обработки прерывания с более высоким приоритетом.
Особые ситуации (разновидности прерываний) связаны с возникновением незапланированных событий, вызванных процессом, таких как недопустимая адресация, использование привилегированных команд, деление на ноль и т.д. Они отличаются от прерываний, которые вызываются событиями, внешними по отношению к процессу.
Особые ситуации возникают прямо "посредине" выполнения команды, и система, обработав особую ситуацию, пытается перезапустить команду. Считается, что прерывания возникают между выполнением двух команд, при этом система после обработки прерывания продолжает выполнение процесса, начиная со следующей команды.
Для обработки прерываний и особых ситуаций в системе Unix используется один и тот же механизм.
Уровни прерывания процессора
Ядро обязано предупреждать возникновение прерываний во время критических действий, которые в случае прерывания могут привести к потере информации. Например, во время записи данных на диск прерывание от терминала может привести к потере данных или сбою в работе файловой системы.
Обычно имеется ряд привилегированных команд, устанавливающих уровень прерывания процессора в слове состояния процессора. Установка уровня прерывания на определенное значение отсекает прерывания этого и более низких уровней, разрешая обработку только прерываний с более высоким приоритетом. На рис. 1.6 показана последовательность уровней прерывания. Если ядро игнорирует прерывания от диска, в этом случае игнорируются и все остальные прерывания, кроме прерываний от таймера и машинных сбоев.