随笔记录
目录
1. 用户态切内核态:
用户态切换到内核态的唯一途径——>中断/异常/陷入(陷入又可称作系统调用)
2. 内核态切用户态:
内核态切换到用户态的途径——>设置程序状态字 PSW
注:CPU中有个PSW寄存器,其中有个模式位(mode bit)设置为0时表示内核模式,设置为1时表示用户模式
I/O 频繁发生内核态和用户态切换,怎么解决?
I/O会导致系统调用,从而导致内核态和用户态之间的切换。
因为对I/O设备的操作是发生在内核态。通过用户进程缓冲区,减少因为I/O导致的系统调用
用户缓冲区的目的就是是为了减少系统调用次数,从而降低操作系统在用户态与核心态切换所耗费的时间
read,write和sync都是系统调用。
read是把数据从内核缓冲区复制到进程缓冲区。
write是把进程缓冲区复制到内核缓冲区。
sync 是把内核缓冲区的数据同步写入磁盘。
当然,write并不一定导致内核的缓存同步动作sync,比如OS可能会把内核缓冲区的数据积累到一定量后,再一次性同步到磁盘中。这也就是为什么断电有时会导致数据丢失。所以说内核缓冲区,可以在OS级别,提高磁盘IO效率,优化磁盘写操作