Lighttpd核心結構分析

2021-08-25 10:24:36 字數 1509 閱讀 1073

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...