
操作系统
文章平均质量分 66
_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 评论 -
自制操作系统第1天(开始篇)
前言从今天开始我大概打算花15天左右的时间来完成自制一个玩具操作系统加油!!!冲冲冲!!!原创 2022-01-15 21:08:44 · 139 阅读 · 0 评论 -
哈工大操作系统实验8:proc文件系统的实现
前言这便是最后一个实验了,到目前为止,这最后一个实验也就这样结束,但纵观这8个实验,其实真正自己独立完成的少之又少,看着别的博主能够有自己的思想,能够写出自己的代码,然后自己去调试,我相信那种过程无疑更加有成就感的,而像我却大多数都是自己瞎琢磨一段时间后不得不去看别人的操作系统实验,其实就本身而言我觉得我这8个实验还是做的比较失败的,当然自己思考了一番,我自己存在比较大的问题,我其实是有自己的灵光的,但是自己缺乏行动性,以后自己得改掉这个习惯,一定不要胆怯,自己想到啥就自己去实践,而不是自己一遇到困惑就去转载 2021-10-17 20:45:32 · 381 阅读 · 0 评论 -
哈工大操作系统实验7:终端设备的控制
前言这个实验毫无疑问是很简单的,一个小时都不用估计都能完成,但是即使如此我还是参考了别人博客,主要原因是我不太清楚函数应该写在哪,我一开始还以为要在keyboard.S上写汇编函数,不太清楚为啥keyboard.S能够直接与tty_io.c直接联起来,毕竟之间是没有用啥头文件的,或许是因为汇编是直接与硬件打交道,所以能够与其他文件联系起来?实验在keyboard.S(大写S)中的,key_table上找到F12键的位置这个应该就相当于函数的地址在tty_io.c中编写函数myFunc()int原创 2021-10-13 16:53:41 · 224 阅读 · 0 评论 -
哈工大操作系统实验6:地址映射和共享
前言做这个实验大致上消耗了我三天时间,本来我是想在10月10号之前搞完的,但最终还是消耗到了现在,搞计算机行业或许真的要有一颗强大的心理。不然你真的回被各种各样的bug给搞麻来。从前天开始我就不停的在调试修改的过程中,而且由于自己不太明白如何在linux-0.11上利用gdb调试,以至于我只能不停的利用增加printf来试这样的方式来调试,其调试过程无疑是十分痛苦的。但好歹是走到了这一步,只剩下最后两个实验了,希望自己能够在10月15号之前搞完吧。声明这个实验严格意义上来说其实我并不算做出来了,因为实原创 2021-10-12 01:05:30 · 762 阅读 · 0 评论 -
哈工大操作系统5:信号量的应用和实现
前言写到这篇博客的时候距离上一次博客时间已经7天了,除去自己休息了一天以及自己看视频一天后,总共用了5天时间来搞,这时间是真的比较长的,我本来的计划是国庆最起码把内存的实验搞掉,结果今天才把这个搞完。。。,话不多说,我尽量把我遇到的一些坑写出来,希望对你有帮助,假设你遇到与我一样的困难的话。实验实验目的1.编写利用信号量的生产者消费者模型2.自己在linux-0.11下实现sys_sem_open,sys_sem_wait,sys_sem_post,sys_sem_unlink信号量实验内容生原创 2021-10-03 20:56:47 · 477 阅读 · 0 评论 -
哈工大操作系统实验4:基于内核切换的进程切换
前言对于这个实验来说,说实话的其实代码基本上蓝桥实验楼上的指导书已经给全了,当然依旧存在一些特意留下的陷阱留着自己来解决。但是做实验也好还是做习题也好,其实本质上都是都是增加自己的理解,而做实验,正如李治军教授说的一样,纸上得来终觉浅,绝知此事要躬行,是给我们更深入理解其本质的绝佳做法。所以,在真正去做这个实验必须要搞懂整个流程是如何进行的。这三天时间,我也是查阅了一些博客,以及看了好多遍视频,才大致把整个流程搞懂来。接下来这篇博客,我会尽力把我所理解的流程讲解一遍。关于整个进程切换的思考对于整个核心原创 2021-09-25 16:28:07 · 805 阅读 · 0 评论 -
哈工大操作系统实验3:进程运行轨迹的跟踪与统计
前言这个博客鸽了好久了,一来自己在准备数学建模,二来自己还是比较难以控制自己啊,还是会忍不住自己玩手机啊,一定要克制住自己啊。然后说一下这个实验吧,首先还是的对自己痛骂一下为啥么我总是犯一些低级错误,最让我头痛的一个bug竟然是if语句如果不带括号的话,其后会执行的语句只有一句。这当真是困扰了我好久啊,把代码真正是对了好几遍,才终于发现了这个问题。然后需要注意的是,那个stat_log.py 是用来检测你的添加fprink() 函数的位置对不对的。需要注意的是进程状态之间的转换为:运行->睡眠 、运原创 2021-08-24 01:49:01 · 2137 阅读 · 3 评论 -
哈工大操作系统lab2(添加系统调用)
lab2添加系统调用前言对于实验一,由于基本上按照实验册来就可以成功,故我就没有写博客。同时对于此博客更多的是纪念自己所学,如要实验参考:推荐博客:love6’s blog先说一下自己所理解的系统调用:首先我们得要清楚操作系统中分为用户态和内核态,用户态是用户所在的,用户可操作的,而内核态是用户不可直接访问的,如要访问内核态,必须要通过API来访问,通过API这个接口来实现内核函数的调用,即为系统调用。...原创 2021-08-05 23:46:37 · 510 阅读 · 0 评论