上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 42 下一页
摘要: 本节将依赖前面建好的数据结构,实现内存页面管理算法 ###内存页的分配 如果让实现一次只分配一个页面,那只需要写一个循环代码,在其中遍历出一个空闲的msadsc_t结果,就可以返回了,这个算法就结束了, 但内存管理器要为内核、驱动,还有应用提供服务,它们对请求内存页面的多少、内存页面是不是连续,内存 阅读全文
posted @ 2022-06-02 23:09 牛犁heart 阅读(424) 评论(0) 推荐(0)
摘要: 上节确定了使用分页方式管理内存,并且设计了表示内存页、内存区相关的内存管理数据结构,但还没有在内存中建立相应的实体变量 本节将讲解在内存中建立数据结构对应的实例变量,搞定内存页的初始化问题。 ###初始化 在前面的课程中,在hal层初始化中,初始化了从二级引导器中获取的内存布局信息,即e820map 阅读全文
posted @ 2022-06-02 07:46 牛犁heart 阅读(389) 评论(0) 推荐(0)
摘要: 本节先解决内存的划分方式和内存页的表示、组织问题,设计好数据结构 ###分段还是分页 从内存管理角度,分析分段和分页的优缺点: 第一点 从表示方式和状态确定角度考虑。 段的长度大小不一,用什么数据结构表示一个段,如何确定一个段已经分配还是空闲呢?而页的大小固定,我们只需用位图就能表示页的分配与释放。 阅读全文
posted @ 2022-05-31 23:07 牛犁heart 阅读(626) 评论(0) 推荐(0)
摘要: 本节树立启动的整体流程,重点解读Linux上GRUB是怎样启动,以及内核里的“实权人物”-- vmlinuz内核文件是如何产生和运转的。 ###全局流程 在机器加电后,BIOS会进行自检,然后由BIOS加载引导设备中引导扇区。在安装有Linux操作系统的情况下,在引导扇区里,通常是安装的GRUB的一 阅读全文
posted @ 2022-05-29 23:09 牛犁heart 阅读(852) 评论(0) 推荐(0)
摘要: 前面我们为调用Cosmos 的第一个C函数hal_start做了大量的工作,本节要让操作系统Cosmos里的第一个C语言真正跑起来。 继续在hal_start函数里,首先执行板级初始化,其实就是hal层(硬件抽象层,下同)初始化,其中执行了平台初始化、hal层的内存初始化、中断初始化,最后进入到内核 阅读全文
posted @ 2022-05-29 22:26 牛犁heart 阅读(295) 评论(0) 推荐(0)
摘要: 上一节讲道二级引导器不做具体的加载任务,而是主要解析内核文件、收集机器环境信息,那具体做些什么事呢? 在二级引导器中,要检查CPU是否支持64位的工作模式、收集内存布局信息,查看是不是符合我们操作系统的最低运行要求,还要设置操作系统需要的MMU页表、设置显卡模式、释放中文字体文件等。 ###检查与收 阅读全文
posted @ 2022-05-29 10:48 牛犁heart 阅读(327) 评论(0) 推荐(0)
摘要: ###抛转引玉 在上节建造了我们自己的“计算机”,并且在上面安装了GRUB,GRUB不是已经把我们的操作系统加载到了内存中了吗?为什么还需要二级引导器这个东西呢? 二级引导器作为操作系统的先驱,它需要收集机器信息,确定这个计算机能不能运行我们的操作系统,对CPU、内存、显卡进行一些初级配置,放置好内 阅读全文
posted @ 2022-05-28 22:12 牛犁heart 阅读(515) 评论(0) 推荐(0)
摘要: ###创建虚拟硬盘 dd创建创建虚拟镜像文件 dd bs=512 if=/dev/zero of=hd.img count=204800 ;bs:表示块大小,这里是512字节 ;if:表示输入文件,/dev/zero就是Linux下专门返回0数据的设备文件,读取它就返回0 ;of:表示输出文件,即我 阅读全文
posted @ 2022-05-28 16:36 牛犁heart 阅读(236) 评论(0) 推荐(0)
摘要: 在让机器跑起来之前,要先弄清楚数据同步的问题,如果不解决数据同步的问题,后面机器跑来了,就会出现很多不可预知的结果。 ###非预期结果的全局变量 int a = 0; void interrupt_handle() { a++; } void thread_func() { a++; } 这段代码描 阅读全文
posted @ 2022-05-27 23:01 牛犁heart 阅读(472) 评论(0) 推荐(0)
摘要: ###程序局部原理性 CPU大多数时间在执行相同的指令或者与此相邻的指令,这就是程序局部性原理,依据此原理用来缓解CPU和内存之间的性能瓶颈。 ###内存 内存,从专业角度来讲,内存应该叫做DRAM,即动态随机存储器,内存存储颗粒芯片中的存储单元是由电容和相关元件做成,电容存储电荷的多、少代表数字信 阅读全文
posted @ 2022-05-27 21:27 牛犁heart 阅读(1332) 评论(0) 推荐(1)
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 42 下一页