
- •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. Окончание процесса
4. Дочерние процессы и их запуск
Имеется возможность запустить программу (дочернюю) из уже запущенной (родительской). Один из способов – это использование функции system . Она может выполнить любую команду MS-DOS или любую программу, а также пакетный файл. При использовании этой функции должен быть доступен файл command.com . Функция system возвращает код завершения, но по нему нельзя сделать вывод о том, как была выполнена запускаемая программа. Если в качестве аргумента функции будет передано имя несуществующей программы, на экране появится сообщение: Bad command or file name. Другая возможности запустить программу - использовать функции spawn и exec. Функция spawn и ее разновидности запускают программу как дочерний процесс.
После завершения дочерней программы управление будет передано программе, которая запустила родительскую программу. Семейство функций spawn обеспечивает запуск дочерней программы, передавая ей родительскую или специально сформированную среду.
Таблица 3. Параметры функции SPAWN.
Параметр |
Описание |
P_WAIT |
Выполнение родительской программы задерживается до завершения дочерней программы |
P_NOWAIT |
Родительская программа продолжает выполнение сразу после запуска дочерней программы. Этот параметр имеет смысл только для мультизадачных операционных систем |
P_OVERLAY |
Загружает программу как оверлей и передает ей управление. Этот режим соответствует функции exec в том смысле, что родительская программа не получит управления после завершения дочерней |
5. Среда процесса, наследование среды
При загрузке программы DOS, кроме программного сегмента, создает для нее еще и сегмент окружения (environment). Сегмент окружения содержит ASCIIZ-строки, задающие значения некоторых глобальных переменных, они доступны командным файлам и - через PSP - программам. Набор строк окружения заканчивается пустой ASCIIZ-строкой (нулем). Обычно в первую (до строк вызова) часть порождаемой программы копируется содержимое окружения программы-родителя.
При запуске программы из программы суффиксe функции SPAWN указывает на то, что одна или несколько строк окружения будут переданы потомку через массив указателей на строки. Каждая такая строка должна иметь вид ПЕРЕМЕННАЯ_ОКРУЖЕНИЯ=ЗНАЧЕНИЕ. Последний указатель в массиве должен быть NULL. Если первый элемент массива является NULL, то процесс – потомок сохраняет то же самое окружение, что и потомок родитель.
Каждая программа получает статическую копию первоначального окружения. Поэтому любые изменения, производимые в окружении, будут действительны только для порождаемых процессов, и будут утеряны при возврате в порождающий процесс.
6. Системные управляющие блоки dos (таблица векторной связи)
Операционная система MS-DOS содержит векторную таблицу связи основных управляющих блоков. Зная адрес этой таблицы можно получить доступ к внутренним структурам данных операционной системы. Вслед за областью данных BIOS , расположенной в начале оперативной памяти, расположена область данных MS-DOS. Здесь находятся внутренние переменные и структуры данных MS-DOS. Основные структуры данных организованы в виде дерева. Корнем является векторная таблица связи, которая содержит адреса всех остальных структур: список блоков управления памятью (MCB ), список блоков управления устройствами MS-DOS , таблицу файлов, дисковые буферы и т. д.
В векторной таблице связи есть и другая полезная информация, открывающая доступ практически ко всем внутренним структурам данных операционной системы. Можно, например, получить доступ ко всем резидентным и загружаемым драйверам операционной системы. Можно узнать, какие в системе установлены дисковые устройства и каковы их характеристики. Для получения адреса векторной таблицы связи можно воспользоваться недокументированной внутренней функцией 52h прерывания 21h.
Смещение байт |
Размер байт |
Описание |
-2 |
2 |
Сегмент первого блока памяти MCB |
0 |
4 |
Указатель на первый блок управления устройствами MS-DOS (MS-DOS DCB) |
4 |
4 |
Указатель на таблицу файлов MS-DOS |
8 |
4 |
Указатель на драйвер CLOCK$ , установленный в файле config.sys или резидентный |
12 |
4 |
Указатель на драйвер CON , установленный в файле config.sys или резидентный |
16 |
2 |
Максимальный размер блока (в байтах) для устройства, выполняющего передачу данных отдельными блоками |
18 |
4 |
Указатель на структуру, описывающую дисковые буферы |
22 |
4 |
Указатель на массив информации об устройствах |
26 |
4 |
Указатель на таблицу FCB |
30 |
2 |
Размер таблицы FCB |
32 |
1 |
Число устройств, выполняющих передачу данных отдельными блоками |
33 |
1 |
Значение LASTDRIVE в файле config.sys (по умолчанию равно 5) |
34 |
? |
Начало драйвера NUL. Этот драйвер всегда первый в списке драйверов MS-DOS |
Одно из полей векторной таблицы связи содержит указатель на начало Массива Текущих Каталогов. Каждый элемент массива - Структура Текущего Каталога (CDS) сохраняет информацию о текущем каталоге на логическом диске.
Размер |
Данные |
67 |
ASCIIZ-строка, содержащая полный путь к текущему каталогу. |
2 |
Слово признаков |
1 |
Номер DPB, для этого диска |
1 |
Зарезервировано |
2 |
номер 1-го кластера родительского каталога |
2 |
номер элемента в родительском каталоге |
2 |
номер 1-го кластер текущего каталога |
4 |
Зарезервировано |
Массив Текущих Каталогов представляет собой именно массив, а не список - его элементы располагаются в смежных областях памяти один за другим.
MS-DOS создает системную таблицу файлов SFT (System File Table ) и помещает ее адрес в поле file_tab векторной таблицы связи. В этой таблице для каждого открытого файла хранится такая информация, как количество файловых идентификаторов, связанных с данным файлом, режим открытия файла (чтение, запись и т. д.), слово информации об устройстве, указатель на заголовок драйвера, обслуживающего данное устройство, элемент дескриптора файла (дата, время, имя файла, номер начального кластера, распределенного файлу), номер последнего прочитанного кластера и т. д. Каждая таблица SFT содержит указатель на следующую таблицу, а также количество управляющих блоков файлов DFCB.
Таблица 6. Формат таблицы SFT.
Смещение, байт |
Размер, байт |
Имя поля |
Описние |
0 |
4 |
next |
Указатель на следующую таблицу файлов SFT |
4 |
2 |
file_count |
Количество файлов, описанных в этой таблице с помощью блоков DFCB |
Блоки DFCB (по одному для каждого файла) расположены в конце таблицы SFT и имеют следующий формат:
Смещение, байт |
Размер, байт |
Описание |
0 |
2 |
Количество идентификаторов, связанных с данным файлом |
2 |
1 |
Режим доступа к файлу, заданный при открытии файла |
3 |
2 |
Зарезервировано |
5 |
2 |
Информация IOCTL , полученная для устройства, на котором расположен этот файл. |
7 |
4 |
Указатель на драйвер, обслуживающий устройство, содержащее файл |
11 |
2 |
Номер первого кластера, распределенного файлу |
13 |
2 |
Время последнего изменения файла в упакованном формате |
15 |
2 |
Дата последнего изменения файла в упакованном формате |
17 |
4 |
Размер файла в байтах |
21 |
4 |
Текущее смещение внутри файла в байтах |
25 |
2 |
Зарезервировано |
27 |
2 |
Зарезервировано |
29 |
3 |
Зарезервировано |
32 |
1 |
Зарезервировано |
33 |
11 |
Имя файла в формате FCB |
44 |
2 |
Зарезервировано |
46 |
2 |
Адрес блока PSP программы, открывшей файл |
48 |
2 |
Зарезервировано |
50 |
2 |
Номер только что прочитанного кластера |
52 |
4 |
Зарезервировано |