linux系統程式設計 多程序

2021-08-20 21:33:04 字數 937 閱讀 3343

最近發現每天都在寫業務**,好多基礎的東西都忘了,今天開始每天覆習一點基礎知識。今天先複習多程序

程序是具有一定功能的程式的一次執行活動,是系統資源分配和排程的基本單位

孤兒程序:父程序退出,子程序沒有退出,被init程序收養

init程序:是核心啟動後執行的第乙個程序,是所有孤兒程序的子程序。init程序會迴圈的wait退出的孤兒程序,因此孤兒程序不會變成殭屍程序,不會造成危害

殭屍程序:程序結束了,但是父程序沒有wait或waitpid判斷他的狀態,那麼子程序描述符仍然在系統中,就會變成殭屍程序,造成資源浪費

殭屍程序處理辦法:1.子程序退出的時候給父程序乙個訊號,父程序通過wait或waitpid等待子程序退出 2.殺死父程序,讓子程序變成孤兒程序,讓init程序進行**

程序的三個狀態:

執行態 ------> 就緒態    1.占用時間太長,時間片用完了        2.搶占式排程的系統中,高優先順序的程序要執行時,低優先順序的程序讓出cpu,狀態由執行態變為就緒態

執行態  ------> 阻塞態  正在執行的程序由於某等待事件而無法繼續執行,狀態由執行態變為阻塞態,如發生了io請求

就緒態  ----->執行態  正在執行的程序時間片用完,排程在就緒佇列選擇合適的程序分配cpu,被選中的程序由就緒態變為執行態

阻塞態 ------->就緒態  阻塞態程序的等待事件發生了,就由阻塞態轉為就緒態

死鎖:兩個或兩個以上的程序在執行的過程中,由於競爭資源或由於彼此通訊而造成的一種阻塞現象

集合中的每乙個程序都在等待只能由集合中的其他程序才能引發的事件,那麼該組程序是死鎖的

死鎖產生的原因:

系統資源的競爭

程序執行的推進順序不得當

死鎖的必要條件:

互斥條件

迴圈等待條件

不剝奪條件

請求和保持條件

避免死鎖的一種有效演算法:銀行家演算法 

Linux系統程式設計之程序

程序狀態 4 5種 就緒 初始化 執行,掛起 等待 停止 pbc成員 1 程序id 2 程序狀態 3 程序切換需要儲存和恢復的cpu暫存器 4 描述虛擬位址空間資訊 5 描述控制終端的資訊 6 當前工作目錄 7 umask掩碼 8 檔案描述符 9 訊號相關的資訊 10 使用者和使用者組id 11 會...

《Linux系統程式設計 程序管理》

在linux的核心的五大組成模組中,程序管理模組時非常重要的一部分,它雖然不像記憶體管理 虛擬檔案系統等模組那樣複雜,也不像程序間通訊模組那樣條理化,但作為五大核心模組之一,程序管理對我們理解核心的運作 對於我們以後的程式設計非常重要。同時,作為五大組成模組中的核心模組,它與其他四個模組都有聯絡。下...

Linux系統程式設計 程序(一)

目錄 一 什麼是程序 二 程序的 生老病死 三 程序相關函式 當elf格式的可執行程式被執行的時候,程式被載入到記憶體中執行,此時核心產生了乙個名為task struct 的結構體來表示與管理這個程序。其中 一般流程為 父程序呼叫fork函式,生成子程序 使用fork產生的子程序與父程序一模一樣,並...