Составители:
В MS-DOS в первичном разделе может быть сформирован только один логический
диск, а в расширенном - любое их количество. Каждый логический диск «управляется»
своим логическим приводом. Каждому логическому диску на винчестере соответствует
своя (относительная) логическая нумерация. Физическая же адресация жесткого диска
сквозная. Первичный раздел DOS включает только системный логический диск без ка-
ких-либо дополнительных информационных структур.Расширенный раздел DOS содер-
жит вторичную запись MBR (secondary MBR, SMBR), в состав которой вместо partition
table входит таблица логического диска (LDT, logical disk table), ей аналогичная. Табли-
ца LDT описывает размещение и характеристики раздела, содержащего единственный
логический диск, а также может специфицировать следующую запись SMBR. Следова-
тельно, если в расширенном разделе DOS создано К логических дисков, то он содержит
К экземпляров SMBR, связанных в список. Каждый элемент этого списка описывает со-
ответствующий логический диск и ссылается (кроме последнего) на следующий элемент
списка.
На основании вышесказанного, процесс загрузки ОС состоит из следующих этапов
[2]. Первоначально вызывается прерывание BIOS INT 19h, что инициализирует проце-
дуру начальной загрузки (bootstrap loader). Эта процедура определяет первое готовое
устройство из списка разрешенных и доступных (гибкий или жесткий диск, CD-ROM,
ZIP-drive, сетевой адаптер и др.) и пытается загрузить с него в ОП программу первона-
чальной загрузки - non-system bootstrap. Далее этот загрузчик определяет на диске ак-
тивный раздел, загружает с него загрузчик ОС - system bootstrap и передает ему управ-
ление. И, наконец, загрузчик ОС загружает необходимые файлы операционной системы
и передает ей управление. Далее ОС выполняет инициализацию своих программных и
аппаратных средств. При этом, как правило, добавляются новые сервисы, вызываемые
через механизм программных прерываний, а также расширяются или обновляются неко-
торые сервисы BIOS.
§ 5.3. Организация файлового ввода-вывода в ОС Windows
5.3.1. API-функции для организации ввода-вывода
Обычно, если программист хочет открыть файл, он использует один из стандарт-
ных вызовов библиотеки языка программирования (например, в языке C это функция
fopen). В большинстве языков программирования предусмотрены достаточно удобные
высокоуровневые средства работы с файлами. Однако в некоторых ситуациях требуется
открыть файл и работать с ним на уровне операционной системы, не используя высоко-
уровневые функции. Например, прямое обращение к операционной системе может по-
требоваться в случае, если вы намерены использовать асинхронный ввод/вывод.
Системной функцией, с помощью которой осуществляется открытие файла, назы-
вается CreateFile. В зависимости от флагов, которые программист передает в качестве
параметров, она может либо действительно создать новый файл, либо открыть уже су-
ществующий. В любом случае вызов CreateFile() создает дескриптор файла и возвращает
его вызвавшей программе, которая может использовать этот дескриптор для дальнейшей
работы с файлом. Описание аргументов функции приведено в таблице 5.4 [10].
HANDLE CreateFile(LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDispostion,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile);
132
В MS-DOS в первичном разделе может быть сформирован только один логический
диск, а в расширенном - любое их количество. Каждый логический диск «управляется»
своим логическим приводом. Каждому логическому диску на винчестере соответствует
своя (относительная) логическая нумерация. Физическая же адресация жесткого диска
сквозная. Первичный раздел DOS включает только системный логический диск без ка-
ких-либо дополнительных информационных структур.Расширенный раздел DOS содер-
жит вторичную запись MBR (secondary MBR, SMBR), в состав которой вместо partition
table входит таблица логического диска (LDT, logical disk table), ей аналогичная. Табли-
ца LDT описывает размещение и характеристики раздела, содержащего единственный
логический диск, а также может специфицировать следующую запись SMBR. Следова-
тельно, если в расширенном разделе DOS создано К логических дисков, то он содержит
К экземпляров SMBR, связанных в список. Каждый элемент этого списка описывает со-
ответствующий логический диск и ссылается (кроме последнего) на следующий элемент
списка.
На основании вышесказанного, процесс загрузки ОС состоит из следующих этапов
[2]. Первоначально вызывается прерывание BIOS INT 19h, что инициализирует проце-
дуру начальной загрузки (bootstrap loader). Эта процедура определяет первое готовое
устройство из списка разрешенных и доступных (гибкий или жесткий диск, CD-ROM,
ZIP-drive, сетевой адаптер и др.) и пытается загрузить с него в ОП программу первона-
чальной загрузки - non-system bootstrap. Далее этот загрузчик определяет на диске ак-
тивный раздел, загружает с него загрузчик ОС - system bootstrap и передает ему управ-
ление. И, наконец, загрузчик ОС загружает необходимые файлы операционной системы
и передает ей управление. Далее ОС выполняет инициализацию своих программных и
аппаратных средств. При этом, как правило, добавляются новые сервисы, вызываемые
через механизм программных прерываний, а также расширяются или обновляются неко-
торые сервисы BIOS.
§ 5.3. Организация файлового ввода-вывода в ОС Windows
5.3.1. API-функции для организации ввода-вывода
Обычно, если программист хочет открыть файл, он использует один из стандарт-
ных вызовов библиотеки языка программирования (например, в языке C это функция
fopen). В большинстве языков программирования предусмотрены достаточно удобные
высокоуровневые средства работы с файлами. Однако в некоторых ситуациях требуется
открыть файл и работать с ним на уровне операционной системы, не используя высоко-
уровневые функции. Например, прямое обращение к операционной системе может по-
требоваться в случае, если вы намерены использовать асинхронный ввод/вывод.
Системной функцией, с помощью которой осуществляется открытие файла, назы-
вается CreateFile. В зависимости от флагов, которые программист передает в качестве
параметров, она может либо действительно создать новый файл, либо открыть уже су-
ществующий. В любом случае вызов CreateFile() создает дескриптор файла и возвращает
его вызвавшей программе, которая может использовать этот дескриптор для дальнейшей
работы с файлом. Описание аргументов функции приведено в таблице 5.4 [10].
HANDLE CreateFile(LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDispostion,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile);
132
Страницы
- « первая
- ‹ предыдущая
- …
- 128
- 129
- 130
- 131
- 132
- …
- следующая ›
- последняя »
