
操作系统真象还原
文章平均质量分 66
以郑刚著操作系统真象还原一书为参考,进行操作系统的实践学习
星辰大Hai
这个作者很懒,什么都没留下…
展开
-
操作系统真象还原:第五章 保护模式进阶-加载内核
可知,程序运行正常,最后一条指令是我们自己写的死循环指令(不放心的话,通过xp命令看下程序入口的代码,如上图 55是push ebp 89e5是mov ebp,esp是main函数堆栈框架的起始)rd_disk_m_32读取磁盘函数需要增加,在mbr读取磁盘函数rd_disk_m_16的基础上,主要是修改一下bx基址寄存器为ebx,进入保护模式后偏移地址也要用32位的地址。第一行LOADER_STACK_TOP原来是在loader.S中,现在移动到了boot.inc中,方便统一管理。原创 2024-07-27 15:21:21 · 868 阅读 · 0 评论 -
操作系统真象还原:第五章 保护模式进阶-开启分页机制
另外需要将GDT的基址加上0xc0000000,同时显存段描述符基址和我们的内核栈esp,也加上0xc0000000,这样映射到内核的虚拟地址上。检查分页机制下的工作是否正常,mov byte [gs:160],'V',在第二行的第一个字符显示了我们大写字母'V'分页之后,GDT的基地址已经是3GB之上的虚拟地址了,显存段基址也变成了3GB以上的虚拟地址,如图所示。增加页目录表的物理地址,同时增加页表和页目录项的属性位。1)增加了创建页目录表和页表的代码。3)打开cr0的pg位(第31位)原创 2024-07-26 12:44:27 · 149 阅读 · 0 评论 -
操作系统真象还原:第五章 保护模式进阶-实战内存检测
增加内存检测程序,通过尝试int 15h中断的三个子功能检测内存(0xe820/0xe801/0x88),采用逐级判断,第一个内存检测程序检测实部再尝试第二个,以此类推,其中e820功能最为强大,具体程序代码如下图,代码不难理解,具体可参考书中重要指令的解释。执行后,通过xp addr 命令可查看物理内存地址内容,我们的total_mem_bytes,物理内存地址为0x900+0x200=0xb00,如下图,检测到内存容量为0x02000000=32MB,和我们虚拟机配置文件中的megs参数内容一致。原创 2024-07-26 11:24:39 · 341 阅读 · 0 评论 -
操作系统真象还原:第四章 保护模式入门
注意:DESC_VIDEO_HIGH4,关于书中显存段的定义中有误,高四字节中的最后一字节是显存段的段基址的23~16位,我们显存段目前使用:0xb8000-0xbffff,段界限limit=(0xbffff-0xb8000)/4k=7,也即低四字节为0x80000007,高四字节中的最后一字节段基址是0xb8000-0x8000=0xb。其中mbr程序中,需要将读取内核加载器代码的地方修改一下,因为我们的loader已经超过一个扇区了,mov cx,4 call rd_disk_m_16。原创 2024-07-23 17:16:18 · 544 阅读 · 0 评论 -
VMware虚拟机和主机之间共享文件夹以及文字和文件的复制功能开启
还有最后一步,将刚才的挂载命令写到虚拟机的开机启动项中,不然每次开启虚拟机都需要重新输入挂载命令,将.host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other 0 0添加到/etc/fstab文件最后一行,修改改文件需要右root权限,可以命令前加sudo,或者切换到root用户执行。在虚拟机设置-选项中,开启共享文件夹,并在文件夹选项中,点击添加,选择我们上一步创建的主机文件夹目录,如下图所示。挂载后,可以进入到挂载后的目录下查看,如下图已经可以看到主机共享的文件夹。原创 2024-07-22 19:16:45 · 10542 阅读 · 0 评论 -
操作系统真象还原:第三章 完善MBR-2
其中mbr和loader程序中都引用了boot.inc的头文件,我按照书中也建了个include文件夹,将需要用到的头文件放在include目录内,相当于我们的库文件目录,如下图所示。因为完善后的mbr,要通过远跳转指令,转移到后续的loader执行,所以我也按照书中步骤增加了个简单的loader程序(后续再修改),目前为了演示mbr能成功跳转到loader。4、启动bochs,执行,验证程序运行的效果 (loader代码字符串最后一个字符应该是R,我写成了E,哈哈,不过不影响验证测试)原创 2024-07-20 14:15:06 · 357 阅读 · 0 评论 -
操作系统真象还原:第三章 完善MBR-1
按照之前的方法启动bochs,执行c命令,将会在屏幕的左上角出现绿色背景红色闪烁的字符,效果如下图所示。原创 2024-07-20 11:12:12 · 180 阅读 · 0 评论 -
操作系统真象还原:第一章 部署工作环境
并利用Linux自带的dd命令将其写到新创建的磁盘中的0盘0道1扇区,也即磁盘的第一块扇区,BIOS程序识别到该扇区最后两字节是0x55和0xaa,便认为此扇区中为可执行程序,便将该扇区代码加载至0x7c00处,并通过跳转语句跳转至0x7c00处执行我们自己写的mbr程序。修改bochs的启动配置文件,将上图箭头所指示信息更新到bochs配置文件中的ata0-master,也即将下图的注释去掉,并根据创建后生成的CHS(柱面/磁头/扇区)进行修改。下图为bochs安装后的信息。进入安装好bochs的目录。原创 2024-07-19 18:16:01 · 1719 阅读 · 0 评论