计算机操作系统之三:进程与线程的描述与控制
3.1 進(jìn)程的引入
3.1.1 程序的并發(fā)執(zhí)行及特點(diǎn)
為了提高計(jì)算機(jī)的利用率、處理速度和系統(tǒng)的處理能力,并行處理技術(shù)和并發(fā)程序設(shè)計(jì)技巧在計(jì)算機(jī)中得到廣泛應(yīng)用,成為現(xiàn)代操作系統(tǒng)的基本特征之一。所謂程序的并發(fā)執(zhí)行是指:若干個(gè)程序段同時(shí)在系統(tǒng)中運(yùn)行,這些程序段的執(zhí)行在時(shí)間上是重疊的,一個(gè)程序段的執(zhí)行尚未結(jié)束,另一個(gè)程序段的執(zhí)行已經(jīng)開始,及時(shí)這種重疊式很小的一部分。
3.1.2 并發(fā)執(zhí)行的特點(diǎn)
- 程序執(zhí)行的間斷性(異步性)
- 資源分配的動(dòng)態(tài)性
- 程序并發(fā)執(zhí)行的相互制約性
- 相互通信的可能性
- 同步與互斥的必要性:有合作關(guān)系的各程序不僅需要相互通信,而且還要隨時(shí)調(diào)整他們之間的相對(duì)速度,這就是同步的必要性,另外,系統(tǒng)中的許多資源必須是互斥使用的,否則會(huì)引起并發(fā)系統(tǒng)中所特有的不確定性錯(cuò)誤,這些就是互斥的必要性。
3.2 進(jìn)程的概念
3.1.1 進(jìn)程的定義
進(jìn)程是一個(gè)具有一定獨(dú)立功能的程序在一個(gè)數(shù)據(jù)集合上運(yùn)行的過程,它是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單元。3.1.2 進(jìn)程的特點(diǎn)
- 動(dòng)態(tài)性:進(jìn)程是一個(gè)動(dòng)態(tài)的概念,而程序是一個(gè)靜態(tài)的概念。程序是指令的有序集合,其本身沒有任何運(yùn)行的含義。而進(jìn)程是程序在處理機(jī)上的一次執(zhí)行過程,具有生命期,它動(dòng)態(tài)的被創(chuàng)建,并被調(diào)度執(zhí)行,執(zhí)行完成后銷往。
- 并發(fā)性。
- 獨(dú)立性。
- 制約性:主要表現(xiàn)在護(hù)持的使用資源和相關(guān)進(jìn)程之間必要的同步和通信。
- 結(jié)構(gòu)性:進(jìn)程由程序、數(shù)據(jù)集合和描述其運(yùn)行過程的數(shù)據(jù)結(jié)構(gòu)(PCB)組成。
3.1.3 進(jìn)程控制塊
在操作系統(tǒng)中,進(jìn)程包括三部分:程序,數(shù)據(jù)和進(jìn)程控制塊(PCB)。PCB是一個(gè)數(shù)據(jù)結(jié)構(gòu),用來(lái)存儲(chǔ)進(jìn)程以及與其相關(guān)的信息。在實(shí)際操作系統(tǒng)中,PCB的大小和個(gè)數(shù)是一定的,系統(tǒng)會(huì)為每個(gè)進(jìn)程分配一個(gè)PCB結(jié)構(gòu),操作系統(tǒng)只有通過PCB才能感知進(jìn)程的存在,因此操作系統(tǒng)中PCB的個(gè)數(shù)就是該系統(tǒng)可最大并行的進(jìn)程數(shù)。
3.1.4 進(jìn)程控制
所謂的進(jìn)程控制,是指存在于操作系統(tǒng)代碼中的一段用于對(duì)進(jìn)程進(jìn)行調(diào)度和控制的程序段,它主要通過控制PCB來(lái)調(diào)控進(jìn)程。
前面說過,操作系統(tǒng)是分層的結(jié)構(gòu),總體上分成內(nèi)核和外殼兩部分,這樣,處理器在運(yùn)行的時(shí)候,為了避免內(nèi)核中信息被用戶程序篡改,因此處理器分成了兩個(gè)運(yùn)行狀態(tài):核心態(tài)和用戶態(tài)。其中,核心態(tài)用來(lái)運(yùn)行操作系統(tǒng)的內(nèi)核,用戶態(tài)用來(lái)運(yùn)行操作系統(tǒng)的外殼和用戶程序
3.3 進(jìn)程的狀態(tài)
具有掛起狀態(tài)的進(jìn)程狀態(tài)轉(zhuǎn)化模型如上圖所示。一些狀態(tài)的說明:
狀態(tài)轉(zhuǎn)換的說明:
3.4 線程的概念
進(jìn)程的引入可以實(shí)現(xiàn)并行計(jì)算,線程的引入可以進(jìn)一步提高系統(tǒng)的并發(fā)性。一個(gè)進(jìn)程可以擁有多個(gè)線程,這些線程共享同一地址空間,他不擁有系統(tǒng)資源,且只需要很少在運(yùn)行時(shí)必不可少的硬件,因此線程在創(chuàng)建,撤銷,切換等環(huán)節(jié)所需要的時(shí)空開銷比進(jìn)程要少的多。3.5 線程的狀態(tài)
線程的狀態(tài)與進(jìn)程的狀態(tài)差不多,只是沒有掛起狀態(tài),由于對(duì)于同一個(gè)進(jìn)程其所有的線程共享同一個(gè)地址,因此
如果一個(gè)進(jìn)程被換出,它所有的線程也都被換出,可以理解為進(jìn)程的狀態(tài)和線程的狀態(tài)不是一個(gè)層面上的,且進(jìn)程的狀態(tài)往往決定了他所有的線程的狀態(tài)。
3.6 線程與進(jìn)程的比較
- 調(diào)度分派。線程是可調(diào)度的工作單元,在有線程的進(jìn)程中,進(jìn)程不再成為調(diào)度的基本單位。
- 資源擁有。進(jìn)程擁有資源,線程不擁有資源,只是使用進(jìn)程的資源。
- 地址空間。不同進(jìn)程的地址空間是相互獨(dú)立的,同一進(jìn)程的各線程共享同一地址空間。
- 一個(gè)進(jìn)程可以擁有多個(gè)線程,反過來(lái)不行。
- 通信關(guān)系。進(jìn)程間的通信需要使用系統(tǒng)的通信機(jī)制,同一進(jìn)程中的各線程可以通過直接讀寫數(shù)據(jù)段(如全局變量)來(lái)進(jìn)行通信。
3.7 用戶級(jí)線程和內(nèi)核級(jí)線程
3.7.1 線程的類型
根據(jù)對(duì)線程控制方式的不同,線程可分為內(nèi)核級(jí)線程和用戶級(jí)線程。
- 內(nèi)核級(jí)線程。這類線程的控制(線程的創(chuàng)建等)依賴于內(nèi)核,內(nèi)核知道該線程。
- 用戶級(jí)線程。這類線程的控制不依賴于內(nèi)核,而是他所屬的進(jìn)程通過線程庫(kù)進(jìn)程的創(chuàng)建等控制,內(nèi)核不知道該線程。
3.7.2 線程的調(diào)度和切換速度
線程的調(diào)度方法有搶占方式和非搶占方式,其調(diào)度算法有時(shí)間片輪轉(zhuǎn)法、優(yōu)先權(quán)法等。
3.7.3 系統(tǒng)調(diào)用
當(dāng)用戶進(jìn)程調(diào)用一個(gè)系統(tǒng)調(diào)用時(shí),根絕線程的類型不同,調(diào)用的方式也不同。
- 內(nèi)核級(jí)線程在調(diào)用的時(shí)候,由于內(nèi)核知道該線程的存在,因此該線程作為基本的調(diào)度單位,該線程被阻塞,但是該進(jìn)程中的其他線程仍然可以運(yùn)行。
- 用戶級(jí)線程在調(diào)用的時(shí)候,由于內(nèi)核不知道該線程的存在,因此在調(diào)度的時(shí)候,只能看成是進(jìn)程級(jí)的調(diào)用,因此整個(gè)進(jìn)程被阻塞,去執(zhí)行系統(tǒng)調(diào)用。
總結(jié)
以上是生活随笔為你收集整理的计算机操作系统之三:进程与线程的描述与控制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一沙一世界,一叶一菩提
- 下一篇: 2.2.1 数据通信系统的模型