進程,線程
- 進程是具有獨立功能程序在某個數據集合上的一次執行過程。
- 線程是進程內的一個執行實體或執行單元。
區別:
- 不同進程的地址空間是獨立的,而同一進程內的線程共享同一地址空間。一個進程的線程在另一個進程內是不可見的。
- 進程是系統進行資源分配和調度的一個獨立單位。線程是進程內的一個執行單元,是CPU調度和分派的基本單位。資源是分配給進程的,線程只擁有很少資源,因而切換代價比進程切換低。
進程的三種狀態之間的轉換
Paste_Image.png
進程通信方式
- 管道
- 消息隊列,消息隊列是用創建文件的方式建立的,保存的數據不會消失!!
- 信號量,Semaphore
- 共享內存
- 套接字,Socket
線程同步方式
- 臨界區
- 互斥量
- 信號量,Semaphore
- 事件,Event
Linux常用命令
基礎:date,cal,bc,man,
目錄:ls,cd,pwd,mkdir,rmdir,
文件:rm,cp,mv,
讀取文件內容:cat,less,more,head,tail,
更改文件的屬性:chgrp,chown,chmod
其中 chmod能改變文件屬性
- chmod u+rw aaa.txt 給aaa.txt添加讀寫屬性
- chmod 777 bbb 給bbb添加rwx讀寫運行三種權限
臨界區
每個進程中訪問臨界資源的那段程序稱為臨界區,每次只準許一個進程進入臨界區,進入后不允許其他進程進入。
- 如果有若干進程要求進入空閑的臨界區,一次僅允許一個進程進入;
- 任何時候,處于臨界區內的進程不可多于一個。如已有進程進入自己的臨界區,則其它所有試圖進入臨界區的進程必須等待;
- 進入臨界區的進程要在有限時間內退出,以便其它進程能及時進入自己的臨界區;
- 如果進程不能進入自己的臨界區,則應讓出CPU,避免進程出現“忙等”現象。
死鎖
在兩個或多個并發進程中,如果每個進程都占用了一定的資源但是又都等待別的進程釋放它們現在保持著的資源不能向前推進,稱這一組進程產生了死鎖。
產生死鎖的根本原因是資源分配不當和資源數量不足
必要條件:
- 互斥條件(Mutual exclusion):資源不能被共享,只能由一個進程使用。
- 請求與保持條件(Hold and wait):已經得到資源的進程可以再次申請新的資源。
- 非剝奪條件(No pre-emption):已經分配的資源不能從相應的進程中被強制地剝奪。
- 循環等待條件(Circular wait):系統中若干進程組成環路,改環路中每個進程都在等待相鄰進程正占用的資源。
死鎖的處理策略:鴕鳥策略、預防策略、避免策略、檢測與恢復策略。
頁式管理
頁式管理的基本原理是什么?
(1)進程的虛擬空間被劃分成長度相等的頁。
(2)內存空間也按頁的大小劃分成長度相等的頁面。
(3)采用請求調頁或預調技術實現內外存儲器的統一管理。
分頁和分段
頁是信息的物理單位,分頁是為實現離散分配方式,以消減內存的外零頭,提高內存的利用率;或者說,分頁僅僅是由于系統管理的需要,而不是用戶的需要。
段是信息的邏輯單位,它含有一組其意義相對完整的信息。分段的目的是為了能更好的滿足用戶的需要。頁的大小固定且由系統確定,把邏輯地址劃分為頁號和頁內地址兩部分,是由機器硬件實現的,因而一個系統只能有一種大小的頁面。
段的長度卻不固定,決定于用戶所編寫的程序,通常由編輯程序在對源程序進行編輯時,根據信息的性質來劃分。分頁的作業地址空間是維一的,即單一的線性空間,程序員只須利用一個記憶符,即可表示一地址。
分段的作業地址空間是二維的,程序員在標識一個地址時,既需給出段名,又需給出段內地址