作者mingcloud (逆宇)
看板CSSE
标题[问题] System Call相关问题
时间Tue May 15 01:09:02 2012
大家好,
最近在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程式好像都执行得很顺遂
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.115.146.39
1F:推 mars90226:scanf那个是IO block,要等使用者回应阿~ 05/15 03:41
2F:→ mingcloud:咦? 所以问题是在於System Call的种类吗? 05/15 10:30
3F:→ mingcloud:如果是一般的Printf or fopen,就不会切到别的process? 05/15 10:32
4F:→ james732:printf也不一定可以一口气印完的 05/16 08:50
5F:→ mingcloud:阿...楼上大大说的也有道理 的确有可能好多个画面 05/16 09:59
6F:→ mingcloud:那所以 System Call 到底会不会使 Process被suspended阿 05/16 09:59
7F:→ mars90226:他换太快了,应该感觉不出来才对 05/17 19:15
8F:推 Favonia:现实的机器中,不管你做什麽都会一直换。CPU 就那几颗, 05/17 23:08
9F:→ Favonia:是靠换来换去才能同时跑一堆 processes. 你只要担心会不会 05/17 23:09
10F:→ Favonia:被 block (现行作业系统会很聪明的不换到你)就好。 05/17 23:10