Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АОПИ. Старое / АОПИ. Глава 1. Конспекты (31_03_19).rtf
Скачиваний:
67
Добавлен:
10.09.2019
Размер:
630.31 Кб
Скачать

Система программирования (ide — Integrated Development Environment).

Включает базовые компоненты: — Трансляторы. — Библиотеки подпрограмм. — Редакторы. — Компоновщики. — Отладчики.

Трансляторы — специальные программы-переводчики, которые переводят программу, написанную на языках высокого уровня, в машинный код (на машинный язык). 3 вида трансляторов: — Ассемблеры. — Компиляторы. — Интерпретаторы.

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

Компилятор — системная программа, которая воспринимает текст программы на языке высокого уровня (исходный модуль), а на выходе генерирует программу на языке ассемблера или на машинном языке (объектный модуль). Пример. Язык программирования Фортран. .for —> .obj —> .exe

Объектный модуль состоит из двух частей: 1) Тело модуля, представляющее собой программу. 2) Заголовок, содержащий внешние имена (имена переменных, используемых в данном модуле, но определенных в другом модуле).

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

Объектные модули обрабатываются компоновщиком связи (или редактором связи), который создает исполняемую программу, содержащую только команды конкретной ЭВМ.

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

Оператор (инструкция) — команда или набор команд. Примеры: объявление переменной, присваивание, условная инструкция (if-else), цикл со счетчиком (for), цикл с предусловием (while) и т. д.

Операнд — аргумент операции; то, что обрабатывается оператором. Например, имеется операция «a+b». В этом случае «a» и «b» — аргументы операции сложения (т. е. они — операнды).

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

Утилиты — специальные программы для выполнения вспомогательных функций. Подразделяются на: — утилиты сервисного обслуживания компьютера (диагностика и дефрагментация). — утилиты расширения функциональности. — информационные утилиты.

Определение ядра операционной системы

Все модули ОС делятся на 2 группы: 1) Модуль ядра, который выполняет основные функции ОС и включает в себя планировщик (диспетчер), драйверы устройств ввода-вывода, файловую систему и сетевую систему. 2) Модули, выполняющие вспомогательные функции ОС (т. е. утилиты).

Диспетчеризация. Одной задаче соответствует один дескриптор.

Ядро: 1. Дескриптор — относительная структура, содержащая информацию о системных данных задачи. 2. Системные данные — целочисленный показатель важности (приоритета) одной задачи по отношению к другим. 3. Указатель на следующую задачу в списке дескрипторов. Все дескрипторы находятся в стеке. Ядро выбирает задачу, которую нужно выполнить. Round Robin (круговая диспетчеризация).

Модуль ядра выполняет базовые функции: — Управление задачами (процессами, потоками). — Управление памятью, устройствами и т. д.

Такого рода внутрисистемные функции недоступны для приложений.

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

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

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

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

Дополнительная литература: https://megaobuchalka.ru/4/400.html

Коллоквиум. Посмотреть в интернете: — Turbo Prolog (примеры кода). — LISP (примеры кода). Краткая характеристика языков программирования. — Отличие ассемблера от объектно-ориентированных языков программирования. (желательно) Книга Джеффри Рихтера по теме системного программирования: http://www.e-reading.club/bookreader.php/135055/Rihter_-_Windows_dlya_professionalov%3A_sozdanie_effektivnyh_Win32-prilozheniii_s_uchetom_specifik....pdf

Предикат — это выражение, использующее одну или более величину с результатом логического типа (результат — 0 или 1).

Трассировать — отслеживать ошибки.

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

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

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

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

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

В итоге: первый признак — функции, второй признак — работа в привилегированном режиме.