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 不停的被吃掉
導致系統死掉

哇~第一次實習作業

終於要在LINUX跑程式囉~

主要是對助教寫的範例CODE進行偵錯

也就是使用GDB囉!

以前就有聽過一兩次

計概實習時

助教也有大概講過

但是這還是第一次要認真去使用他~

一開始使用起來

雖然不太習慣

但是慢慢上手後!

確實還蠻方便的

不用一直使用印出變數的方式在DEBUG

算是學到了一個好物!

FEDORA 初體驗

之前OS-I的時候

因為是給柯仁松教的

期中期末總共100%

所以完全沒有作業

在這一學期的期間內

完全根LINUX-UBUNTO脫節了

雖然ID可以馬上看出來

但是密碼.................

那是甚麼?可以吃嗎?

完全想不起來了

最後一次碰它

大概是二下時的系統程式

熊博安教授要求我們熟習LINUX的環境

但是也沒有在上面跑程式什麼的

就這樣.......被我遺忘了

這學期

要碰不太一樣的!

FEDORA!

介面還真的不太一樣

不過一還沒出程式作業~

期待在上面跑程式囉!

第一堂OSII - uC/OSII

既然是第一堂課

當然要先介紹教課書囉~

MicroC/OS-II:The Real-Time Kernel

教授說課本是一定要買的!

而且還要檢查

所以我也遵命不如從命

立刻定了一本

雖然不少錢.....


第一次接觸MicroC/OS-II

感覺很複雜

而且OS是研究所必考科目

所以要認真學一下囉!