看板 Grad-ProbAsk 關於我們 聯絡資訊
1.在OS RR排班中,若Process A time out ,可因為PA 優先權極高,要立即preemptive 進Running,有需要再做context switch嗎? 2.在pipeline中,若branch 跟jump taken 那在跳了之後這兩個指令的MEM與WB stage是 都為空的? 兩個小東西突然卡住,感謝各位大大 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.15.229.11 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1510309602.A.EC5.html
TMDTMD2487: RR的ReadyQ預設應該都是FIFO所以除非裡面沒東西不然A11/10 18:40
TMDTMD2487: 進去應該都會有人比他權重高,如果Q裡面沒別的東西的11/10 18:40
TMDTMD2487: 話好像沒再算context switching,這是真對做題目說的11/10 18:41
TMDTMD2487: 實際上我也不知道XD11/10 18:42
XDDD 可以算是我假設的是readyQ只有一個PA 但到底要不要context switch QQ 我自己是覺得還是要,因為OS可能根本不知道這兩個程式是相同的,但還是希望有人有有 力的論據XDD
TMDTMD2487: 阿你跳躍了之後後面的stage還是會把解碼過的控制訊號11/10 18:43
TMDTMD2487: 往後面送,只是他們的控制信號本就不會做寫入等等的事11/10 18:44
※ 編輯: leoone (101.15.229.11), 11/10/2017 18:47:00
TMDTMD2487: 我覺得說是空的不太準確,本來就會往後只是不會有問題11/10 18:45
TMDTMD2487: 這兩個指令本來就不會做寫入的動作,所以把控制信號設 11/10 18:46
TMDTMD2487: 好,剩下的問題就是hazard那些了11/10 18:47
我跟T大想的一樣XDD 不過我想問,指令是在pipeline register就被攔下來還是會變成無 意 義的指令進MEM WB的 ※ 編輯: leoone (101.15.229.11), 11/10/2017 18:49:12
TMDTMD2487: 我的感覺是os可以針對這個狀況做避免(當然時間要小於C11/10 18:48
TMDTMD2487: ontext switching才有效益,不過題目是沒有算拉XD11/10 18:48
T大是說類似Multithread那樣只有輕微的penalty嗎 ※ 編輯: leoone (101.15.229.11), 11/10/2017 18:50:57
TMDTMD2487: 做題目當他沒有實際上要問有研究或實作過的人才知道了 11/10 18:52
TMDTMD2487: 我也蠻好奇的XD 希望有人可以跟我講實際上是怎樣 11/10 18:53
昨天剛好跟朋友討論到,可是沒什麼結果,想說等洪逸上課問他,可是突然想到他請假兩 個禮拜QQ ※ 編輯: leoone (101.15.229.11), 11/10/2017 18:56:28
TMDTMD2487: 棒 問完告訴我 我上tkb的XD11/10 18:57
好我問完在私信T大XDD ※ 編輯: leoone (101.15.229.11), 11/10/2017 18:57:51
TMDTMD2487: 然後阿pipeline沒有方法攔下來就只有把它變成無意義的 11/10 19:00
TMDTMD2487: 指令,那這兩個指令再mem跟wb本來就是無意義的了 11/10 19:00
TMDTMD2487: 這應該蠻好理解的你頂多只能做一個register配合clock11/10 19:01
TMDTMD2487: 做緩衝讓它分成幾個stage,但你要真的把一個東西攔下 11/10 19:02
TMDTMD2487: 直接不見應該有困難 11/10 19:02
突然想到這兩個指令在MEM WB時 control unit也會把功能單元設0 所以根本沒差rrrrrr ※ 編輯: leoone (101.15.229.11), 11/10/2017 19:04:36
TMDTMD2487: mem wb的regwrite跟memwrite本來就是0壓(這就是無意義 11/10 19:06
TMDTMD2487: 無意義的指令基本就把寫入跟branch這類的設0就是了 11/10 19:07
q1qip123: ontext-switch-occur-in-a-system-whose-ready-queue-ha 11/10 22:36
q1qip123: s-only-one-process-a 11/10 22:36
q1qip123: 他舉Linux 為例,他會檢查ready queue,所以不需要conte 11/10 22:36
q1qip123: xt switching ~ 11/10 22:36
leoone: 所以這算是OS自己會去辨識ready queue情況,沒process在Q 11/10 23:01
leoone: 裡面他就會讓剛time out 進到Q的process再次執行? 11/10 23:01
q1qip123: 以下是我對這篇文章的想法 11/11 01:26
q1qip123: RR排班法則Context switching (簡稱CW)的大略步驟 11/11 01:26
q1qip123: 1.interrupt發生,切換至kernel mode 11/11 01:26
q1qip123: 2.儲存相關資訊至PCB 11/11 01:26
q1qip123: 3.把執行中的process放到Ready Queue中 11/11 01:26
q1qip123: 4.選擇新的process執行,載入process的PCB 11/11 01:26
q1qip123: 5.切換至user mode 執行process 11/11 01:26
q1qip123: 其中當Ready Q中只有一個程序時,因為分時系統要求一段 11/11 01:26
q1qip123: 時間要有回有回應 11/11 01:26
q1qip123: 所以會執行到步驟2,才能給予回應,但不能確定他是否有 11/11 01:26
q1qip123: 因為time out進入ready q 11/11 01:26
q1qip123: 而CW的定義是步驟2+4,而她說明並沒有進行CW,只是恢復 11/11 01:26
q1qip123: 執行原本的process 11/11 01:26
q1qip123: 但是當他恢復執行自己的PCB也算是一種載入吧(? 所以感覺 11/11 01:26
q1qip123: 有點矛盾 11/11 01:26
q1qip123: 這邊我覺得應該是我們CW學得較簡略,所以不能完整說明CW 11/11 01:30
q1qip123: 沒有執行 11/11 01:30
q1qip123: 不好意思 感覺把問題反推給你… 11/11 01:30
q1qip123: 我找到相關問題的解答都只有這篇 11/11 01:30
TMDTMD2487: https://goo.gl/fVxcdK 11/11 08:37
TMDTMD2487: 畢竟linux是開放原始碼的,可以去看看原始碼 11/11 08:38
TMDTMD2487: 大概看下去看起來像是是若Q中挑選出得跟原本的一樣, 11/11 08:39
TMDTMD2487: 那就不做cs了 11/11 08:39
TMDTMD2487: linux scheduler跟context switch應該還是查得到相關 11/11 08:42
TMDTMD2487: 原始碼的 11/11 08:42
TMDTMD2487: 兩篇我看了一下,一切都是發生在挑選的跟目前的proces 11/11 08:50
TMDTMD2487: s不一樣 11/11 08:50
q1qip123: 所以結論是有回到ready Q,只是cs要再查一下原始碼? 11/11 10:03
TMDTMD2487: linux的kernel/sched/core.c有一個_schedule()是核心 11/11 10:56
TMDTMD2487: 的的function,可是我用手機,我要很晚才回用電腦,你 11/11 10:56
TMDTMD2487: 可以斟酌看一下,不過這應該要花一點時間 11/11 10:56
q1qip123: 好 我再找時間追蹤看看 感謝~ 11/11 12:19
TMDTMD2487: https://goo.gl/mZ33cq 3259~3339 11/11 14:12
TMDTMD2487: 3320行之前都是再做一些flag設定之類的有興趣可以看 11/11 14:13
TMDTMD2487: 前面queue那邊怎麼做挑選這類的我有點懶得看了,不過 11/11 14:43
TMDTMD2487: 至少確定若當前的權值最高,context switch是不會做的 11/11 14:44
TMDTMD2487: 3327行那個就是系統紀錄做了幾次context switch用的 11/11 14:45
leoone: 那我想在問一下我一開始的問題 如果Q內有東西的話 PA優先 11/11 14:53
leoone: 權最高running完要立刻再進CPU 還要context switch? 11/11 14:53
TMDTMD2487: 從這份原始碼看是不需要的歐 11/11 15:11
TMDTMD2487: 他會從q中挑一個,判斷他是不是跟之前那個一樣 11/11 15:12
TMDTMD2487: 不一樣才會去做context switch 11/11 15:13
leoone: 好謝謝T大QQ 11/11 16:03