从零手搓操作系统
文章平均质量分 95
记录学习《操作系统真象还原》、《一个64位操作系统的设计与实现》的过程,主要记录实现的具体过程,会附带一些重要内容的讲解,但不是设计操作系统的具体讲解,具体讲解请参照原书。
木心
I seek not to know the answer, but to understand the questions.
欢迎访问我的个人Blog-->
https://shenmuxin.github.io
展开
-
动手学操作系统(七、实现内存分页机制)
在上一节中,我们成功读取了物理内存的容量,并且在之前的学习中,我们的程序已经进入了保护模式,地址空间能够达到4GB,但是所有的进程(包括操作系统)都需要共享这4GB的空间,为了更好得维护这4GB的虚拟内存空间,我们需要使用内存分页机制。:指计算机中实际存在的硬件内存,即RAM(随机存取存储器)。物理内存由具体的内存芯片组成,直接用于存储正在使用的数据和程序。:是操作系统提供的一种内存管理技术,它为每个进程提供了一个连续的、私有的地址空间,使得每个进程认为自己拥有独立且足够大的内存空间。原创 2024-06-13 14:34:04 · 1008 阅读 · 0 评论 -
动手学操作系统(六、获取物理内存容量)
在上一节中,我们介绍了保护模式和实模式的区别,保护模式的最大特点是“大”,“大”是指寻址空间大,在进入保护模式之后,我们还将要接触虚拟内存、内存管理等,但这些和内存有关的概念都是建立在物理内存之上的,所以无论理论上的概念有多高大上,最终还是要落实到物理内存上才行,所以这一节我们来学习如何获取物理内存容量。原创 2024-06-12 11:45:15 · 592 阅读 · 0 评论 -
动手学操作系统(五、实现保护模式下的Loader)
在上一节中,我们使用了MBR来加载的Loader,Loader是要经过实模式到保护模式的过渡,并最终在保护模式下加载Kernel,上一节只实现一个在实模式下工作的简易Loader,打印了一些消息,但是我们并没有完善这个Loader的功能,在这一节中,我们进一步完善这个Loader的功能。原创 2024-05-30 17:01:04 · 981 阅读 · 0 评论 -
动手学操作系统(四、MBR读取硬盘加载Loader)
硬盘属于存储介质,在硬盘的发展历史中,随机存取具有划时代的意义,程序中的算法不用再考虑存储时间,访问任意数据所用的时间几乎是相等的,这一改之前的存储设备其存取时间呈线性的历史。为了让硬盘工作,我们需要通过读写硬盘控制器的端口,端口就是位于IO控制器上的寄存器,这里就算指的是硬盘控制器上的寄存器。硬盘的控制遵循标准ATA(Advanced Technology Attachment),ATA的标准有些冗长,这里只简单介绍我们需要使用到的部分,如下图所示。原创 2024-05-29 14:18:40 · 905 阅读 · 0 评论 -
动手学操作系统(三、通过IO接口直接控制显卡)
为了兼容大量的硬件外设,CPU需要增加一“层”来解决不兼容的问题,在CPU和外设之间的这一层就是IO接口,IO接口的形式不限,它可以是电路板,芯片,插槽等等,它的作用就是在CPU和外设之间做相互协调的转化。设置数据缓冲,解决CPU与外设的速度不匹配设置信号电平转换电路设置数据格式转换设置时序控制电路来同步CPU和外设提供地址译码。原创 2024-05-28 18:06:20 · 903 阅读 · 0 评论 -
动手学操作系统(二、编写MBR主引导记录)
在之前的学习内容中,我们已经实现了基本的仿真环境bochs的搭建,还首次使用硬盘引导启动了bochs,虽然我们只卡在了启动的界面,但是我们已经顺利的搭建起整个流程了。原创 2024-05-28 15:44:15 · 603 阅读 · 0 评论 -
动手学操作系统(一、搭建实验环境)
🚀 环境配置 🚀笔者的环境使用的是这里的ubuntu你可以在虚拟机里安装,也可以安装双系统,也可以是单独的ubuntu系统,这个就看个人的喜好。针对初学者来说,笔者推荐使用虚拟机平台VMware在window环境下来安装ubuntu。或者可以使用VirtualBox在linux环境下安装ubuntu。原创 2024-05-27 16:49:32 · 988 阅读 · 0 评论