[理工] [OS] 99清大資工 5c interrupt

看板Grad-ProbAsk作者 (林小弟)時間12年前 (2012/01/09 17:10), 編輯推噓2(2050)
留言52則, 4人參與, 最新討論串1/1
For a computer with no hardware interrupt, is it possible to implement a multi-tasking Operating System? Please note that the computer still provide trap and the performance of the Operating System is not considered. 我原本以為是NO,除非確定每個JOB都有大量的system call。 但是我看洪的題庫解答卻是yes,而且理由中有一句話我覺得很奇怪: 『...自己建立logical timer,...,OS可以設定max time quantum... 且OS隨時檢查counter值,一旦為零...』  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 假如CPU現在正在執行Pa,除非Pa有使用system call或發生錯誤,不然 OS應該拿不到CPU不是嗎?那它要怎麼檢查counter值? 還是我的觀念有問題~"~ 有人會這題的嗎?我爬文有人在推文提到有trap就可以,可是我不太 懂為什麼。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.87.87

01/09 18:21, , 1F
就是設一個time quantum阿,RR不是也是這樣嗎 時間到了就
01/09 18:21, 1F

01/09 18:21, , 2F
trap阿
01/09 18:21, 2F

01/09 18:22, , 3F
可是timer是hardware interrupt,是因為硬體支援才有
01/09 18:22, 3F

01/09 18:25, , 4F
logical timer,邏輯上的時間器,也就是你可以自己寫個程式
01/09 18:25, 4F

01/09 18:26, , 5F
隨便令一個變數讓它是time quantum,然後隨時間遞減
01/09 18:26, 5F

01/09 18:26, , 6F
後面看你是要讓os選要不要kick,還是直接kick...bla bla
01/09 18:26, 6F

01/09 18:28, , 7F
這問題真的很吊詭 因為time quantum 跟logical timer要
01/09 18:28, 7F

01/09 18:29, , 8F
寫在哪???? (不能改要執行的程式的code)
01/09 18:29, 8F

01/09 18:29, , 9F
如果一台電腦當中有一個OS 而他平常要依序執行100的program
01/09 18:29, 9F

01/09 18:29, , 10F
100個program 如果說是logical timer的話
01/09 18:29, 10F

01/09 18:30, , 11F
意思是這100個program的原始code 全部都要改加timer
01/09 18:30, 11F

01/09 18:30, , 12F
重新compile ????????/
01/09 18:30, 12F

01/09 18:40, , 13F
自己另外寫一個timer程式就好了
01/09 18:40, 13F

01/09 18:40, , 14F
JiDung 你懂我!我覺得那個遞減的程式OS根本沒機會執行
01/09 18:40, 14F

01/09 18:40, , 15F
然後你是去check這個timer程式看時間到了沒,不用動到
01/09 18:40, 15F

01/09 18:42, , 16F
你只要把os改成每一段時間就要stall process 然後去check
01/09 18:42, 16F

01/09 18:42, , 17F
timer值有沒有到就好啦
01/09 18:42, 17F

01/09 18:42, , 18F
g大 你說得要先有分時系統才有用吧 因果有點怪怪的
01/09 18:42, 18F

01/09 18:45, , 19F
我的意思是 沒有硬體timer OS根本沒辦法每隔一段時間作
01/09 18:45, 19F

01/09 18:45, , 20F
什麼事情 連檢查 切換 暫停 都沒辦法作
01/09 18:45, 20F

01/09 18:51, , 21F
OS怎麼會不能做...-.-...這樣說好了那你的virtual machine
01/09 18:51, 21F

01/09 18:51, , 22F
的timer怎麼做
01/09 18:51, 22F

01/09 18:54, , 23F
沒有hardware interrupt 除非你的process自願放開CPU
01/09 18:54, 23F

01/09 18:55, , 24F
否則OS搶不回CPU (我個人想法)
01/09 18:55, 24F

01/09 18:56, , 25F
嗯 我的意思就是這樣
01/09 18:56, 25F

01/09 19:03, , 26F
這樣的話那你遇到 illegal command跟 除0 怎麼辦
01/09 19:03, 26F

01/09 19:08, , 27F
不合法的命令我不太確定 但是除以0應該會引發trap吧
01/09 19:08, 27F

01/09 19:10, , 28F
對阿 但是你的process本來就是要執行除0這個指令阿,你os
01/09 19:10, 28F

01/09 19:10, , 29F
她又不是自願 os幹麻要把它trap掉
01/09 19:10, 29F

01/09 19:11, , 30F
而且由此可知os是可以trap把process暫停的阿 怎麼會不行
01/09 19:11, 30F

01/09 19:13, , 31F
timer之所以要用hardware的方式 是因為timer製作簡單,
01/09 19:13, 31F

01/09 19:14, , 32F
且os又可以不用一直去polling它
01/09 19:14, 32F

01/09 19:16, , 33F
步表示不能用阿@@
01/09 19:16, 33F

01/09 19:46, , 34F
g大你說的很有道理 引起我的興趣 所以我去查了恐龍本以外
01/09 19:46, 34F

01/09 19:48, , 35F
的資料 結果發現一個現象 把trap歸類為軟體中斷的只有恐
01/09 19:48, 35F

01/09 19:48, , 36F
找到正確解答了嗎XD
01/09 19:48, 36F

01/09 19:50, , 37F
龍本 stalling 徐老師 還有一些投影片 都歸類在硬體內部
01/09 19:50, 37F

01/09 19:50, , 38F
但是除0跟 illegal command我記得是software產生的阿
01/09 19:50, 38F

01/09 19:50, , 39F
中斷 然後我查了trap的原理 它的確是靠硬體偵測但靠OS處
01/09 19:50, 39F

01/09 19:52, , 40F
理 而且指令週期理有個中斷週期 所以我想可能就是永遠把Y
01/09 19:52, 40F

01/09 19:53, , 41F
中斷的旗標設為true 讓它每個指令都會trap 就能作出來
01/09 19:53, 41F

01/09 19:55, , 42F
只有一個結論 就是恐龍本很爛...
01/09 19:55, 42F

01/09 19:55, , 43F
但是它是聖經XD
01/09 19:55, 43F

01/09 20:05, , 44F
謝謝兩位 突然有種 有些事情不必那麼計較的心情XD
01/09 20:05, 44F

01/09 20:07, , 45F
至少你懂trap了 詳細了解XD
01/09 20:07, 45F

01/09 20:18, , 46F
感謝g大 一路看下來 我也懂了XD
01/09 20:18, 46F

01/09 20:28, , 47F
G大 有個部份和你說得不同 我用修文回覆您
01/09 20:28, 47F
1.interrupt的種類: A.硬體1.External interrupt(HW) CPU以外的周邊元件所發出的 eg. I/O complete、 I/O error、machine check 2.Internal interrupt(HW) CPU本身所引發的 eg. stack overflow、illegal command( 非法指令執行)、divided by zero(除以0)... B.軟體 Software interrupt 當user program執行時,若需要OS提供服務,則發出此類中斷通知 OS執行對應的service routine eg. system call、trap 不合法命令和除以0,我的筆記和我查的資料都是硬體內部中斷 但是比較trap和硬體中斷的時候除以0是放在trap.... ※ 編輯: worldxxi 來自: 118.160.87.87 (01/09 20:31)

01/09 20:34, , 48F
除0 compiler也測的出來阿應該是hardware software都可以吧
01/09 20:34, 48F

01/09 20:34, , 49F
不過一般來說 現在都是complier在做吧 所以比較多人說soft
01/09 20:34, 49F

01/09 20:38, , 50F
原來如此 但是考試的時候我會照洪的筆記寫 不然會怕 哈
01/09 20:38, 50F

01/09 20:42, , 51F
我也覺得這有點含糊XD
01/09 20:42, 51F

09/11 14:44, , 52F
中斷 然後我查了tra https://daxiv.com
09/11 14:44, 52F
文章代碼(AID): #1F2gxsjn (Grad-ProbAsk)