2025.1.2复习

2025.1.2复习

用户态(User Mode)执行的任务:

  1. 运行用户程序
    • 应用程序(如浏览器、文本编辑器、游戏等)通常在用户态下运行。
    • 用户态程序没有直接访问硬件和系统资源的权限,它们只能通过系统调用来请求操作系统的服务。
  2. 内存管理
    • 用户态进程使用的是虚拟内存。用户程序可以访问其虚拟地址空间,但不能直接访问物理内存,必须通过操作系统提供的虚拟内存机制来管理。
  3. 输入输出(I/O)请求
    • 用户程序进行文件读写、网络通信等操作时,通常会通过系统调用(如 read()write()open())请求内核的服务。虽然这些操作的请求是在用户态发起的,但实际的硬件访问是在内核态执行的。
  4. 进程执行
    • 在正常的程序执行过程中,程序指令在用户态运行。这些指令是由用户代码编写的,不涉及操作系统的内核服务。
  5. 系统调用
    • 用户态程序通过系统调用(例如 fork()exec()exit())请求操作系统服务时,会从用户态切换到内核态,完成操作后再返回用户态。

内核态(Kernel Mode)执行的任务:

  1. 进程调度
    • 操作系统在内核态中进行进程调度,决定哪个进程可以运行,哪个进程被挂起。
    • 内核管理进程的生命周期,包括进程创建、终止、切换等。
  2. 内存管理
    • 内核负责管理系统的物理内存和虚拟内存,包括分页、分配内存块、内存保护等。
    • 内核会通过内存分配器为用户程序和内核本身分配内存,并处理内存中的页面错误(如页面缺失)。
  3. 硬件交互
    • 所有直接的硬件操作(如磁盘、网络、显示器、打印机等)都是由操作系统的内核在内核态中完成的。
    • 内核通过设备驱动程序与硬件通信,提供硬件抽象层。
  4. 中断和异常处理
    • 当发生硬件中断(如键盘输入、定时器中断)或软件异常(如除零、非法内存访问)时,处理程序会进入内核态。
    • 操作系统在内核态处理中断、异常,确保进程状态的保存和恢复。
  5. 系统调用处理
    • 当用户程序通过系统调用请求操作系统服务时,操作系统会在内核态中处理这些请求。例如,进行文件读写、网络通信等操作时,内核会负责实际的I/O操作。
  6. 文件系统操作
    • 内核负责管理文件系统,处理文件的打开、关闭、读取、写入等操作。
    • 文件系统操作通常需要内核提供低级别的文件管理和硬件访问。
  7. 网络协议处理
    • 网络通信协议(如 TCP/IP)栈的处理在内核态进行,网络数据包的接收、发送、路由等都由内核来完成。
  8. 内核线程与内核任务
    • 内核态中还存在一些内核级线程或任务(如定时器中断处理、硬件监控等),它们在内核态运行,确保系统的正常运行。

内核态和用户态之间的切换:

  • 系统调用:用户态程序通过系统调用切换到内核态,请求操作系统提供服务。比如,文件操作、内存分配、进程管理等。
  • 中断:硬件或软件中断会使得CPU从用户态切换到内核态,以便操作系统能够处理外部设备的请求或程序异常。
  • 上下文切换:操作系统通过进程调度切换不同的进程,并在用户态和内核态之间切换执行。

总结:

  • 用户态:程序执行用户代码、访问用户内存、请求系统服务。
  • 内核态:操作系统执行进程管理、内存管理、硬件交互、中断处理、系统调用等关键操作,具有更高的权限。

内核态和用户态的切换通常会带来一定的性能开销,因此操作系统尽量减少在用户程序执行期间进入内核态的次数。

posted @ 2025-01-02 20:06  vast_joy  阅读(1)  评论(0编辑  收藏  举报