Loading...
花了大概一个月的时间,看了 12 章,到 13 章硬盘分区驱动这里实在是看不下去了,遂决定不再看这本书了,对其操作系统的实现也告一段落了,就停留在系统调用这里了。这里简单总结一下这一个半月学到的东西和我(几乎)看完本书后的感受。首先对于每一章基本都有做自己的总结《操作系统真像还原》操作系统实现——MBR《操作系统真像还原》操作系统实现——进入保护模式《操作系统真像还原》操作系统实现——进入分...
到这里,有了前面的铺垫,要说的东西不多,其实没必要单独写出来,但是系统调用毕竟还是比较重要的东西,所以这里还是单独说一下。Linux 下的系统调用占用的是 0x80 号中断,通过 eax 来选择要调用的功能,我们维护一个函数指针数组,存储各个功能的函数指针,然后用一个简单的汇编函数就可以实现调用extern syscall_table section .text global syscall...
硬件生产厂商(Intel)给多进程切换提供了硬件级的解决方案,也就是使用 TSS(Task-Stat Segment),令人遗憾的是由于其效率较低,现代操作系统大多没有使用它来进行进程切换,但是特别的,在特权级转移时的栈切换仍然需要通过它来进行,所以虽然我们不用它来切换进程,也仍然需要设置好它。由于用不到,所以就不说如何用 TSS 来进行任务切换了TSS 的设置将 TSS 抽象为结构体,结构...
关于键盘输入我不想写,就是一个和硬件交互的过程,这里主要还是说一下输入输出缓冲区。代码已经打好 tag,链接,比较重要的就是 ioqueue。获取键盘输入后,可以直接打出到屏幕上,但是这样除了给用户看看之外没有任何的用处,如果想要让输入有效,就必然需要把输入暂存到一个地方,然后让需要从用户读取的线程读取输入,这就需要一个缓冲区来处理这个问题,Dijkstra 提出了一个生产者-消费者模型,基...
这篇文章写的比较乱且简略,要看的话建议跟着代码一起看。本文代码在此处线程和进程是操作系统的重要概念。线程和进程的区别这似乎是一个面试中常见的问题了哈哈哈,这里我可能无法给出教科书级别的解释(实际上那也未必是最好的解释),只写一下自己的理解。先考虑一下线程存在的意义,如果一个计算机系统是单线程的(即不能并发),显然这个机器也是可以工作的,但是每个线程在工作的时候可能会进行各种 IO 操作,此时...