在書上看到一段這樣的話:
在kernel 2.6中時間片的計算是分散的,具體的計算時間可以用task_timeslice(),也可以用其他方法。疑問:對於a,子程序的時間片是從父程序那裡分得的,也就是說其實父程序也是有時間去完成子程序的任務,那乾脆就不用建立子程序咯。子程序分父程序的時間片,那又何來建立程序可以增加機器的並行性呢?a.程序建立時,將父程序的時間片分一半給子程序,同時父程序的時間片減半。
b.程序用完時間片以後,需要重新計算時間片,並將程序插入到相應的執行佇列。
c.程序退出時,根據first_timeslice的值來決定是否將子程序的時間片返還給父程序。
對於b,這個「重新計算時間片」是不是擺脫了子程序從父程序那裡分得時間片的限制,父子程序的時間片是否還有著某種關係呢?
對於多核的機器,子程序和父程序的時間片劃分又是怎麼樣的呢?多核間如何協調時間片的長短?
希望大牛們能給點提示。。。
父程序與子程序管道
int main else return 0 先在父程序中建立管道,然後建立子程序,子程序複製了父程序管道檔案的檔案描述符,所以父程序和子程序各具有2個管道描述符,當在子程序中關閉讀端,這時關閉的是子程序中管道檔案的讀端,而父程序的讀端沒有關閉,這時子程序往寫段寫資料的時候,因管道讀端未完全關閉,所...
子程序父程序檔案共享
父子程序全域性變數不共享 寫時複製,讀時共享 檔案父子共享,而且關閉時父子程序都要close fd 我的理解是 雖然fork前的 只執行一次,但是建立子程序時複製使用者空間,此時檔案的狀態一同複製了 驗證父子程序,檔案共享 int main int argc,char ar else if pid ...
程序排程 時間片輪轉
include include include typedef struct table node node creat void p2 next null return head 輸出函式 void print node head 對程序表按優先數從大到小排序 node insert node h...