用户态:所有用户程序都是运行在用户态的,
内核态:但是有时候程序确实需要做一些内核态的事情, 例如从硬盘读取数据, 或者从键盘获取输入等.
两者切换:唯一可以做这些事情的就是操作系统, 所以此时程序就需要先操作系统请求以程序的名义来执行这些操作.
信号是一种异步通知事件:收/发
发:linux内核往应用程序发,应用随时被中断
进程上下文切换
进程A运行在用户模式->read线程调用>进程A陷入内核(磁盘向CPU发中断)->CPU空闲->调用进程B(进程B进入用户模式)
->B时间片用完或磁盘拷贝完毕,DMA完成->进程B进程陷入内核(磁盘向CPU发中断)->CPU空闲->调用进程A