摘要: 线程状态(context) 程序计数器(Program Counter),它表示当前线程执行指令的位置。 保存变量的寄存器。 程序的Stack。通常来说每个线程都有属于自己的Stack,Stack记录了函数调用的记录,并反映了当前线程的执行点。 xv6的线程切换 从一个用户进程切换到另一个用户进程, 阅读全文
posted @ 2022-01-08 11:54 zhushoucheng 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 锁的种类 自旋锁(spinlock):无法获得锁,就一直循环获取,适合短时间的加锁 睡眠锁(sleeplock):为了防止长时间的循环等待,在获取不到锁时,进程陷入睡眠,当锁释放时对睡眠进程进行唤醒 自旋锁的实现 其实自旋锁的实现很简单,不过是一个状态量置1或者置0的操作 为了防止中断产生死锁以及编 阅读全文
posted @ 2021-12-12 17:16 zhushoucheng 阅读(473) 评论(0) 推荐(0) 编辑
摘要: xv6中并没有实现这个部分,我自己实现的COW代码没有保存,因此借用了别人的代码,主要是了解实现方法。 COW(copy on write)指fork复制子进程时,并不直接复制父进程的内存内容至子进程中(因为开销很大),而是将这些内存的一个特殊COW标志置1。因此,子进程读内存时,实际上是读的父进程 阅读全文
posted @ 2021-11-19 16:57 zhushoucheng 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 用户空间和内核空间之间的切换通常称为trap trap的三种形式 系统调用引发 异常发生 设备中断 (时间中断、IO中断、网络中断等) supervise mode的权限 用户态和内核态之间的到底有什么区别?其实区别很小: 其中的一件事情是,你现在可以读写控制寄存器了。比如说,当你在supervis 阅读全文
posted @ 2021-11-04 21:46 zhushoucheng 阅读(1168) 评论(0) 推荐(2) 编辑
摘要: 逻辑地址与物理地址的转化 页表是由页表项(PTE)组成的数组。512个PTE构成一个页表页(Page-table page)。 PTE中包含了物理页码(PPN physical page number)以及一些标志,来控制物理空间块的读写访问权限。 物理地址与虚拟地址的映射为三层树形结构,每一层存储 阅读全文
posted @ 2021-10-29 22:09 zhushoucheng 阅读(1963) 评论(0) 推荐(0) 编辑
摘要: exec系统调用会从指定的文件中读取并加载指令,并替代当前调用进程的指令。从某种程度上来说,这样相当于丢弃了调用进程的内存,并开始执行新加载的指令。 exec系统调用会保留当前的文件描述符表单。所以任何在exec系统调用之前的文件描述符,例如0,1,2等。它们在新的程序中表示相同的东西。 通常来说e 阅读全文
posted @ 2021-10-28 22:41 zhushoucheng 阅读(1012) 评论(0) 推荐(0) 编辑
摘要: 虽然篇幅很长,但大多是易懂的代码,不用担心看不完 这里的所有操作,都将在下面的代码中有所体现 fork会拷贝当前进程的内存,并创建一个新的进程。如上图,fork函数会将整个进程的内存镜像拷贝到新的内存地址,包括代码段、数据段、堆栈以及寄存器内容。之后,我们就有了两个拥有完全一样内存的进程。fork系 阅读全文
posted @ 2021-10-25 22:53 zhushoucheng 阅读(2375) 评论(0) 推荐(0) 编辑
摘要: 课程主页:https://pdos.csail.mit.edu/6.828/2020/schedule.html 实验答案(非官方):https://blog.csdn.net/u013577996/article/details/108679997 课程视频翻译:https://mit-publi 阅读全文
posted @ 2021-06-13 23:04 zhushoucheng 阅读(1145) 评论(0) 推荐(0) 编辑
摘要: SM2官方文档整理 算法原理 SM2算法介绍 我国自主知识产权的商业密码算法,是ECC(椭圆加密算法)的一种,基于椭圆曲线离散对数问题(公钥密码体制所依据的难题主要为大素数分解问题、离散对数问题、椭圆曲线),计算复杂度是指数级。同等安全条件下,椭圆曲线密码较其他公钥算法所需密钥长度小很多。 ElGa 阅读全文
posted @ 2021-05-16 14:35 zhushoucheng 阅读(8274) 评论(0) 推荐(0) 编辑
摘要: 从BIOS启动到Kernel加载 大家天天使用电脑,有没有想过整个系统是如何启动的?从你按下电源键,到显示登录界面,中间究竟经历了什么? 本文主要讲述加载计算机内核系统的全过程,主要参考了MIT 6.828lab1实验以及其他参考资料。某些地址、行为在不同计算机上可能不同,这里仅用JOS系统做例子, 阅读全文
posted @ 2021-05-01 22:53 zhushoucheng 阅读(808) 评论(0) 推荐(0) 编辑