3 6 程序排程 退出

2021-10-04 18:42:18 字數 1470 閱讀 3573

程式退出處理程式

int

do_exit

(long code)

1)釋放當前程序的**段和資料段佔的記憶體頁

free_page_tables

(get_base

(current->ldt[1]

),get_limit

(0x0f))

;free_page_tables

(get_base

(current->ldt[2]

),get_limit

(0x17))

;

2)如果當前程序有子程序,將該子程序的父程序設定位1號程序

for

(i=0

; i(task[i]

&& task[i]

->father == current->pid)

3)清空一些程序的工作狀態,並設定當前程序位zonbie狀態

for

(i=0

; i(current->filp[i]

)sys_close

(i);

iput

(current->pwd)

;current->pwd=

null

;iput

(current->root)

;current->root=

null

;iput

(current->executable)

;current->executable=

null;if

(current->leader && current->tty >=0)

tty_table[current->tty]

.pgrp =0;

if(last_task_used_math == current)

last_task_used_math =

null;if

(current->leader)

kill_session()

;current->state = task_zombie;

current->exit_code = code;

4)向父程序發出sigchld訊號,終止該程序。重新排程

tell_father

(current->father)

;schedule()

;

pid>0,訊號傳送給pid

pid=0,訊號傳送給當前程序組裡的所有程序

pid=-1,sig就會傳送給除第乙個程序的所有程序

pid<-1,sig傳送給出程序組-pid裡的所有程序

int

sys_kill

(int pid,

int sig)

程序排程演算法(程序排程策略)

程序排程演算法 排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短...

程序排程三 程序排程介紹

一 程序排程介紹 1 程序排程的產生 程序從使用資源方面可以分為如下兩類,不管是i o還是cpu受限類的程序,cpu都希望再盡可能短的時間 完成更多的工作,但另一方面,又希望盡可能的減少資源 i o或cpu 的消耗,這兩則之間存在矛盾,所以程序 的排程管理就是來協調兩者之間的衝突。型別別稱 描述示例...

程序退出碼

目錄 description 如何檢視程序退出碼 分析退出碼 a.正常退出 b.異常退出 對異常的程序退出碼進行分析 關於訊號的具體分析 linux 下程序的退出分為正常退出和異常退出兩種 1.正常退出 a.在main 函式中執行return。b.呼叫exit 函式 c.呼叫 exit 函式 2.異...