程式退出處理程式
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.異...