Search     or:     and:
 LINUX 
 Language 
 Kernel 
 Package 
 Book 
 Test 
 OS 
 Forum 
 iakovlev.org 
 OS
 osjournal 
 Protected Mode 
 Hardware 
 Kernels
  Dark Fiber
  BOS
  QNX
  OS Dev
  Lecture notes
  MINIX
  OS
  Solaris
  История UNIX
  История FreeBSD
  Сетунь
  Эльбрус
NEWS
Последние статьи :
  Тренажёр 16.01   
  Эльбрус 05.12   
  Алгоритмы 12.04   
  Rust 07.11   
  Go 25.12   
  EXT4 10.11   
  FS benchmark 15.09   
  Сетунь 23.07   
  Trees 25.06   
  Apache 03.02   
 
TOP 20
 Linux Kernel 2.6...3145 
 Trees...1522 
 William Gropp...1478 
 Ethreal 3...1443 
 C++ Patterns 3...1431 
 Ethreal 4...1424 
 Максвелл 3...1416 
 Rodriguez 6...1414 
 Максвелл 5...1410 
 Ext4 FS...1404 
 Httpd-> История Ap...1403 
 Kamran Husain...1402 
 Стивенс 9...1398 
 Go Web ...1397 
 Robert Love 5...1396 
 K&R 1...1394 
 Erlang...1389 
 Perl OOP...1386 
 OS ->Intel Manual 1...1385 
 Rubni-Corbet -> Глав...1383 
 
  01.01.2024 : 3621733 посещений 

iakovlev.org

aiorOS

Автор - Salvatore Iengo.
http://aioros.sourceforge.net

aiorOS - 32-битная операционная система,созданная в образовательных целях. Ядро поддерживает системные вызовы,многозадачность,пейджинг(до 4 гигов на процесс). Реализована загрузка бинарников в качестве пользовательских процессов.
Прослеживается связь с линуксовым ядром,автор сам об этом говорит.

Образ

Код

Использование памяти при загрузке ядра показано на схеме
 ; Memory structure
 ;
 ;|            |               |      /\
 ;|            |               |      ||
 ;|   KERNEL   |               |      || (max 4GB)
 ;| (max 4GB)  |               |      ||
 ;|(cod.& dat.)|               | KERNEL CODE, DATA & STACK
 ;|            |               |
 ;|------------| 0x1000:0x0000 | (pmode 0x08:0x00010000) ----------------
 ;|            |               |
 ;|            |               |  GDT + IDT + PAGEDIR
 ;|            |               |      ||
 ;|------------| 0x07C0:0x0200 |      ||
 ;| BOOTSECTOR |               |      ||
 ;|------------| 0x07C0:0x0000 |      || (max 64KB)
 ;|            |               |      ||
 ;|------------|               |      ||
 ;| 16bit BIOS |               |      \/
 ; ------------  0x0000:0x0000 |-----------------------------------------
 
 

На рисунке представлены регистры интеловского процессора и организация памяти в защищенном режиме

На рисунке представлено устройство первого нижнего метра памяти - начало вверху

На рисунке показано , что в реальном режиме сегмент ограничен 64 КБ, и адрес начала такого сегмента всегда кратен 16 байтам. Реальный физический адрес получается по следующему алгоритму: берется значение сегментного регистра,делается сдвиг этого значения - shift <<4 , и к результату прибавляем смещение внутри 64 КБ.

Показан принцип виртуальной памяти. Имеется цепочка , на входе которой стоит логический адрес,который последовательно трансформируется сначала в линейный, а потом уже в реальный физический адрес. Виртуальная память основана на 2-х китах - сегментации и постраничной адресации

Показана организация памяти при загрузке aiorOS

Глобальная таблица состоит из 3-х дескрипторов

После загрузки ядро обслуживает прерывания. При нажатии на клавишу ядро переходит в пользовательский режим

Показана организация стека при переключении между режимами пользователь-ядро. Пространство ядра окрашено желтым цветом. При переключении в режим ядра флаги текущей задачи хранятся в стеке ядра. DPL0 и DPL3 - это стеки для нулевого и 3-го уровня защиты.

При переключении текущий процесс нужно восстановить именно в той точке, в которой он был прерван ядром.

Каждая задача обладает собственной TSS , стеком , pid.

Таймер настроен на работу с частотой 100 раз в секунду. При этом приоритет текущей задачи уменьшается каждый раз на единицу. Когда он становится равным 0, происходит contextswitch. Задача проходит состояния : READY
RUNNING
STOPPED
EXITING
TERMINATED
Сам contextswitch реализован с помощью инструкции ljmp.

Аппаратные прерывания типа fault (не увеличивают eip).
Оставьте свой комментарий !

Ваше имя:
Комментарий:
Оба поля являются обязательными

 Автор  Комментарий к данной статье