系统结构
存储结构
1、为什么计算机要给储存结构分级?
不同级别的储存结构具有不同的访问速度,CPU访问CPU Cache的延时只需要几纳秒,访问物理内存的延时则100纳秒,速度相差100倍,访问磁盘延时就更高了,已经到毫秒级,但是访问速度越快的存储器,造价成本就越高,容量也小很多。
通过分级存储结构,可以将数据按照不同的访问速度、容量和成本要求进行管理,CPU Cache用于存储近期频繁访问的数据,内存用于存储当前执行的程序和数据,而硬盘则用于存储大量数据和长期存储。
1分秒= 10厘秒;1厘秒= 10 毫秒;1 毫秒= 1000微秒;1微秒= 1000纳秒;1纳秒= 1000皮秒。
2、CPU CacheL1 L2 L3读取数据的时间量级差距有多大?
差距不大,都是纳秒级别,CPU访问L1 Cache大概延时是1-2纳秒,访问L2 Cache大概延时5-10纳秒,访问L3 Cache大概延时10-30纳秒。
内核态
1、什么是内核?
计算机是由各种外部硬件设备组成的,比如内存、CPU、硬盘等,如果每个应用都要和这些硬件设备对接通信协议,那这样太累了,所有由内核作为中间人,让内核作为应用连接硬件设备的桥梁,应用程序只需要关心与内核交互,不用关心硬件的细节。
内核是操作系统的核心组件,负责管理系统资源、提供硬件抽象层、调度任务和实现进程间通信等功能。内核是系统中第一个加载的程序,并拥有最高的特权级别,控制整个系统的运行和资源分配。它与用户空间程序交互,提供系统调用的接口,实现了操作系统的基本功能。
2、内核态和用户态有什么区别?为什么要区分内核态和用户态?
在CPU的所有指令中,有一些指令是非常危险的,如果错用,将导致整个系统崩溃,比如:清空内存、修改时钟等。如果所有的程序代码都能直接使用这些指令,那么我们的系统可能一天死n次。
所以,CPU将指令分为特权指令和非特权指令。
CPU的特权分级从内到位为Ring0、Ring1、Ring2、Ring3 。根据分级机制,把进程的运行空间分为内核空间和用户空间。
- 内核空间(Ring0)具有最高权限,可以直接访问所有硬件资源,比如硬盘、网卡、内存等。
- 用户空间(Ring3)只能访问受限资源,不能直接访问内存等硬件设备,必须通过系统调用陷入内核态中,才能访问这些特权资源。
为什么要区分用户态和内核态呢?这是为了实现操作系统的核心功能和保证系统的稳定性、安全性以及资源的合理分配。通过区分内核态和用户态,操作系统可以:
- 提供一种安全机制,限制用户程序对系统资源的直接访问,防止恶意程序对系统造成破坏。
- 实现操作系统的核心功能,如管理进程、文件系统、内存管理等,这些功能需要再内核态下进行。
- 实现多任务并发执行,通过在内核态和用户态之间进行,操作系统可以在不同应用程序之间共享处理器资源,实现任务的并发执行。
3、什么时候会由用户态陷入内核态?
- 应用程序执行系统调用的时候,会触发一个软件中断(比如 int指令),会进入内核态执行相应的内核代码,完成后再返回用户态。(用户态主动要求切换到内核态的一种方式)
- 当应用程序发生异常情况,如访问非法内存、除零错误等,CPU会触发一个异常,将控制权转移到内核态的异常处理程序中。
- 当系统接收到外部设备的中断信号,如硬件设备的输入输出请求、定时器中断等,处理器会中断当前的执行,进入内核态执行相应的中断处理程序。
参考资料
https://xiaolincoding.com/os/