Напишете своята операционна система (EV) бюлетин

Добър ден! Последно освобождаване пращат пощенски отдавна. Моите извинения, но аз, за ​​съжаление, не е достатъчно време. И сега, след толкова дълъг период от време, желание да се пренапише операционната система от нулата, да определи стари грешки (и добавяне на нови такива, кашлица, кашлица. Може би трябва да се организира на операционната система, тъй като проектът OpenSource, че винаги е на разположение пълен изходен код, както и на всички може да направи корекции (аз трябваше да изпрати писмо с искане за пълно резултата.

Дълго време не е писал нови версии. че е време да го оправя. Днес, ние сме се променили много обработка структура на прекъсванията IRQ. Преди всяко прекъсване е описан поотделно. Сега имаме всички ние намаляваме обработка прекъсва в една функция. Ако сега се възползват от това не е очевидно, а след това по-късно той ще бъде по-забележима. В крайна сметка, в крайна сметка в основата трябва да се случва в IRQ-прекъсне изпрати водачът програмата съобщение (ние имаме една и съща микро ядрото. И промяната в съобщението ще прекъсне само номер. Ние няма да пишем 1.

Причината за падането на операционната система, когато е установено, оптимизация - най-memset (като memcpy) се променя стойността на регистър EDI, който се счита за един и същ за C разговори конвенции (викащата функция трябва да спаси стойността получих доста радикално решение -. От стандартните функции на библиотеката ще бъде доведен до комплект файл . за по-добра оптимизация (низови операции компилатор прави неефективно) и простота на писане сега в нашия проект се появява stdlib.i386.asm файл: формат ELF обществен memset кръчма.

В този брой се вгледаме в теорията на многозадачна и да се подготвят нашия код, за да му подкрепа. До края на този брой на многозадачност ние не го направим, защото това е една доста сложна тема. Теория Multitasking - способността да стартирате няколко операционни системи в паралелни програми. В идеалния случай, всяко приложение работи на отделен процесор, независима и напълно паралелно. Все пак, това е една идеална ситуация и реалност обикновено е недостижим, така че след много процеси трябва да споделят една.

В този брой ние най-накрая реализира виртуална памет мениджър, който не само знае ", че проектът има едно" но ", където очаква." Неговото изпълнение в момента може да се разглежда като проект (за разлика от физическото мениджър памет) и отлична работа, не мога да гарантирам. За да започнете правилните малки грешки в map_pages: булев map_pages (phyaddr page_dir, нищожен * vaddr, phyaddr paddr, size_t брой, неподписани INT флагове)

В този брой се вгледаме в виртуална управителя на паметта и подобряване на някои други части memory_manager.c. Memory_manager.h заглавния файл ще изглежда така: #ifndef MEMORY_MANAGER_H #define MEMORY_MANAGER_H #include "stdlib.h" #define PAGE_SIZE 0x1000 #define PAGE_OFFSET_BITS 12 #define PAGE_OFFSET_MASK 0xFFF #define PAGE_TABLE_INDEX_BITS 10 #define PAGE_TABLE_INDEX_MASK 0x3FF #define PHYADDR_BITS 32 #define PAGE_PRESENT (1 <<0) #define PAGE_WRITABLE (1 <<.