linux系統程式設計--程序相關概念
程式和程序
程式:二進位制檔案,佔用的磁碟空間,還沒執行
程序:啟動的程式,資料在記憶體中,佔用系統資源(CPU,實體記憶體)
並行和併發
併發:不是一個時間點的概念,而是一個時間段的概念,某個時間段內處理的請求數量
並行:增加伺服器或cpu對請求的處理
一個cpu把一個時間段分成若干時間碎片,每個時間碎片只能處理一個程序,交替的處理程序
pcb(程序控制塊)
常見內部成員: - 程序id - 程序的狀態:初始,就緒,執行,掛起,終止 - 程序切換時,需要儲存和恢復一些CPU暫存器 - 描述虛擬地址空間的資訊 - 描述控制終端的資訊 - 當前工作目錄 - umask掩碼 - 檔案描述符表 - 和訊號相關的資訊 - 使用者id和組id - 會話和程序組 - 程序可以使用的資源上限
程序狀態
執行資格(可以去搶cpu)和執行權(獲得cpu)
kill -9 pid (無條件殺死程序)
程序控制
程序如何生成子程序,fork函式
fork的返回值
>0 父程序的返回值
=0 子程序的返回值
子程序建立成果之後,程式碼的執行位置
如何區分父子程序
通過fork函式返回值
相關推薦
linux系統程式設計--程序相關概念
程式和程序 程式:二進位制檔案,佔用的磁碟空間,還沒執行 程序:啟動的程式,資料在記憶體中,佔用系統資源(CPU,實體記憶體) 並行和併發 併發:不是一個時間點的概念,而是一個時間段的概念,某個時間段內處理的請求數量 並行:增加伺服器或cpu對請求的處理 一個cpu把一個時間段分成若干時間碎片,每個時
linux系統程式設計-程序相關的基本概念
1. 程式和程序 程式:指編譯好的二進位制檔案,在磁碟上,不佔用系統資源(CPU、記憶體)永久的,靜態的。 程序:是抽象的概念,佔用系統資源,在記憶體中執行(程式執行產生程序)暫時的,動態的。 例子:linux同時開兩個終端,分別打開了同一個程式,但是對應的
linux伺服器開發二(系統程式設計)--程序相關
程序相關的概念 程式與程序 程式,是指編譯好的二進位制檔案,在磁碟上,不佔用系統資源(CPU、記憶體、開啟的檔案、裝置、鎖等等)。 程序,是一個抽象的概念,與作業系統原理聯絡緊密。程序是活躍的程式,佔用系統資源。在記憶體中執行(程式執行起來,產生一個程序)。 程式 --&g
Linux系統程式設計---程序替換
程序替換 我們知道,在 Windows 平臺下,我們可以通過雙擊執行可執行程式,讓這個可執行程式成為一個程序;而在 Linux 平臺,我們可以通過 ./ 執行,讓一個可執行程式成為一個程序。 但是,如果我們本來就執行著一個程式(程序),我們如何在這個程序內部啟動一個外部程式,由核
Linux系統程式設計---程序等待
程序等待 1.為什麼需要程序等待 我們知道,子程序退出,父程序如果不管不顧,那麼子程序就可能變為殭屍程序,進而佔用系統資源,造成記憶體洩漏, 另外,程序一旦變成殭屍狀態,那就刀槍不入,“殺人不眨眼”的kill-9也無能為力,因為誰也辦法殺死一個已經死去的程序。
Linux系統程式設計---程序終止
程序終止 程序的退出有三種場景: 程式碼執行完畢,結果正確 程式碼執行完畢,結果不正確 程式碼異常終止 程序退出方法 從main返回 呼叫exit函式 呼叫_exit函式 ctrl + c :x訊號終止
Linux系統程式設計——程序的介紹
程序 我們平時寫的 C 語言程式碼,通過編譯器編譯,最終它會成為一個可執行程式,當這個可執行程式執行起來後(沒有結束之前),它就成為了一個程序。 程式是存放在儲存介質上的一個可執行檔案,而程序是程式執行的過程。程序的狀態是變化的,其包括程序的建立、排程和消亡。程式
Linux系統程式設計——程序和執行緒的區別與聯絡
在許多經典的作業系統教科書中,總是把程序定義為程式的執行例項,它並不執行什麼, 只是維護應用程式所需的各種資源,而執行緒則是真正的執行實體。 為了讓程序完成一定的工作,程序必須至少包含一個執行緒。 程序,直觀點說,儲存在硬碟上的程式執行以後,會在記憶體空間裡形成
Linux系統程式設計——程序間通訊:共享記憶體
概述 共享記憶體是程序間通訊中最簡單的方式之一。共享記憶體允許兩個或更多程序訪問同一塊記憶體,就如同 malloc() 函式向不同程序返回了指向同一個實體記憶體區域的指標。當一個程序改變了這塊地址中的內容的時候,其它程序都會察覺到這個更改。 共享記憶體的特點: 1)共
Linux系統程式設計——程序間通訊:訊息佇列
概述 訊息佇列提供了一種在兩個不相關的程序之間傳遞資料的簡單高效的方法,其特點如下: 1)訊息佇列可以實現訊息的隨機查詢。訊息不一定要以先進先出的次序讀取,程式設計時可以按訊息的型別讀取。 2)訊息佇列允許一個或多個程序向它寫入或者讀取訊息。 3)與無名管道、命名管道一
Linux系統程式設計——程序間通訊:管道(pipe)
管道的概述 管道也叫無名管道,它是是 UNIX 系統 IPC(程序間通訊) 的最古老形式,所有的 UNIX 系統都支援這種通訊機制。 無名管道有如下特點: 1、半雙工,資料在同一時刻只能在一個方向上流動。 2、資料只能從管道的一端寫入,從另一端讀出。
Linux系統程式設計——程序間通訊:訊號中斷處理
什麼是訊號? 訊號是 Linux 程序間通訊的最古老的方式。訊號是軟體中斷,它是在軟體層次上對中斷機制的一種模擬,是一種非同步通訊的方式 。訊號可以導致一個正在執行的程序被另一個正在執行的非同步程序中斷,轉而處理某一個突發事件。 “中斷”在我們生活中經常遇到,譬如,我正在
Linux系統程式設計——程序間通訊概述
程序是一個獨立的資源分配單元,不同程序(這裡所說的程序通常指的是使用者程序)之間的資源是獨立的,沒有關聯,不能在一個程序中直接訪問另一個程序的資源(例如開啟的檔案描述符)。 但是,程序不是孤立的,不同的程序需要進行資訊的互動和狀態的傳遞等,因此需要程序間通訊( IPC:Inter Pr
Linux系統程式設計——程序替換:exec 函式族
在 Windows 平臺下,我們可以通過雙擊執行可執行程式,讓這個可執行程式成為一個程序;而在 Linux 平臺,我們可以通過 ./ 執行,讓一個可執行程式成為一個程序。 但是,如果我們本來就執行著一個程式(程序),我們如何在這個程序內部啟動一個外部程式,由核心將這個外部程式
Linux系統程式設計——程序的控制:結束程序、等待程序結束
結束程序 首先,我們回顧一下 C 語言中 continue, break, return 的作用: continue: 結束本次迴圈 break: 跳出整個迴圈,或跳出 switch() 語句 return: 結束當前函式 而我們可以通過 exit() 或 _exit() 來結束當前程序。
Linux系統程式設計 | 執行緒概念
什麼是執行緒 在早期,unix其實是沒有執行緒的概念,因為它的程序已經做的足夠優秀了。但是,隨著作業系統行業的發展,其他作業系統,比如windows,都有了執行緒的存在。於是,很多開發人員就呼籲unix也提供執行緒功能。unix為了順應開發人員的呼籲,於是也開發出執行緒。
Linux系統程式設計—程序間同步
我們知道,執行緒間同步有多種方式,比如:訊號量、互斥量、讀寫鎖,等等。那程序間如何實現同步呢?本文介紹兩種方式:互斥量和檔案鎖。 ##**互斥量mutex** 我們已經知道了互斥量可以用於線上程間同步,但實際上,互斥量也可以用於程序間的同步。為了達到這一目的,可以在pthread_mutex_init初始
Linux----網路程式設計(守護程序相關概念及程式設計流程)
一、守護程序的相關定義 守護程序:也稱為精靈程序,執行在後臺的一種特殊程序。守護程序獨立於控制終端並且週期性的執行某種任務或者等待處理髮生的事件。所以守護程序不因為使用者、終端或其他的變化而受影響。 守護程序的特點: 1. 執行週期長
linux系統程式設計-回收程序
孤兒程序和殭屍程序的概念 孤兒程序:父程序先於子程序結束,則子程序成為孤兒程序,此時init程序變成子程序的父程序,稱為init程序領養孤兒程序。 殭屍程序:程序終止,父程序尚未回收,子程序殘留資源(PCB)存放於核心中,變成殭屍(Zombie)程序
Linux系統程式設計——淺談程序地址空間與虛擬儲存空間
早期的記憶體分配機制 在早期的計算機中,要執行一個程式,會把這些程式全都裝入記憶體,程式都是直接執行在記憶體上的,也就是說程式中訪問的記憶體地址都是實際的實體記憶體地址。當計算機同時執行多個程式時,必須保證這些程式用到的記憶體總量要小於計算機實際實體記憶體的大小。 那當程式同時執行