[問題] 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