程序的表現形式

2021-10-22 14:04:22 字數 1987 閱讀 6879

1.程序生命週期

執行:該程序此刻正在執行。

2.程序表示

include/linux/sched.h中有結構體struct task_struct;表示了程序的所有資訊。

struct task_struct 

;

程序限制:

rlimit_cpu #按毫秒計算的最大cpu時間

rlimit_fsize #允許的最大檔案長度

rlimit_data #資料段的最大長度

rlimit_stack #(使用者狀態)棧的最大長度

rlimit_core #記憶體轉儲檔案的最大長度

rlimit_rss #常駐記憶體的最大尺寸。換句話說,程序使用頁幀的最大數目。目前未使用

rlimit_nproc #與進**正uid關聯的使用者可以擁有的程序的最大數目

rlimit_nofile #開啟檔案的最大數目

rlimit_memlock #不可換出頁的最大數目

rlimit_as #程序占用的虛擬位址空間的最大尺寸

rlimit_locks #檔案鎖的最大數目

rlimit_sigpending #待決訊號的最大數目

rlimit_msgqueue #資訊佇列的最大數目

rlimit_nice #非實時程序的優先順序(nice level)

rlimit_rtprio #最大的實時優先順序

命名空間:

概念:就是c++命名空間的意思,隔離資源。

建立:1.用fork或者clone系統呼叫建立新程序時,有特定的選項可以控制使用使用新命名空間或者使用父命名空間。

2.unshare系統呼叫將程序的某些部分與父程序分離,包括命名空間。

程序類中命名空間結構體:

struct nsproxy 

;

程序id號:

​ unix程序總是會分配乙個號碼用於在其命名空間中唯一地標識它們。該號碼被稱作程序id號,

簡稱pid。用fork或clone產生的每個程序都由核心自動地分配了乙個新的唯一的pid值。

3.程序的系統呼叫

fork->sys_fork }

vfork->sys_vfork }---->do_fork

clone->sys_clone }

//arch/x86/kernel/process_32.c 

asmlinkage int

sys_clone

(struct pt_regs regs)

asmlinkage int

sys_fork

(long r10,

long r11,

long r12,

long r13,

long mof,

long srp,

struct pt_regs *regs)

//kernel/fork.c

long

do_fork

(unsigned

long clone_flags,

unsigned

long stack_start,

struct pt_regs *regs,

unsigned

long stack_size,

int __user *parent_tidptr,

int __user *child_tidptr)

核心功能流程:

1.檢查標誌

2.dup_task_struct

3.檢查資源限制

4.初始化task_struct

5.sched_fork

6.複製/共享程序的各個部分。

7.設定各個程序id,程序關係,等等。

表現形式CSS

css cascading stylesheets的縮寫 翻譯為 層疊樣式表 或者 級聯樣式表 簡稱樣式表 cascading stylesheets 的首字母縮寫,意思是層疊樣式表。有了css,html中大部分表現樣式的標籤就廢棄不用了,html只負責文件的結構和內容,表現形式完全交給css,ht...

多型的表現形式

目錄 1.多型的定義 2.多型的三種形式 3.多型的編譯和執行 4.多型的轉型 5.多型的好處 6.多型的弊端 多型 封裝和繼承是物件導向的三大特性。多型需滿足三個條件 1 有繼承 2 有重寫 3 有父類引用指向子類物件。最終多型體現為父類引用可以指向子類物件 父類型別 變數名 new 子類型別 1...

vue import的幾種表現形式

在使用vue開發專案的時候,很多使用會import很多模組,或者元件,下面說下import的幾種表現形式 例如 我在 src api table.js import request from utils request export function getlist params export fu...