- •Введение. Основные понятия и определения.
- •Раздел 1. Организация программ.
- •1 .1. Модульный принцип разработки и организации программ
- •1.2. Связи между модулями.
- •Связь по управлению
- •Связь по данным
- •1.3. Структура объектного модуля
- •1.3.1. Принцип редактирования связей9.
- •1. Программы простой структуры
- •2. Структуры с перекрытиями12
- •1.4. Структура программ.
- •1.5. Первоначальная загрузка (Initial Program Loading) – ipl.
- •1.6. Замечание об адресных пространствах:
- •1.7. Динамическая организация программ
- •1.7.1. Загрузка модуля
- •1.7.2. Выделение памяти под загружаемый модуль
- •1.7.3. Реентерабельные14 программы
- •1.7.4. Замечание о динамических параллельных процессах:
- •Раздел 2. Организация мультиобработки
- •Типы систем обработки данных
- •Раздел 3. Управление процессами.
- •3.1 Понятие Процесс. Состояния процесса
- •3.2. Планирование процессов. Понятие очереди.
- •3.3. Взаимодействие процессов. Пользовательский уровень.
- •3.4. Планирование процессора.
- •3.4.1. Критерии планирования процессора.
- •3.4.2. Стратегии планирования процессора. Первый пришел – первый обслуживается (fifo). First Come – First Served (fcfs)
- •Стратегия наиболее короткая работа —sjf
- •Приоритетное планирование.
- •Планирование с использованием многоуровневой очереди.(Multilevel queue scheduling)
- •Планирование с использованием многоуровневой очереди с обратными связями (multilevel feedback queue sheduling)
- •3.5. Многопотоковые процессы
- •Раздел 4. Файловая система.
- •4.1. Основные понятия организации данных
- •4.2. Организация файла
- •4.2.1. Последовательная и произвольная обработка
- •4.3. Организация дисковой памяти
- •4.3.1. Диски – физическая структура
- •4.3.2. Диски – логическая структура
- •4.3.3. Распределение дискового пространства
- •4.3.4. Особенности жестких дисков
- •4.4. Древовидная файловая организация
- •4.4.1. Организация каталогов
- •4.4.2. Создание и удаление файла
- •4.5. Управление дисковым пространством и способы размещения файлов на поверхности
- •4.5.1. Непрерывное распределение
- •4.5.2. Распределение в разброс
- •2. Индексирование кластеров.
- •4.6. Связь программ с файлами.
- •4.6.1. Проблема обеспечения независимости программ от расположения и характеристик файлов
- •4.6.2. Действия open.
- •4.6.2. Действия close.
- •4.7.3. Логическая буферизация.
- •Раздел 5. Управление невиртуальной памятью.
- •5.1. Своппинг. (swapping)
- •5.2. Смежное размещение процессов.
- •5.2.1. Однопрограммный режим.
- •5.2.2 Мультипрограммный режим с фиксированными границами.
- •5.2.3. Мультипрограммирование с переменными разделами. (multiprogramming with a variable number of tasks (mvt).
- •5.2.4. Мультипрограммирование с переменными разделами и уплотнением памяти.
- •5.2.5. Основные стратегии заполнения свободного раздела.
- •5.3. Страничная организация памяти.
- •5.3.1. Базовый метод.
- •5.3.2. Аппаратная поддержка страничной организации памяти.
- •5.4. Сегментная организация памяти.
- •5.4.1. Базовый метод сегментной организации памяти.
- •5.4.2. Разделение сегмента между несколькими процессами.
- •5.4.3. Фрагментация.
- •Раздел 6. Управление виртуальной памятью.
- •6.1. Страничирование по запросу (demand paging).
- •6.2. Замещение страниц.
- •6.3.1. Fifo.
- •6.3.2. Оптимальный алгоритм.
- •6.3.3. Lru — алгоритм (least recently used)
1.2. Связи между модулями.
Связи между модулями бывают:
по управлению
по данным
Связь по управлению
Управление передается из одного модуля в другой путем вызова CALL < имя модуля >[ параметры ]
Вызов может быть многоуровневым (последовательно из одного модуля уходит в другой)
Связь по данным
явная (через список параметров)
через общие области ОП (переменные и массивы). Языки программирования имеют возможность определения этих общих переменных.
В обоих случаях при объединении модулей наличие связей по данным учитывается.
Управление, реализуемое через вызов типа CALL при программировании, на уровне команд реализуется через команды передачи управления с возвратом. Трансляторы должны обрабатывать ссылки специальным образом, чтобы потом при редактировании эту специальную форму превратить в выполняемую.
1.3. Структура объектного модуля
О

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

Тело модуля транслируется в относительных адресах10.
Каждый уровень вызова называется лексическим уровенем.
Редактор связей итерационно строит объединенный модуль. Число итераций равно числу лексических уровней. Итеративность состоит в следующем: просматривается список и, если обнаружена запрещенная ссылка, вновь идет итерация.
Первая итерация
Редактор связей начинает обработку с модуля MAIN и просматривает его словарь внешних ссылок. Когда он встречает М1, он извлекает его из файла и присоединяет тело модуля М1 к телу модуля MAIN. Определяется начальный относительный адрес тела модуля М1. Редактор связей объединяет словари внешних ссылок и внешних имен. Этим определяется содержимое косвенного адреса.
Вторая итерация
В словаре внешних ссылок содержится одна запрещенная ссылка (В1). Редактор связей присоединяет тело модуля В1 и объединяет словари внешних ссылок.
Третья итерация
Нет запрещенных ссылок процесс окончен.
При трансляции вызов превращается в передачу управления с возвратом по косвенному адресу, что предполагает, что в момент выполнения команды косвенный адрес будет определен.

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

M

Пул (pool) – это область оперативной памяти, выделяемая для организации нескольких процессов.
Достоинства статического редактирования:
редактирование связей происходит только один раз
программа остается устойчивой, независимо от случайного или намеренного изменения модулей.
Недостатки статического редактирования:
Программа является закрытой, и в случае необходимых изменений в любых компонентах необходимо перередактировать такую программу, т.е. повторно собрать. В программе собственной разработки это просто неудобство, но если программа куплена, как продукт, она как правило не содержит не объектных модулей, ни исходных кодов.
Многие модули повторяются (являются общими). При статическом подключении они копируются во все места программы, где они включены. Это приводит к потере памяти. Статическое редактирование снижает эффективность использования памяти.
Многие компоненты программы являются избыточными и вызываются не всегда. Иногда процент избыточности превышает 50%
Статическое редактирование - путь к закрытым для развития системам.
