日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

計(jì)算機(jī)操作系統(tǒng)知識(shí)點(diǎn)總結(jié)(相當(dāng)?shù)轿唬。。?/span>

 ZmlZwh 2023-03-18 發(fā)布于甘肅

一、操作系統(tǒng)概述

1.1 操作系統(tǒng)的定義與目標(biāo)

定義:操作系統(tǒng)是控制管理計(jì)算機(jī)系統(tǒng)的硬軟件,分配調(diào)度資源的系統(tǒng)軟件。

目標(biāo):方便性,有效性(提高系統(tǒng)資源的利用率、提高系統(tǒng)的吞吐量),可擴(kuò)充性,開(kāi)放性。

1.2 操作系統(tǒng)的基本功能

  1. 統(tǒng)一管理計(jì)算機(jī)資源:處理器資源,IO設(shè)備資源,存儲(chǔ)器資源,文件資源;

  2. 實(shí)現(xiàn)了對(duì)計(jì)算機(jī)資源的抽象:IO設(shè)備管理軟件提供讀寫(xiě)接口,文件管理軟件提供操作文件接;

  3. 提供了用戶與計(jì)算機(jī)之間的接口:GUI(圖形用戶界面),命令形式,系統(tǒng)調(diào)用形式。

1.3 操作系統(tǒng)的特征

最基本的特征,互為存在條件:并發(fā),共享;

(1)并行:指兩個(gè)或多個(gè)事件可以在同一個(gè)時(shí)刻發(fā)生,多核CPU可以實(shí)現(xiàn)并行,一個(gè)cpu同一時(shí)刻只有一個(gè)程序在運(yùn)行;

(2)并發(fā):指兩個(gè)或多個(gè)事件可以在同一個(gè)時(shí)間間隔發(fā)生,用戶看起來(lái)是每個(gè)程序都在運(yùn)行,實(shí)際上是每個(gè)程序都交替執(zhí)行。

圖片

(3)共享性:操作系統(tǒng)的中資源可供多個(gè)并發(fā)的程序共同使用,這種形式稱之為資源共享

  • 互斥共享:當(dāng)資源被程序占用時(shí),其它想使用的程序只能等待。

  • 同時(shí)訪問(wèn):某種資源并發(fā)的被多個(gè)程序訪問(wèn)。

虛擬和異步特性前提是具有并發(fā)性。

(4)虛擬性:表現(xiàn)為把一個(gè)物理實(shí)體轉(zhuǎn)變?yōu)槿舾蓚€(gè)邏輯實(shí)體。

  • 時(shí)分復(fù)用技術(shù):資源在時(shí)間上進(jìn)行復(fù)用,不同程序并發(fā)使用,多道程序分時(shí)使用計(jì)算機(jī)的硬件資源,提高資源的利用率。

  • 空分復(fù)用技術(shù):用來(lái)實(shí)現(xiàn)虛擬磁盤(pán)(物理磁盤(pán)虛擬為邏輯磁盤(pán),電腦上的C盤(pán)、D盤(pán)等)、虛擬內(nèi)存(在邏輯上擴(kuò)大程序的存儲(chǔ)容量)等,提高資源的利用率,提高編程效率。

(5)異步性:在多道程序環(huán)境下,允許多個(gè)進(jìn)程并發(fā)執(zhí)行,但由于資源等因素的限制,使進(jìn)程的執(zhí)行以“停停走走”的方式運(yùn)行,而且每個(gè)進(jìn)程執(zhí)行的情況(運(yùn)行、暫停、速度、完成)也是未知的

1.4 操作系統(tǒng)的中斷處理

中斷機(jī)制的作用:為了在多道批處理系統(tǒng)中讓用戶進(jìn)行交互;

中斷產(chǎn)生

  • 發(fā)生中斷時(shí),CPU立馬切換到管態(tài),開(kāi)展管理工作;(管態(tài)又叫特權(quán)態(tài),系統(tǒng)態(tài)或核心態(tài),是操作系統(tǒng)管理的程序執(zhí)行時(shí),機(jī)器所處的狀態(tài)。)

  • 發(fā)生中斷后,當(dāng)前運(yùn)行的進(jìn)程回暫停運(yùn)行,由操作系統(tǒng)內(nèi)核對(duì)中斷進(jìn)行處理;

  • 對(duì)于不同的中斷信號(hào),會(huì)進(jìn)行不同的處理。

中斷的分類

  1. 內(nèi)中斷(也叫“異?!?、“例外”、“陷入”)------- 信號(hào)來(lái)源:CPU內(nèi)部,與當(dāng)前執(zhí)行指令有關(guān);

  2. 外中斷(中斷)----------信號(hào)來(lái)源:CPU外部,與當(dāng)前執(zhí)行指令無(wú)關(guān)。

外中斷的處理過(guò)程:

  1. 每執(zhí)行完一個(gè)指令后,CPU都需要檢查當(dāng)前是否有外部中斷 信號(hào);

  2. 如果檢查到外部中斷信號(hào),則需要保護(hù)被中斷進(jìn)程的CPU環(huán)境(如程序狀態(tài)字PSW,程序計(jì)數(shù)器PC、各種通用寄存器)把他們存儲(chǔ)在PCB(進(jìn)程控制塊中);

  3. 根據(jù)中斷信號(hào)類型轉(zhuǎn)入相應(yīng)的中斷處理程序;

  4. 恢復(fù)原進(jìn)程的CPU環(huán)境并退出中斷,返回原進(jìn)程繼續(xù)執(zhí)行。

二、進(jìn)程管理

2.1 進(jìn)程管理之進(jìn)程實(shí)體

為什么需要進(jìn)程

  1. 進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位;

  2. 進(jìn)程作為程序獨(dú)立運(yùn)行的載體保障程序正常執(zhí)行;

  3. 進(jìn)程的存在使得操作系統(tǒng)資源的利用率大幅提升。

進(jìn)程控制塊(PCB):用于描述和控制進(jìn)程運(yùn)行的通用數(shù)據(jù)結(jié)構(gòu),記錄進(jìn)程當(dāng)前狀態(tài)和控制進(jìn)程運(yùn)行的全部信息,是進(jìn)程存在的唯一標(biāo)識(shí)。

進(jìn)程(Process)與線程(Thread)

  • 線程:操作系統(tǒng)進(jìn)行**運(yùn)行調(diào)度的最小單位**。

  • 進(jìn)程:系統(tǒng)進(jìn)行**資源分配和調(diào)度的基本單位**。

區(qū)別與聯(lián)系

  1. 一個(gè)進(jìn)程可以有一個(gè)或多個(gè)線程

  2. 線程包含在進(jìn)程之中,是進(jìn)程中實(shí)際運(yùn)行工作的單位

  3. 進(jìn)程的線程共享進(jìn)程資源;

  4. 一個(gè)進(jìn)程可以并發(fā)多個(gè)線程,每個(gè)線程執(zhí)行不同的任務(wù)

圖片

2.2 進(jìn)程管理之五狀態(tài)模型

就緒狀態(tài):其它資源(進(jìn)程控制塊、內(nèi)存、??臻g、堆空間等)都準(zhǔn)備好、只差CPU的狀態(tài)。

執(zhí)行狀態(tài):進(jìn)程獲得CPU,其程序正在執(zhí)行。

阻塞狀態(tài):進(jìn)程因某種原因放棄CPU的狀態(tài),阻塞進(jìn)程以隊(duì)列的形式放置。

創(chuàng)建狀態(tài):創(chuàng)建進(jìn)程時(shí)擁有PCB但其它資源尚未就緒。

終止?fàn)顟B(tài):進(jìn)程結(jié)束由系統(tǒng)清理或者歸還PCB的狀態(tài)。

圖片

2.3 進(jìn)程管理之進(jìn)程同步

生產(chǎn)者-消費(fèi)者問(wèn)題:有一群生產(chǎn)者進(jìn)程在生產(chǎn)產(chǎn)品,并將這些產(chǎn)品提供給消費(fèi)者進(jìn)程進(jìn)行消費(fèi),生產(chǎn)者進(jìn)程和消費(fèi)者進(jìn)程可以并發(fā)執(zhí)行,在兩者之間設(shè)置了一個(gè)具有n個(gè)緩沖區(qū)的緩沖池,生產(chǎn)者進(jìn)程需要將所生產(chǎn)的產(chǎn)品放到緩沖區(qū)中(+1操作),消費(fèi)者進(jìn)程可以從緩沖區(qū)取走產(chǎn)品消費(fèi)(-1操作)。

圖片

圖片

產(chǎn)生問(wèn)題:當(dāng)兩者并發(fā)執(zhí)行時(shí)可能出差錯(cuò),導(dǎo)致預(yù)期的結(jié)果與真實(shí)的結(jié)果不相符:當(dāng)執(zhí)行生產(chǎn)者+1和消費(fèi)者-1操作之后,緩沖區(qū)的值從10變?yōu)榱?1

圖片

哲學(xué)家進(jìn)餐問(wèn)題:有5個(gè)哲學(xué)家,他們的生活方式是交替的思考和進(jìn)餐,哲學(xué)家們共同使用一張圓桌,分別坐在5張椅子上,圓桌上有5只碗和5只筷子。平時(shí)哲學(xué)家們只進(jìn)行思考,饑餓時(shí)則試圖取靠近他們的左右兩只筷子,只有兩只筷子都被拿到的時(shí)候才能進(jìn)餐,否則等待,進(jìn)餐完畢后,放下左右筷子進(jìn)行思考。

圖片

這會(huì)導(dǎo)致以下的問(wèn)題,筷子就相當(dāng)于臨界資源:

臨界資源指的是一些雖作為共享資源卻又無(wú)法同時(shí)被多個(gè)線程共同訪問(wèn)的共享資源。當(dāng)有進(jìn)程在使用臨界資源時(shí),其他進(jìn)程必須依據(jù)操作系統(tǒng)的同步機(jī)制等待占用進(jìn)程釋放該共享資源才可重新競(jìng)爭(zhēng)使用共享資源。

圖片

進(jìn)程同步的作用:對(duì)競(jìng)爭(zhēng)資源在多進(jìn)程間進(jìn)行使用次序的協(xié)調(diào),使得并發(fā)執(zhí)行的多個(gè)進(jìn)程之間可以有效使用資源和相互合作。

進(jìn)程間同步的四原則

  1. 空閑讓進(jìn):資源無(wú)占用,允許使用;

  2. 忙則等待:資源被占用,請(qǐng)求進(jìn)程等待;

  3. 有限等待:保證有限等待時(shí)間能夠使用資源;

  4. 讓權(quán)等待:等待時(shí),進(jìn)程需要讓出CPU。

2.3.1進(jìn)程同步的方法(重要)

圖片

1.使用fork系統(tǒng)調(diào)用創(chuàng)建進(jìn)程:使用fork系統(tǒng)調(diào)用無(wú)參數(shù),fork會(huì)返回兩次,分別返回子進(jìn)程id和0,返回子進(jìn)程id的是父進(jìn)程,返回0的是子進(jìn)程。

圖片

  • fork系統(tǒng)調(diào)用是用于創(chuàng)建進(jìn)程的;

  • fork創(chuàng)建的進(jìn)程初始化狀態(tài)與父進(jìn)程一樣;

  • 系統(tǒng)會(huì)為fork的進(jìn)程分配新的資源

2.共享內(nèi)存:在某種程度上,多進(jìn)程是共同使用物理內(nèi)存的,但是由于操作系統(tǒng)的進(jìn)程管理,進(jìn)程間的內(nèi)存空間是獨(dú)立的,因此進(jìn)程默認(rèn)是不能訪問(wèn)進(jìn)程空間之外的內(nèi)存空間的。

  • 共享存儲(chǔ)允許不相關(guān)的進(jìn)程訪問(wèn)同一片物理內(nèi)存;

  • 共享內(nèi)存是兩個(gè)進(jìn)程之間共享和傳遞數(shù)據(jù)最快的方式;

  • 共享內(nèi)存未提供同步機(jī)制,需要借助其他機(jī)制管理訪問(wèn);

圖片

3.Unix域套接字

域套接字是一種高級(jí)的進(jìn)程間通信的方法,可以用于同一機(jī)器進(jìn)程間通信。

套接字(socket):為網(wǎng)絡(luò)通信中使用的術(shù)語(yǔ)。

Unix系統(tǒng)提供的域套接字提供了網(wǎng)絡(luò)套接字類似的功能,如Nfinx、uWSGI等。

服務(wù)端和客戶端分別使用Unix域套接字的過(guò)程:

圖片

2.3.2 線程同步的方法(重要)

線程同步的方法

1.互斥鎖:互斥鎖是最簡(jiǎn)單的線程同步的方法,也稱為互斥量,處于兩態(tài)之一的變量:解鎖和加鎖,兩個(gè)狀態(tài)可以保證資源訪問(wèn)的串行。原子性:指一系列操作不可被中斷的特性,要么全部執(zhí)行完成,要么全部沒(méi)有執(zhí)行。

圖片

2.自旋鎖:自旋鎖是一種多線程同步的變量,使用自旋鎖的線程會(huì)反復(fù)檢查鎖變量是否可用,自旋鎖不會(huì)讓出CPU,是一種忙等待狀態(tài),即死循環(huán)等待鎖被釋放,自旋鎖的效率遠(yuǎn)高于互斥鎖。特點(diǎn):避免了進(jìn)程或者線程上下文切換的開(kāi)銷,但是不適合在單核CPU使用。

3.讀寫(xiě)鎖:是一種特殊的自旋鎖,允許多個(gè)讀操作同時(shí)訪問(wèn)資源以提高讀性能,但是對(duì)寫(xiě)操作是互斥的,即**對(duì)多讀少寫(xiě)的操作效率提升**很顯著。

4.條件變量:是一種相對(duì)比較復(fù)雜的線程同步方法,條件變量允許線程睡眠,直到滿足某種條件,當(dāng)**滿足條件時(shí),可以給該線程信號(hào)通知喚醒**。

2.3.3 線程同步方法對(duì)比(重要)

圖片

圖片

圖片

2.4 Linux的進(jìn)程管理

進(jìn)程的類型

  1. 前臺(tái)進(jìn)程:具有終端,可以和用戶交互;

  2. 后臺(tái)進(jìn)程:沒(méi)有占用終端,基本不和用戶交互,優(yōu)先級(jí)比前臺(tái)進(jìn)程低(將需要執(zhí)行的命令以“&”符號(hào)結(jié)束);

  3. 守護(hù)進(jìn)程:特殊的后臺(tái)進(jìn)程,在系統(tǒng)引導(dǎo)時(shí)啟動(dòng),一直運(yùn)行直到系統(tǒng)關(guān)閉(進(jìn)程名字以“d”結(jié)尾的一般都是守護(hù)進(jìn)程),如crond、sshd、httpd、mysqld…

進(jìn)程的標(biāo)記

  1. 進(jìn)程ID:非負(fù)整數(shù),進(jìn)程的唯一標(biāo)記,每個(gè)進(jìn)程擁有不同的ID;

  2. 進(jìn)程的狀態(tài)標(biāo)記:R表示進(jìn)程處于運(yùn)行狀態(tài),S表示進(jìn)程處于睡眠狀態(tài)…

圖片

操作Linux進(jìn)程的相關(guān)命令

  1. ps命令:列出當(dāng)前的進(jìn)程,結(jié)合-aux可以打印進(jìn)程的詳細(xì)信息(ps -aux);

  2. top命令:查看所有進(jìn)程的狀態(tài);

  3. kill命令:給進(jìn)程發(fā)送信號(hào)。

三、作業(yè)管理

3.1 作業(yè)管理之進(jìn)程調(diào)度

定義:指計(jì)算機(jī)通過(guò)決策決定哪個(gè)就緒進(jìn)程可以獲得CPU使用權(quán)。

什么時(shí)候需要進(jìn)程調(diào)度?

  1. 主動(dòng)放棄:進(jìn)程正常終止;運(yùn)行過(guò)程中發(fā)生異常而終止;主動(dòng)阻塞(如等待I/O);

  2. 被動(dòng)放棄:分給進(jìn)程的時(shí)間片用完;有更高優(yōu)先級(jí)的進(jìn)程進(jìn)入就緒隊(duì)列;有更緊急的事情需要處理(如I/O中斷);

進(jìn)程調(diào)度方式

非搶占式調(diào)度:只能由當(dāng)前運(yùn)行的進(jìn)程主動(dòng)放棄CPU;

  • 處理器一旦分配給某個(gè)進(jìn)程,就讓該進(jìn)程一直使用下去;

  • 調(diào)度程序不以任何原因搶占正在被使用的處理器;

  • 調(diào)度程序不以任何原因搶占正在被使用的處理器;

搶占式調(diào)度:可由操作系統(tǒng)剝奪當(dāng)前進(jìn)程的CPU使用權(quán)。

  • 允許調(diào)度程序以一定的策略暫停當(dāng)前運(yùn)行的進(jìn)程;

  • 保存好舊進(jìn)程的上下文信息,分配處理器給新進(jìn)程;

圖片

進(jìn)程調(diào)度的三大機(jī)制

就緒隊(duì)列的排隊(duì)機(jī)制:為了提高進(jìn)程調(diào)度的效率,將就緒進(jìn)程按照一定的方式排成隊(duì)列,以便調(diào)度程序可以最快找到就緒進(jìn)程。

圖片

選擇運(yùn)行進(jìn)程的委派機(jī)制:調(diào)度程序以一定的策略,選擇就緒進(jìn)程,將CPU資源分配給它。

新老進(jìn)程的上下文切換機(jī)制:保存當(dāng)前進(jìn)程的上下文信息,裝入被委派執(zhí)行進(jìn)程的運(yùn)行上下文。

圖片

進(jìn)程調(diào)度算法:

  1. 先來(lái)先服務(wù)算法:按照在就緒隊(duì)列中的先后順序執(zhí)行。

  2. 短進(jìn)程優(yōu)先調(diào)度算法:優(yōu)先選擇就緒隊(duì)列中估計(jì)運(yùn)行時(shí)間最短的進(jìn)程,不利于長(zhǎng)作業(yè)進(jìn)程的執(zhí)行。

  3. 高優(yōu)先權(quán)優(yōu)先調(diào)度算法:進(jìn)程附帶優(yōu)先權(quán),優(yōu)先選擇權(quán)重高的進(jìn)程,可以使得緊迫的任務(wù)優(yōu)先處理。

  4. 時(shí)間片輪轉(zhuǎn)調(diào)度算法:按照FIFO的原則排列就緒進(jìn)程,每次從隊(duì)列頭部取出待執(zhí)行進(jìn)程,分配一個(gè)時(shí)間片執(zhí)行,是相對(duì)公平的調(diào)度算法,但是不能保證就是響應(yīng)用戶。

3.2 作業(yè)管理之死鎖

3.2.1 進(jìn)程死鎖、饑餓、死循環(huán)的區(qū)別:

死鎖:兩個(gè)或兩個(gè)以上的進(jìn)程在執(zhí)行過(guò)程中,由于競(jìng)爭(zhēng)資源或者由于彼此通信而造成的一種阻塞的現(xiàn)象,若無(wú)外力作用,它們都將無(wú)法推進(jìn)下去。永遠(yuǎn)在互相等待的進(jìn)程稱為死鎖進(jìn)程。

饑餓:由于長(zhǎng)期得不到資源導(dǎo)致進(jìn)程無(wú)法推進(jìn);

死循環(huán):代碼邏輯BUG。

死鎖的產(chǎn)生:競(jìng)爭(zhēng)資源(共享資源數(shù)量不滿足各進(jìn)程需求)、進(jìn)程調(diào)度順序不當(dāng),當(dāng)調(diào)度順序?yàn)锳->B->C->D時(shí)會(huì)產(chǎn)生死鎖,但改為A->D->B->C則不會(huì)產(chǎn)生。

圖片

死鎖的四個(gè)必要條件:

  1. 互斥條件:必須互斥使用資源才會(huì)產(chǎn)生死鎖;

  2. 請(qǐng)求保持條件:進(jìn)程至少保持一個(gè)資源,又提出新的資源請(qǐng)求,新資源被占用,請(qǐng)求被阻塞,被阻塞的進(jìn)程不釋放自己保持的資源;

  3. 不可剝奪條件:進(jìn)程獲得的資源在未完成使用前不能被剝奪(包括OS),只能由進(jìn)程自身釋放;

  4. 環(huán)路等待條件:發(fā)生死鎖時(shí),必然存在進(jìn)程-資源環(huán)形鏈,環(huán)路等待不一定造成死鎖,但是死鎖一定有循環(huán)等待。

死鎖的處理策略:

一.預(yù)防死鎖的方法:破壞四個(gè)必要條件的中一個(gè)或多個(gè)。

  1. 破壞互斥條件:將臨界資源改造成共享資源(Spooling池化技術(shù));(可行性不高,很多時(shí)候無(wú)法破壞互斥條件)

  2. 破壞請(qǐng)求保持條件:系統(tǒng)規(guī)定進(jìn)程運(yùn)行之前,一次性申請(qǐng)所有需要的資源;(資源利用率低,可能導(dǎo)致別的線程饑餓)

  3. 破壞不可剝奪條件:當(dāng)一個(gè)進(jìn)程請(qǐng)求新的資源得不到滿足時(shí),必須釋放占有的資源;(實(shí)現(xiàn)復(fù)雜,剝奪資源可能導(dǎo)致部分工作失效,反復(fù)申請(qǐng)和釋放造成額外的系統(tǒng)開(kāi)銷)

  4. 破壞環(huán)路等待條件:可用資源線性排序,申請(qǐng)必須按照需要遞增申請(qǐng);(進(jìn)程實(shí)際使用資源順序和編號(hào)順序不同,會(huì)導(dǎo)致資源浪費(fèi))

二.銀行家算法:檢查當(dāng)前資源剩余是否可以滿足某個(gè)進(jìn)程的最大需求;如果可以,就把該進(jìn)程加入安全序列,等待進(jìn)程允許完成,回收所有資源;重復(fù)1,2,直到當(dāng)前沒(méi)有線程等待資源;

三.死鎖的檢測(cè)和解除:死鎖檢測(cè)算法,資源剝奪法,撤銷進(jìn)程法(終止進(jìn)程法),進(jìn)程回退法;

四、存儲(chǔ)管理

存儲(chǔ)管理為了確保計(jì)算機(jī)有足夠的內(nèi)存處理數(shù)據(jù);確保程序可以從可用內(nèi)存中獲取一部分內(nèi)存使用;確保程序可以歸還使用后的內(nèi)存以供其他程序使用。

4.1 存儲(chǔ)管理之內(nèi)存分配與回收

內(nèi)存分配的過(guò)程:?jiǎn)我贿B續(xù)分配(已經(jīng)過(guò)時(shí))、固定分區(qū)分配、動(dòng)態(tài)分區(qū)分配(根據(jù)實(shí)際需要,動(dòng)態(tài)的分配內(nèi)存)。 動(dòng)態(tài)分區(qū)分配算法

  1. 首次適應(yīng)算法:分配內(nèi)存時(shí),從開(kāi)始順序查找適合內(nèi)存區(qū),若無(wú)合適內(nèi)存區(qū),則分配失敗,每次從頭部開(kāi)始,使得頭部地址空間不斷被劃分;

  2. 最佳適應(yīng)算法:要求空閑區(qū)鏈表按照容量大小排序,遍歷以找到最佳適合的空閑區(qū)(會(huì)留下越來(lái)越多的內(nèi)部碎片)。

  3. 快速適應(yīng)算法:要求有多個(gè)空閑區(qū)鏈表,每個(gè)空閑區(qū)鏈表存儲(chǔ)一種容量的空閑區(qū)。

內(nèi)存回收的過(guò)程:

  1. 回收區(qū)在空閑區(qū)下方:不需要新建空閑鏈表節(jié)點(diǎn);只需要把空閑區(qū)1的容量增大即可;

  2. 回收區(qū)在空閑區(qū)上方:將回收區(qū)與空閑區(qū)合并;新的空閑區(qū)使用回收區(qū)的地址;

  3. 回收區(qū)在空閑區(qū)中間方:將空閑區(qū)1、空閑區(qū)2和回收區(qū)合并;新的空閑區(qū)使用空閑區(qū)1的地址;

  4. 僅僅剩余回收區(qū):為回收區(qū)創(chuàng)建新的空閑節(jié)點(diǎn);插入到相應(yīng)的空閑區(qū)鏈表中去;

4.2 存儲(chǔ)管理之段頁(yè)式存儲(chǔ)管理

頁(yè)式存儲(chǔ)管理:將進(jìn)程邏輯空間等分成若干大小的頁(yè)面,相應(yīng)的把物理內(nèi)存空間分成與頁(yè)面大小的物理塊,以頁(yè)面為單位把進(jìn)程空間裝進(jìn)物理內(nèi)存中分散的物理塊。

頁(yè)面大小應(yīng)該適中,過(guò)大難以分配,過(guò)小內(nèi)存碎片過(guò)多;頁(yè)面大小通常是512B~8K;

現(xiàn)代計(jì)算機(jī)系統(tǒng)中,可以支持非常大的邏輯地址空間(232~264),具有32位邏輯地址空間的分頁(yè)系統(tǒng),規(guī)定頁(yè)面大小為4KB,則在每個(gè)進(jìn)程頁(yè)表中的頁(yè)表項(xiàng)可達(dá)1M(2個(gè)20)個(gè),如果每個(gè)頁(yè)表項(xiàng)占用1Byte,故每個(gè)進(jìn)程僅僅頁(yè)表就要占用1MB的內(nèi)存空間。

圖片

段式存儲(chǔ)管理:將進(jìn)程邏輯空間分成若干段(不等分),段的長(zhǎng)度由連續(xù)邏輯的長(zhǎng)度決定。

頁(yè)式和者段式存儲(chǔ)管理相比

  1. 段式存儲(chǔ)和頁(yè)式存儲(chǔ)都離散地管理了進(jìn)程的邏輯空間;

  2. 頁(yè)是物理單位,段是邏輯單位;

  3. 分頁(yè)是為了合理利用空間,分段是滿足用戶要求頁(yè)大小由硬件固定,段長(zhǎng)度可動(dòng)態(tài)變化

  4. 頁(yè)表信息是一維的,段表信息是二維的

段頁(yè)式存儲(chǔ)管理:現(xiàn)將邏輯空間按照段式管理分成若干段,再將內(nèi)存空間按照頁(yè)式管理分成若干頁(yè),分頁(yè)可以有效提高內(nèi)存利用率,分段可以更好的滿足用戶需求。

圖片

4.3 存儲(chǔ)管理之虛擬內(nèi)存

虛擬內(nèi)存概述:是操作系統(tǒng)內(nèi)存管理的關(guān)鍵技術(shù),使得多道程序運(yùn)行和大程序運(yùn)行成為現(xiàn)實(shí),把程序使用內(nèi)存劃分,將部分暫時(shí)不使用的內(nèi)存放置在輔存,實(shí)際是對(duì)物理內(nèi)存的擴(kuò)充。

局部性原理:指CPU訪問(wèn)存儲(chǔ)器時(shí),無(wú)論是存取指令還是存取數(shù)據(jù),所訪問(wèn)的存儲(chǔ)單元都趨于聚集在一個(gè)較小的連續(xù)區(qū)域中。

虛擬內(nèi)存的置換算法:先進(jìn)先出(FIFO)、最不經(jīng)常使用(LFU)、最近最少使用(LRU)

虛擬內(nèi)存的特征

  • 多次性:無(wú)需再作業(yè)運(yùn)行時(shí)一次性全部裝入內(nèi)存,而是允許被分成多次調(diào)入內(nèi)存;

  • 對(duì)換性:無(wú)需在作業(yè)運(yùn)行時(shí)一直常駐內(nèi)存,而是允許在作業(yè)運(yùn)行過(guò)程中,將作業(yè)換入、換出;

  • 虛擬性:從邏輯上擴(kuò)充了內(nèi)存的容量,使用戶看到的內(nèi)存用來(lái),遠(yuǎn)大于實(shí)際的容量;

4.4 Linux的存儲(chǔ)管理

Buddy內(nèi)存管理算法:經(jīng)典的內(nèi)存管理算法,為解決內(nèi)存外碎片的問(wèn)題,算法基于計(jì)算機(jī)處理二進(jìn)制的優(yōu)勢(shì)具有極高的效率。

Linux交換空間:交換空間(Swap)是磁盤(pán)的一個(gè)分區(qū),Linux內(nèi)存滿時(shí),會(huì)把一些內(nèi)存交換至Swap空間,Swap空間是初始化系統(tǒng)時(shí)配置的。

Swap空間與虛擬內(nèi)存的對(duì)比:

圖片

五、文件管理

5.1 操作系統(tǒng)的文件管理

文件的邏輯結(jié)構(gòu)

  • 邏輯結(jié)構(gòu)的文件類型:有結(jié)構(gòu)文件(文本文件,文檔,媒體文件)、無(wú)結(jié)構(gòu)文件(二進(jìn)制文件、鏈接庫(kù))。

  • 順序文件:按順序放在存儲(chǔ)介質(zhì)中的文件,在邏輯文件當(dāng)中存儲(chǔ)效率最高,但不適合存儲(chǔ)可變長(zhǎng)文件。

  • 索引文件:為解決可變長(zhǎng)文件存儲(chǔ)而發(fā)明,需要配合索引表存儲(chǔ)。

輔存的存儲(chǔ)空間分配

  • 輔存的分配方式:連續(xù)分配(讀取文件容易,速度快)、鏈接分配(隱式鏈接和顯式鏈接)、索引分配

  • 輔存的存儲(chǔ)空間管理:空閑表、空閑鏈表、位示圖。

目錄樹(shù):使得任何文件或目錄都有唯一的路徑。

圖片

Linux文件的基本操作:參考鏈接

圖片

圖片

圖片

Linux的文件系統(tǒng):FAT、NTFS(對(duì)FAT進(jìn)行改進(jìn))、EXT2/3/4(擴(kuò)展文件系統(tǒng),Linux的文件系統(tǒng))

六、設(shè)備管理

I/O設(shè)備的基本概念:將數(shù)據(jù)輸入輸出計(jì)算機(jī)的外部設(shè)備;

廣義的IO設(shè)備

  • 按照使用特性分類:存儲(chǔ)設(shè)備(內(nèi)存、磁盤(pán)、U盤(pán))和交互IO設(shè)備(鍵盤(pán)、顯示器、鼠標(biāo));

  • 按照信息交換分類:塊設(shè)備(磁盤(pán)、SD卡)和字符設(shè)備(打印機(jī)、shell終端);

  • 按照設(shè)備共享屬性分類:獨(dú)占設(shè)備,共享設(shè)備,虛擬設(shè)備;

  • 按照傳輸速率分類:低速設(shè)備,高速設(shè)備;

IO設(shè)備的緩沖區(qū):減少CPU處理IO請(qǐng)求的頻率,提高CPU與IO設(shè)備之間的并行性。

SPOOLing技術(shù):虛擬設(shè)備技術(shù),把同步調(diào)用低速設(shè)備改為異步調(diào)用,在輸入、輸出之間增加了排隊(duì)轉(zhuǎn)儲(chǔ)環(huán)節(jié)(輸入井、輸出井),SPoOLing負(fù)責(zé)輸入(出)井與低速設(shè)備之間的調(diào)度,邏輯上,進(jìn)程直接與高速設(shè)備交互,減少了進(jìn)程的等待時(shí)間。

七、實(shí)現(xiàn)支持異步任務(wù)的線程池

線程池:線程池是存放多個(gè)線程的容器,CPU調(diào)度線程執(zhí)行后不會(huì)銷毀線程,將線程放回線程池重新利用。

使用線程池的原因

  1. 線程是稀缺資源 ,不應(yīng)該頻繁創(chuàng)建和銷毀;

  2. 架構(gòu)解耦,業(yè)務(wù)創(chuàng)建和業(yè)務(wù)處理解耦,更加優(yōu)雅;

  3. 線程池是使用線程的最佳實(shí)踐。

實(shí)現(xiàn)線程安全的隊(duì)列Queue

  • 隊(duì)列:用于存放多個(gè)元素,是存放各種元素的“池”。

  • 實(shí)現(xiàn)的基本功能:獲取當(dāng)前隊(duì)列元素?cái)?shù)量,往隊(duì)列放入元素,往隊(duì)列取出元素。

  • 注意:隊(duì)列可能有多個(gè)線程同時(shí)操作,因此需要保證線程安全,如下兩種情況:

圖片

實(shí)現(xiàn)基本任務(wù)對(duì)象Task

實(shí)現(xiàn)的基本功能:任務(wù)參數(shù),任務(wù)唯一標(biāo)記(UUID),任務(wù)具體的執(zhí)行邏輯

實(shí)現(xiàn)任務(wù)處理線程ProcessThread:任務(wù)處理線程需要不斷地從任務(wù)隊(duì)列里取任務(wù)執(zhí)行,任務(wù)處理線程需要有一個(gè)標(biāo)記,標(biāo)記線程什么時(shí)候應(yīng)該停止。

實(shí)現(xiàn)的基本功能:基本屬性(任務(wù)隊(duì)列、標(biāo)記),線程執(zhí)行的邏輯(run),線程停止(stop)。

實(shí)現(xiàn)任務(wù)處理線程池Pool:存放多個(gè)任務(wù)處理線程,負(fù)責(zé)多個(gè)線程的啟停,管理向線程池的提交任務(wù),下發(fā)給線程去執(zhí)行。

實(shí)現(xiàn)的基本過(guò)程:基本屬性,提交任務(wù)(put,batch_put),線程啟停(start,join),線程池大?。╯ize)。

實(shí)現(xiàn)異步任務(wù)處理AsyncTask:給任務(wù)添加一個(gè)標(biāo)記,任務(wù)完成后,則標(biāo)記為完成;任務(wù)完成時(shí)可直接獲取任務(wù)運(yùn)行結(jié)果;任務(wù)未完成時(shí),獲取任務(wù)結(jié)果,會(huì)阻塞獲取線程。

主要實(shí)現(xiàn)的兩個(gè)函數(shù):設(shè)置運(yùn)行結(jié)果(set_result),獲取運(yùn)行結(jié)果(get_result)


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多