上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 34 下一页
摘要: 你好,我是LMOS。 在上一课中,我们实现了建立设备的接口,这相当于制定了部门的相关法规,只要遵守这些法规就能建立一个部门。当然,建立了一个部门,是为了干活的,吃空饷可不行。 其实一个部门的职责不难确定,它应该能对上级下发的任务作出响应,并完成相关工作,而这对应到设备,就是如何处理内核的I/O包,这 阅读全文
posted @ 2022-12-30 11:15 易先讯 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 你好,我是LMOS。 在上节课里,我们对设备进行了分类,建立了设备与驱动的数据结构,同时也规定了一个驱动程序应该提供哪些标准操作方法,供操作系统内核调用。这相当于设计了行政部门的规章制度,一个部门叫什么,应该干什么,这些就确定好了。 今天我们来继续探索部门的建立,也就是设备在内核中是如何注册的。我们 阅读全文
posted @ 2022-12-30 11:15 易先讯 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 你好,我是LMOS。 小到公司,大到国家,都有各种下属部门,比如我们国家现在有教育部、科学技术部、外交部,财政部等,这些部门各自负责完成不同的职能工作,如教育部负责教育事业和语言文字工作,科学技术部负责推动解决经济社会发展的重大科技问题。 既然大道相通,那我们的Cosmos中是否也是类似这样的结构呢 阅读全文
posted @ 2022-12-30 11:14 易先讯 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 你好,我是LMOS。 在前面的课程中,我们已经写好了Cosmos的进程管理组件,实现了多进程调度运行,今天我们一起探索Linux如何表示进程以及如何进行多进程调度。 好了,话不多说,我们开始吧。 Linux如何表示进程 在Cosmos中,我们设计了一个thread_t数据结构来代表一个进程,Linu 阅读全文
posted @ 2022-12-30 11:14 易先讯 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 你好,我是LMOS。 上节课,我带你一起设计了我们Cosmos的进程调度器,但有了进程调度器还不够,因为调度器它始终只是让一个进程让出CPU,切换到它选择的下一个进程上去运行。 结合前面我们对进程生命周期的讲解,估计你已经反应过来了。没错,多进程调度方面,我们还要实现进程的等待与唤醒机制,今天我们就 阅读全文
posted @ 2022-12-30 11:13 易先讯 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 你好,我是LMOS。 上节课,我们了解了什么是进程,还一起写好了建立进程的代码。不知道你想过没有,如果在系统中只有一个进程,那我们提出进程相关的概念和实现与进程有关的功能,是不是就失去了意义呢? 显然,提出进程的目的之一,就是为了实现多个进程,使系统能运行多个应用程序。今天我们就在单进程的基础上扩展 阅读全文
posted @ 2022-12-30 11:12 易先讯 阅读(48) 评论(0) 推荐(0) 编辑
摘要: 你好,我是LMOS。 在前面的课程里,我们已经实现了数据同步、hal层的初始化,中断框架、物理内存、内存对象、虚拟内存管理,这些都是操作系统中最核心的东西。 今天,我再给你讲讲操作系统里一个层次非常高的组件——进程,而它又非常依赖于内存管理、中断、硬件体系结构。好在前面课程中,这些基础知识我们已经搞 阅读全文
posted @ 2022-12-30 11:09 易先讯 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 你好,我是LMOS。 上节课我们学习了伙伴系统,了解了它是怎样管理物理内存页面的。那么你自然会想到这个问题:Linux系统中,比页更小的内存对象要怎样分配呢? 带着这个问题,我们来一起看看SLAB分配器的原理和实现。在学习过程中,你也可以对照一下我们Cosmos的内存管理组件,看看两者的内存管理有哪 阅读全文
posted @ 2022-12-30 11:08 易先讯 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 你好,我是LMOS。 前面我们实现了Cosmos的内存管理组件,相信你对计算机内存管理已经有了相当深刻的认识和见解。那么,像Linux这样的成熟操作系统,又是怎样实现内存管理的呢? 这就要说到Linux系统中,用来管理物理内存页面的伙伴系统,以及负责分配比页更小的内存对象的SLAB分配器了。 我会通 阅读全文
posted @ 2022-12-30 11:07 易先讯 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 你好,我是LMOS。 今天,我们继续研究操作系统如何实现虚拟内存。在上节课,我们已经建立了虚拟内存的初始流程,这节课我们来实现虚拟内存的核心功能:写出分配、释放虚拟地址空间的代码,最后实现虚拟地址空间到物理地址空间的映射。 这节课的配套代码,你可以点击这里下载。 虚拟地址的空间的分配与释放 通过上节 阅读全文
posted @ 2022-12-30 11:06 易先讯 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 你好,我是LMOS。 在现实中,有的人需要向政府申请一大块区域,在这块区域中建楼办厂,但是土地有限且已经被占用。所以可能的方案是,只给你分配一个总的面积区域,今年湖北有空地就在湖北建立一部分厂房,明年广东有空地就在广东再建另一部分厂房,但是总面积不变。 其实在计算机系统中也有类似的情况,一个应用往往 阅读全文
posted @ 2022-12-30 11:05 易先讯 阅读(69) 评论(0) 推荐(0) 编辑
摘要: 你好,我是LMOS。 在前面的课程中,我们建立了物理内存页面管理器,它既可以分配单个页面,也可以分配多个连续的页面,还能指定在特殊内存地址区域中分配页面。 但你发现没有,物理内存页面管理器一次分配至少是一个页面,而我们对内存分页是一个页面4KB,即4096字节。对于小于一个页面的内存分配请求,它无能 阅读全文
posted @ 2022-12-30 11:05 易先讯 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 你好,我是LMOS。 通过前面两节课的学习,我们已经组织好了内存页,也初始化了内存页和内存区。我们前面做了这么多准备工作,就是为了实现分配和释放内存页面,达到内存管理的目的。 那有了前面的基础,我想你自己也能大概实现这个分配和释放的代码。但是,根据前面我们设计的数据结构和对其初始化的工作,估计你也可 阅读全文
posted @ 2022-12-30 11:03 易先讯 阅读(65) 评论(0) 推荐(0) 编辑
摘要: 你好,我是LMOS。 上节课,我们确定了用分页方式管理内存,并且一起动手设计了表示内存页、内存区相关的内存管理数据结构。不过,虽然内存管理相关的数据结构已经定义好了,但是我们还没有在内存中建立对应的实例变量。 我们都知道,在代码中实际操作的数据结构必须在内存中有相应的变量,这节课我们就去建立对应的实 阅读全文
posted @ 2022-12-30 10:58 易先讯 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 你好,我是LMOS。 内存跟操作系统的关系,就像土地和政府的关系一样。政府必须合理规划这个国家的土地,才能让人民安居乐业。为了发展,政府还要进而建立工厂、学校,发展工业和教育,规划城镇,国家才能繁荣富强。 而作为计算机的实际掌权者,操作系统必须科学合理地管理好内存,应用程序才能高效稳定地运行。 内存 阅读全文
posted @ 2022-12-30 10:57 易先讯 阅读(48) 评论(0) 推荐(0) 编辑
摘要: 你好,我是LMOS。 今天我们继续来研究Linux的初始化流程,为你讲解如何解压内核,然后讲解Linux内核第一个C函数。最后,我们会用Linux的第一个用户进程的建立来收尾。 如果用你上手去玩一款新游戏做类比的话,那么上节课只是新手教程,而这节课就是更深入的实战了。后面你会看到很多熟悉的“面孔”, 阅读全文
posted @ 2022-12-30 10:57 易先讯 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 你好,我是LMOS。 在前面的课程中,我们建好了二级引导器,启动了我们的Cosmos,并进行了我们Cosmos的Hal层初始化。 我会用两节课带你领会Linux怎样做初始化。虽然我们自己具体实现过了初始化,不过我们也不妨看看Linux的初始化流程,借鉴一下Linux开发者的玩法。 这节课,我会先为你 阅读全文
posted @ 2022-12-30 10:49 易先讯 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 你好,我是LMOS。 前面三节课,我们为调用Cosmos的第一个C函数hal_start做了大量工作。这节课我们要让操作系统Cosmos里的第一个C函数真正跑起来啦,也就是说,我们会真正进入到我们的内核中。 今天我们会继续在这个hal_start函数里,首先执行板级初始化,其实就是hal层(硬件抽象 阅读全文
posted @ 2022-12-30 10:47 易先讯 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 你好,我是LMOS。 上节课我们动手实现了自己的二级引导器。今天这节课我们将进入二级引导器,完成具体工作的环节。 在二级引导器中,我们要检查CPU是否支持64位的工作模式、收集内存布局信息,看看是不是合乎我们操作系统的最低运行要求,还要设置操作系统需要的MMU页表、设置显卡模式、释放中文字体文件。 阅读全文
posted @ 2022-12-30 10:46 易先讯 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 你好,我是LMOS。 上节课,我们建造了属于我们的“计算机”,并且在上面安装好了GRUB。这节课我会带你一起实现二级引导器这个关键组件。 看到这儿你可能会问,GRUB不是已经把我们的操作系统加载到内存中了吗?我们有了GRUB,我们为什么还要实现二级引导器呢? 这里我要给你说说我的观点,二级引导器作为 阅读全文
posted @ 2022-12-30 10:45 易先讯 阅读(64) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 34 下一页