[問題] System Call相關問題

看板CSSE (電腦科學及軟體工程)作者 (逆宇)時間12年前 (2012/05/15 01:09), 編輯推噓2(208)
留言10則, 4人參與, 最新討論串1/1
大家好, 最近在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

05/15 03:41, , 1F
scanf那個是IO block,要等使用者回應阿~
05/15 03:41, 1F

05/15 10:30, , 2F
咦? 所以問題是在於System Call的種類嗎?
05/15 10:30, 2F

05/15 10:32, , 3F
如果是一般的Printf or fopen,就不會切到別的process?
05/15 10:32, 3F

05/16 08:50, , 4F
printf也不一定可以一口氣印完的
05/16 08:50, 4F

05/16 09:59, , 5F
阿...樓上大大說的也有道理 的確有可能好多個畫面
05/16 09:59, 5F

05/16 09:59, , 6F
那所以 System Call 到底會不會使 Process被suspended阿
05/16 09:59, 6F

05/17 19:15, , 7F
他換太快了,應該感覺不出來才對
05/17 19:15, 7F

05/17 23:08, , 8F
現實的機器中,不管你做什麼都會一直換。CPU 就那幾顆,
05/17 23:08, 8F

05/17 23:09, , 9F
是靠換來換去才能同時跑一堆 processes. 你只要擔心會不會
05/17 23:09, 9F

05/17 23:10, , 10F
被 block (現行作業系統會很聰明的不換到你)就好。
05/17 23:10, 10F
文章代碼(AID): #1FiJmnmN (CSSE)
文章代碼(AID): #1FiJmnmN (CSSE)