Sunday, 20.08.2017, 07:39
| RSS

Engineer M DevelopmentMA

Главная » 2009 » February » 9 » Операционная система на assembler 1 часть
Операционная система на assembler 1 часть
00:09
Всех студентов специальности ИТ ожидает написание своей ОС на ассемблере. До меня это, так же дошло. Мне пришлось встретиться лицом к лицу с этим "ужасным" языком :) , ниче - выдержал. Так вот сначала:

Какие функции выполняет операционная система?

Операционная система должна выполняет следующие функции:

·         Обеспечивать загрузку пользовательских программ в оперативную память и их исполнение;

·         Обеспечивать управление памятью. В простейшем случае это указание единственной загруженной программе адреса, на котором заканчивается память, доступная для использования, и начинается память, занятая системой.

·         Обеспечивать работу с устройствами долговременной памяти, такими как магнитные диски, ленты, оптические диски и т.д.

·         Предоставлять более или менее стандартизированный доступ к различным периферийным устройствам.

·         Предоставлять некоторый пользовательский интерфейс.

 

Что такое загрузочный монитор и каково его предназначение?

Загрузочным монитором называется записанная в ПЗУ программа, которая находиться по тому адресу, по которому процессор передает управление в момент включения питания и производит первичную инициализацию процессора, тестирование памяти и обязательного периферийного оборудования, и, наконец, начинает загрузку системы

В чем отличие загрузочного монитора от консольного монитора?

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

Приведите определение первичного загрузчика.

Первичным загрузчиком (загрузочный сектор, boot-сектор) – это содержимое нулевого сектора нулевой дорожки диска, с которого производится загрузка. Первичный загрузчик, пользуясь сервисами загрузочного монитора, ищет на диске начало файловой системы своей родной ОС, находит в этой файловой системе файл с определенным именем, считывает его в память и передает этому файлу управление.

 Что такое бутстрап?

Бустрап - это последовательное исполнение втягивающих друг друга загрузчиков возрастающей сложности.

Как происходит загрузка операционной системы?

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

Возможен вариант загрузки по сети: ПЗУ, установленное на сетевой карте, посылает в сеть пакет стандартного содержания, который содержит запрос к серверу удаленной загрузки. Этот сервер передает по сети вторичный загрузчик и т. д.

Ох, не люблю я теорию, так что если вы заметили свои записи, извените, верхняя болтовня досталось от дедушки :) .  А я больше практику люблю, так вот сразу за код хватаюсь.

 Вот тут, имеется код загрузчика и ядро:

Загрузчик    boot.asm

kernel_seg  equ   1000h

org 100h

start:

      jmp begin

begin:     

      mov ax,kernel_seg

      mov es,ax

      mov bx,100h

      call Write

exit:

      call far kernel_seg:0100h

      ret

proc  write

      mov al,1h

      mov dl,0

      xor ch,ch

      mov cl,2h

      mov dh,0

      mov ah,02h

      int 13h

      ret

endp Write 

end start

 

Ядро kernel.asm

code segment para public 'code'

 assume cs:code, ds: code, ss: code ,es: code

 org 100h

main proc

 jmp EndData

string db "Obweakovaea Operatsionnaea Sistema"

string_len equ $-string

EndData:

xor ax,ax

mov bh,07h

xor cx,cx

mov dx,0184fh

mov ah,06h

int 10h

mov ah,13h

xor al,al

xor bh,bh

mov cx,string_len

mov bl,06h

mov bp,offset string

mov dl,10

mov dh,10

int 10h

mov ah,00h

int 16h

main endp

code ends 

end main

 
Категория: Lessons | Просмотров: 8650 | Добавил: admin | Рейтинг: 5.0/3 |
Всего комментариев: 4
4  
Чем комплировать ;)???Скачай emuljator8086 и комплируй и програмируй на здоровье!!!

3  
нихуя себе вопросы.. в шкоул идите, masm учите

2  
Не знаю даже. На fasm'е не прокатило.

1  
А чем компилировать не подскажите? happy nasm, tasm, fasm ...

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Меню сайта
Разделы новостей
Concept Software [2]
Programs are planned or under construction.
Software [10]
Release Software
Lessons [12]
About Me [1]
Infa about yourself, documents, certificates ...
Documentation [4]
Documentation of projects
Календарь новостей
«  February 2009  »
SuMoTuWeThFrSa
1234567
891011121314
15161718192021
22232425262728
Поиск
Друзья сайта
Статистика
Copyright Macarov Anatoli © 2017
Free website builderuCoz