lighttpd源**中涉及到的幾類核心資料結構,雖然採用的大量結構化語言,但是到處體現的是物件導向的事項。
[size=medium][b]1:buffer(字串函式)[/b][/size]
內部定義如下:
typedef struct buffer;
從該結構衍生出,二維字串陣列結構
typedef struct buffer_array;
[b]1.1buffer初始化記憶體特點[/b]
使用乙個已經存在buffer初始化當前buffer的時候,採取措施分配的記憶體都是64的整數倍。
/**
** allocate (if neccessary) enough space for 'size' bytes and
* set the 'used' counter to 0**/
#define buffer_piece_size 64
int buffer_prepare_copy(buffer *b, size_t size)
b->used = 0;
}
[b]2:dataset型別(物件模板,通用結構)[/b]
typedef enum data_type_t;
#define data_unset \
data_type_t type; \
buffer *key; \
int is_index_key; /* 1 if key is a array index (autogenerated keys) */ \
struct data_unset *(*copy)(const struct data_unset *src); \
void (* free)(struct data_unset *p); \
void (* reset)(struct data_unset *p); \
int (*insert_dup)(struct data_unset *dst, struct data_unset *src); \
void (*print)(const struct data_unset *p, int depth)
typedef struct data_unset data_unset;
/*data_unset 實際的型別,有點類似於函式
typedef struct data_unset
*/
data_unset可以是整形,字串行,以及其他型別,但是通過函式指標,定於幾個函式free,
reset,print等等。相當於data_unset是乙個虛基類
3:array(實際上data_unset的二維結構)
array定於如下:
typedef struct array;
Linux核心結構分析
linux 核心由5 個主要的子系統組成。img 1 程序排程 sched 控制著程序對cpu 的訪問。當需要選擇下乙個程序執行時,由排程程式選擇最值得執行的程序。可執行程序實際是僅等待 cpu 資源的程序,如果某個程序在等待其他資源,則該程序是不可執行程序。linux 使用了比較簡單的基於優先順序...
UCOS II核心結構
1.1 臨界段可以關中斷來保持獨佔。為什麼可以關中斷來保持獨佔呢?因為能引起排程的有兩個,乙個是呼叫 系統函式,另外乙個是中斷喚醒了乙個事件。而明顯進入臨界段是不會呼叫系統函式的了,因而意外的就是 可能會發生中斷,所以把中斷關掉了,就不會發生排程了。1.2 任務 ucos的任務可以達64個,但是最高...
Linux核心結構
linux核心主要由五個子系統組成 程序排程,記憶體管理,虛擬檔案系統,網路介面,程序間通訊。1.程序排程 sched 控制程序對cpu的訪問。當需要選擇下乙個程序執行時,由排程程式選擇最值得執行的程序。可執行程序實際上是僅等待cpu資源的程序,如果某個程序在等待其它資源,則該程序是不可執行程序。l...