
操作系统真象还原
文章平均质量分 63
_return_
东北石油大学的一名普通的大学生
展开
-
操作系统真象还原第10章:输入输出系统
同步机制-----锁这里是利用信号量来作为同步机制的,其中down操作来获取锁,up操作来释放锁,对于锁主要是为了同步那些具有竞争关系的进程或者线程。代码sync.h#ifndef __THREAD_SYNC_H#define __THREAD_SYNC_H#include "../lib/kernel/list.h"#include "../lib/stdint.h"#include "thread.h"/* 信号量结构 */struct semaphore { uint8_t原创 2022-04-16 18:47:54 · 253 阅读 · 0 评论 -
操作系统真象还原第9章:线程
实现内核线程线程是啥,线程就是执行流,线程也好,进程也好,都是执行流,所谓执行流,就是正在执行的那些指令。线程依附于进程,因为线程没有自己的地址空间,线程是与进程共享对应进程的地址空间的。线程的实现方式有两个,一个是用户线程,一个是内核线程,其中用户线程是用户进程自自己通过某种调度算法实现的线程,其内所有的线程共享用户进程的时间片,内核不知道这些线程,如果有一个线程被阻塞的话,就相当于阻塞了整个进程。内核线程则是在内核实现的线程,其由内核调度,其是会被单独分配时间片的。其与进程一起被内核调度器一起调度。原创 2022-04-16 00:53:59 · 459 阅读 · 0 评论 -
操作系统真象还原第8章:内存管理系统
8.1makefile简介虽则代码模块越来越多,靠自己一个个编译代码和链接文件无疑是一件十分不讨好的事情,于是有了makefile来帮助我们其基本规则如下xxx.bin:xxx.o gcc xxxx -o xxxx意思是当xxx.o文件更新时间比xxx.bin更快就执行下面的命令,在:左边的称为目标文件,其右边的称为依赖文件。同时还可以设置变量,如下:args=xxx.cxxx.bin:xxx.o gcc $(args) -o xxxx$@代表目标文件的集合,$^代表依赖文件的集合,原创 2022-04-10 20:53:41 · 798 阅读 · 0 评论 -
操作系统真象还原第7章:中断
前言这一章挺琐碎的,看了好几遍,好好捋一捋这一章干的事情。这一章主要就是利用可编程中断控制器8259A来设置中断处理程序,其中32个中断是计算机自己有的(从0开始数),这一章目前只开启了时钟中断,所以这里设置的中断向量号从32开始,然后有个中断描述符表(IDT),类似与全局描述符表(GDT),中断向量号就类似与索引,从IDT中找到中断描述符,中断描述符中包括选择子(毕竟最终要找到中断处理程序,而中断处理程序肯定是在某个内存地址上的),属性,以及偏移地址,其中选择子在GDT中找到段描述符,段描述中存储着虚原创 2022-04-08 03:23:59 · 417 阅读 · 0 评论 -
操作系统真象还原第6章:完善内核
前言这一章没啥可讲的,主要就是实现一个类似putchar()的函数,当然是使用纯汇编的,书上已经讲的很详细了,我主要加上了一些我自己的注释代码print.S;--------步骤---------------------------;1.备份寄存器现场;2.获取光标坐标值,光标坐标值时下一个可打印字符的位置;3.获取待打印的字符;4.判断字符是否为控制字符,若是回车符,换行符,退格符三种控制字符之一,则进入;相应流程,否则,其余字符否被粗暴的认为是可见字符,进入输出流程处理;5.判断是否原创 2022-04-01 00:10:22 · 760 阅读 · 0 评论 -
操作系统真象还原第5章:保护模式进阶,向内核进阶
前言由于涉及到马上要搞实习的事情,搞得我十分的浮躁,自己也是频繁失眠,想来还是自己太过懒了,没控制住自己,自己也在这一个多月没搞好,尤其是本来想花几天时间来写一个高性能服务器,也把游双大佬的linux 高性能服务器编程大概看完了,然后自己也跟着视频写了写,但总是感觉自己没有真的懂,然后自己在github上下来的项目也总是感觉不好下手,然后我自己又想去搞csapp的实验了,结果前几个实验还好,但是在做那个shell lab的时候总感觉自己没有很好的搞懂,遂又放弃,然后自己又迷上了原神,又是荒废了十几天,这一原创 2022-03-31 01:48:40 · 2253 阅读 · 2 评论 -
操作系统真象还原第4章:保护模式入门
前言妈的还是没控制住自己,玩了几天,我自己就有一个很臭的毛病,如果玩的话就会一直玩下去,既然如此我直接不玩了,妈的我发誓绝逼不玩了还好没出现什么BUG,也算是完成了。关于这一章,我觉得比较重要的是对于全局描述符的设置,在书中我们可以知道,实模式下用户程序可以直接访问内存,这无疑是及其不安全的,并且用户程序与操作系统是同一地位的,这也意味着用户程序可以随意进入操作系统内核,这些都是及其不安全的,所以就有了保护模式,其中由于对段的约束,描述比较多,于是就用8字节的内存区域来描述段,这也就是段描述符,段描述原创 2022-02-06 04:02:41 · 845 阅读 · 1 评论 -
操作系统真象还原第3章:完善MBR
前言这次我出现了一些BUG,导致我忙活了一阵子,还好的是解决了老规矩还是把整个流程过一遍,当MBR忙活完后,就需要把自己手中的棒交给loader了,MBR的作用就是从硬盘中的内核加载器移动到内存中,然后跳转到内核加载器的地址去让内核加载器运行,在这方面需要对硬件需要一些了解特别是in out指令,还有个各个端口访问(端口就是寄存器),因为需要通过这些端口读取数据实验书中也说了需要对rd_disk_m_16函数要比较了解,所以我给出我的一些注释mbr.S%include "boot.inc"原创 2022-01-28 20:23:56 · 1185 阅读 · 0 评论 -
操作系统真象还原第2章:编写MBR主引导记录
前言这章的内容挺少的,也很简单,如果环境没配置错的话是没啥问题的。但是这章也很精彩,把引导的过程给说了出来,我也是看了几遍把这个过程给大致看懂了。首先计算机一开机这个时cpu会自动把cs:ip指针赋值成0xf000:0xfff0,根据实模式下的寻址关系可以知道此时正好是指向地址为0xffff0,而这个地址距离最高地址0xfffff之间正好是16字节的地址空间,这肯定是不够BIOS来执行各种硬件初始化以及各种硬件检查和中断向量表的建立等等,所以这里实际上存的跳转的地址,跳转到足够的地址后就会去执行这些,当原创 2022-01-23 23:12:13 · 957 阅读 · 0 评论 -
操作系统真象还原第1章:部署工作环境
前言关于自制操作系统,一开始本来是想利用极客时间的操作系统实战45讲来的(为了能够更快完成),然而当自己真正去学的时候才发现这些视频还是比较坑的,最起码对于我来说,首先是代码注释很少,函数,变量命名直接让我看不懂,而且其代码量有两万行,但代码讲的不多,我觉得对于学生党来说还是十分吃力的,在搞了几天后,我毅然决然的选择的操作系统真相还原,目前来看我的选择还是十分明智的,其书上讲的十分详细,也让我真的弄懂了许多。果然,任何时候都没有捷径可走,脚踏实地才最为稳妥,同时我也大概不会在买啥专栏了,还是书籍更加靠谱原创 2022-01-21 00:04:48 · 1483 阅读 · 0 评论