Rambler's
Top100

Разработка операционных систем. Выпуск 4

Автор: lonesome [TSH/Digital Daemons]
Дата: 26.05.2003
Раздел: Разработка ОС

ПРЕДЫДУЩИЙ ВЫПУСК      СЛЕДУЮЩИЙ ВЫПУСК

Разработка операционных систем

Выпуск 4

Сегодня в номере:

Сказ о том, как хранится информация на магнитных дисках

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

Каждый диск носителя разделен на кольцеобразные дорожки, также их именуют цилиндрами. Каждая дорожка в свою очередь делится на секторы, размер которых обычно составляет 512 байт.

Итого: записать/считать с диска можно минимум 512 байт (не менее сектора) и для этого необходимо указать Головку, Цилиндр и Сектор. Вот такая вот трехмерная адресация...

Основные функции BIOS, которые нам понадобятся

BIOS предоставляет большое количество функций, но поскольку основная их часть может использоваться только в 16-битном реальном режиме (касательно нашей системы - только при работе загрузчика), практически полезными нам будут прерывания:
int 0x10 - видеосервис
int 0x13 - дисковый ввод/вывод

Напоминаю, что при старте компьютера BIOS загружает только первый сектор диска. Загрузку остальной части системы необходимо будет производить самостоятельно и самый легкий способ это сделать - использовать прерывание int 0x13

Функций, которые нам понадобятся, две (напоминаю, что номер вызываемой функции заносится в регистр AH перед вызовом прерывания):
Функция 0x0e прерывания int 0x10 - вывод на экран в режиме телетайпа (это означает что функция сама будет перемещать курсор после вывода символа, а также воспринимать управляющие символы, такие как 0x0A (Line Feed, LF) - символ новой строки, или 0x0D (Carriage Return, CR) - символ возврата каретки)
Параметр: код символа в AL

Функция 0x02 прерывания int 0x13 - считывание n-го количества секторов с диска в память
Параметры:

В случае ошибки функция устанавливает флаг CF

Эта функция нам понадобится только для чтения с дискеты, поэтому можно считать, что номер цилиндра находится в CL, а номер сектора - в CH

Эволюция операционных систем

Сегодня мы продолжим разговор, начатый в позапрошлом выпуске рассылки, но для начала вспомним, какие периоды развития прошли операционные системы до 1970 года:

  1. "Живые" ОС (оператор-человек)
  2. Системы пакетной обработки
  3. Системы разделения времени
  4. Гибриды пп. 2 и 3

Конец 60-х - начало 70-х годов ознаменовались появлением "мини-компьютеров" (предшественников современных персональных компьютеров). Их вычислительные способности были гораздо слабее чем у мейнфреймов. Поскольку архитектура этих компьютеров сильно отличалась от предшествующих, для них потребовались новые операционные системы. Одна их наиболее популярных за всю историю компьютерных технологий операционная система UNIX впервые была создана именно для мини-компьютеров. Первый вариант UNIX был системой разделения времени.

В конце 70-х годов начали стали бурно развиваться компьютерные сети, как локальные, так и глобальные, что в немалой степени было связано с удешевлением компьютеров. Был создан стек (набор) протоколов TCP/IP, который сейчас не только используется в сети Интернет, но и очень популярен в локальных сетях. Первой операционной системой, в которой эти протоколы были полноценно реализованы, стала UNIX. Таким образом UNIX из обычной системы разделения времени стала сетевой системой - системой, способной взаимодействовать по сети с другими ОС.

В начале 80-х появление сверхбольших интегральных схем привело к созданию компьютеров, которые по размеру были меньше мини-компьютеров и стоили гораздо дешевле - персональным компьютерам. Многие компании начали выпускать такие компьютеры, но за счет открытой архитектуры (нечно вроде аппаратного Open-Source ;)) главенства на рынке (которое сохраняется и по сей день) удалось добиться компьютерам IBM PC на базе процессоров Intel. С тех пор и по сей день у большинства людей слово компьютер ассоциируется с IBM PC, а слово процессор - с Intel.

Впрочем поговорим об операционных системах для этих компьютеров. Процессор был достаточно примитивен, такой стала и первая ОС для IBM PC - MS DOS. Эволюция ОС, происходившая на мини-компьютерах повторялась на персональных - с самых простых и примитивных систем до современных Windows NT (2000, XP...), Linux, *BSD...

Следующей ОС для IBM PC стала OS/2, которая была совместно разработана IBM и Microsoft. Впрочем успеха она не имела и пальма первенства перешла к ОС Windows, которая была создана на базе MS-DOS. Примерно в это же время (после выхода 32-разрядного процессора 386, который качественно отличался от предыдущих) в мир персональных компьютеров пришла UNIX, которая представлена сейчас такими экземплярами как Linux, FreeBSD, OpenBSD, NetBSD и другими. Microsoft же создала полноценную 32-разрядную ОС Windows NT и недавно похоронила последнюю наследницу MS-DOS - Windows ME.

Outro

На сегодня все, уважаемые подписчики
Как всегда, мой почтовый ящик открыт для вас:
lonesome@lowlevel.ru
Также вы можете задавать интересующие вас вопросы в форуме lowlevel.ru
Всего наилучшего!
Lonesome


ПРЕДЫДУЩИЙ ВЫПУСК      СЛЕДУЮЩИЙ ВЫПУСК

Rambler's Top100