【发布时间】:2015-07-16 17:42:42
【问题描述】:
复习题
考虑程序
#include <stdio.h>
int main(){
putchar('X');
exit(0);
}
假设它被编译一个a.out文件被生成。现在假设用户在本地控制台窗口中键入 a.out 并按回车键。发生什么了?一定要描述一个合理但详细而全面的操作系统动作和事件序列,而不仅仅是用户看到的。
我的回答
首先,shell会在用户空间创建一个进程
然后它会执行模拟输入的系统调用'putchar',进程将切换到内核模式
然后它将进程(线程)添加到长期调度程序中,并在其中加入准备运行的所有进程的集合
一旦被选中,它将移至短期调度程序,在那里它将获得一些处理时间(准备就绪 -> 运行)
1234563
一旦 IO 完成,putchar 调用将在应用它的外围设备(监视器)上打印 X(等待 -> 运行)
一旦进程返回到短期调度程序,它将再次获得更多的处理时间。由于除了终止之外别无他法,进程终止(运行->终止)
这是有效的理解吗?我是否遗漏了一些流程创建的关键概念?我知道这是一个相对简单的过程,但请告知我缺少的任何内容。
感谢您的阅读,并提前感谢您的帮助。
【问题讨论】: