pre*_*mba 6 c linux
我试图跟踪阻止某个进程的高级函数调用.这样的一个例子是scanf,它阻塞终端直到它收到'\n'.现在我将scanf跟踪到getc(scanf使用getc从stdin获取字符).我的问题是,解释来自键盘的数据,一直到内核以及返回getc的过程是什么?scanf如何停止终端(计算机空闲,还是处理其他任务)?谢谢
Bla*_*iev 5
每当进程发出系统调用(例如阻塞read(2))时,进程就开始以内核模式执行,即调用处理特定系统调用的内核代码.
read(2)
之后,根据底层设备和驱动程序,可以暂停进程并将其置于等待队列中.当按下某个键时,将调用处理中断的内核代码,并从那里扣除按下哪个键.
然后内核恢复等待此输入的进程,并通过将数据从内核地址空间复制到特定进程的地址空间来传递数据.
归档时间:
13 年,10 月 前
查看次数:
969 次
最近记录: