2016-02-27 189 views
0

我是OS領域的新手,並試圖通過入侵xv6來學習它。我懷疑是否可以在調用fork之前決定是否使用系統調用來運行父項或子項.i, ei可以有一個函數將參數傳遞給內核空間,並決定是運行父代還是子代以先運行。參數可以是: 單親 0子。xv6中的競爭條件

+0

你需要什麼?你如何保證孩子在做任何你想做的事之前都沒有安排好? –

+0

我neee它爲了控制調度政策。默認情況下,它是父母first.I想要通過系統調用來控制是基於參數運行孩子第一還是父母。孩子不會被安排在之前,因爲我會在調用fork之前讓系統調用來決定策略。 – user3274335

+0

這並不回答我的問題。讓我再次說明障礙。假設你安排孩子先跑步。它運行,開始執行一些代碼並被排除。現在父母得到CPU。讓孩子先跑步的目的是什麼?你是如何保證這個目的得以實現的?例如,如果孩子應該做2次動作,那麼它可能只會做1次。或者換句話說,到目前爲止,看起來你正在試圖做錯事。 –

回答

1

我認爲問題是fork()只是創建了一個進程的副本並使其可運行,但負責允許它運行的模塊是調度程序。因此,您提到的參數也應該以某種方式將此信息提供給調度程序。

如果你設法做到這一點,我認爲你可以按照你喜歡的順序在runnable queue排列這兩個進程,並讓調度器選擇第一個可運行的進程。

但是,您無法控制第一個進程將運行多長時間。事實上,在下一個計劃事件中,可能允許另一個進程運行,而前一個進程將被暫停。