進(jìn)程,線程
- 進(jìn)程是具有獨(dú)立功能程序在某個(gè)數(shù)據(jù)集合上的一次執(zhí)行過程。
- 線程是進(jìn)程內(nèi)的一個(gè)執(zhí)行實(shí)體或執(zhí)行單元。
區(qū)別:
- 不同進(jìn)程的地址空間是獨(dú)立的,而同一進(jìn)程內(nèi)的線程共享同一地址空間。一個(gè)進(jìn)程的線程在另一個(gè)進(jìn)程內(nèi)是不可見的。
- 進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位。線程是進(jìn)程內(nèi)的一個(gè)執(zhí)行單元,是CPU調(diào)度和分派的基本單位。資源是分配給進(jìn)程的,線程只擁有很少資源,因而切換代價(jià)比進(jìn)程切換低。
進(jìn)程的三種狀態(tài)之間的轉(zhuǎn)換

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