
- •1. Назначение, основные этапы развития операционных систем
- •2. Современные ос и их классификация
- •3. Основные принципы построения ос
- •4. Мультипрограммность и мультизадачность
- •1. Процесс, ресурс, свойства, классификация
- •2. Концепция виртуализации
- •3. Принципы построения интерфейсов операционных систем. Интерфейсы прикладного программирования
- •4. Концепция прерывания
- •1. Система управления процессами. Процессы, потоки.
- •2. Средства распределения ресурсов
- •3. Система распределения оперативной памяти. Контроль и распределение памяти в ms-dos
- •4. Алгоритм распределения памяти ms_dos
- •5. Блок управления памятью (mcb)
- •1. Файловая система. Концепция управления файлами
- •2. Текстовые файлы. Двоичный файлы
- •2. Создание файла и создание связи с файлом
- •3. Удаление файла и связи с файлом
- •4. Модификация файлов
- •5. Операции с файлами
- •6. Организация данных на внешних носителях. Внешняя память на дисках
- •7. Файловая система fat. Структура и расположение системной информации файловой системы.
- •8. Структура boot
- •9. Таблица расположения файлов fat
- •10. Структура корневого директория root
- •11. Структура директория
- •12. Алгоритм поиска расположения файлов на диске
- •13. Определение начального кластера расположения файла на диске
- •14. Расчет номеров цепочки кластеров расположения фала на диске
- •15. Методы доступа к информации на дисках
- •16. Изменение элементов таблиц fat и root при выполнении команд dos: copy, move, del, rename.
- •1. Общие сведения о механизме прерываний
- •1. Аппаратные прерывания
- •2. Программные прерывания
- •3. Таблица векторов прерываний
- •4. Перехват прерывания
- •5. Каскадная обработка прерывания
- •1. Загрузка и запуск программ ms dos
- •2. Заголовок *.Exe
- •3. Psp текущей задачи
- •4. Дочерние процессы и их запуск
- •5. Среда процесса, наследование среды
- •6. Системные управляющие блоки dos (таблица векторной связи)
- •7. Завершение процесса
- •1. Архитектура ос Windows. Функционирование и взаимосвязь модулей операционной системы
- •2. Понятие окна. Принципы организации графического пользовательского интерфейса.
- •3. Операции с объектом – окно
- •4. Событийное управление программами
- •5. Сообщение. Цикл обработки сообщений. Очередь сообщений.
- •6. Процедура обработки сообщений, ее формат и правила написания
- •7. Синхронные и асинхронные сообщения, их передача и обработка
- •8. Ввод данных с клавиатуры
- •9. Коды oem, ansi, ascii, виртуальные коды
- •10. Фокус ввода
- •11. Обработка сообщений мыши
- •12. Таймер. Программирование таймера
- •1. Графические устройства и их контекст
- •2. Атрибуты контекста устройств
- •3. Логическая и физическая система координат
- •4. Режимы преобразования координат
- •5. Объекты gdi. Создание и использование
- •6. Gdi и векторная модель рисования
- •7. Быстрая векторная графика
- •8. Шрифт. Классификация, параметры шрифта, установка в контексте устройства.
- •Структура logfont
- •9. Атрибуты контекста устройств, влияющие на вывод текста
- •10. Методы gdi вывода текста
- •11. Управление направлением, размером и расстоянием между символами
- •1. Создание процесса
- •2. Описатель процесса
- •3. Командная строка процесса
- •4. Среда процесса.
- •5. Наследование объектов ядра дочерним процессом.
- •6. Класс процесса.
- •7. Текущий директорий процесса.
- •8. Получение инф-ции о процессе
- •9. Окончание процесса
1. Загрузка и запуск программ ms dos
Загрузка com- и exe-программ происходит по-разному, однако есть некоторые действия, которые операционная система выполняет в обоих случаях одинаково:
определяется сегментный адрес свободного участка памяти для загрузки программы;
создаются два блока памяти - блок памяти для переменных среды, а также блок памяти для PSP и программы;
в блок памяти переменных среды помещается путь к файлу программы;
заполняются поля префикса сегмента программы PSP в соответствии с характеристиками программы;
адрес области Disk Transfer Area (DTA ) устанавливается на вторую половину PSP (PSP:0080);
анализируются параметры запуска программы на предмет наличия в первых двух параметрах идентификаторов дисковых устройств.
Загрузка COM – программы:
сегментные регистры CS, DS, ES, SS устанавливаются на начало PSP;
регистр SP устанавливается на конец сегмента PSP;
вся область памяти после PSP распределяется программе;
в стек записывается слово 0000;
указатель команд IP устанавливается на 100h (начало программы) с помощью команды JMP по адресу PSP:100h;
Загрузка EXE – программы:
Считывается во внутренний буфер DOS форматированная часть заголовка файла.
Определяется размер загрузочного модуля
Определяется смещение начала загрузочного модуля в EXE-файле
Вычисляется сегментный адрес для загрузки START_SEG, обычно используется значение PSP+10h
Загрузочный модуль считывается в память по адресу START_SEG:0000
Сканируются элементы таблицы перемещений, располагающейся в EXE-файле со смещением relt_off
Для каждого элемента таблицы:
Считывается содержимое элемента таблицы как два двухбайтных слова (OFF,SEG).
Вычисляется сегментный адрес ссылки перемещения
Выбирается слово по адресу REL_SEG:OFF, к этому слову прибавляется значение START_SEG, затем сумма записывается обратно по тому же адресу.
Заказывается память для программы, исходя из значений min_mem и max_mem.
Инициализируются регистры, и программа запускается на выполнение.
2. Заголовок *.Exe
Заголовок EXE-файла состоит из форматированной зоны (табл. 1) и таблицы расположения сегментов (Relocation Table).
Таблица расположения сегментов программы начинается сразу после форматированной области и состоит из четырехбайтовых значений в формате "смещение:сегмент". Область файла после таблицы расположения сегментов выравнивается на границу параграфа с помощью байта-заполнителя, и дальше начинается сама программа.
Программа второго типа (exe-программа) может иметь любой размер. В самом начале файла программы содержится заголовок (у файла com-программы заголовка нет). Этот заголовок используется операционной системой в процессе загрузки программы в память для правильной установки сегментных регистров. Заголовок exe-файла нужен только при загрузке; когда программа загружена и готова к работе, самого заголовка уже нет в памяти.
Заголовок exe-файла состоит из форматированной зоны и таблицы расположения сегментов (Relocation Table).
Смещение, байт |
Размер, байт |
Имя поля |
Описание |
0 |
2 |
signature |
Два байта 'MZ' (4Dh, 5Ah), идентифицирующие exe-файл |
2 |
2 |
part_pag |
Размер последней страницы программы в байтах (страница содержит 512 байт) |
4 |
2 |
file_size |
Размер программы в страницах по 512 байт |
6 |
2 |
rel_item |
Количество элементов в таблице расположения сегментов |
8 |
2 |
hdr_size |
Размер заголовка файла в параграфах (длина параграфа - 16 байт) |
10 |
2 |
min_mem |
Минимальное количество памяти в параграфах, которое нужно зарезервировать после области загруженной программы |
12 |
2 |
max_mem |
Максимальное количество памяти в параграфах, которое нужно зарезервировать после области загруженной программы |
14 |
2 |
ss_reg |
Начальное значение для загрузки сегментного регистра SS |
16 |
2 |
sp_reg |
Начальное значение для загрузки регистра SP |
18 |
2 |
chk_summ |
Контрольная сумма всех слов в файле |
20 |
2 |
ip_reg |
Значение, которое будет загружено в регистр IP при запуске программы |
22 |
2 |
cs_reg |
Смещение от начала программы для установки сегментного регистра кода CS |
24 |
2 |
relt_off |
Смещение таблицы расположения сегментов программы от начала exe-файла |
26 |
2 |
overlay |
Номер оверлея, равен 0 для основного модуля программы |
Табл. 3. Формат заголовка EXE программы
Таблица расположения сегментов программы начинается сразу после форматированной области и состоит из четырехбайтовых значений в формате <смещение:сегмент>.