Re: [理工] [OS]-師大資工

看板Grad-ProbAsk作者 (luke)時間14年前 (2010/03/17 19:29), 編輯推噓9(9011)
留言20則, 4人參與, 最新討論串1/1
(1) 這個畫圖應該比較好懂. 可惜我不太會用BBS畫 先說幾個重點: 1. child copy parent的當前所有的環境變數, 包含PC, 所以child出生後會執行fork() 的下一行 2. fork( )傳回child's pid給parent, 傳0給child 3. parent和child執行順序不一定, 這裡假設parent先執行, 不考慮cascading termination. 令一開始的process是P0 P0輸出 "start of test" 第一個fork, 生出P1(假設pid = 1001) 輸出 "my pid = 1001" 第二個fork, 生出P2(假設pid = 1002) 輸出 "my pid = 1002" P0結束 考慮P1 輸出 "my pid = 0" 第二個fork, 生出P3(假設pid = 1003) 輸出 "my pid = 1003" P1結束 考慮P2 輸出 "my pid = 0" P2結束 考慮P3 輸出 "my pid = 0" P3結束 可能的輸出結果為 "start of test" "my pid = 1001" "my pid = 1002" "my pid = 0" "my pid = 1003" "my pid = 0" "my pid = 0" (2) (a) 16 bits (b) pointer內存放memory的physical address, 所以大小為14 bits (c) 3 + (14 - 12 ) = 5 bits (d) 16 * 2 ^ (16 - 12) = 256 bits = 32 bytes. (e) inverted page table entry 數 = memory frame 數 = 2^(14-12) = 4個 有錯請更正~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.231.189.87

03/17 19:36, , 1F
感謝回答
03/17 19:36, 1F

03/17 19:40, , 2F
我是第二題的(b)(d)不會算 可否解釋一下14, 16的原因嗎
03/17 19:40, 2F

03/17 19:45, , 3F
第二個fork,生出P2(假設pid = 1002) 請問1002可設別的?
03/17 19:45, 3F

03/17 19:46, , 4F
d.frame個數=64k/4096=16 而題目說一個entry佔16bits
03/17 19:46, 4F

03/17 19:47, , 5F
所以16*16 = 256 bits = 32bytes
03/17 19:47, 5F

03/17 19:54, , 6F
frame個數應該是以physical為準吧?
03/17 19:54, 6F

03/17 19:57, , 7F
打錯 應該是page個數=64k/4096=16
03/17 19:57, 7F

03/17 19:57, , 8F
PID是自己假設的, 範圍從2~32768都行
03/17 19:57, 8F

03/17 19:59, , 9F
pointer那題是C語言的東西, 指標內存放memory實體位址
03/17 19:59, 9F

03/17 20:01, , 10F
再用運算子"*"取出位址的內容
03/17 20:01, 10F

03/17 20:31, , 11F
我想問一個CHILD PROCESS 如果去FORK 那他的 PID會改變?
03/17 20:31, 11F

03/17 20:34, , 12F
例如17995那題要再執行都要判斷PID值 我有點搞不懂
03/17 20:34, 12F

03/17 21:38, , 13F
不會改變行程的pid, 你要判斷的是fork()傳回的值
03/17 21:38, 13F

03/17 21:39, , 14F
像這題是剛好是有宣告個變數叫pid, 用來接收fork()傳回
03/17 21:39, 14F

03/17 21:40, , 15F
的內容.
03/17 21:40, 15F

03/17 22:00, , 16F
那可以請問你FORK==0他的意思是?
03/17 22:00, 16F

03/17 22:28, , 17F
if(fork()==0) //只有新行程會進入if
03/17 22:28, 17F

03/17 22:50, , 18F
我那時算是第一次回圈有4個未FORK的PROCESS進入第二次
03/17 22:50, 18F

03/17 22:52, , 19F
迴圈 第二次有16個未FORK進入第三次可是這樣是錯的
03/17 22:52, 19F

03/17 22:52, , 20F
可以指點一下嗎?
03/17 22:52, 20F
http://uminchu185.myweb.hinet.net/1.png
會有9個行程進入i = 1; 接下來只看P0, P0含自己會有9個行程進入i = 2. 所以共有9*9個行程進入i = 2, ... 最後i = 2結束時有9*9*9個行程. ※ 編輯: uminchu185 來自: 125.231.189.87 (03/17 23:23)
文章代碼(AID): #1BeBqDFf (Grad-ProbAsk)