![](https://img-blog.csdnimg.cn/d76fc05b48eb41a4aa8bd1a4b1047af0.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
自制操作系统
文章平均质量分 81
通过学习各种书籍,从模仿开始
Falling_Asteroid
折腾是对生命的尊重
展开
-
二、11.系统交互
《操作系统真相还原》第15章原创 2023-08-22 00:01:41 · 1890 阅读 · 0 评论 -
二、10.文件系统
《操作系统真相还原》第14章原创 2023-08-22 00:02:10 · 136 阅读 · 0 评论 -
二、9.硬盘驱动程序
《操作系统真相还原》第13章原创 2023-08-21 23:51:08 · 434 阅读 · 0 评论 -
二、8.系统调用、可变参数和堆内存管理
《操作系统真相还原》第12章原创 2023-08-21 23:48:14 · 139 阅读 · 0 评论 -
二、7.用户进程
《操作系统真相还原》第11章原创 2023-08-21 23:46:35 · 100 阅读 · 0 评论 -
二、6.锁和输入
《操作系统真相还原》第10章原创 2023-08-21 23:44:45 · 78 阅读 · 0 评论 -
二、5.单线程与多线程调度
《操作系统真相还原》第9章原创 2023-08-21 23:42:47 · 150 阅读 · 0 评论 -
二、4.makefile、断言和位图内存池
《操作系统真相还原》第8章原创 2023-08-21 23:40:16 · 95 阅读 · 0 评论 -
二、3.中断
《操作系统真相还原》第7章原创 2023-08-21 23:38:25 · 99 阅读 · 0 评论 -
二、1.保护模式
《操作系统真相还原》第1-5章原创 2023-08-21 23:35:43 · 145 阅读 · 0 评论 -
二、2.打印和内联汇编
《操作系统真相还原》第6章原创 2023-08-21 23:31:56 · 137 阅读 · 0 评论 -
一、8.分页
因为创建系统内核的页目录时,内核程序已经加载到内存了,为了方便起见,本书设定在内核的页部件输出的物理地址应与段部件输出的地址相同。当物理内存不够时就把不常用的内存暂时存入磁盘,并且描述符的P位置0,把要使用的段放入内存,描述符P位置1。设想一个虚拟内存,每隔任务都有他独立的虚拟内存,虚拟内存和实际物理内存大小相等。但是这种方式会产生大量内存碎片,影响内存分配效率。原创 2023-08-06 15:36:49 · 123 阅读 · 0 评论 -
一、7.协同式任务切换与抢占式任务切换
PUSHF/PUSHFD和POPF/POPFD的执行不受特权级限制,但是标志寄存器压栈后IOPL字段的读写状态受特权级影响,若CPL不为0,则栈中的IOPL类似只读状态。初始化命令字ICW1 ~ 4可发给主片和从片,先把ICW1发给主片的0X20和从片的0XA0,根据其内容决定让主片(0X21)和从片(0XA1)是否期待后续。当任务的CPL特权级高于(数值小于)他的EFLAGS中的IOPL字段,那么这个任务可以访问任何硬件端口,0特权级可访问任何硬件端口。中断和异常发生时的栈切换过程。原创 2023-08-06 14:02:55 · 157 阅读 · 0 评论 -
一、6.多任务与调用门
任务:由正在运行的内核和用户程序组成内核的段描述符应放在GDT,用户程序的段描述符放在自己的局部描述符表LDT中任务状态段:TSS,用于保存该任务的各种寄存器的状态,从而实现任务切换任务控制块:TCB,本书为了方便而设立的内存结构,用于存储一个任务的相关信息,TCB间用链式连接,形成链表创建任务控制块TCB。原创 2023-08-06 13:58:17 · 113 阅读 · 0 评论 -
一、5用户程序调用内核代码
本书设计的具体实现方法是,用户程序在头部段列出所需的API的名称并258字节对齐(符号地址检索表),内核也有一个符合地址检索表,加载用户程序时拿用户程序中的符号地址检索表项搜索内核给出的表,用表内地址修改头部信息,将对应的过程地址覆盖掉原来的API名称。内核统一管理描述符表,当用户程序需要获取段描述符时,就需要内核实现用户编程接口(API)用户程序调用内核过程。原创 2023-08-06 13:53:39 · 90 阅读 · 0 评论 -
一、4.主引导程序与内核
【代码】一、4.主引导程序与内核。原创 2023-08-06 13:50:32 · 126 阅读 · 0 评论 -
一、3.外部硬件中断与进入保护模式
外部硬件中断:处理器接两根线NMI传输非屏蔽中断(即无法屏蔽的中断)和INTR传输可屏蔽中断IR0到IR7优先级依次降低处理器中中断标志位起决定作用,IF为0时屏蔽所有INTR引脚来的信号都被屏蔽BIOS创建中断向量表实时时钟和CMOS RAMCMOS RAM中的日期和时间通常使用二进制形式的十进制编码(BCD)来表示。原创 2023-08-06 13:01:17 · 182 阅读 · 0 评论 -
一、2.段、端口与用户程序
在mbr段内,先找到用户程序所在段,这就需要将物理起始地址转化为16位段地址,即0x10000除0x10(右移1位)主引导扇区起始地址0000:0x7c00,用户程序物理起始地址0000:0x7c00+phy_base,当段使用。近过程调用将IP压栈,用RET返回,远过程调用将CS和IP压栈,用RETF返回。指定段内数据的汇编地址从0开始,即在该段中,段起始处就是汇编地址起始处。,只要再栈中压入正确的地址,就可以直接返回到对应区域而不用。是命令端口,即可以接收命令,也是状态端口,可以返回状态。原创 2023-08-06 12:51:32 · 69 阅读 · 0 评论 -
一、1.汇编指令、寄存器和寻址方式
8086的分段机制:有两个寄存器CS和DS,分别存放代码段和数据段的具体段地址,但是内存地址提供了20根地址线,而两个段寄存器只有16位(如CS可表示0XAB12,而内存地址却为0XAB120)。8086加电复位时处理器向内存发出的指令是FFFF0,距离内存结束只有16字节,这16字节存放有跳转指令,在跳转的目的地,一般会把磁盘的0头0柱1扇区(主引导扇区)的数据加载到那里,以此执行对应的程序。标号:汇编代码由三个可选的部分组成 标号-指令-注释,标号表示离他最近的下一指令的地址。原创 2023-08-06 12:23:44 · 740 阅读 · 0 评论 -
专栏的简介
简介原创 2023-07-28 11:39:58 · 180 阅读 · 0 评论