![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
操作系统
文章平均质量分 72
构建自己的计算机体系
是啊新啊
这个作者很懒,什么都没留下…
展开
-
《操作系统真象还原》第九章 多线程调度
1,前言上一节我们分析了线程是如何被调用执行的。本节将分析多个线程调度的实现方式。在分析之前,我们可以根据已有的知识去宏观的理解可能用的知识点。1,既然要实现多线程调度,肯定要对多线程管理。这里便涉及到了队列,分别是就绪队列和全部线程队列2,线程调度应该是由时钟中断驱动的,总结:完整的调度过程需要三部分的配合1,时钟中断处理函数2,调度器schedule3,任务切换函数switch_to2,重点流程分析1,时钟中断部分/* 时钟的中断处理函数 */static void intr_ti原创 2022-04-29 17:53:31 · 1471 阅读 · 2 评论 -
《操作系统真象还原》第九章 在内核空间实现线程
1,前言开始之前我想说明一下,这系列的文章有什么意义?读书本就是一个输入到理解,再输出的过程。我不是简单的罗列书中的知识。写书的人为了兼顾跟多的读者,书中的铺垫信息过多。对我复习其实是干扰。我需要的是核心知识点的学习理解。所以这一系列。我只记录核心的重难点知识。简单概念只列关键词。废话太多了,本章的难点应该是在线程的实现上。略过前的概念,直接到代码实现部分。2,简单的PCB及线程栈的实现1,数据结构enum task_status;线程状态struct intr_stack;中断栈struct原创 2022-04-29 17:36:57 · 1306 阅读 · 0 评论 -
《操作系统真象还原》第八章 位图的数据结构与操作
1,概念介绍用途就是为了管理内存页,一比特对应一页,即bit对应4KB。因为管理内存的位图本身也需要空间。所以我们要尽量压缩管理代价。一个简单的运算:1K的位图可以管理多大的内存空间呢?1Kb x 8bit x 4KB = 32Mb。所以1k的位图可以管理32M的内存空间。2,数据结构struct bitmap { uint32_t btmp_bytes_len;//所占用的空间长度,单位:字节 uint8_t* bits;};3,操作及实现思路void bitmap_init原创 2022-04-29 17:28:08 · 734 阅读 · 0 评论 -
《操作系统真象还原》第五章 用虚拟地址访问页表
操作系统之二级页表_是啊新啊的博客-CSDN博客之前的文章里总结起来就是CPU通过页部件的“三步曲”完成虚拟地址到物理地址的转换关系。即从CPU的视角是: 第一步:取虚拟地址的高10位,得到页表首地址;第二步:取虚拟地址的中10位,得到物理页地址;第三步:将虚拟地址中的低12位与物理页地址合并,即为最终的物理内存地址。我们正是利用这种“呆板”机制实现虚拟地址访问页表。即,每一个虚拟地址的转换必须经过这三步。 比如如何实现利用虚拟地址访问...原创 2022-03-27 20:41:08 · 4571 阅读 · 0 评论 -
《操作系统真象还原》第八章内存管理 优化makefile和分页机制再理解
1,Makefile的优化 书里面对C文件到O文件的编译处理的不是很好,每次新增文件都需要自己手动加入。主要涉及到一些字符处理函数: 1,patsubst$(patsubst <pattern>,<replacement>,<text>)功能:查找<text>中的单词(单词以“空格”、“Tab”或“回车”“换行”分隔)是否符合模式<pat...原创 2022-03-13 22:18:33 · 455 阅读 · 0 评论 -
《操作系统真象还原》第五章 二级页表原理
输入:32位虚拟地址 0x01234567输出:32位的实际物理地址二级页表地址拆分规则:高10位为页目录(二级)索引,中间10位为(一级)页表索引。最后低12位为物理页(实际物理地址)内偏移量。举例说明:输入虚拟地址 0x01234567 对其拆分二进制,我们知道十六进制到二进制是1对4位的关系,即0x0 =0000 ,0x1=0001 ,0x2=0010 ,所以拆分得到 0000 0001 0010 0011 0100 0101 0110 0111这样分别得到页目录(二级页表)...原创 2022-03-03 11:29:54 · 3538 阅读 · 2 评论