2025.1.2复习
2025.1.2复习
用户态(User Mode)执行的任务:
- 运行用户程序
- 应用程序(如浏览器、文本编辑器、游戏等)通常在用户态下运行。
- 用户态程序没有直接访问硬件和系统资源的权限,它们只能通过系统调用来请求操作系统的服务。
- 内存管理
- 用户态进程使用的是虚拟内存。用户程序可以访问其虚拟地址空间,但不能直接访问物理内存,必须通过操作系统提供的虚拟内存机制来管理。
- 输入输出(I/O)请求
- 用户程序进行文件读写、网络通信等操作时,通常会通过系统调用(如
read()
、write()
、open()
)请求内核的服务。虽然这些操作的请求是在用户态发起的,但实际的硬件访问是在内核态执行的。
- 用户程序进行文件读写、网络通信等操作时,通常会通过系统调用(如
- 进程执行
- 在正常的程序执行过程中,程序指令在用户态运行。这些指令是由用户代码编写的,不涉及操作系统的内核服务。
- 系统调用
- 用户态程序通过系统调用(例如
fork()
、exec()
、exit()
)请求操作系统服务时,会从用户态切换到内核态,完成操作后再返回用户态。
- 用户态程序通过系统调用(例如
内核态(Kernel Mode)执行的任务:
- 进程调度
- 操作系统在内核态中进行进程调度,决定哪个进程可以运行,哪个进程被挂起。
- 内核管理进程的生命周期,包括进程创建、终止、切换等。
- 内存管理
- 内核负责管理系统的物理内存和虚拟内存,包括分页、分配内存块、内存保护等。
- 内核会通过内存分配器为用户程序和内核本身分配内存,并处理内存中的页面错误(如页面缺失)。
- 硬件交互
- 所有直接的硬件操作(如磁盘、网络、显示器、打印机等)都是由操作系统的内核在内核态中完成的。
- 内核通过设备驱动程序与硬件通信,提供硬件抽象层。
- 中断和异常处理
- 当发生硬件中断(如键盘输入、定时器中断)或软件异常(如除零、非法内存访问)时,处理程序会进入内核态。
- 操作系统在内核态处理中断、异常,确保进程状态的保存和恢复。
- 系统调用处理
- 当用户程序通过系统调用请求操作系统服务时,操作系统会在内核态中处理这些请求。例如,进行文件读写、网络通信等操作时,内核会负责实际的I/O操作。
- 文件系统操作
- 内核负责管理文件系统,处理文件的打开、关闭、读取、写入等操作。
- 文件系统操作通常需要内核提供低级别的文件管理和硬件访问。
- 网络协议处理
- 网络通信协议(如 TCP/IP)栈的处理在内核态进行,网络数据包的接收、发送、路由等都由内核来完成。
- 内核线程与内核任务
- 内核态中还存在一些内核级线程或任务(如定时器中断处理、硬件监控等),它们在内核态运行,确保系统的正常运行。
内核态和用户态之间的切换:
- 系统调用:用户态程序通过系统调用切换到内核态,请求操作系统提供服务。比如,文件操作、内存分配、进程管理等。
- 中断:硬件或软件中断会使得CPU从用户态切换到内核态,以便操作系统能够处理外部设备的请求或程序异常。
- 上下文切换:操作系统通过进程调度切换不同的进程,并在用户态和内核态之间切换执行。
总结:
- 用户态:程序执行用户代码、访问用户内存、请求系统服务。
- 内核态:操作系统执行进程管理、内存管理、硬件交互、中断处理、系统调用等关键操作,具有更高的权限。
内核态和用户态的切换通常会带来一定的性能开销,因此操作系统尽量减少在用户程序执行期间进入内核态的次数。