日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

进程知识点,只需这一篇

發布時間:2025/6/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 进程知识点,只需这一篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

前言

你的進程,為啥掛了?進程掛了,這個問題大家并不陌生。學完這篇,你會對進程有一定了解。后面碰到進程掛的情況,你很快能找到對應解決思路。

進程在操作系統中,是一個很重要的概念。你熟悉操作系統,能避免一些坑,寫出高質量的代碼。

windows界面設置真炫酷,不多說。下面用動畫加文字的方式,給大家講述。
?

為什么需要進程

通常程序不能并發執行,因為程序并發執行的結果,是不可再現的。為了使程序,可以并發執行,且能對其加以描述和控制,引入了進程的概念。



上面把小人比作程序,操作系統中一次只能跑一個程序,除非引入進程。
?

進程的特征和定義

進程是程序的一次執行,是系統進行資源分配調度的獨立單位。

結構特征:為了使程序能夠獨立運行,應配置一個進程控制塊PCB。進程是由程序段,相關的數據段和PCB(進程控制塊)三部分構成的。

動態性:進程是程序的一次執行,由創建而產生,由調度而執行,由撤銷而消亡,進程存在一定的生命周期。

并發性:多個進程實體,同存在于內存中,且能在一段時間內同時運行。

獨立性:進程實體,是一個能獨立運行,獨立分配資源,獨立接收調度的基本單位。

異步性:進程按自己獨立的不可預知的速度推進。

下面動畫,把小人比作進程,展示的進程的創建,銷毀,動態性,并發性,獨立性,異步性。

進程的狀態及轉換

創建:保證進程的調度,必須在創建工作完成以后,再進行。確保,對進程控制塊PCB操作的完整性。

就緒:進程已分配到除CPU外的所有必要資源。

執行:進程已獲得CPU,其指令集正在執行。

阻塞/掛起
正在執行的進程由于發生某事件導致暫時無法繼續執行。

終止:等待其他進程收集完信息后,將刪除該進程,清空PCB并返還給系統。

下面是進程狀態圖:


?

PCB進程控制塊

獨立運行基本單位的標志:創建進程時創建PCB,進程結束時回PCB,進程隨之消亡。系統是通過PCB,感知進程的存在。PCB已成為,進程存在于系統中的唯一標志。

實現間斷性運行方式:進程暫停運行時,必須保留,運行時的CPU等相關信息。進程被再次運行時,需恢復CPU等相關信息。

提供進程管理需要的信息:當進程開始運行時,根據該進程PCB中,記錄的程序和數據,在內存或外存中起始地址指針,找到相應的程序和數據。

提供進程調度需要的信息:只有處于就緒狀態的進程,才能被調度。而進程的狀態就記錄在PCB中、以及優先級、等待時間、已執行時間等其他信息。

實現與其他進程的同步與通信:進程同步機制,用于實現多進程協調運行。在PCB中,具有實現進程通信的區域或通信隊列指針等。

PCB進程控制塊中的信息:PCB中的信息大致上可分為4類,分別是:進程標識符、CPU狀態、調度信息、控制信息。

進程標識符:分外部標識符和內部標識符,外部標識符即進程名稱,可由父進程指定,通常包括字符和數字的組成。內部標識符,由操作系統提供的,具有唯一性的進程ID。

CPU狀態:主要由各種寄存器中內容組成,如通用寄存器、指令計數器(下一條指令的地址)、程序狀態(狀態信息、條件碼、執行方式、屏蔽中斷等標志)和棧指針(指向用于存放過程和系統調用參數及調用地址的系統棧的棧頂)構成。

調度信息:包含進程狀態、進程優先級、其他信息、事件(阻塞原因)。
進程狀態,是進程調度和對換時的依據,優先級高的進程,應優先獲得CPU執行。

控制進程所必須的信息,包括程序和數據的存儲地址,以便調度該進程執行時,能從PCB中找到其程序和數據,進程同步和通信機制,如消息隊列、信號量等。
?

進程的創建和終止過程

創建進程過程:向操作系統申請空白PCB及進程ID、分配運行所需的資源、初始化PCB、等待插入進程調度就緒隊列。

相關資源或從操作系統或從父進程獲得,資源需求需提前告知,操作系統或父進程好為其分配資源。

PCB至少有2種信息需要初始化
? ??1.標識信息,即將本進程ID和父進程ID填入PCB控制塊中
? ??2.狀態信息,指令計數器指向程序的入口地址、棧指針指向棧頂控制信息。

進程的終止分為:讀取進程狀態、終止進程、終止子孫進程、釋放資源、移出PCB隊列。
操作系統通過進程ID從PCB集合中檢索出該進程的PCB,從中讀出該進程的狀態。

如果該進程狀態為執行態,則終止進程的執行,并重置調度標志位真。
如果該進程擁有子孫進程,則一并將所有子孫進程終止,防止子孫進程成為僵尸進程等不可控的進程。

接著釋放資源,將資源歸還給操作系統或父進程。最后就是移出PCB隊列了,等待其他進程搜集信息。

進程阻塞和喚醒的事件
??? 1.請求系統服務而得不到滿足時,如問系統請求打印。

??? 2.啟動的操作需同步時:如該操作和請求該操作的進程需同步運行。

??? 3.新數據尚未到達:如進程A寫,進程B讀,則A未寫,完B不能讀。

??? 4.無新工作可做。

進程的掛起和激活
???? 1.進程的掛起過程,由進程自己,或其父進程suspend原語完成。將該進程PCB移到指定區域,注意狀態的改變,有可能要重新調度。

? ? ?2.進程的激活過程,激活active原語激活進程。激活原語將進程從外存調入內存,檢查該進程的現行狀態并進行相應操作。
?

進程同步

臨界資源
一旦有對資源的共享,就必然涉及競爭限制。
臨界資源用來表示一種,公共資源或者說是共享數據,可以被多個線程使用。
但是每一次,只能有一個線程使用它。一旦臨界資源被占用,其他線程,要想使用這個資源,就必須等待。

進程同步的主要任務是,對多個相關進程,在執行次序上進行協調,以使并發執行的諸進程之間,能有效地共享資源和相互合作,從而使程序的執行,具有可再現性。

臨界區
有了臨界資源的概念,就很容易理解臨界區的概念。在程序中,所有的操作,都是通過代碼執行的,訪問臨界資源的那段代碼就是臨界區

處理競爭或者合作依賴導致的制約
空閑讓進:對于臨界資源,如果空閑沒有被使用,誰來了之后都可以使用

忙則等待:如果臨界資源正在被使用,那么其他后來者就需要進行等待。

有限等待:要求訪問臨界資源的進程,應保證有限時間內,能進入自己的臨界區,自己不能傻傻的等

讓權等待:如果無法進入自己的臨界區時,應立即釋放處理機,而不能占著CPU死等,你死等就算了,別人卻也不能用了。
?


鎖就是對資源施加控制,鎖指的是一種控制權。
當進入臨界區時,我們稱之為獲得鎖,獲得鎖之后就可以訪問臨界資源。

其他線程想要進入臨界區,也需要先獲得鎖。
當前線程結束后,將會釋放鎖,別的線程就可以獲取這個資源的鎖。

死鎖
鎖表示一種控制權,對臨界資源的訪問權限。

如果臨界資源不止一個,就可能出現:需要先后訪問兩種臨界資源A和B,thread1獲得了A線程的鎖之后,等待獲得B的鎖,但是thread2獲得了資源B的鎖,在等待A資源的鎖,這就出現了互相等待的情況。

解決方案
AND型信號量機制就是用于解決這種多共享資源下的同步問題的。
將進程在整個運行過程中,需要的所有資源,一次性全部地分配給進程,待進程使用完后再一起釋放。

只要尚有一個資源未能分配給進程,其它所有可能為之分配的資源,也不分配給它。
也就是對,若干個臨界資源的分配,采取原子操作方式:要么把它所請求的資源全部分配到進程,要么一個也不分配。

下面動畫展示,兩個小人,都要使用資源1和資源2,才能達到對面。
左邊小人戰友資源1,右邊小人占有資源2。他們占有當前資源,再去獲取對方的資源時,就會產生死鎖的情況。


?

進程間通信



如果兩個進程,想要知道對方在干嘛,或者進行協調運行,就需要進程間通信。下面介紹一下常見的進程間通信方式。

無名管道:管道是一種半雙工的通信方式。數據只能單向流動,而且只能在,具有親緣關系的進程間使用。進程間的親緣關系,通常指父子進程關系。

有名管道:有名管道也是,半雙工的通信方式,但是它允許無親緣關系進程間的通信。

消息隊列:消息隊列是有消息的鏈表,存放在內核中,并由消息隊列標識符標識。它克服了信號傳遞信息少,管道只能承載無格式字符流以及緩沖區大小受限等特點。

信號量:是一個計數器,可以用來控制多個進程對共享內存的訪問。它作為一種鎖機制,防止某個進程,正在訪問共享資源的時候,其他進程也訪問該資源,造成資源搶占。

信號:一種較復雜的通信方式,用于通知和接收進程某個事件的發生。

共享內存:是映射一段能被其他進程所訪問的內存,這段共享內存由一個進程創建,但多個進程都可以訪問。

套接字:是一種進程間通信機制,與其他通信機制不同的是,它可用于?不同機器間的進程通信。
?

絮叨

上面介紹了一些進程相關的基礎知識,希望能幫到大家。
進程,作為操作系統中的重要概念,不管在工作還是面試中,都會涉及到。

祝大家學習愉快!
?


專注后臺開發相關技術,廣度深度并存,干貨情懷同在。
微信搜索【盼盼編程】關注這個不一樣的程序員。

總結

以上是生活随笔為你收集整理的进程知识点,只需这一篇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。