При закрытии подписчики были переданы в рассылку "Для бухгалтера: программы, новости, советы" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Сегодня в номере:
Начнем с того, что файлов не существует вообще. Файл - это исключительно изобретенная для нашего с вами удобства абстракция операционной системы, и магнитные диски о файлах не имеют ни малейшего понятия. О чем они имеют понятие - так это о головках, цилиндрах и секторах. Если носитель состоит из нескольких дисков (таковы обычно жесткие диски), то считывание и запись информации на каждый из дисков производится собственной головкой. Соответственно головка - это номер диска носителя.
Каждый диск носителя разделен на кольцеобразные дорожки, также их именуют цилиндрами. Каждая дорожка в свою очередь делится на секторы, размер которых обычно составляет 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-го количества секторов с диска в памятьПараметры: DL - номер диска (носителя). Например 0 - дисковод A: DH - номер головки старшие два бита CL и CH - номер цилиндра (дорожки) CL - младшие шесть бит - номер сектора AL - количество секторов (в сумме не более одного цилиндра) ES:BX - адрес буфера в памяти, в который будут считаны данные В случае ошибки функция устанавливает флаг CF Эта функция нам понадобится только для чтения с дискеты, поэтому можно считать, что номер цилиндра находится в CL, а номер сектора - в CH Эволюция операционных систем Сегодня мы продолжим разговор, начатый в позапрошлом выпуске рассылки, но для начала вспомним, какие периоды развития прошли операционные системы до 1970 года: "Живые" ОС (оператор-человек) Системы пакетной обработки Системы разделения времени Гибриды пп. 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 http://subscribe.ru/ E-mail: ask@subscribe.ru Отписаться Убрать рекламу
Головку, Цилиндр и Сектор
int 0x10
int 0x13
Напоминаю, что при старте компьютера BIOS загружает только первый сектор диска. Загрузку остальной части системы необходимо будет производить самостоятельно и самый легкий способ это сделать - использовать прерывание int 0x13
Функций, которые нам понадобятся, две (напоминаю, что номер вызываемой функции заносится в регистр AH перед вызовом прерывания): Функция 0x0e прерывания int 0x10 - вывод на экран в режиме телетайпа (это означает что функция сама будет перемещать курсор после вывода символа, а также воспринимать управляющие символы, такие как 0x0A (Line Feed, LF) - символ новой строки, или 0x0D (Carriage Return, CR) - символ возврата каретки) Параметр: код символа в AL
AH
0x0A (Line Feed, LF)
0x0D (Carriage Return, CR)
AL
Функция 0x02 прерывания int 0x13 - считывание n-го количества секторов с диска в памятьПараметры:
DL
DH
старшие два бита CL и CH
CL
ES:BX
В случае ошибки функция устанавливает флаг CF
CF
Эта функция нам понадобится только для чтения с дискеты, поэтому можно считать, что номер цилиндра находится в CL, а номер сектора - в CH
CH
Сегодня мы продолжим разговор, начатый в позапрошлом выпуске рассылки, но для начала вспомним, какие периоды развития прошли операционные системы до 1970 года:
Конец 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 http://subscribe.ru/ E-mail: ask@subscribe.ru Отписаться Убрать рекламу
На сегодня все, уважаемые подписчикиКак всегда, мой почтовый ящик открыт для вас: lonesome@lowlevel.ru Также вы можете задавать интересующие вас вопросы в форуме lowlevel.ru Всего наилучшего! Lonesome
{#template MAIN} {#include js_tmpl_auth_reg_tab} {#if $P.login_register_tab == 1} Войти на сайт {* {#include js_tmpl_auth_reg_button} *} {#include js_tmpl_auth_reg_action} {#include js_tmpl_auth_reg_descr} Если вы еще не с нами, то начните с регистрации Вход для авторов {#/if} {#if $P.login_register_tab == 2} Регистрация {* {#include js_tmpl_soc_auth_reg_descr} *} {#include js_tmpl_auth_reg_soc} {#include js_tmpl_auth_reg_agree} {* #include js_tmpl_auth_reg_descr *} {#include js_tmpl_auth_reg_action} {* {#include js_tmpl_auth_reg_button} *} {#include js_tmpl_auth_reg_descr} {#include js_tmpl_soc_auth_reg_descr} {#/if} {* *} {#/template MAIN} {#template js_tmpl_auth_reg_tab} Вход на сайт Регистрация {#/template js_tmpl_auth_reg_tab} {#template js_tmpl_auth_reg_action} {#if $P.login_register_tab == 1} {#include js_tmpl_auth_reg_soc} {#/if} {#if $P.login_register_tab == 1} E-mail или код подписчика Пароль Русская раскладка клавиатуры! У вас включен Caps Lock! У вас включен Caps Lock и русская раскладка клавиатуры! Чужой компьютер Забыли пароль? {#/if} {#if $P.login_register_tab == 2} E-mail Я ознакомился и согласен с условиями сервиса Subscribe.ru Нажимая на кнопку "Готово!", я даю согласие на обработку персональных данных {* Я хочу получать новости о скидках на одежду *} Готово! {#/if} {#/template js_tmpl_auth_reg_action} {#template js_tmpl_auth_reg_agree} Я ознакомился и согласен с условиями сервиса Subscribe.ru {#/template js_tmpl_auth_reg_agree} {#template js_tmpl_auth_reg_button} {#if $P.login_register_tab == 1} Email OpenID Вконтакте Mail.Ru {#/if} {#if $P.login_register_tab == 2} Email OpenID Вконтакте Mail.Ru {#/if} {#/template js_tmpl_auth_reg_button} {#template js_tmpl_auth_reg_descr} {#if $P.login_register_tab == 1} Для оформления подписки на выбранную рассылку, работы с интересующей вас группой или доступа в нужный вам раздел, просим авторизоваться на Subscribe.ru {#/if} {#if $P.login_register_tab == 2} Для регистрации укажите ваш e-mail адрес. Адрес должен быть действующим, на него сразу после регистрации будет отправлено письмо с инструкциями и кодом подтверждения. {#/if} {#/template js_tmpl_auth_reg_descr} {#template js_tmpl_soc_auth_reg_descr} Или зарегистрируйтесь через социальную сеть. {#/template js_tmpl_soc_auth_reg_descr} {#template js_tmpl_auth_reg_soc} {#if $P.login_register_tab == 1} {#/if} {#if $P.login_register_tab == 2} {#/if} {#/template js_tmpl_auth_reg_soc}
{#include js_tmpl_auth_reg_descr}
{#template MAIN} {#include js_tmpl_auth_reg_tab} {#include js_tmpl_auth_reg_descr} {#include js_tmpl_auth_reg_action} {#/template MAIN} {#template js_tmpl_auth_reg_tab} Регистрация {#/template js_tmpl_auth_reg_tab} {#template js_tmpl_auth_reg_descr} Пожалуйста, подтвердите ваш адрес.Вам отправлено письмо для подтверждения вашего адреса {$P.register_confirm_mail}.Для подтверждения адреса перейдите по ссылке из этого письма. {#/template js_tmpl_auth_reg_descr} {#template js_tmpl_auth_reg_action} Или введите код из письма: Не пришло письмо? Пожалуйста, проверьте папку Спам (папку для нежелательной почты). Вышлите мне письмо еще раз! Готово {#/template js_tmpl_auth_reg_action}