![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
一个64位操作系统的设计与实现
文章平均质量分 62
滑板小王子
非主流程序员,做最帅的人,写最帅的代码。
展开
-
构建操作系统开发的高效工具链
simpleOS使用不同的工具链来构建一个简单的操作系统,旨在研究和探讨如何更加高效地进行操作系统开发本项目地址https://github.com/iOSPrincekin/simpleOS写在前面阅读本工程之前,你应该具备基础的操作系统知识,本工程不会探讨具体的操作系统知识,旨在探讨和研究如何解决开发操作系统过程中遇到的效率问题,怎么使用现有的工具来提高开发和调试操作系统的效率,如何提高操作系统的开发体验本工程主要由以下五个模块组成:bootloader、xbuild、grub2、CMa原创 2021-11-27 22:24:33 · 316 阅读 · 0 评论 -
Bochs 调试OS,将打印输出到tty,退出Bochs,当前 terminal session 会关闭的解决办法!
Bochs 调试OS,将打印输出到tty,退出Bochs,当前 terminal session 会关闭的解决办法!背景我们一般会在 bochs 配置如下,来将os的输出输出到 名为 ttys002 的 terminal session,当我们退出 bochs, 名为 ttys002 的 terminal session 就会关闭,我们又必须重新打开一个 名为 ttys002 的 terminal session,非常地不方便com1:enabled=1, mode=term, dev=/dev原创 2021-07-11 09:52:33 · 595 阅读 · 0 评论 -
4.8 进程管理
4.8 进程管理1. 创建进程2. 切换进程(1). 创建第一个进程kernel_thread()在什么时候寄存器RSP的值被设置成了第一个进程的栈基地址何时才将寄存器RSP的值设置成第二个进程的栈基地址sysexit简单理解:背景:使用:实现:sysenter简单理解:背景:使用:实现:总结:从反汇编代码理解内核代码sys_printfuser_level_function1. 创建进程程序控制结构体 PCB(Process Control Block): task_struct (task.h)t原创 2020-11-20 10:40:55 · 371 阅读 · 0 评论 -
4.4 系统异常
程序4-4 代码功能 lidt IDT_POINTER(%rip) ...setup_IDT: // ignore_int(%rip) = 0x1111 2222 3333 4444 #首先ignore_int中断服务程序的偏移地址(OFFSET)就可以使用lea指令取出ignore_int标号的基地址 #这个基地址要被拆分成第0-15位和第48-63位,分别放在EAX和EDX寄存器中 #然後在將EAX的值加載到中斷描述符的低位,將EDX的值加載到中斷描述符的高位。 leaq ign原创 2020-11-11 16:29:34 · 313 阅读 · 0 评论 -
4.5 初级内存管理单元
4.5 初级内存管理单元1. 获得物理内存信息2.初始化 Global_Memory_Descriptor memory_management_struct 结构体实例的成员变量,分配内存并简单初始化3.按实际情况来具体配置 memory_management_struct 结构体各个成员变量的值,同时为有效的Zone进行分割2M page的操作,同时将2M page对应的bit置为0;4.完善 memory_management_struct 结构体1. 获得物理内存信息//每条物理地址空间信息占用原创 2020-11-05 16:26:23 · 260 阅读 · 1 评论