码迷,mamicode.com
首页 > 其他好文 > 详细

[新手易懂]操作系统的实现与保护模式

时间:2016-05-08 18:19:21      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:

一个操作系统是怎么实现的呢?让我们慢慢来学习,本文章将带大家来了解操作系统各种功能的实现以及保护模式。同时告诉大家中国自主开源操作系统UdoOS,UdoOS项目成立于2016年2月,是一款由中国人自主开发的基于自主开发的Udo内核的自主操作系统,在UdoOS中没有任何其他系统的代码,UdoOS官网:xh.14eowi.com

 

 一、引导扇区

1.1  电脑的启动过程

CPU初始化

   ↓

BIOS自检

  ↓

读取有效启动扇区

  ↓

载入0c700h内存

  ↓

跳到0c700h开始运行

 

1.2  什么是引导扇区

所谓扇区,就是硬盘(存储设备)的划分单位,一个扇区就是512个字节。引导扇区就是硬盘中的第一个扇区,所以引导扇区必须是512个字节,不能多也不能少

 

1.3  运行地址

 

前面说过bios会把引导扇区载入0c700h内存开始运行,那么必须让编译器从0c700h开始编译,所以第一句应该写 org 0c700。

 

1.4  Loader

 

引导扇区只有512个字节,所以不能装下整个操作系统,所以要在引导扇区中写一个内核加载器(Loader),它的任务就是把找出内核在那个扇区开始在那个扇区结束,并读取内核到内存,然后跳到这段内核开始运行。

 

1.5  读硬盘扇区

 

mov ax,开始地址

mov es,ax

mov bp,0x00

mov ah,0x02

mov al,扇区数

mov ch,柱面号

mov cl,扇区号

mov dh,磁头数

mov dl,0x80   ;0x80为硬盘,0x00为软盘

 int 0x10

 

以上为汇编代码

代码详解:

该代码通过bios中断读取硬盘并载入内存。

 

1.4  跳入内核开始运行

jmp 开始地址:0000

 

注意:这里的地址必须与读硬盘时的地址一致

 

二、内核结构与保护模式

2.1  运行地址

 

org 运行地址

注意:这里的运行地址必须与引导扇区的开始地址一致

 

2.2  进入保护模式

 

mov ax,0x00

mov ds,ax

lgdt [ds:GDT]

lidt [ds:IDT]

;载入GDT,IDT

in al,0x92

or al,00000010B

out 0x92,al

;打开21号总线

cli

mov eax,cr0

or eax,1

mov cr0,eax

;正式进入保护模式

jmp 运行地址:标号名

[新手易懂]操作系统的实现与保护模式

标签:

原文地址:http://www.cnblogs.com/xhsw/p/5470873.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!