- •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. Операционные системы.
4.1. Функции ядра операционной системы.
Уровневое представление ОС UNIX
Ядро операционной системы UNIX не является изолированным. На рис. 1.5 видно место ядра в операционной системе UNIX, представленной в виде уровней. Обычно выделяют четыре главных уровня в системе:
Уровень пользователя (User Applications) - набор программных приложений, используемый клиентом для обеспечения взаимодействия с системой и ее управлением.
Сервисы ОС (System Call Interface) - виды услуг, которые ОС предоставляет пользователю через интерфейсы (например, типа SHELL или window, виды компиляторов и т.п.).
Ядро системы (OS Kernel)- основная часть, обеспечивающая работу всей системы. В том числе планирование и управление задачами, поддержка многопользовательского режима, синхронизация работы системы, управление устройствами на уровне управления объектами без конкретного выделения вида устройств.
Управление устройствами (Hardware Controllers) - подсистема управления возможными физическими устройствами на уровне устройств.
Согласно такой архитектуре каждый уровень может взаимодействовать только с соседним уровнем. Каждый вышележащий уровень является зависимым от нижележащих уровней. Так как уровни пользователя и сервисы ОС UNIX существенно зависят от реализации, то их рассмотрение не входит в круг задач этого пособия. Мы будем далее рассматривать ядро операционной системы, которое практически одинаково для всех видов ОС, а не только для UNIX.
Функции ядра операционной системы
На рис. 1.5 уровень ядра операционной системы изображен непосредственно под уровнем прикладных программ пользователя. Выполняя различные элементарные операции по запросам пользовательских процессов, ядро обеспечивает функционирование пользовательского интерфейса, описанного выше. Среди функций ядра можно отметить:
• Управление выполнением процессов посредством их создания, завершения или приостановки и организации взаимодействия между ними.
• Планирование очередности предоставления выполняющимся процессам времени центрального процессора (диспетчеризация). Процессы работают с центральным процессором в режиме разделения времени: цен тральный процессор выполняет процесс, по завершении отсчитываемого ядром кванта времени процесс приостанавливается и ядро активизирует выполнение другого процесса. Позднее ядро запускает приостановленный процесс
• Выделение выполняемому процессу оперативной памяти. Ядро опера- ционной системы дает процессам возможность совместно использовать участки адресного пространства на определенных условиях, защищая при этом адресное пространство, выделенное процессу, от вмешательст- ва извне. Если системе требуется свободная память, ядро освобождает память, временно выгружая процесс на внешние запоминающие устройства, которые называют устройствами выгрузки. Если ядро выгружает процессы на устройства выгрузки целиком, то такая реализация системы UNIX называется системой со свопингом (подкачкой); если же на устройство выгрузки выводятся страницы памяти, то такая система называется системой с замещением страниц (пейджинг).
• Выделение внешней памяти с целью обеспечения эффективного хране- ния информации и извлечения пользовательских данных. Именно в процессе реализации этой функции создается файловая система. Ядро выделяет внешнюю память под пользовательские файлы, мобилизует неис- пользуемую память, структурирует файловую систему в форме, доступ ной для понимания, и защищает пользовательские файлы от несанкцио нированного доступа.
• Управление доступом процессов к периферийным устройствам, таким как терминалы, ленточные устройства, дисководы и сетевое оборудование.
Выполнение ядром своих функций довольно очевидно. Например, оно знает, что данный файл является обычным файлом или устройством, но скрывает это различие от пользовательских процессов. Так же ядро, форматируя информацию файла для внутреннего хранения, защищает внутренний формат от пользовательских процессов, возвращая им неотформатированный поток байтов.
Наконец, ядро реализует ряд необходимых функций по обеспечению выполнения процессов пользовательского уровня, за исключением функций, которые могут быть реализованы на самом пользовательском уровне. Например, выполняя действия, необходимые интерпретатору команд shell, оно позволяет ему читать вводимые с терминала данные, динамически порождать процессы, синхронизировать выполнение процессов, открывать каналы и переадресовывать ввод-вывод. Пользователи могут разрабатывать свои версии командного интерпретатора shell с тем, чтобы привести рабочую среду в соответствие со своими требованиями, не затрагивая дру-гих пользователей. Такие программы пользуются теми же услугами ядра, что и стандартный процессор shell.