摘要:詳解進程在中的作用,組成,什么是父子進程系統是一個多進程的系統,它的進程之間具有并行性互不干擾等特點。中的進程包含個段,分別為數據段代碼段和堆棧段。
1.什么是進程?
進程的經典定義是一個執行中程序的實例,同時也是資源分配的最小單元。系統中的每個程序都運行在某個進程中的上下文中,上下文是由程序正確運行所需的狀態組成的。這個狀態包括存放在內存中的程序的代碼和數據,它的棧、通用目的寄存器的內容、程序計數器、環境變量以及打開文件描述符的集合。
進程的生命周期:
創建: 每個進程都是由其父進程創建進程可以創建子進程,子進程又可以創建子進程的子進程
運行: 多個進程可以同時存在進程間可以通信
撤銷: 進程可以被撤銷,從而結束一個進程的運行
進程的分類:
交互進程、批處理進程和守護進程
進程的屬性:
進程ID(PID):是唯一的數值,用來區分進程
父進程和父進程的ID(PPID)
啟動進程的用戶ID(UID)和所歸屬的組(GID)
進程狀態:運行R、休眠S、僵尸Z
執行狀態:進程正在占用CPU
就緒狀態:進程已具備一切條件,正在等待分配CPU的處理時間片
等待狀態:進程不能使用CPU,若等待事件發生則可將其喚醒
程序是放到磁盤的可執行文件,進程是指程序執行的實例;
進程是動態的,程序是靜態的:程序是有序代碼的集合。通常進程不可在計算機之間遷移;而程序通常對應著文件、靜態和可以復制;
進程是暫時的,程序是長久的:進程是一個狀態變化的過程,程序可長久保存;
進程與程序組成不同:進程的組成包括程序、數據和進程控制塊(即進程狀態信息);
進程與程序的對應關系:通過多次執行,一個程序可對應多個進程;通過調用關系,一個進程可包括多個程序。
3.詳解進程在linux中的作用,組成,什么是父子進程?Linux系統是一個多進程的系統,它的進程之間具有并行性、互不干擾等特點。
也就是說,每個進程都是一個獨立的運行單位,擁有各自的權利和責任。其中,各個進程都運行在獨立的虛擬地址空間,因此,即使一個進程發生異常,它也不會影響到系統中的其他進程。
Linux中的進程包含3個段,分別為“數據段”、“代碼段”和“堆棧段”。
“數據段”存放的是全局變量、常數以及動態數據分配的數據空間;
“代碼段”存放的是程序代碼的數據。
“堆棧段”存放的是子程序的返回地址、子程序的參數以及程序的局部變量等。
堆和棧的概念見博文——堆和棧。
父子進程:
父進程與子進程是管理與被管理的關系,當父進程終止時,子進程也隨之終止;但子進程終止,父進程不一定終止
ps、kill、pgrep
監視進程工具:
ps:aux或lax輸出的解釋
ps –aux |more分頁查看
top 選擇參數
終止進程的工具:
kill [信號代碼] 進程ID
killall 正在運行的程序名
pkill 正在運行的程序名
xkill
pgrep查詢進程工具:pgrep 參數選項 程序名
5.進程的三態之間的轉換關系,常用的進程調度算法有哪些?用排隊買票的例子對比就緒->執行:處于就緒狀態的進程->進程調度程序為之分配處理器->執行(排隊買票輪到自己)
執行->就緒:處于執行狀態的進程->分配的時間片用完讓出處理器->就緒(正要買票發現車票時間未確定,讓后面的人先買票)
執行->阻塞:正在執行的進程->等待無法繼續執行->阻塞(買票時發現需要做其他重要的事而選擇不買票)
阻塞->就緒:阻塞狀態的進程->等待的事情發生->就緒(路過車站為別人買票,卻未知車票詳情,接到別人確切的車票時間而排隊買票)
6.進程的調度算法有哪些?什么是優先級反轉?調度算法:
先來先服務調度算法
短進程優先調度算法
高優先級優先調度算法
時間片輪轉法
優先級反轉:
優先級反轉是指一個低優先級的任務持有一個被高優先級任務所需要的共享資源。高優先任務由于因資源缺乏而處于受阻狀態,一直等到低優先級任務釋放資源為止。而低優先級獲得的CPU時間少,如果此時有優先級處于兩者之間的任務,并且不需要那個共享資源,則該中優先級的任務反而超過這兩個任務而獲得CPU時間。如果高優先級等待資源時不是阻塞等待,而是忙循環,則可能永遠無法獲得資源,因為此時低優先級進程無法與高優先級進程爭奪CPU時間,從而無法執行,進而無法釋放資源,造成的后果就是高優先級任務無法獲得資源而繼續推進。
7.什么是死鎖?死鎖:多個進程因競爭資源而形成一種僵局若無外力作用,這些進程都將永遠不能再向前推進
同步:一組并發進程按一定的順序執行的過程稱為進程間的同步
互斥:指當有若干進程都要使用某一共享資源時,任何時刻最多允許一個進程使用,其他要使用該資源的進程必須等待,直到占用該資源者釋放了該資源為止
8.常見的面試問題:死鎖的原因,如何解決?死鎖的四個必要條件(缺一不可):
(1) 互斥條件:一個資源每次只能被一個進程使用。
(2) 請求與保持條件:一個進程因請求資源而阻塞時,對已獲得的資源保持不放。
(3) 不剝奪條件:進程已獲得的資源,在末使用完之前,不能強行剝奪。
(4) 循環等待條件:若干進程之間形成一種頭尾相接的循環等待資源關系。
死鎖的解決辦法:
(1)按同一順序訪問對象。
如果所有并發事務按同一順序訪問對象,則發生死鎖的可能性會降低。例如,如果兩個并發事務獲得 Supplier 表上的鎖,然后獲得 Part 表上的鎖,則在其中一個事務完成之前,另一個事務被阻塞在 Supplier 表上。第一個事務提交或回滾后,第二個事務繼續進行。不發生死鎖。將存儲過程用于所有的數據修改可以標準化訪問對象的順序
(2)避免事務中的用戶交互。
避免編寫包含用戶交互的事務,因為運行沒有用戶交互的批處理的速度要遠遠快于用戶手動響應查詢的速度,例如答復應用程序請求參數的提示。例如,如果事務正在等待用戶輸入,而用戶去吃午餐了或者甚至回家過周末了,則用戶將此事務掛起使之不能完成。這樣將降低系統的吞吐量,因為事務持有的任何鎖只有在事務提交或回滾時才會釋放。即使不出現死鎖的情況,訪問同一資源的其它事務也會被阻塞,等待該事務完成。
(3)保持事務簡短并在一個批處理中。
在同一數據庫中并發執行多個需要長時間運行的事務時通常發生死鎖。事務運行時間越長,其持有排它鎖或更新鎖的時間也就越長,從而堵塞了其它活動并可能導致死鎖。保持事務在一個批處理中,可以最小化事務的網絡通信往返量,減少完成事務可能的延遲并釋放鎖
(4)使用低隔離級別。
確定事務是否能在更低的隔離級別上運行。執行提交讀允許事務讀取另一個事務已讀取(未修改)的數據,而不必等待第一個事務完成。使用較低的隔離級別(例如提交讀)而不使用較高的隔離級別(例如可串行讀)可以縮短持有共享鎖的時間,從而降低了鎖定爭奪
(5)使用綁定連接。
使用綁定連接使同一應用程序所打開的兩個或多個連接可以相互合作。次級連接所獲得的任何鎖可以象由主連接獲得的鎖那樣持有,反之亦然,因此不會相互阻塞。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28963.html
摘要:概念全稱是通用網關接口,服務器與應用進行交談的一種工具,其程序須運行在網絡服務器上。開啟之后,會看到多個進程,它們都由管理。一些進步修改配置后,平滑過渡,新的進程使用新的配置,正在運行的進程處理完當前請求后自動。 CGI(Common Gateway InterFace) 既然webserver想把這個請求交給可以處理的人來做,是不是該告訴人家一些基本的,并且人家看得懂的信息信息? W...
摘要:又因為是谷歌出品的,依賴了很多谷歌自己的鏡像,所以對于國內的同學環境搭建的難度又增加了一層。 帶著問題學 Kubernetes 架構 摘要:本文屬于原創,歡迎轉載,轉載請保留出處:https://github.com/jasonGeng88/blog 打開這篇文章的同學,想必對 docker 都不會陌生。docker 是一種虛擬容器技術,它上手比較簡單,只需在宿主機上起一個 docke...
摘要:又因為是谷歌出品的,依賴了很多谷歌自己的鏡像,所以對于國內的同學環境搭建的難度又增加了一層。 帶著問題學 Kubernetes 架構 摘要:本文屬于原創,歡迎轉載,轉載請保留出處:https://github.com/jasonGeng88/blog 打開這篇文章的同學,想必對 docker 都不會陌生。docker 是一種虛擬容器技術,它上手比較簡單,只需在宿主機上起一個 docke...
摘要:進程與線程聲明文章均為本人技術筆記,轉載請注明出處進程線程基本概念進程程序的執行實體,操作系統分配資源的最小單位線程被稱為輕量級進程,是調度分配的最小單位。一個標準的線程由線程,程序計數器,寄存器集合和堆棧組成進程間線程間通信方式進程間通信 進程與線程 聲明 文章均為本人技術筆記,轉載請注明出處https://segmentfault.com/u/yzwall 進程&線程基本概念 進...
摘要:每個在同一時間只能執行一個線程在單核下的多線程其實都只是并發,不是并行,并發和并行從宏觀上來講都是同時處理多路請求的概念。在多線程下,每個線程的執行方式獲取執行代碼直到或者是虛擬機將其掛起。拿不到通行證的線程,就不允許進入執行。 進程與線程 并發與并行 進程與線程 首先要理解的是,我們的軟件都是運行在操作系統之上,操作系統再控制硬件,比如 處理器、內存、IO設備等。操作系統為了向上...
閱讀 1719·2021-11-22 15:33
閱讀 2094·2021-10-08 10:04
閱讀 3545·2021-08-27 13:12
閱讀 3423·2019-08-30 13:06
閱讀 1470·2019-08-29 16:43
閱讀 1395·2019-08-29 16:40
閱讀 788·2019-08-29 16:15
閱讀 2748·2019-08-29 14:13