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
Последние статьи :
  Rust 07.11   
  Go 25.12   
  EXT4 10.11   
  FS benchmark 15.09   
  Сетунь 23.07   
  Trees 25.06   
  Apache 03.02   
  SQL 30.07   
  JFS 10.06   
  B-trees 01.06   
 
TOP 20
 Go Web ...825 
 Httpd-> История Ap...517 
 2.0-> Linux IP Networking...438 
 MySQL & PosgreSQL...380 
 Trees...378 
 Secure Programming for Li...369 
 Assembler...304 
 TCP 2...279 
 Secure Programming for Li...270 
 Steve Pate 3...269 
 Mod_perl 1...263 
 Cluster 3...262 
 Ethreal 1...256 
 Максвелл 3...254 
 Advanced Bash Scripting G...244 
 Python...236 
 Daniel Bovet 5...231 
 Linux Inline Assembly...231 
 Rubni-Corbet -> Глав...230 
 Steve Pate 1...229 
 
  01.06.2017 : 2215600 посещений 

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).
Оставьте свой комментарий !

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

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