(1)用户态和内核态的区别
-
在用户态下,
-
进程 只能 访问受限的资源,执行受限的指令集,不能 直接访问 操作系统的核心部分,也不能直接访问 硬件资源。
-
用户态下的 CPU 不允许独占,也就是说 CPU 能够被其他程序获取。
-
-
在内核态下,
-
进程可以 直接访问硬件资源,执行 系统调用、管理内存和文件系统等操作
-
处于内核态的 CPU 可以从一个程序切换到另外一个程序,并且每个程序都是独占这个CPU
-
(2)在什么场景下,会发生内核态和用户态的切换
第一个是 系统调用:当 用户程序 需要请求 操作系统提供的服务 时,会 通过 系统调用 进入 内核态
第二个是 异常:当 程序执行过程中 出现错误或异常情况(缺页异常)时,CPU 会自动切换到 内核态,以便 操作系统 能够处理这些异常
第三个是 中断:像键盘、鼠标、磁盘等 外部设备 会产生中断信号,这时 CPU 暂停执行本来要执行的指令,转而从 用户态 切换到 内核态。此时,操作系统执行 相应的中断处理程序 来处理这些中断,然后再 将 CPU 切换回 用户态