Selected Category: 技術文件 (7)

View Mode: Post List Post Summary

好久沒寫技術文件啦!


目前正在計畫以這半年來對完全沒有程設概念學生的教學經驗,寫些較易入門的程設教學文件。不過看來完成之日遙遙無期啊!


應朋友要求,先來篇簡單的。


對於近來十分流行的Plurk,網路上也衍生出一些好玩好用的工具,如Plurk Smile就是個可以在Plurk中插入表情圖案的熱門小工具。


Plurk Smile其實就是將網路上可得的圖檔以Plurk本身遇圖片連結即顯示圖片的特性放在發言內容中。幾次改版的腳本檔總會有些缺失的圖案,或者某些較受歡迎的圖案隨著改版而消失;另外,有些人也許有自己想用的圖案想加卻不知要怎麼作,以下便是說明將網路上的圖檔加入Plurk Smile腳本以方便在發言時加入的方法。(不過要用別人的圖檔還是應該經過擁有者的同意,盜圖的行為是不允許的喔!)

Posted by clplayer at 痞客邦 PIXNET Comments(3) Trackback(0) Hits(682)

因為之前都使用NOR Flash作資料儲存,一直未碰到問題。
但這次需要同時支援兩種Flash,將兩種支援設定均開啟後,在存取NOR Flash時總是發生Crash。
找了好久才找到原因所在--未檢查Buffer是否存在。
套上下面的更新便解決啦!

Posted by clplayer at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(238)

動態記憶體配置函式:malloc(), calloc(), realloc(), free().


void *malloc(size_t memsize)
  自堆疊取memsize byte並回傳其起始位址。


void *calloc(size_t nelem, size_t elsize)
  分配nelem個elsizebyte大小的空間,並將空間中內容設為0。回傳值為所分配的起始位址。


void *realloc(void *addr, size_t memsize)
  重新分配memsizebyte的空間,並將原addr的內容複製到新位址。若新空間大於原空間,多出部份不作初始化;若新空間小於原空間,則多出內容會遺失。 回傳值為新分配之記憶體位址。


void free(void *addr)
  釋放addr指向的記憶體空間。


Posted by clplayer at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(1502)

Linux中的封包傳輸

當資料包裝成網路上傳輸的封包,便會加入對應裝置的佇列中,最後從佇列中被提取並交給driver要求NIC將資料送出。處理這些動作的函式依序為 dev_queue_xmit -> dev_qdisc_enqueue -> qdisc_run -> qdisc_restart -> dev_qdisc_dequeue -> dev_hard_start_xmit

由上述函式可知,封包在進出佇列均受到queue discipline(qdisc)的控管。在沒有設定掛載任何queue discipline時,系統便預設以FIFO方式處理封包的enqueue和dequeue。當以tc指令在NIC掛載上特定的queue discipline後,該NIC便以設定的queuing演算法處理enqueue和dequeue,而達成管理頻寬的功能。

若設定掛載的qdisc是CBQ、HTB或Prio這類Classful qdisc,則封包enqueue和dequeue需要更複雜的機制去實作,也就是透過filter分類到對應class,再依各class被分配的頻寬大小決定封包enqueue和dequeue的順序與頻率。

當classful qdisc作用時,封包會被依序送到各個filter作比對,直到找到對應的class,沒有符合的class時,便依qdisc的設定分類到defualt class。同一類的封包會先以該class掛載的qdisc作queuing,root qdisc再對各class作queuing。

Posted by clplayer at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(760)

從2.2版的kernel開始,Linux便提供對QoS的支援。在設定上,是利用iproute中的一個工具程式--TC。

實作上,Linux藉由對各個Interface上的Queue作控管來達到QoS的效果。主要功能包含三個部份:
Queue Displine、Class、Filter。

Posted by clplayer at 痞客邦 PIXNET Comments(1) Trackback(0) Hits(2413)

指位器(pointer)在C語言中是十分重要,卻又常常不易理解的部份。從大學到現在寫了六年多的程式,有些觀念也是最近才真正理解。
這篇的目的不在教學,而是將自己最近想通的部份作下記錄。

指位器的宣告:

Posted by clplayer at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(308)

論文或報告:
 "Stochastic Fairness Queuing", Paul E. McKenney, Jan 24, 1991.
 "Link-Sharing and Resource Management Models for Packet Networks", IEEE/ACM Transactions on Networking,Sally Floyd and Van Jacobson, Aug 1995.
 "Efficient Fair Queuing using Deficit Round Robin", M. Shreedhar and George Varghese, 1995.

Posted by clplayer at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(391)