上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 41 下一页
摘要: 前面我们为调用Cosmos 的第一个C函数hal_start做了大量的工作,本节要让操作系统Cosmos里的第一个C语言真正跑起来。 继续在hal_start函数里,首先执行板级初始化,其实就是hal层(硬件抽象层,下同)初始化,其中执行了平台初始化、hal层的内存初始化、中断初始化,最后进入到内核 阅读全文
posted @ 2022-05-29 22:26 牛犁heart 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 上一节讲道二级引导器不做具体的加载任务,而是主要解析内核文件、收集机器环境信息,那具体做些什么事呢? 在二级引导器中,要检查CPU是否支持64位的工作模式、收集内存布局信息,查看是不是符合我们操作系统的最低运行要求,还要设置操作系统需要的MMU页表、设置显卡模式、释放中文字体文件等。 ###检查与收 阅读全文
posted @ 2022-05-29 10:48 牛犁heart 阅读(291) 评论(0) 推荐(0) 编辑
摘要: ###抛转引玉 在上节建造了我们自己的“计算机”,并且在上面安装了GRUB,GRUB不是已经把我们的操作系统加载到了内存中了吗?为什么还需要二级引导器这个东西呢? 二级引导器作为操作系统的先驱,它需要收集机器信息,确定这个计算机能不能运行我们的操作系统,对CPU、内存、显卡进行一些初级配置,放置好内 阅读全文
posted @ 2022-05-28 22:12 牛犁heart 阅读(467) 评论(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 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 在让机器跑起来之前,要先弄清楚数据同步的问题,如果不解决数据同步的问题,后面机器跑来了,就会出现很多不可预知的结果。 ###非预期结果的全局变量 int a = 0; void interrupt_handle() { a++; } void thread_func() { a++; } 这段代码描 阅读全文
posted @ 2022-05-27 23:01 牛犁heart 阅读(409) 评论(0) 推荐(0) 编辑
摘要: ###程序局部原理性 CPU大多数时间在执行相同的指令或者与此相邻的指令,这就是程序局部性原理,依据此原理用来缓解CPU和内存之间的性能瓶颈。 ###内存 内存,从专业角度来讲,内存应该叫做DRAM,即动态随机存储器,内存存储颗粒芯片中的存储单元是由电容和相关元件做成,电容存储电荷的多、少代表数字信 阅读全文
posted @ 2022-05-27 21:27 牛犁heart 阅读(1197) 评论(0) 推荐(1) 编辑
摘要: ###为什么需要虚拟地址 (多程序并发场景)如果一台计算机内存中运行一个程序A,内存中又放了一道程序B,程序A和程序B各自运行一秒,如此循环,直到其中之一结束,这个场景下就会产生一些问题(此处只关心内存相关的几个核心问题) 1、谁来保证程序A跟程序B没有内存地址的冲突?换句话说,就是程序 A、B 各 阅读全文
posted @ 2022-05-22 22:10 牛犁heart 阅读(2292) 评论(0) 推荐(2) 编辑
摘要: ###1、计算机是如何将系统起起来的?-- PC机的引导流程 PC机BIOS固件是固化在PC机主板上的ROM芯片中,断电也能保存,PC机上电后的第一条指令就是在BIOS固件中,**它负责检测和初始化CPU、内存和主板平台,**然后加载引导设备(大概率是硬盘)中的第一个扇区数据,到0x7c00地址开始 阅读全文
posted @ 2022-05-22 10:39 牛犁heart 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 背景: 打算采用以迭代器的方式递归进行二分查找,具体代码如下: 该模板函数以该target元素的迭代器的方式返回 template <typename IterT, typename ValueT = typename std::iterator_traits<IterT>::value_type, 阅读全文
posted @ 2022-05-14 22:59 牛犁heart 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 因该方法实现与之前记录的不同,就想着记录下。。。 重点inplace_partition函数的实现 注意:迭代器范围都是左闭右开的区间 std::iter_swap(last_greater, --first_equal); if(comp(*last_greater, pivot)) { std: 阅读全文
posted @ 2022-05-08 19:02 牛犁heart 阅读(17) 评论(0) 推荐(0) 编辑
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 41 下一页