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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

计算机操作系统之三:进程与线程的描述与控制

發(fā)布時(shí)間:2023/12/15 windows 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机操作系统之三:进程与线程的描述与控制 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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)的說明:
  • 創(chuàng)建。進(jìn)程的創(chuàng)建主要通過調(diào)用創(chuàng)建原語(yǔ)來(lái)實(shí)現(xiàn)。創(chuàng)建原語(yǔ)的主要功能是建立進(jìn)程的PCB,將調(diào)用者提供的信息添加到PCB中。
  • 終止。進(jìn)程的終止通過調(diào)用終止原語(yǔ)來(lái)實(shí)現(xiàn)。主要的功能是將當(dāng)前運(yùn)行進(jìn)程所占用的資源歸還給父進(jìn)程,從PCB總鏈中將其刪除,將PCB結(jié)構(gòu)歸還給系統(tǒng)。
  • 等待。進(jìn)程等待的事件沒有發(fā)生時(shí),處于該狀態(tài)下。
  • 進(jìn)程喚醒。當(dāng)處于等待隊(duì)列中的進(jìn)程所等待的時(shí)間發(fā)生時(shí),則由“發(fā)現(xiàn)者”進(jìn)程調(diào)用喚醒原語(yǔ),將等待該事件的進(jìn)程喚醒。喚醒主要有兩種方法:一種是由系統(tǒng)進(jìn)程喚醒,另一種是由時(shí)間發(fā)生進(jìn)程喚醒,處于等待狀態(tài)的進(jìn)程只能由其他進(jìn)程來(lái)喚醒,不可以自己?jiǎn)拘炎约骸?/span>
  • 進(jìn)程掛起。在沒有進(jìn)程掛起的情況下,如果系統(tǒng)中存在很多的進(jìn)程,那么就需要將所有的進(jìn)程都放在內(nèi)存中,這樣可能會(huì)導(dǎo)致內(nèi)存不足,使得程序運(yùn)行效率不高,因此引入了內(nèi)存掛起的概念。對(duì)于上面內(nèi)存不足的情況,有兩種方法解決,一種是增大內(nèi)存,顯然這不現(xiàn)實(shí),另一種就是使用交換技術(shù),在磁盤上設(shè)置一些虛擬內(nèi)存,用于存放一些未被執(zhí)行的進(jìn)程。

  • 狀態(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)。

  • 創(chuàng)建。當(dāng)創(chuàng)建一個(gè)新的進(jìn)程的時(shí)候,系統(tǒng)同時(shí)也為該進(jìn)程創(chuàng)建了一個(gè)線程(主線程),該線程可以創(chuàng)建其他的新的線程。
  • 就緒。
  • 運(yùn)行。
  • 阻塞。
  • 終止。
  • 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)核不知道該線程。
    線程的類型是由系統(tǒng)所確定好的,eg,windows xp系統(tǒng)使用的就是內(nèi)核級(jí)線程。

    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)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。