2009年6月19日 星期五

期末

期末這次的範圍大很多

雖然上課也很努力聽

不過LINUX果不其然是LINUX

複雜度往上提升不少

再加上期末爆炸

我機率竟然跟OS連著考........

OS整個被我擺爛掉了

但是我還是很努力寫了

雖然沒有讀很熟

但是我發覺我依著課堂上的印象

大致知道題目在問甚麼

也知道大概要回什麼

但是關鍵性的答題部分

卻也還是有點過於模糊

成績大概不太好看.....

LINUX

uC/OSII的課程終於告一段落

接下來就是LINUX

聽起來就令人覺得怕怕的

感覺上就複雜不少

更何況uC/OSII有些地方就稍微複雜

不過還是期望自己能聽懂


另外

聽說上課錄影大部分都是我的頭= =

這是我的問題嗎?.................

systemtap

一開始真的很模糊

完全不知道期末RPOJECT要怎麼起手

control path??

後來上網google了很久

才知道是system call

去做的interrupt function、exception function、或是一般的function

但是看著助教的範例CODE

怎麼若有似無的感覺

只TRACE了一層.C

照這個模式下去大概能TRACE出的function

少之又少

之後看到投影片

教授說那個"*"是錯的

所以我再去查查

有了驚人的發現!

原來那個放的是function 名稱

不一定要針對.C檔

腦海瞬間閃過RE的概念

果不其然

我才加上"_"開頭的function

就TRACE出很多function

進度瞬間增加很多

我想要跟一步的TRACE

所以再去翻翻其它CODE

發現了caller() 、 callee()這兩個function

整個如虎添翼阿

可以輕鬆看出缺了哪些function

雖然要手動trace也不輕鬆啦

不過就把system call trace得很完整了!

Lazy Context Stitch

緣由:

大部分的 process 不需用到 FPU instruction

而存取 FPU 會耗掉取多 cpu cycle

為了省下不必要的 context switch 而產生的技術

做法:

1.主要會去分辨 process 是否會用到 FPU instruction

若不會用到則將 FPU 相關的

context switch 給關閉省下置換的麻煩

2.若是屬於用到 FPU instruction 的 process

則硬體會有一個記錄目前 registers 中

的資料是屬於哪一個 process 的暫存器 "fpu_owner"

若 fpu_owner == 該 process

則不需要做 FPU 相關的 context switch

若不同才改變

小即時通-傳檔功能

在我修SP的年代
就已經用過Pthread去寫過小即時通
差別在於
之前熊博安教授說要使用FIFO去做資料的傳遞
而這次作業則是使用socket
不過助教把socket的部分都寫好了
所以難度並不高
就差傳檔的部分
這部分確實不好處理
因為要傳給對方說要不要接收某個檔案
在等對方回應OK後才傳送
為了避免與一般訊息混淆
所以我訂了一些協定
這樣就可以把訊息隔開了
輕鬆寫完一個稍微實用的程式

課堂小考

我發現

課堂小考其實是一個不錯的機制

先不管考的分數如何

它讓我想要認真上課

盡量把細節弄清楚

小考

就是驗收的時候了

可以明顯了解自己哪邊沒弄懂

或者是哪些地方很OK

大考時

複習起來也很輕鬆

不像柯仁松OS-I

聽聽就算了~

大考來再拼常常花體力

又花時間

2009年6月18日 星期四

上課小記

作業系統中 (Linux) 的其中一個 bug
在 fork 時
若是 parent 的 time quantum = n
則其 fork 後的 parent, child 要各拿 n/2 的 time quantum
否則都是拿 n 的話
若有一個惡意軟體不停的在 fork
將會造成 CPU 的 time 不停的被吃掉
導致系統死掉