操作系统笔记

物理内存和虚拟内存;缓存IO和直接IO;作业调度算法;线程和进程;进程和线程的调度;线程的创建和结束;线程状态;线程间通信与线程同步机制;互斥锁和信号量;线程池;消费者和生产者;死锁;并发和并行。

一、操作系统启动

开机

程序放进内存里,IP指针指向它,取址执行
IP指针存放要执行的下一条指令的偏移地址,内容可以强迫改写。

实模式保护模式对应,实模式的寻址CS:IP(CS左移4位+IP),和保护模式不一样。

  • CS段寄存器
  • IP指令指针寄存器(偏移)
  • BIOS 基本输入输出系统
  • ROM掉电保存(硬盘)
  • RAM掉电不保存(内存)

一个扇区512个字节,把磁盘0磁 道0扇区(引导扇区,引导扇区是操作系统中的第一段代码)读到内存 0x7c00 处。

bootset

引导扇区就是启动设备的第一个扇区
引导扇区代码:bootsect.s(汇编)

ds = 0x07c0      
es = 0x9000    //段寄存器
si = 0
di = 0     //偏移
			//段寄存器和偏移组成地址
ds + si 向左偏移四位 ->0x7c00
es + di 向左偏移四位 ->0x90000
移动256个字,512个字节
把都进来的代码从 0x7c00 移动到 0x90000
go赋给IP,INITSEG赋给CS   0x90000 + go
boot 0x90000 - 0x90200  (512字节)
跳转到setup  CS置为0x9020,IP置为0
setup 0x90200 - 

setup

上电时,操作系统在硬盘上,把代码放进内存才能取址执行,由第一段代码引导扇区bootsect.s完成,bootsect首先读入setup,打印logo,调用13号终端,把system部分读入。

0x90002存储了内存的大小

将整个操作系统从 0x9000 移动到 0 地址处
一开始从 0x7c00 移动到 0x90000 是为了预留出操作系统的空间
setup执行完,进入保护模式

jmpi 0,8 
此时寻址方式发生改变 不再是CS<<4 + IP
CS IP 16位寄存器,最大寻址20位,即寻址能力1M。
而32位机寻址能力有4G,这种方式不能满足。
切换到新的寻址模式:16->32位模式(保护模式)
mov ax,#0x0001     mov cr0,ax     //将cr0最后一位置1

cr0寄存器,最后一维PE置1,启动保护模式
CPU走另外一条解释执行指令的电路

CS选择子,以前放的是地址,现在放的是查表的索引。段的基址放在表中,CS选择表中的项,取出基址,加上偏移IP。
gdt全局描述符。

setup初始化表,每个表项有64位(8个字节)。

jmpi 0,8
CS = 8,查gdt表,8 就是 gtb 里的第二行,因为第一项有8个字节。
按照规则得到基址为 0x00000000,因此这一指令就是跳转到0地址处,即system模块 。

system

head.s 是system中第一个文件
执行32位汇编代码

head.s结束后进入main函数,死循环。

bootsect 将操作系统从磁盘上都进来
setup 获得参数、启动保护模式
head 初始化gdt表、页表
main 初始化
读入内存——初始化

二、操作系统接口

区分内核态用户态:一种处理器“硬件设计”。
当前程序执行在什么态,由于CS:IP是当前指令,用CS的最低两位来表示:0是内核态,3是用户态

  • 内核可以访问任何数据,用户态不能访问内核数据

DPL目标内存段的特权级别
CPL当前内存段的特权级别
硬件提供了“主动进入内核的方法”
中断指令int

  • int指令将使CS中的CPL置为0,进入内核
  • 这是用户程序发起的调用内核代码的唯一方式

系统调用的核心:

(1)用户程序中包含一段包含int指令的代码
(2)操作系统写中断处理,获取想调程序的编号
(3)操作系统根据编号执行相应代码
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值