18、划分土地(下):如何实现内存页的分配与释放

你好,我是LMOS。 通过前面两节课的学习,我们已经组织好了内存页,也初始化了内存页和内存区。我们前面做了这么多准备工作,就是为了实现分配和释放内存页面,达到内存管理的目的。 那有了前面的基础,我想你自己也能大概实现这个分配和释放的代码。但是,根据前...

操作系统实战45讲

17、划分土地(中):如何实现内存页面初始化

你好,我是LMOS。 上节课,我们确定了用分页方式管理内存,并且一起动手设计了表示内存页、内存区相关的内存管理数据结构。不过,虽然内存管理相关的数据结构已经定义好了,但是我们还没有在内存中建立对应的实例变量。 我们都知道,在代码中实际操作的数据结构必...

操作系统实战45讲

16、划分土地(上):如何划分与组织内存

你好,我是LMOS。 内存跟操作系统的关系,就像土地和政府的关系一样。政府必须合理规划这个国家的土地,才能让人民安居乐业。为了发展,政府还要进而建立工厂、学校,发展工业和教育,规划城镇,国家才能繁荣富强。 而作为计算机的实际掌权者,操作系统必须科学合...

操作系统实战45讲

15、Linux初始化(下):从_start到第一个进程

你好,我是LMOS。 今天我们继续来研究Linux的初始化流程,为你讲解如何解压内核,然后讲解Linux内核第一个C函数。最后,我们会用Linux的第一个用户进程的建立来收尾。 如果用你上手去玩一款新游戏做类比的话,那么上节课只是新手教程,而这节课就...

操作系统实战45讲

14、Linux初始化(上):GRUB与vmlinuz的结构

你好,我是LMOS。 在前面的课程中,我们建好了二级引导器,启动了我们的Cosmos,并进行了我们Cosmos的Hal层初始化。 我会用两节课带你领会Linux怎样做初始化。虽然我们自己具体实现过了初始化,不过我们也不妨看看Linux的初始化流程,借...

操作系统实战45讲

13、第一个C函数:如何实现板级初始化

你好,我是LMOS。 前面三节课,我们为调用Cosmos的**第一个C函数hal_start做了大量工作。**这节课我们要让操作系统Cosmos里的第一个C函数真正跑起来啦,也就是说,我们会真正进入到我们的内核中。 今天我们会继续在这个hal_sta...

操作系统实战45讲