系統程式設計概述(程序)

2021-09-14 05:08:41 字數 1045 閱讀 4873

程序概念:

所有的裝置都是圍繞儲存器工作的

標準輸入裝置輸入指令,載入到記憶體中,然後記憶體交給cpu處理指令,將處理好的指令再交給記憶體,內存在交給標準輸出裝置。(時載入到cpu的暫存器上處理)。

什麼是程序

說的通俗一點就是進行中的程式

作業系統通過pcb來控制程序的執行,這個pcb(一種程序描述符)也叫程序,在作業系統角度,程序就是pcb-task_struct(task-struct是linux系統下的乙個結構體,儲存了乙個程序的相關資訊),pcb上的記憶體指標會指向當前要執行的程式在記憶體中的位址。

cpu一次只能夠處理乙個程序,那麼我們平時在開啟多個軟體的時候,並未感覺到卡頓

這源自cpu的分時機指:切換排程程序,每個程序只在cpu中執行很短的一段時間,(時間片)。

當在排程的時候會切換到下乙個程序是必須要記錄當前位址的上下資料才會切換到下乙個程序,否則將會被cpu遺忘。

pcb記錄了什麼

殭屍程序:處於僵死態的程序—程序退出但是資源沒有完全釋放(沒有完全退出)

如何產生:子程序先於父程序退出,但是將自己的退出原因儲存在了pcb中,作業系統檢測到了子程序退出,因為有可能父程序關注子程序退出原因,所以作業系統不敢隨意釋放資源,通知了父程序,但是父程序可能現在在忙著處理其他的事情,沒關注到這個通知,導致了子程序退出,但是資源一直沒有完全釋放,成為殭屍程序

殭屍程序危害:資源洩露,乙個使用者能夠建立的程序是有限的,可能導致其他新的程序建立失敗。

處理殭屍程序的辦法kill -9無法殺死殭屍程序,那麼可以通過殺死父程序的方法來殺死殭屍程序。

如何避免:程序等待

孤兒程序:父程序先於子程序退出,子程序成為孤兒程序,執行在後台,父程序變成號程序(孤兒院院長)

守護程序/精良程序(特殊的孤兒程序)

關於殭屍程序,詳細的資訊可以關注這位大佬 部落格

系統程式設計 程序間通訊 概述

程序間通訊概述 1.什麼是程序間通訊?什麼是執行緒間通訊?程序間通訊 在使用者空間實現程序間通訊是不可能的,程序間通訊通過linux核心物件來實現。執行緒間通訊 這在使用者空間就可以實現,甚至可以通過全域性變數來通訊。2.有哪幾種程序間通訊方式?管道通訊 無名管道 有名管道 檔案系統中有名 訊號通訊...

linux 系統程式設計概述

系統程式設計三大基石 系統呼叫,c庫,c編譯器 1.系統呼叫 從作業系統中獲得符合或者資源,又使用者空間向核心發起的函式呼叫,如 read write 等系統呼叫函式 2.c庫 linux 應用程式的核心,glibc 系統呼叫封裝,執行緒支援,基本應用工具 3.c編譯器 gcc 編譯器輔助實現了c標...

系統程式設計之程序

一 程序相關概述 1 相關指令 ps aux 檢視所有程序 ps aux grep 程序 只會過濾出指定程序資訊 top 指令類似windows任務管理器 2 程序描述符 pid pid 0 稱為交換程序 程序排程 pid 1 init程序 系統初始化 二 c程式的儲存空間是如何分配的 從高位址到低...