用户态与内核态切换

随笔记录

目录

1. 切换方式

2. 案例介绍


1. 切换方式

1. 用户态切内核态:
用户态切换到内核态的唯一途径——>中断/异常/陷入(陷入又可称作系统调用)


2. 内核态切用户态:
内核态切换到用户态的途径——>设置程序状态字 PSW

注:CPU中有个PSW寄存器,其中有个模式位(mode bit)设置为0时表示内核模式,设置为1时表示用户模式

2. 案例介绍

I/O 频繁发生内核态和用户态切换,怎么解决?

I/O会导致系统调用,从而导致内核态和用户态之间的切换。
因为对I/O设备的操作是发生在内核态。通过用户进程缓冲区,减少因为I/O导致的系统调用


用户缓冲区的目的就是是为了减少系统调用次数,从而降低操作系统在用户态与核心态切换所耗费的时间
read,write和sync都是系统调用。
read是把数据从内核缓冲区复制到进程缓冲区。
write是把进程缓冲区复制到内核缓冲区。
sync 是把内核缓冲区的数据同步写入磁盘。

当然,write并不一定导致内核的缓存同步动作sync,比如OS可能会把内核缓冲区的数据积累到一定量后,再一次性同步到磁盘中。这也就是为什么断电有时会导致数据丢失。所以说内核缓冲区,可以在OS级别,提高磁盘IO效率,优化磁盘写操作

用户态与内核态切换_第1张图片

你可能感兴趣的:(linux,服务器,内核)