2009年6月18日 星期四
OS課程心得
首先,這學期最另大家詬病的就是,老師在期中之前一直動不動就請假,而導致課程進度不斷的delay。有時候臨時請假時,大家去上課之後才發現停課,一整個心情相當的差,而且當假越放越多時,就會很不想去上這堂課。
再來由於課程delay嚴重的關係,因此期中的範圍相當的少,但到期末之後一直瘋狂的補課,趕進度,使得期末範圍變得相當的大,讓我在準備期末時感覺要念得東西太多了,很難負荷。因此這學期的進度拿捏真的不是很好。
在實習部份,其實實習作業要做的練習是相當的簡單。然而,要搞出環境出來去相當的困難。以練習KGDB為例,我平常在用的linux環境是ubuntu,但這次作業要弄的環境卻在fedora上,因此還要花一番功夫去設定環境。然而,有人發現fedora 10沒辦法跑,這又導致一些人灌了以後又要重新灌一次fedora 8。整個做作業時間都浪費在上面,讓我覺得這個作業是要讓我們練習重灌嗎?
助教方面的話,由於每個作業是某個助教負責,這樣子或許對他們有利,因為只要負責一部分就好了。但對我們來講,當找不到該名負責的助教時,要問其他助教相關的事,就沒辦法回答有關的問題,因此讓人覺得助教們相當的混。更別說作業成績到期末才一一批改完,之前交了作業都不曉得到底有沒有收到。
雖然老師教學上可以感受的到很想要認真的教給大家東西,不過由於以上種種原因,使得大家感覺並不是很好,甚至有些人一直在罵,這是相當可惜的部份。希望日後能夠有所改進。
嵌入式軟體課程結束
分一下專案失敗的原因:
- 時間的規劃:我們專題動手開始做的時間相當的晚,快到期末時才開使趕工。
- 之前文章有提到,舊版linux上編譯的問題,再這個部份真的是花上了超多的時間,即使到現在,有些編譯出來的的執行檔去kernel上跑時,會發生一些莫名其妙的問題出現,要解決相當的困難。
- 3.debug環境;在嵌入式系統上要debug相當的困難,而且也要花不少時間,像是每當系統改了一部分以後,需要重新燒進板子內,而燒的時間會需要好幾分鐘,因此debug的效率非常慢。
- 4.library的問題:板子開發商給library有一些嚴重的bug,這導致我們把程式編譯好以後,要去執行時會產生不預期的錯誤出現,這部份要trace也相當的困難。而我們想去找較其他版本的library來編譯時,首先也會產生舊版的gcc不支援,然後修好以後,結果也沒有改善,因此最後這部份就以失敗告終,而專案就到這邊沒辦法進行下去了。
Kernel panic
Kernel panic的意思是指,OS遇到了一個內部的錯誤,這個錯誤並沒辦法被安全的修復起來,而導致沒辦法繼續運行,可能必須重新啟動才行。有點像Windows 的藍屏死機。
而造成Kernel panic的原因,大多是是擴充記憶體出現問題,但亦有可能是其他硬體產生。在嵌入式系統環境下,可用的memory空間往往不夠,因此一旦kernel編譯出來,必需要去指定該用多少空間,不然一旦超出範圍,就一下子就當了。
Kernel panic產生時,往往很難知道到底哪邊出了錯,因此我在做debug的時候,只能利用debug工具,將產生的組語一行一行trace下去,看看到底執行到哪時會出錯。這很花時間,然而也不知道有什麼比較好的方式可以使用,因此是一項相當麻煩的問題。
態度
大三下是大學時期最重要的一段時間,因為面臨了未來的抉擇,像是專題要做什麼,有沒有計畫要考研究所等。這都是在這學期就要決定的時刻,一超過這時期,要再來補救就很困難了。而我雖然知道這些,也不斷去煩惱該走哪條路,可是實際的作為卻是懶懶散散,跟以前一樣。明明是該振作的時期,卻一直白白的浪費下去。也就是說自己的決心不夠,展現不出自己的態度出來。
以上OS課為例,每次去聽課的時候,總是很容易分心,想別的事情。或者因為在中午時段,特別的想睡覺,常常就這樣趴下去了,因此老師再講什麼也基本上學不到什麼東西,這樣子的結果就導致了期中期末準備起來特別的辛苦,因為有些東西要有聽過才會好理解,光靠投影片很難知道概念是什麼,其結果就是考試都考得很慘,也因此面臨的被當的危機。
回想大一時期,那時候還滿拼的,作業都會準時交,也從來沒有在蹺課,上課時也會專心聽老師在講什麼,因此大一時期是我學到最多東西的時候。比對現在,這樣子的態度實在不行,因此當務之急是要找為當時的態度,重新取回對知識學習的熱誠,這樣面對未來時才不會陷入泥沼,誤入歧途。而老實說,目前我對未來的規劃是相當的徬徨的。
CUDA
在稍微摸過一下CUDA後,覺得CUDA 寫作並不困難,困難之處在於如何最佳化,它需要了解不少硬體的細節。一般而言未最佳化的程式在 GPGPU 上面執行,可以比傳統的 CPU 快上 5~10 倍,而最佳化過的程式,往往還能再增速 5~10 倍,達到 25~100 倍的效能。
CUDA 和傳統 C++ 最大的差異在於「平行化的程式設計」vs.「序列化的程式設計」,例如傳統上透過迴圈執行數千次的程式碼,在 CUDA 上就可以將它拆解成數百個同時執行的執行緒,每個執行緒只執行十幾次而己,因此產生數十到數百倍的效能。
CUDA 是在傳統 C++ 的基礎上,加入一些延伸語法,以及輔助的函式庫,而形成的一
種程式語言,一般而言只要熟悉 C 或 C++,就很容易上手,編譯好的程式碼,也可以跟其它語言做不錯的聯結。
不過由於是NVIDIA自己設計的,因此目前只有他們家的顯卡可以支援,且也不是每一種顯卡都能跑,至少要8系列以上才有辦法跑,限制滿多的。因此也有同類型的OpenCL發展起來,OpenCL是OpenGL發展起來的,因此是一套免費的工具,並且會制定公開的規格,因此目前我比較看好OpenCL就是了。
Deadlock
Deadlock發生的4個條件:
1. Mutual Exclusion: At least one resource must be held in a non-sharable way.
2. Hold and Wait: A process must be holding a resource and waiting for another.
3. No Preemption: Resource cannot be preempted.
4. Circular Wait: A waits for B, B waits for C, C waits for A.
看完以後,就想到要是自己去等自己的話,也會發生Deadlock,或者包在semaphore裡面的是一個無窮迴圈。也就是一進去就出不來的情況下,就會發生。因此一個semaphore的確會發生Deadlock的問題。
Win 7的xpm技術
和 之前與一些軟體不太相容的「相容模式」不同,Windows 7 的 XPM 技術採用 virtual machine 的技術跟「完整的 Windows XP SP3」組合而成。因此可以把他當成在使用者的電腦上同時有兩個 OS 在運作:一個是 Windows 7,另一個則是 Windows XP,這樣就能解決不少相容性的問題,不過缺點就是硬體資源會吃很大,再網路上查到的資料是說至少要有下列的裝置才能跑。
電腦記憶體必須要有 2GB RAM 以上,同時還有對於 CPU 的方面要求,也就 CPU 必須支援晶片等級的虛擬環境;雖然目前不論是 Intel(Core i7)或是 AMD 家(Athlon 64)的近期推出處理器都有支援,不過稍舊一點 CPU,究竟有誰在白名單裡頭,就要自己試試了
Win7歐洲版不綁IE
歐盟執委會1月指控微軟將IE瀏覽器綁住Windows 作業系統的做法,控制消費者的選擇,並阻礙產品創新競爭,違反歐洲反托辣斯法。Windows作業系統在全球的市占率超過90%。
微軟表示,Windows 7將在10月22日如期上市,但在歐洲發售的所有版本都不會包含IE瀏覽器。微軟公共事務主任庫茲說:「我們保證Windows 7在歐洲會和全世界同步上市,但我們也必須遵守歐洲的競爭法規。」
微軟副法務長海納在官網聲明中證實,Windows 7和IE瀏覽器將分開推出。他說:「由於法律程序還在進行中,我們決定在歐洲推出Windows 7作業系統時將不附IE瀏覽器,而是另外提供容易安裝的IE瀏覽器給電腦製造商和使用者。」海納還說:「這代表電腦製造商和使用者可以免費安裝IE瀏覽 器,不喜歡的話也可以不裝。」
微軟的「綑綁」政策早已引起歐盟不滿。微軟曾經因為不提供Media Player播放器的相關資訊給競爭對手,而遭到歐盟判定違反反托辣斯法。微軟因為不遵守判決,2008年被歐盟罰款9 億歐元(12.6億美元)。
但某些觀察家指出,在推出火狐(Firefox)的Mozilla、Google和蘋果等公司的夾殺下,微軟在瀏覽器市場的市占率已經開始縮水,微軟能否藉作業系統壟斷瀏覽器市場不無疑問。
據AT Internet Institute統計,IE在歐洲的市占率已經由兩年前的80%降至60%以下,火狐在歐洲的市占率大約三分之一。
歐盟11日很快對微軟的聲明做出了回應。歐盟表示對於微軟的聲明非常感興趣,將於短期之內決定反托辣斯案的裁決。
但歐盟認為,提供消費者未內建瀏覽器的作業系統,並不能化解電腦使用者缺乏「真正」選擇的疑慮。
歐盟在聲明中表示:「微軟似乎決定提供更少的選擇,而不是更多的選擇。」歐盟還說:「如果執委會認定微軟濫用壟斷地位,可能的矯正方法就是要求Windows附加多種瀏覽器選擇,而非完全不提供。」
------------------------------------------------------------------------------------------------------------------
看完這篇新聞就想win7要是真的都不附瀏覽器的話,那一般的使用者要怎樣連到網路上去下載其他的瀏覽器呢?該不會要用文字介面去一個一個打指令上網吧。
目前一般的瀏覽器大多要去網路上下載,如果不曉得載點在哪的話,也就沒辦法去弄出一個瀏覽器出來。結果就是沒有瀏覽器沒辦法去找,沒有辦法找就沒有瀏覽器出來。有點像雞生蛋,蛋生雞的問題。
真的要不綁的話,果然是要像文章最後一段講得那樣,附加一些瀏覽器上去上使用者選擇,最好也要介紹一下,讓使用者有資訊可以挑選。
2009年6月14日 星期日
灌嵌入式系統os
我這組的目標是利用一套『xmms2』的open source軟體,準備把他port到板子上。因此首先會需要先把os給灌到版上,而板子的開發商只有附 linux 2.4版的 kernel ,是已經相當久以前的版本,所以原本想看能不能拿 linux 2.6 kernel 來灌進去。不過搜尋一下發現一些硬體驅動 driver 會需要自己弄進去,是一向相當大的工程。考慮一下後,就放棄拿2.6的計畫,而使用舊的2.4版。
不過用2.4版的問題就是,由於版本相當舊,拿目前的 gcc 去 compiler kernel 會發現有些程式寫法在新版的 gcc 上不支援,這就讓我們相當的頭大,要一個一個去改 source code 來使目前版本的 gcc 能過。但改完以後,拿到板子上去跑不能跑(= =")。
最後,就利用vm灌舊版的linux,使用舊版的 gcc 去 compiler ,才解決了這個問題。