操作系统课程简介与引导扇区

操作系统全部笔记目录见:操作系统笔记整理

该课程只学比较基础的操作系统:

即单核CPU,以及内存管理文件系统等最基本的知识,而暂不涉及网络管理等更高级的知识。

课程目标:能够设计,修改操作系统相关模块,掌控操作系统,保证完成八个大作业。(因为要自己动手实践,所以,比较难。老师原话:很难。)

看了斯坦福的操作系统目标,都不好意思说自己学过操作系统了。世界计算机最牛逼的学府卡内基梅隆的要求是给一个板子,自己通过数据手册来给它上操作系统。

有些小激动啊。虽然感觉凭借多年的编程技术,这肯定难不倒我,但肯定还是有一定挑战性的。Come on!

从通用图灵机到计算机

通用图灵机,简单来说,就是给你一系列的操作指令,然后你去执行相关的动作。比如给你一个菜谱,你去把菜做了。

扫描二维码关注公众号,回复: 10748258 查看本文章

根据冯诺依曼提出来的结构,我们知道,计算机会把程序存在内存里,然后用一个指针指向它,然后解析执行它,然后指针后移,再去指向下一条指令,再去解析执行。(取指->执行)

(1)和(2)CS和IP是8086CPU中两个重要的寄存器,指示了CPU当前要读取指令的地址。CS为代码段寄存器,IP为指令指针寄存器(偏移),两个结合起来的位置就是当前指向的指令。和保护模式对应,实模式的寻址CS:IP(CS左移4位+IP), 和保护模式不一样。8086CPU地址总线为20位,所以它的寻址能力是2 ^ 20 = 1MB。

(3)该地址正好是前面CS和IP结合后指向的位置,该程序是固化在ROM里的,叫做BIOS,即Basic input output system基本输入输出系统。(4)检查外围设备是否可用。

(5)读入1个扇区,即512字节的内容,0磁道0扇区叫操作系统的引导扇区。把该扇区里的内容读到7c00处,然后设置cs和ip指向7c00。注意0x07c0<<4+0x0000=0x7c00。

引导扇区的作用:

引导扇区就是从磁盘引导扇区读入的那512个字节。

引导扇区就是启动设备的第一个扇区,启动设备信息被设置在CMOS中(CMOS: 互补金属氧化物半导体(64B-128B),用来存储实 时钟和硬件配置信息)开机时按住del键可进入启动设备设置界面,可以设置为光盘启动。 因此,硬盘的第一个扇区上存放着开机 后执行的第一段我们可以控制的程序

引导扇区的代码是汇编语言。(为什么不用C?因为,比如你声明一个变量int a,你不知道编译后a会存在哪个位置,这是不行的,我们需要用汇编来进行绝对控制)

引导扇区代码: bootsect.s

BOOTSEG = 0x07c0
INITSEG = 0x9000
SETUPSEG = 0x9020
.globl begtext,begdata,begbss,endtext,enddata,endbss
.text //文本段
begtext:
.data //数据段
begdata:
.bss //未初始化数据段
begbss:
entry start //关键字entry告诉链接器“程序入口”
start:
mov ax, #BOOTSEG mov ds, ax
mov ax, #INITSEG mov es, ax
mov cx, #256
sub si, si sub di,di
rep movw
jmpi go, INITSEG
go:........

text等是伪操作符,告诉编译器产生 文本段,.text用于标识文本段的开始位置。 因为begtext:相当于跳转,也就是说.text跳到.data,再跳到.bss,所以此处的.text、.data、.bss这3个段重叠,不分段。

ax,bx,cx,dx这四个寄存器是通用寄存器,又叫数据寄存器,用于存放数据。

执行完前两行以后,ds = 7c0,es = 9000。这两个寄存器是段寄存器,只有段寄存器不行,还需要加偏移,才能构成地址。偏移这时就放在si和di寄存器里,执行完第四行以后,si减自己当然为0,所以si = 0,同理di = 0。ds与si构成地址7c00,es与di构成地址90000。

cx里放着移动计数值:移动计数值=256 字;

rep

movw

这两条指令代表重复执行,直到cx内计数器为0才停下。注意一个字是两个字节,即把这个引导扇区的512个字节全都移动到es与di构成的90000的位置。

jmpi go, INITSEG : go是ip,代表偏移,其实是一个标号,表示从程序开始一直到该段的地址长度。执行完以后相当于我们跳到刚才移动到的位置继续往下执行(因为我们把这些扇区的东西往后搬了,是为了腾出地方给别的代码,以后会再说腾出地方给了谁)

发布了182 篇原创文章 · 获赞 408 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/tiao_god/article/details/105459646