[理工] 幾個觀念問題 OS/計組

看板Grad-ProbAsk作者 (里歐一代)時間8年前 (2017/11/10 18:26), 8年前編輯推噓11(11060)
留言71則, 3人參與, 8年前最新討論串1/1
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

11/10 18:40, 8年前 , 1F
RR的ReadyQ預設應該都是FIFO所以除非裡面沒東西不然A
11/10 18:40, 1F

11/10 18:40, 8年前 , 2F
進去應該都會有人比他權重高,如果Q裡面沒別的東西的
11/10 18:40, 2F

11/10 18:41, 8年前 , 3F
話好像沒再算context switching,這是真對做題目說的
11/10 18:41, 3F

11/10 18:42, 8年前 , 4F
實際上我也不知道XD
11/10 18:42, 4F
XDDD 可以算是我假設的是readyQ只有一個PA 但到底要不要context switch QQ 我自己是覺得還是要,因為OS可能根本不知道這兩個程式是相同的,但還是希望有人有有 力的論據XDD

11/10 18:43, 8年前 , 5F
阿你跳躍了之後後面的stage還是會把解碼過的控制訊號
11/10 18:43, 5F

11/10 18:44, 8年前 , 6F
往後面送,只是他們的控制信號本就不會做寫入等等的事
11/10 18:44, 6F
※ 編輯: leoone (101.15.229.11), 11/10/2017 18:47:00

11/10 18:45, 8年前 , 7F
我覺得說是空的不太準確,本來就會往後只是不會有問題
11/10 18:45, 7F

11/10 18:46, 8年前 , 8F
這兩個指令本來就不會做寫入的動作,所以把控制信號設
11/10 18:46, 8F

11/10 18:47, 8年前 , 9F
好,剩下的問題就是hazard那些了
11/10 18:47, 9F
我跟T大想的一樣XDD 不過我想問,指令是在pipeline register就被攔下來還是會變成無 意 義的指令進MEM WB的 ※ 編輯: leoone (101.15.229.11), 11/10/2017 18:49:12

11/10 18:48, 8年前 , 10F
我的感覺是os可以針對這個狀況做避免(當然時間要小於C
11/10 18:48, 10F

11/10 18:48, 8年前 , 11F
ontext switching才有效益,不過題目是沒有算拉XD
11/10 18:48, 11F
T大是說類似Multithread那樣只有輕微的penalty嗎 ※ 編輯: leoone (101.15.229.11), 11/10/2017 18:50:57

11/10 18:52, 8年前 , 12F
做題目當他沒有實際上要問有研究或實作過的人才知道了
11/10 18:52, 12F

11/10 18:53, 8年前 , 13F
我也蠻好奇的XD 希望有人可以跟我講實際上是怎樣
11/10 18:53, 13F
昨天剛好跟朋友討論到,可是沒什麼結果,想說等洪逸上課問他,可是突然想到他請假兩 個禮拜QQ ※ 編輯: leoone (101.15.229.11), 11/10/2017 18:56:28

11/10 18:57, 8年前 , 14F
棒 問完告訴我 我上tkb的XD
11/10 18:57, 14F
好我問完在私信T大XDD ※ 編輯: leoone (101.15.229.11), 11/10/2017 18:57:51

11/10 19:00, 8年前 , 15F
然後阿pipeline沒有方法攔下來就只有把它變成無意義的
11/10 19:00, 15F

11/10 19:00, 8年前 , 16F
指令,那這兩個指令再mem跟wb本來就是無意義的了
11/10 19:00, 16F

11/10 19:01, 8年前 , 17F
這應該蠻好理解的你頂多只能做一個register配合clock
11/10 19:01, 17F

11/10 19:02, 8年前 , 18F
做緩衝讓它分成幾個stage,但你要真的把一個東西攔下
11/10 19:02, 18F

11/10 19:02, 8年前 , 19F
直接不見應該有困難
11/10 19:02, 19F
突然想到這兩個指令在MEM WB時 control unit也會把功能單元設0 所以根本沒差rrrrrr ※ 編輯: leoone (101.15.229.11), 11/10/2017 19:04:36

11/10 19:06, 8年前 , 20F
mem wb的regwrite跟memwrite本來就是0壓(這就是無意義
11/10 19:06, 20F

11/10 19:07, 8年前 , 21F
無意義的指令基本就把寫入跟branch這類的設0就是了
11/10 19:07, 21F

11/10 22:36, 8年前 , 22F

11/10 22:36, 8年前 , 23F
ontext-switch-occur-in-a-system-whose-ready-queue-ha
11/10 22:36, 23F

11/10 22:36, 8年前 , 24F
s-only-one-process-a
11/10 22:36, 24F

11/10 22:36, 8年前 , 25F
他舉Linux 為例,他會檢查ready queue,所以不需要conte
11/10 22:36, 25F

11/10 22:36, 8年前 , 26F
xt switching ~
11/10 22:36, 26F

11/10 23:01, 8年前 , 27F
所以這算是OS自己會去辨識ready queue情況,沒process在Q
11/10 23:01, 27F

11/10 23:01, 8年前 , 28F
裡面他就會讓剛time out 進到Q的process再次執行?
11/10 23:01, 28F

11/11 01:26, 8年前 , 29F
以下是我對這篇文章的想法
11/11 01:26, 29F

11/11 01:26, 8年前 , 30F
RR排班法則Context switching (簡稱CW)的大略步驟
11/11 01:26, 30F

11/11 01:26, 8年前 , 31F
1.interrupt發生,切換至kernel mode
11/11 01:26, 31F

11/11 01:26, 8年前 , 32F
2.儲存相關資訊至PCB
11/11 01:26, 32F

11/11 01:26, 8年前 , 33F
3.把執行中的process放到Ready Queue中
11/11 01:26, 33F

11/11 01:26, 8年前 , 34F
4.選擇新的process執行,載入process的PCB
11/11 01:26, 34F

11/11 01:26, 8年前 , 35F
5.切換至user mode 執行process
11/11 01:26, 35F

11/11 01:26, 8年前 , 36F
其中當Ready Q中只有一個程序時,因為分時系統要求一段
11/11 01:26, 36F

11/11 01:26, 8年前 , 37F
時間要有回有回應
11/11 01:26, 37F

11/11 01:26, 8年前 , 38F
所以會執行到步驟2,才能給予回應,但不能確定他是否有
11/11 01:26, 38F

11/11 01:26, 8年前 , 39F
因為time out進入ready q
11/11 01:26, 39F

11/11 01:26, 8年前 , 40F
而CW的定義是步驟2+4,而她說明並沒有進行CW,只是恢復
11/11 01:26, 40F

11/11 01:26, 8年前 , 41F
執行原本的process
11/11 01:26, 41F

11/11 01:26, 8年前 , 42F
但是當他恢復執行自己的PCB也算是一種載入吧(? 所以感覺
11/11 01:26, 42F

11/11 01:26, 8年前 , 43F
有點矛盾
11/11 01:26, 43F

11/11 01:30, 8年前 , 44F
這邊我覺得應該是我們CW學得較簡略,所以不能完整說明CW
11/11 01:30, 44F

11/11 01:30, 8年前 , 45F
沒有執行
11/11 01:30, 45F

11/11 01:30, 8年前 , 46F
不好意思 感覺把問題反推給你…
11/11 01:30, 46F

11/11 01:30, 8年前 , 47F
我找到相關問題的解答都只有這篇
11/11 01:30, 47F

11/11 08:37, 8年前 , 48F
11/11 08:37, 48F

11/11 08:38, 8年前 , 49F
畢竟linux是開放原始碼的,可以去看看原始碼
11/11 08:38, 49F

11/11 08:39, 8年前 , 50F
大概看下去看起來像是是若Q中挑選出得跟原本的一樣,
11/11 08:39, 50F

11/11 08:39, 8年前 , 51F
那就不做cs了
11/11 08:39, 51F

11/11 08:42, 8年前 , 52F
linux scheduler跟context switch應該還是查得到相關
11/11 08:42, 52F

11/11 08:42, 8年前 , 53F
原始碼的
11/11 08:42, 53F

11/11 08:50, 8年前 , 54F
兩篇我看了一下,一切都是發生在挑選的跟目前的proces
11/11 08:50, 54F

11/11 08:50, 8年前 , 55F
s不一樣
11/11 08:50, 55F

11/11 10:03, 8年前 , 56F
所以結論是有回到ready Q,只是cs要再查一下原始碼?
11/11 10:03, 56F

11/11 10:56, 8年前 , 57F
linux的kernel/sched/core.c有一個_schedule()是核心
11/11 10:56, 57F

11/11 10:56, 8年前 , 58F
的的function,可是我用手機,我要很晚才回用電腦,你
11/11 10:56, 58F

11/11 10:56, 8年前 , 59F
可以斟酌看一下,不過這應該要花一點時間
11/11 10:56, 59F

11/11 12:19, 8年前 , 60F
好 我再找時間追蹤看看 感謝~
11/11 12:19, 60F

11/11 14:12, 8年前 , 61F
11/11 14:12, 61F

11/11 14:13, 8年前 , 62F
3320行之前都是再做一些flag設定之類的有興趣可以看
11/11 14:13, 62F

11/11 14:43, 8年前 , 63F
前面queue那邊怎麼做挑選這類的我有點懶得看了,不過
11/11 14:43, 63F

11/11 14:44, 8年前 , 64F
至少確定若當前的權值最高,context switch是不會做的
11/11 14:44, 64F

11/11 14:45, 8年前 , 65F
3327行那個就是系統紀錄做了幾次context switch用的
11/11 14:45, 65F

11/11 14:53, 8年前 , 66F
那我想在問一下我一開始的問題 如果Q內有東西的話 PA優先
11/11 14:53, 66F

11/11 14:53, 8年前 , 67F
權最高running完要立刻再進CPU 還要context switch?
11/11 14:53, 67F

11/11 15:11, 8年前 , 68F
從這份原始碼看是不需要的歐
11/11 15:11, 68F

11/11 15:12, 8年前 , 69F
他會從q中挑一個,判斷他是不是跟之前那個一樣
11/11 15:12, 69F

11/11 15:13, 8年前 , 70F
不一樣才會去做context switch
11/11 15:13, 70F

11/11 16:03, 8年前 , 71F
好謝謝T大QQ
11/11 16:03, 71F
文章代碼(AID): #1Q1NxYx5 (Grad-ProbAsk)