[问题] System Call相关问题

楼主: mingcloud (逆宇)   2012-05-15 01:09:02
大家好,
最近在K恐龙
读到 System Call 的时候有个疑问一直想不通
所以想要来请教一下版上大大们
System Call 基本上是 User Process 和 Kernel 沟通的平台
在 user process 需要执行某些特别的command (IO Request等等)
因为在 user mode 下没有执行 以及 IO 保护的问题
所以基本上就是发出一个 Trap 给 OS,让 OS 去执行 对应的 Request
基本的流程应该是
1. Change to monitor mode
2. execute Service Routine
3. Return to System call interface
4. change to user mode and return
我的疑问在于说
呼叫 System Call的时候
原本的process会不会被 temporary suspended?
(如同 interrupt-IO cpu会先切给别的process用之类的)
想了两种 case
一般我程式 call scanf 的时候 大部分都会被 block 住
所以这时候是程式是有被 suspended吗?
问题是我 call printf 的时候好像也没有感觉被 suspended掉
通常output程式好像都执行得很顺遂
作者: mars90226 (火星人)   2012-05-15 03:41:00
scanf那个是IO block,要等使用者回应阿~
楼主: mingcloud (逆宇)   2012-05-15 10:30:00
咦? 所以问题是在于System Call的种类吗?如果是一般的Printf or fopen,就不会切到别的process?
作者: james732 (好人超)   2012-05-16 08:50:00
printf也不一定可以一口气印完的
楼主: mingcloud (逆宇)   2012-05-16 09:59:00
阿...楼上大大说的也有道理 的确有可能好多个画面那所以 System Call 到底会不会使 Process被suspended阿
作者: mars90226 (火星人)   2012-05-17 19:15:00
他换太快了,应该感觉不出来才对
作者: Favonia (00010110110001101010100)   2012-05-17 23:08:00
现实的机器中,不管你做什么都会一直换。CPU 就那几颗,是靠换来换去才能同时跑一堆 processes. 你只要担心会不会被 block (现行作业系统会很聪明的不换到你)就好。

Links booklink

Contact Us: admin [ a t ] ucptt.com