![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
草帽boy7
/ynmianyan/10927062
展开
-
从零开始写一个操作系统内核 笔记(五) 从汇编过渡到C语言
从Boot到loader到C语言从 加载硬盘的第一扇区 到能使用C语言来编写内核程序,我们完成了如下3个部分Boot:将loader加载到 内存0x9000:0x0100处 576K处,跳转到Loader。Loader:将Kernel 加载到0x7000:0x0000 处、获取内存大小、打开分页、开启CPU保护模式、读取Kernel的ELF文件格式 将 将Kernel从0x7000:0x0...原创 2020-03-24 16:40:12 · 1142 阅读 · 0 评论 -
从零开始写一个操作系统内核 笔记(四) 番外篇 8086CPU 之分页机制
一. 逻辑地址和线性地址下面是一条普通的 eax赋值指令> mov 0x80495b0, %eax首先 这条指令 真正会被执行成 mov ds:0x80495b0, %eax在保护模式下,ds 是个段选择子,通过 GDT在 表 找到对应的 线性起始地址 再 加上 偏移地址 计算出 线性地址,在 保护模式未开启分页的情况下 线性地址就直接对应到物理地址,如果在 开启了分页机...原创 2020-03-22 17:16:58 · 447 阅读 · 0 评论 -
从零开始写一个操作系统内核 笔记(四) 番外篇 8086CPU 之保护模式
操作系统内核加载过程上图是 linux 0.1.2 应到程序加载操作系统的步骤。在实模式下的1M 空间下,BIOS启动后经过一系列自检(CPU、内存、硬盘等)后,将控制权 交给主引导记录MBR(Main Boot Record)位于硬盘的第0盘0道1扇区(LBA=0)的512个字节,BIOS事先规定将代码执行权移交到了0x7c00处地址,所以需要将MBR读写到0x7c00处,由于MBR只...原创 2020-03-19 19:12:28 · 265 阅读 · 1 评论 -
从零开始写一个操作系统内核 笔记(四) CPU 实模式到 保护模式
什么是保护模式?原先的CPU 是不需要要保护模式就能访问的,但这样 程序 之间 随便访问,没有任何安全可言,要是一个程序崩溃了或者因为某些BUG跳转到了其他程序的底盘,直接就调用别的程序 的功能多牛逼 哈哈 某些Hack 也是利用这种思路,通过栈溢出直接就跳转到一指定地址执行一些不安全的代码。 而 保护模式在兼容实模式的情况下,CPU 可以通过读取 GDT 表 知道 哪一段范围是放程序,哪一段范...原创 2020-03-15 23:09:07 · 599 阅读 · 0 评论 -
从零开始写一个操作系统内核 笔记(三) 番外篇 FAT12 魔改 FAT32 文件系统 硬盘文件读取方式
FAT32文件系统,格式和 FAT12 大同小异。主要变化:扇区簇大小:512 字节 -> 4K根目录项数:偏移字节数含义值0x00B2每扇区字数0x02000x00D1每簇扇区数0x080x00E2保留扇区数0x03F80x0101FAT个数0x020x0112根目录项数,FAT32以突破该限制,无效0x...原创 2020-03-11 16:23:33 · 927 阅读 · 0 评论 -
从零开始写一个操作系统内核 笔记(三) 下 汇编实现 FAT12 文件系统
FAT文件系统包含:主引导扇区FAT表(2个)根目录区数据区文件系统的数据结构:卷控制块(每个文件系统一个)文件控制块(每个文件一个)目录节点(每个目录项一个)当需要时加载进内存卷控制块:当文件系统挂载时 进入内存文件控制块:当文件被访问时进入每次目录节点:在遍历一个文件路径时进入内存下面是 FAT16 系统的结构 (卷控制块):BS_OEMName db...原创 2020-03-08 20:44:49 · 1386 阅读 · 2 评论 -
从零开始写一个操作系统内核 笔记(三) 上
BootLoader引导启动程序组成2部分:1.Boot引导程序:主要负责启动和加载Loader程序。2.Loader引导加载程序:用于完成配置硬件工作环境、引导加载内核等任务。Boot引导程序计算机上电启动 →BIOS上电自检(检测硬件是否异常) →根据BIOS启动配置选择引导设备(软盘、默认:硬盘、U盘、网络启动)BIOS启动原理BIOS自检结束后会从启动项(软盘、硬盘…)...原创 2020-02-19 22:41:23 · 1075 阅读 · 0 评论 -
bochs环境在Mac下 安装
1.下载bochs 2.68https://sourceforge.net/projects/bochs/files/bochs/2.6.8/bochs-2.6.8.tar.gz/download2.切换到解压目录cd bochs-2.6.8内,执行如下配置./configure --enable-ne2000 \ --enable-all-optimizations ...原创 2020-02-09 00:04:57 · 1267 阅读 · 0 评论