勇者の小栈

虚拟内存管理

介绍操作系统虚拟内存管理机制,包括为什么需要虚拟内存(地址空间隔离、内存使用效率、地址确定性),逻辑地址、线性地址与物理地址的区别,以及 x86 架构下的分段和分页地址转换过程。

应用程序与操作系统协作

应用程序和操作系统都是软件, CPU会将它们一视同仁,甚至CPU不知道自己在执行的程序是操作系统还是一般应用软件。 CPU只知道去cs:ip寄存器中指向的内存取出指令并执行 ,它不知道什么是操作系统。 编程语言其实只是编译器和大家的约定,只要写入这样的代码,编译器便将其翻译成某种机器指令,翻译成什么样取决于编译器的行为

软件如何访问硬件

硬件是各种各样的,发展速度还是非常快的。每个硬件都有自己的个性,操作系统不可能及时更新各种硬件的驱动方法(不可能刚出某个新硬件,OS开发者就开始为其编写驱动,这显然不现实)。 因此便出现了各种硬件适配器,这就是IO接口。接口其实就是标准,大家生产生出来的硬件按照这个标准工作就实现了通用。硬件在输入输出上大体分为串行和并

系统调用与内核态切换

介绍系统调用与用户态陷入内核态的机制,包括用户态/内核态分离的原因、x86 CPU 特权级别(PL0/PL3)、进入内核态的三种方式(系统调用、异常、中断),以及系统调用的执行流程。