进程系统的运行机制是什么?CPU切换进程时用户输入如何处理?
进程运行机制与切换时输入处理问题解答
首先明确你提到的两种猜测都不符合现代操作系统的实际实现,具体逻辑如下:
- 现代通用操作系统均采用抢占式多任务调度模型,不存在用户进程运行时其他进程必须等待的规则,否则系统根本无法实现多任务并行,你也不可能一边编辑文档一边后台下载文件、播放音频。
- 你提到的用户输入不会存入进程的调用栈,栈是进程用户态空间中用于存储函数调用上下文、局部变量的区域,和外设输入的存储逻辑无关。
输入场景的完整处理流程如下:
- 用户敲击键盘产生硬件中断,无论CPU当前正在运行进程Y还是其他任何进程,都会立刻暂停当前执行的用户态任务,切入内核态执行键盘中断的处理程序。
- 内核中断程序会识别到该输入属于正在等待输入的进程X,将输入内容写入进程X专属的内核输入缓冲区,同时将进程X的状态从「阻塞(等待IO)」修改为「就绪(等待调度)」,之后内核会回到之前被中断的进程Y继续执行。
- 等到下一次调度器触发调度时,如果进程X拿到CPU时间片,就会从之前暂停的位置继续运行,调用
read()等相关系统调用时就能从内核缓冲区读取到之前输入的内容完成后续处理。
简单总结:切换到进程Y的期间用户输入不会丢失,也不会打断Y的运行,由内核统一暂存输入后等进程X重新被调度时再处理。
内容的提问来源于stack exchange,提问作者klocki23
相关产品推荐
相关产品推荐

