中断
中断
是外围设备产生的异步事件,不同设备,中断号不同;比如在经典PC上,IRQ 0是时钟中断,IRQ 1是键盘中断;对于连接于PCI总线上的设备,中断还可以是动态分配的。
异常
与中断不同,异常的产生必须考虑与处理器时钟同步,比如除零,缺页,软中断等,都是由处理器自身产生的同步事件,异常也可称为同步中断;
本文对异步中断的讨论,大部分也适合于异常(同步中断)。
凡人皆无法挡
是外围设备产生的异步事件,不同设备,中断号不同;比如在经典PC上,IRQ 0是时钟中断,IRQ 1是键盘中断;对于连接于PCI总线上的设备,中断还可以是动态分配的。
与中断不同,异常的产生必须考虑与处理器时钟同步,比如除零,缺页,软中断等,都是由处理器自身产生的同步事件,异常也可称为同步中断;
本文对异步中断的讨论,大部分也适合于异常(同步中断)。
操作系统提供了一种标准的服务来让程序员实现对底层硬件和服务的控制(比如文件系统),叫做系统调用(system calls)
应用程序通过这组界面访问硬件和其他操作系统资源
完成对硬件和资源的访问控制
硬件设备的抽象(提供设备的独立性)
指在系统中能独立运行并作为资源(一段可执行程序代码、打开的文件、挂起的信号、内核内部数据、处理器状态、一个或多个具有内存映射的内存地址、一个或者多个执行线程、存放全局变量的数据段…)分配的基本单位。
它是由一组机器指令、数据和堆栈组成的,是一个能独立运行的活动实体。
进程变迁图(略)
创建->就绪->执行->等待->退出
是进程中的一个实体,作为系统调度和分派的基本单位。
对Linux而言,线程只不过是一种特殊的进程罢了。
微内核通过进程间通信来协调各个系统进程间的合作,这就需要系统调用,而系统调用需要切换堆栈以及保护进程现场,比较耗费时间
目前像Windows、macOS都是采用的微内核
而宏内核都是通过简单的函数调用来完成各个部门之间的合作的,所以理论上宏内核效率要比微内核高
Linux的设计者大名鼎鼎的Linus就是用的宏内核辣,为什么呢,最合理的解释就是人家厉害啊,全部写完都没BUG啊