2009年6月26日 星期五

深夜有感

和某水果聊天,談到的話題。這是小弟我的想法,應不足以當他人的解決方法,但至少可以解決我的疑惑。

學期結束了,應該不會有相關人士想繼續看我寫blog吧!可以寫些有的沒的囉~~

-----正文開始-----


疑問:
為什麼考試時我覺得寫得很順,考出來的成績不如預期?
為什麼考完出場後,說要爆了的人往往都安全過關?


因為,他們可能讀很多遍考試範圍,雖稱不上熟透,但至少看到考題時,他們知道題目在問些什麼。

因為知道在問什麼、陷阱在哪,可是無法確定自己寫的答案對不對,就覺得無法安心,出場後才感到不安,一直跟人說要爆了要爆了之類的話。

這是我自己想出來的答案,就當作是安慰自己吧。


結論:不能用應試時的順利,預期未來的成績良好。畢竟別人考得再好,也不關我的事,重要的是,我學到了多少,我是不是能夠對得起自己。



在資工系考了三年試的心得啦,各人有各人的不同領略之處,而且我常常驕傲,像龜兔賽跑裡面的兔子,以為考某些科易如反掌,結果翻船;反而戰戰競競、全心全意的準備,讓我置之死地而後生。

------正文結束-----------


2009年6月19日 星期五

抱怨

上周還是上上周OS上課,老師說建議上SP,SP的課很有用,順便請同學沒修SP的舉手。不才小弟我舉手了......,老師直接說:「SP的課真的很有用,沒修過的人趕快去修,不要怕修課內容很重,.....」已經忘記當時他講的詳細內容是什麼,當下聽到真的很不爽,喵的,上課有反應還要被表。

大家看到老師表舉手的同學,同堂課,不久之後他又問大家一個問題,這次大家都不想舉手。

那時老師應該是開玩笑吧,我也不想生氣,只是到了期末,很多科作業、考試一來,火氣就大,聽到一些雞毛蒜皮小事就想生氣。


===
上了這麼多不同門課,常常覺得老師之於學生,就如同老闆之於員工,在某些事情、立場,永遠是對立的。為什麼會這麼說呢?假設我是員工,我覺得老闆也沒很強很厲害,為什麼他的薪資會比我多?沒為什麼,就因為你是員工他是老闆,就這麼簡單。

當然,凡事總有例外,老師和學生的關係,還是可以亦師亦友,表達對彼此的關心。君沒聽聞俗話說:「一日為師,終身為父。」? 只要是彼此真心誠意關心對方,對方都會感受到你的誠意,彼此相處的情況才會愈來愈好。

OS_hw6

●完成目標

1.以創立thread方式改寫原程式碼以forklocalhost傳送和接收訊息,並加上傳遞和接收檔案之功能。

2.了解建立thread比建立process的成本低。

●程式測試及運作環境

系上csie1工作站

●測資,已附在壓縮檔內

1. 中時電子報首頁原始碼

2. 自訂測資test.txt

●此程式分成六個部分

1. main program

2. TCPecho

3. Send function

4. Listen function

5. GetFileLength function

6. Unsigned long to string

Main program 創立一個socket,設定開啟port和最大連線數,並進入TCPecho

TCPecho設立兩個thread,分別執行SendListen function

Send function使用創立的socket,可以送訊息,也可以送檔案。送檔案時必須先告訴對方檔案大小和名稱,所以會用到GetFileLength function。同時因為使用系統的write function,所以要將檔案大小unsigned long 型態轉換成string,才能傳,此時就需要Unsigned long to string function

Listen function使用創立的socket,可以收訊息,也可以收檔案。收檔案時對方會告訴自己檔案大小和名稱,會使用系統的read function,如果同意則開始收,即收即寫入本地端同名的檔案;若不同意則雙方回到一般傳訊息模式。

Send functionListen function送收檔案時,是採用送訊息的方式,所以和一般送純文字訊息一樣。

●測試方式

1.使用ServerClient所在資料夾的make重新編譯程式,輸入make即完成編譯和呼叫程式之動作。

2.傳送訊息:

2.1server端輸入欲傳送之訊息,並查看client端是否收到。

2.2client端以同樣方法傳送訊息,並查看在server端是否收到。

3.傳送檔案:

在任意一端(ClientServer),輸入SendFile:[yourfile],即可詢問對方是否要接收檔案,例如要傳送壓縮檔內的測資mainpage.htm,請輸入SendFile:mainpage.htm

如同意接收,接收端必須回答兩次yes才能接收檔案,發送端才開始傳資料;若不同意接收,則雙方回到傳訊息模式。

如欲終止程式,請按ctrl+c,即可結束程式。

OS_hw2

想快快樂樂裝作業要求的四個server(sshd,httpd,vsftpd,samba)之前,要先將SELinuxLinux的防火牆關掉,不然會遇到很多奇怪的問題,做起來會覺得特別辛苦。會這麼做的原因是真的遇到很奇怪的問題,而網路上提供給初學者的解法是將這SELinuxLinux的防火牆服務停用。

因為這只是在虛擬機器上做,所以將防火牆和SELinux關掉應該是無傷大雅的。

裝了這些服務之後,覺得自己的電腦也可以

提供眾多的服務,感覺很棒。過程中,遇到問題查網路上的解決方法,順便了解如何操作Linux,雖是粗淺的摸索,亦令我滿足,很有成就感。

剩下的步驟可以看鳥哥或是網路上其他的教學文

2009年6月18日 星期四

Systemtap on Fedora10

yum install systemtap kernel-devel
yum --enablerepo=fedora-debuginfo --enablerepo=updates-debuginfo install
kernel-debuginfo


http://sourceware.org/systemtap/wiki/SystemtapOnFedora

打這些指令,再跑助教的兩道測試指令(hello probe & ??? probe),應可以正常work。
記得要有root權限,可換成root帳號或是sudo或su達成。

OS_hw5

此用於kernel 2.6.25以上,略過部分步驟,例如要clone host system for producing target system


我用的OSFedora10gcc4.3.2Linux kernel 2.6.29

由於kernel 2.6.25以後,kgdb已附在裡面,所以不用下載kgdbpatch,用不到助教投影片給的patch方法,但仍有一些設定需要按照投影片的做法。

要先對目前的Fedoraclone,然後到linux網站下載2.6.29kernel,要打開target systemyield CPU on pollVMTargethost都要設定serial port,一個設client,一個設server


其他步驟和舊版本kernel 差不多,請參照其他人寫的舊版本使用方法。
此方法經證實可在2.6.29上使用
感謝yungshin提供方法


0.安裝ncurses-devel
sudo yum install ncurses-devel

1.linux kernel 2.6.25以上 已藏有 kgdb,不用再下載kgdb的source code
輸入make menuconfig,選擇特定選項,啟用kgdb

設定.config檔
CONFIG_KGDB=y
CONFIG_KGDB_SERIAL_CONSOLE=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_RODATA=n

2.將host system和 target system 的vm 開啟serial port,做server and client設定

3.host 切為root權限,這步不用在target system上做
make
make modules
make modules_install
make install

4.複製三個重要檔案到target system的 /boot/
vmlinuz-(uname -r)
System.map-(uname -r)
initrd-(uname -r).img

5.修改target system的 /boot/grub/menu.lst
若timeout=0,將它改為五

新增
title Fedora (OOXXkgdb)
root (hd0,0)
kernel /vmlinuz-(uname -r) ro kgdboc=ttyS0,115200 kgdbwait
initrd /initrd-(uname -r).img

5.1
設定target system的kernel.sysrq為一
這樣target就會在開機的時候等host的gdb進來
請vim /etc/sysctl.conf



6.將target system reboot,並把host system 切換到root 權限和linux source
code 的資料夾(自己下載的檔案解壓縮)。

host system 要在target system 重開機時馬上輸入兩行指令
gdb vmlinuz
target remote /dev/ttyS0


7.差不多結束


Reference:

http://blog.linux.org.tw/~jserv/archives/002045.html

http://linux.chinaunix.net/bbs/archiver/tid-1045674.html

http://www.penna.cn/blog/article.asp?id=179

http://bbs.driverdevelop.com/htm_data/12/0807/112490.html


心得:

感謝同學互相幫忙,不然因為新版本核心,不是助教投影片上寫的fedora8,要找的資料很多很雜,很擔心沒有太多時間看資料一個一個方法測試。做的過程當中,重做好幾次,覺得很煩,而且不知道自己做得對不對,因此沒有拍照記錄過程。

期末考

寫得很順,應該會拿得不錯的成績。
覺得老師講得很抽象,也不知道要考哪邊,os是個天書科目。


唸書時候的心裡狀態
osososososososososososososossoososososososososososososososososososososososososoooooooooooooooooooooooooooooooooooooooooooossssssssssssssssssssssssssooooooooooooossssssssssssssssssooooooooooooossssssssssssssos


考完試的心裡狀態
(~^O^~)(~^O^~)(~^O^~)(~^O^~)(~^O^~)(~^O^~)(~^O^~)(~^O^~)(~^O^~)(~^O^~)(~^O^~)(~^O^~)(~^O^~)(~^O^~)(~^O^~)(~^O^~)(~^O^~)(~^O^~)(~^O^~)(~^O^~)(~^O^~)(~^O^~)(~^O^~)(~^O^~)



念DB和Compiler時,心裡很慌,看不完,大概是這樣吧
〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒〒△〒

考完試,心情就....
OrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrz
OrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrzOrz


==========

寫完OS部落格,暑假就到了!!



2009年6月14日 星期日

更改Linux內的shell

如果覺得Linux內的bash shell沒有顏色,很陽春,想換成別的shell,例如FreeBSD上有顏色的csh,可以依照下面的步驟。
此步驟適用於 fedora,示範從bash to csh

1. 安裝 tcsh套件
yum list tcsh*
yum install [tcsh_name]

2.
chsh -l
chsh -s [path of csh]

3.logout

4.login
成功

2009年6月12日 星期五

期末project

因為前兩個作業弄KGDB升到新的版本2.6.27,
今天要做project時發現,打stap command, shell 會說找不到這個指令。

於是我重安裝systemtap和相關的package(kernel-devel,...etc),
但是呢,安裝完之後,連基本的hello probe測試都不會過。
我不知道是什麼原因啦,目前打算拿舊的核心來做。



如果有人試出來2.6.27上面可以跑systemtap,和通過hello probe測試,
麻煩通知我一下,讓我知道,謝謝。(六月份過後就不用跟我說了XD)

--
灌了兩次 0rz,整個晚上都耗在這邊=.=

六月份上OS心得

終於上到Linux了,等很久。卻發現已經沒多少上課時間,唉唉,可惜,我還以為這門課可以學到寫Linux的driver。算了沒關係,還是有其他課教。

只不過,老師說,Linux和uCOS-II概念上很多是相同的,所以他上很快,誰知道呢。我記得,上學期學OS時,還蠻快樂的,這學期就普普通通,應該是我個人的問題吧。


上學期從恐龍書學到OS怎麼排程、很多排工作的演算法,我有用書上的方法應用在平常做事情,像是作業due day要到了,該決定哪些hw 要先做、哪些先不做,要注意別讓某些作業starvation,因為很重要。想一想,上學期過得驚險刺激,而且還蠻好笑的 XD。那時候覺得,想出那些排程演算法的人,一定很會安排工作和協調事務,不然怎麼拚命榨乾CPU的資源,怎麼使OS達到最高效率、和統合其他設備?


2009年6月7日 星期日

媒體恐嚇的時代

這篇不是長篇大論的文章,只是個人念書念到累,休息看新聞的心得。

最近畢業季,人力銀行一直在媒體上放送,叫大學生不要眼高手低,有工作做就好,因為台大的學生也無法靠台大招牌拿到一個好工作。而且薪水愈報愈低,去X的OOXX人力銀行。

台灣根本沒有勞委會吧!只有資委會,站在資方那邊的委員會。

你們這些人,只會站在資方那邊說話,不會幫勞方說點話。資方在不景氣的年代也還想要有相同的利潤,混帳。做這種缺德事,早晚你們也會遭殃的。



---
這陣子,觀察一些事物有些心得:
1.台灣人沒有骨氣,因為中國採購台灣零組件,就低聲下氣。就像你是老闆,顧客行為再怎麼爛,他還是顧客,只要賺到他的錢,他要怎樣都無所謂。我不是台獨份子,只是看新聞,有這樣的感想。

2.沒有羞恥心。只要人家給錢就替他做事,不管是不是對的,有錢賺就好,抱持著反正受害的不是我之心態,這非常不可取。

3.政府提的大專生實習方案,很多人都在罵,大學生的薪水只有22000?定這政策的人到底有沒有腦袋?你這個政策已經讓不肖企業把大學生的薪水定在兩萬二,而且兩萬二還不是全由企業出,政府也出。有沒有腦袋啊!

4.政府單位很多人其實不適合目前職位,做事不會做,尸位素餐,坐領乾薪。訂一些莫名其妙的法案,政策,讓民眾、大家都痛苦。太過專業或樣樣通樣樣鬆都不好,專業的人要多接觸人群,才能傾聽目標族群後,用自己的所學幫助他們;樣樣通樣樣鬆的人,要試著專心學一樣東西,不要半調子不專心。

5.台灣人不合群,有規則就不想遵守,有傳統就想打破。固然某些可能是不合時宜,但有些之所以會成為傳統、規則,是前人走過的路、留下的教訓,前人想讓後進少走點冤枉路,才提醒後輩的。不想,後輩一點也不在意,套用強者我同學的話:「歷史帶給人教訓,但人往往總不記得。」

6.台灣人目前沒有聲音,對未來普遍盲然,不知道該何去何從。這也不能怪他們,因為他們聽媒體說工作很難找,景氣不好,所以老闆要求加班、超時工作,也不敢吭一聲。下班之後很累,看看電視新聞,竟是些狗屁倒灶的事情,例如酷酷嫂怎樣怎樣的,馬英九被他太太虧怎樣怎樣的,看到這些就傻眼了,新聞報這些有什麼用,對未來沒有幫助,連監督政府的功能也愈來愈薄弱。心裡想說些社會現況或政策的感想,卻因對政策了解不充分,心有餘而力不足,懶得動筆寫,於是選擇沉默。

7.黨政軍尚未退出媒體,無法發揮監督政府的功能。同時有一怪象,前幾天中時集團底下的媒體聯合嗆NCC,這真是令我驚訝!一個擁有各種傳播媒介的集團,用龐大的資源批評NCC,而且是站在私利角度,太誇張了!私人單位企圖凌駕政府機器。


---
一直以來,常被學校師長和認識的長輩耳提面命,說對岸的學生很優秀,不好好努力充實自己,將無法在未來和他們競爭,因為他們工資低廉,拚了命的讀書、認真工作,挺優秀的!認真的態度不是台灣大學生可以比擬的。恩,也許是吧,但我想要有生活品質,不想賣肝賣身體換酬勞。可能我的資質贏不了top的人,至少我認認真真的努力,做好自己的本份外,多吸收一點知識,也不會輸給他們太多。還沒比怎麼知道輸贏呢?



活在全球化的時代,人是財務報表內的人事成本、生產工具,必須以各種方法提升自己的工作效率,替團體謀求更大的利潤──如同作業系統,不斷地被提出各種優化方法,例如round robin、FIFO、LIFO、preemptive kernel、支援多核心CPU、分時工作等等最佳化技巧,榨乾系統資源以提升performance。

可是,能夠這樣類比嗎?我們是人,不是作業系統,更不是機器!