星期二, 2月 19, 2008

工作一個月又幾天以來的感想

工作一個月多了, 雖然有點老調重調, 還是覺得工作得找自己有興趣的才行. 不然一遇到困難很容易就退縮了, 但又有多少人能做到自己所想要的工作呢? 我滿意目前的工作, 可以接觸很多以前就想做的東西, 覺得很有趣. 但, 除了工作以外還會想要有自己的生活, 不想讓工作變成自己的全部. 不過, 話雖如此, 但還是很難控制自己在非工作時間不去想一些工作上的事情, 事實上, 有些事情就是很難控制自己不去想, 工作只是其中一項罷了. 想久了就會影響自己的心情, 不管是好是壞. 所以心情的控制是相當重要的.

今天解了一個bug, 中間靠許多人的幫助, 但, 總算跨出第一步了. 同時間再撰寫一個TestingTool要把測試自動化. 努力把所學的都用出來吧!!!

星期一, 2月 18, 2008

Inter-process Callback

基本上是想要在User-Mode下實作出Bottom-Halve1的機制. 接下來的描述是想要實作出的機制. 首先產生一個process S (接下來簡稱為S), S提供數個APIs供其它processes透過任一種IPC的機制呼叫. 利用這些APIs, 其它processes可以動態的讓S去執行某些functions, 而這些functions都在於別的processes的space.

例如, Process A告訴S: "有一個function存在於我(也就是Process A)的位址0x1024上, 請執行他.". 然後這時S就開始執行並告訴Process A執行結果. 這裡其實還有一些問題, 簡單的, function的prototype, 討厭一點的, function內變數的位址, 但我們先忽略這些問題. 單純的只是想做到上述的例子. 為了實作出這個機制, 過去幾天找了許多資料. Shared Memory, Memory Mapped I/O和Signal.

在Shared Memory的想法是, 我能不能把function內編譯完的machine code抓出來並寫到一塊shared memory裡面並附予這區塊被執行的屬性. 但試了許久, 抓出machine code了, 也寫到shared memory了, 但就是沒辦行執行起來, 我想也許是我忽略了什麼細節, 這個想法停頓在這裡了.

Memory Mapped I/O則是簡單的把其它processes的可執行檔利用mmap函式把整個file當成是自己space的一剖份, 並利用其它processes提供的function pointer所指的位址並搭配offset去找出function在自己的space的何處並執行. 這個想法目前還沒驗證過, 但可想而知會是一個挺麻煩的方法. 也許有時間時再試試看.

最後是Signal, 看到Signal我想大家都應該知道了, 其實就是processes間互丟signal很簡單的一個方法. 但, 並沒辦法提到最一開始所提到的機制. 所以....嗯...當作是複習一下吧!

其實還有想到很多方法, 但, 使終擺脫不了multi-programming所帶來的束縛. 但, 我如果這麼簡單就做出Inter-process Callback, 代表別人也能, 代表整個作業系統其實是曝露在危險中的. 這樣想想, 自己作不出來某種程度而言也算正常的, 畢竟我也才作了數天而已.

最後, 還是利用Thread或fork的方式做, 但利用Thread去做其實是很危險的, 因為如果 host process在等待自己產生的thread執行完, 而host process在等待則意味著thread可能無法執行, 就這樣形成了dead lock. 所以還是利用fork做比較保險. 但, 值得嗎?

1. 這裡有簡單的解釋http://www.linux-tutorial.info/modules.php?name=MContent&pageid=263

星期一, 2月 11, 2008

整個溼冷的年假結束了

整個年假都在下雨, 喔~真是無言啊! 沒辦法打球, 出門也很冷, 讓人只能躲在室內. 整個年假就在吃吃喝喝中度過了!!! 但, 其中幾天某些時段的天氣有稍好一點點, 到外面馬上就遇到人潮, 看來很多人都留在台北過年了啊!!! 但, 整體而言, 沒什麼過年的氣氛!!!

星期四, 2月 07, 2008

北上? 南下? 到底要去哪?

今天開著車在台北有目的地的亂晃, 剛開始開都滿順利的, 都可以走到想走的路, 後來真的是很【亂晃】, 原本要【北上】沒想到, 一時不察, 居然走到【南下】. 還過了一段時間才發現, 就隨便走一個交流道再換走平面道路回家. 虧車上還有GPS...有裝沒有用, 因為我沒在看嘛~~~XD

星期日, 2月 03, 2008

又要過年了!!!

再兩天就要放年假了, 但, 我也相信很多人已經開始放年假了(至少我家樓下的早餐店是如此1). 最近幾天台北開始變冷和下雨, 氣象報告說會持續到除夕. 看來這個年要在溼冷中度過了!!! 過年時, 絕大部份的人都會回所謂的【老家】. 因此, 台北的人就瞬間少了很多. 但, 我則是一貫都留在台北, 也因為這樣過年的時候都很無聊. 所謂的無聊是指排除掉正經事之後就沒事做了. 說到正經事才是頭大, 其中一項工作的due day就是2月23日了, 過年期間不做, 之後大概也做不了吧!!! 而另一項則是屬於long term的工作, 雖說是long term, 但也沒辦法趕上短期的schedule. 換言之, 不好好利用這個年假做些事, 過完年, 我即將身陷地獄.

最近想了很多事, 但絕大部份的事情之間是存在一些依存性的, 比如: 要完成O2前必需先達成O1. 但在做O1之前則又考慮到(甚至比O2)後面的事項O3. 但想到最後則發覺連O1都還沒做, 去想O2和O3做什麼. 真的是想太多了!!! 典型的【不做怎麼知道】和【做事不考慮後果】之間的茅盾. 可是, 我想有些事真的是【不做怎麼知道】(也許不用考慮後果), 有些事做前則是要先考慮到後果. 寫著想著, 自己又在茅盾了, 可惡啊!!!

1. 就在今天早上下樓買早餐時, 鐵門打開後, 在驚赫中發現這事實.