文章总览:YuanDaiMa2048博客文章总览
计算机基础四大件学习笔记
说明:虽然学习过计算机组成与系统结构、操作系统、计算机网络以及数据结构这四门课程,但是对于这四门课的结合和实际中的应用还是模糊的,因此x想通过网上的一些视频,将这四门课从程序员实际应用的角度去结合,主要记录一些课程学习的笔记,目的是由浅入深真正了解计算机底层的工作原理。
计算机组成原理
关键词:内核、程序、cpu、硬中断、软中断、GDT、IDT、IO中断、时钟中断…
一、程序运行的底层逻辑
流程图
-
程序如何执行:
在计算机中,系统的运行分为用户态和内核态。用户态运行的是用户程序,而内核态运行的是内核代码,负责管理硬件设备和执行系统调用等。程序执行时,特别是需要进行系统调用(比如文件操作、网络通信等需要操作系统介入的操作)时,会通过软中断(例如
int 0x80
或syscall
指令)从用户态切换到内核态。CPU收到这个指令后,会查询IDT(中断描述表),找到对应的处理函数(系统调用的入口点)并执行,这个过程称为系统调用。 -
内核安全性保证:
内核的安全性主要通过内存保护、权限控制和用户态/内核态的隔离来实现。GDT(全局描述符表)和IDT是其中的关键机制。GDT中定义了不同段的属性,包括基地址、界限以及访问权限等,确保用户程序不能直接访问或修改内核代码和数据。通过这种方式,加上CPU的特权级别机制,确保了只有合适的权限(通常是内核态)才能执行某些敏感操作。
-
软件程序的并行执行:
现代计算机通过进程调度(多任务)实现了看似并行的执行效果。实际上,单核CPU在任一时刻只执行一个任务,而多核CPU可以同时执行多个任务。进程调度器(系统的一部分)负责管理所有进程的运行,确保CPU时间被公平且高效地分配给每个进程。
时钟中断是实现时间片轮转调度的关键机制之一。计算机中的时钟会定时产生中断,触发操作系统的调度程序运行,挂起当前进程,保存其状态,然后根据调度算法选择另一个进程继续执行。这样,通过在不同进程间迅速切换,给用户一种多个程序似乎在同时运行的错觉。
硬中断和软中断(包括系统调用)也是触发任务切换的机制,但它们主要用于处理异步事件和系统调用请求,而时钟中断主要用于实现时间片调度。
二、相关概念介绍
-
内核 (Kernel)
- 内核是操作系统的核心部分,负责管理计算机的硬件资源,提供系统服务。它在用户程序和硬件之间充当中介,执行包括内存管理、进程调度、文件系统管理等任务。
-
程序 (Program)
- 在计算机中,程序是一系列指令的集合,这些指令能被CPU执行以完成特定的任务。程序在执行前通常存储在磁盘上,执行时加载到内存中。
-
CPU (Central Processing Unit)
- CPU,即中央处理器,是计算机的主要部件之一,负责解释和执行程序指令,处理数据。
-
硬中断 (Hardware Interrupt)
- 硬中断是由计算机硬件发出的中断信号,用于通知CPU立即处理某个事件,如输入/输出操作完成。
-
软中断 (Software Interrupt)
- 软中断是由软件产生的中断,通常用于操作系统内核提供的服务请求,如系统调用。
-
GDT (Global Descriptor Table)
- 全局描述符表,是一种用于定义不同内存段(如代码段、数据段)属性的数据结构,它支持内存保护和特权级别控制,确保只有具有适当权限的代码才能访问特定的内存区域。
-
IDT (Interrupt Descriptor Table)
- 中断描述符表,用于定义每种中断或异常的处理程序的地址和属性。当CPU接收到一个中断信号时,它会使用IDT来确定如何处理该中断。
-
IO中断 (I/O Interrupt)
- 输入/输出中断,是一种硬中断,由外围设备(如硬盘、网络接口)发出,表示数据传输可以开始或已经完成,需要CPU的注意。
-
时钟中断 (Clock Interrupt)
- 时钟中断由计算机的定时器定期生成,用于操作系统的进程调度,确保CPU时间可以被多个进程共享,实现多任务处理。
-
用户态 (User Mode)
- 用户态是指CPU运行权限较低的模式,用户程序在此模式下运行。在用户态,程序不能直接执行内核代码或操作硬件。
-
内核态 (Kernel Mode)
- 内核态是指CPU运行权限最高的模式,操作系统的核心部分在此模式下运行。在内核态,代码可以直接访问所有硬件和内存区域。