亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        操作系統(tǒng)中進(jìn)程與線程的教學(xué)探討

        2020-03-10 03:15:40仝瑞陽
        科學(xué)與財富 2020年32期
        關(guān)鍵詞:共享線程進(jìn)程

        仝瑞陽

        摘 要:本文闡述了進(jìn)程、線程概念,描述了進(jìn)程與線程的關(guān)系;通過我們熟悉的知識競賽場景做類比,能深入淺出地理解操作系統(tǒng)中的進(jìn)程、線程概念及執(zhí)行過程;以門鑰匙為例生動、形象地詮釋了進(jìn)程間的通訊、同步與互斥機(jī)制;闡述了進(jìn)程、線程的創(chuàng)建方法以及應(yīng)用特征。

        關(guān)鍵詞:進(jìn)程;線程;并發(fā);共享;資源

        0引言

        操作系統(tǒng)是應(yīng)用程序(用戶)與計算機(jī)硬件的中間層,其管理計算機(jī)軟硬件、為用戶提供接口。操作系統(tǒng)的核心是進(jìn)程、線程的調(diào)度執(zhí)行;為了提高CPU的執(zhí)行效率引入多進(jìn)程、多線程機(jī)制,準(zhǔn)確理解進(jìn)程、線程是掌握操作系統(tǒng)原理的關(guān)鍵。

        1進(jìn)程與線程

        進(jìn)程:是有獨(dú)立功能的程序在一個數(shù)據(jù)集合上運(yùn)行的過程,是一個被操作系統(tǒng)進(jìn)行資源分配和調(diào)度的一個獨(dú)立調(diào)度單位。由機(jī)器指令、數(shù)據(jù)、堆棧和控制等部分組成。進(jìn)程是程序執(zhí)行的過程;進(jìn)程有就緒、執(zhí)行、阻塞等幾種狀態(tài)。

        線程:是CPU調(diào)度和分派的基本單位,它可與同屬一個進(jìn)程的其他的線程共享進(jìn)程所擁有的全部資源[1]。

        進(jìn)程和線程的關(guān)系:線程是進(jìn)程的一部分,一個線程只能屬于一個進(jìn)程,一個進(jìn)程可以有多個線程,但至少有一個線程。

        進(jìn)程和線程的區(qū)別:進(jìn)程是操作系統(tǒng)資源(中央處理器、內(nèi)存、文件、網(wǎng)絡(luò)等)分配的基本單位;線程是任務(wù)調(diào)度和執(zhí)行的基本單位(占用CPU)。每個進(jìn)程都有獨(dú)立的代碼和數(shù)據(jù)空間,線程有獨(dú)立的運(yùn)行棧和程序計數(shù)器,因此進(jìn)程之間切換開銷大,線程之間切換開銷小,故線程又叫輕量級進(jìn)程。系統(tǒng)為每個進(jìn)程分配不同的內(nèi)存空間;線程除CPU外不單獨(dú)分配內(nèi)存(使用其所屬進(jìn)程的資源,線程組共享)。

        多進(jìn)程是多個進(jìn)程同時存在于內(nèi)存中形成并發(fā)執(zhí)行(不是同時執(zhí)行)。

        為理解進(jìn)程、線程,現(xiàn)舉一我們熟悉的知識競賽場景對照描述:舞臺上有n個隊(duì),每隊(duì)有m個隊(duì)員進(jìn)行搶答,搶答器系統(tǒng)對應(yīng)CPU,一個隊(duì)對應(yīng)一個進(jìn)程,一個人對應(yīng)一個線程。此時就相當(dāng)于有n個進(jìn)程,每個進(jìn)程擁有m個線程。

        一個隊(duì)占有一個搶答臺位相當(dāng)于一個進(jìn)程擁有的內(nèi)存空間,m個隊(duì)員共享。

        某隊(duì)員搶答有效進(jìn)行發(fā)言相當(dāng)于線程擁有CPU執(zhí)行。

        進(jìn)程調(diào)度:調(diào)度算法有先來先服務(wù)(FCFS)、輪轉(zhuǎn)(RR)、優(yōu)先級、多隊(duì)列、多級反饋隊(duì)列等。調(diào)度方式有搶占式、非搶占式。隊(duì)員爭搶過程相當(dāng)于非搶占式、先來先服務(wù)進(jìn)程調(diào)度方法。

        2 進(jìn)程間通信與同步

        虛擬內(nèi)存機(jī)制(程序運(yùn)行時以分頁、段方式把一部分部分調(diào)入內(nèi)存[2])為進(jìn)程管理存儲資源帶來了種種好處,但是也給進(jìn)程帶來了一些麻煩,因?yàn)槊總€進(jìn)程擁有獨(dú)立的虛擬內(nèi)存地址空間,所以對不同的進(jìn)程來說一個相同的虛擬地址以為著不同的物理地址。CPU執(zhí)行指令是采用了虛擬地址,對于一個特定的變量來說,對應(yīng)著一個特定的虛擬地址。因此兩個進(jìn)程不能通過簡單的共享變量的方式來進(jìn)行通信,只能用信號、管道等方式通信,效率比直接共享內(nèi)存方式差。

        進(jìn)程互斥與同步:多進(jìn)程并發(fā)執(zhí)行會出現(xiàn)爭用資源,若資源唯一(象獨(dú)木橋一次只許一人),就必須對資源使用進(jìn)行限制,爭用這一資源的進(jìn)程稱為是互斥關(guān)系,某段時間只能某個進(jìn)程占用資源。若某兩個或幾個進(jìn)程執(zhí)行順序先后是確定的不能改變(如生產(chǎn)和消費(fèi)必須是先生產(chǎn)再消費(fèi))稱這兩個進(jìn)程是同步關(guān)系。

        互斥、同步通過信號量機(jī)制給以保障。信號量相當(dāng)于門鎖的鑰匙,互斥相當(dāng)于只有一把鑰匙,拿到鑰匙者開鎖進(jìn)門,出來時交出鑰匙,只能一人進(jìn)門(實(shí)現(xiàn)原語操作);同步的實(shí)現(xiàn)用兩層信號量,相當(dāng)于兩道門鎖,第一道門是先后次序(生產(chǎn)先執(zhí)行,消費(fèi)者看有產(chǎn)品再執(zhí)行)的控制,第二道門實(shí)現(xiàn)互斥。

        3進(jìn)程、線程創(chuàng)建

        進(jìn)程創(chuàng)建唯一方法是調(diào)用函數(shù)fork(),該調(diào)用創(chuàng)建一個與原進(jìn)程代碼完全一樣的子進(jìn)程,原進(jìn)程稱為父進(jìn)程,新進(jìn)程稱為子進(jìn)程,父子進(jìn)程不同的是進(jìn)程標(biāo)識號(PID)以及它們的進(jìn)程控制塊(PCB)中的父子進(jìn)程標(biāo)識號記錄字段,通過下面代碼作一說明:

        If(fort()==0)

        Printf(“I am? son_process\n”);

        else

        Printf(“I am father_process\n”);

        Sleep(1);

        執(zhí)行結(jié)果是I am? son_process

        I am fathe_rprocess

        或者: I am father_process

        I am? son_proces

        從結(jié)果看if與else中的代碼都完成一次執(zhí)行,說明fort()向父進(jìn)程返回了不為0的值(即進(jìn)程的ID)而向子進(jìn)程返回了0值。

        線程創(chuàng)建:C語言利用Pthreads庫創(chuàng)建線程數(shù)據(jù)結(jié)構(gòu),Pthreads運(yùn)行在用戶空間,內(nèi)核調(diào)度實(shí)體(KSE)運(yùn)行在內(nèi)核空間;Linux內(nèi)核提供clone系統(tǒng)調(diào)用創(chuàng)建類似線程的輕量級進(jìn)程[3]。

        Java中線程的實(shí)現(xiàn):Java語言提供了java.lang.Thread類來表示線程,提供了run方法表示線程的運(yùn)行的邏輯控制流[4]。

        4結(jié)語

        構(gòu)建并發(fā)程序可以基于進(jìn)程也可基于線程,現(xiàn)代多任務(wù)操作系統(tǒng)(如WINDOWS)采用時間片輪轉(zhuǎn)調(diào)度的多線程方式,由于切換開銷比進(jìn)程小,并發(fā)執(zhí)行效率高。

        參考文獻(xiàn):

        [1]湯小丹,梁紅兵,哲鳳屏,等. 計算機(jī)操作系統(tǒng).4版. 西安:西安電子科技大學(xué)出版社, 2019 ,39-40

        [2]白中英,戴志濤.計算機(jī)組成原理.6版.北京:科學(xué)出版社,2019,104-105

        [3]邵國金等.Linux操作系統(tǒng).3版.電子工業(yè)出版社,2018,339

        [4]軟件開發(fā)技術(shù)聯(lián)盟.Java開發(fā)實(shí)戰(zhàn).清華大學(xué)出版社,2013,237-238

        (河南城建學(xué)院計算機(jī)學(xué)院? 河南平頂山? 467036)

        猜你喜歡
        共享線程進(jìn)程
        債券市場對外開放的進(jìn)程與展望
        中國外匯(2019年20期)2019-11-25 09:54:58
        淺談linux多線程協(xié)作
        掛羊頭賣狗肉的“共享”營銷
        圖書館與出版企業(yè)數(shù)字資源共享的環(huán)境因素分析
        出版廣角(2016年4期)2016-04-20 01:10:00
        社會進(jìn)程中的新聞學(xué)探尋
        我國高等教育改革進(jìn)程與反思
        Linux僵死進(jìn)程的產(chǎn)生與避免
        Linux線程實(shí)現(xiàn)技術(shù)研究
        么移動中間件線程池并發(fā)機(jī)制優(yōu)化改進(jìn)
        JAVA多線程同步解決生產(chǎn)者—消費(fèi)者問題
        波多野结衣一区| 久久精品国产亚洲av久| 99久久国产免费观看精品 | 日本在线中文字幕一区二区| 亚洲av网一区二区三区成人| 九九久久精品国产免费av| 国产人妻高清国产拍精品| 男男性恋免费视频网站| 欧性猛交ⅹxxx乱大交| 国产又爽又黄又不遮挡视频| 中文字幕一区二区三在线| 国产乱码精品一区二区三区久久 | 国产真实乱对白在线观看| 久久精品国产亚洲AV高清wy| 性感美女脱内裤无遮挡| 偷拍一区二区视频播放器| 国内最真实的xxxx人伦| 夜夜揉揉日日人人| 久久精品伊人无码二区| 久久久久无码精品国| 亚洲精品岛国av一区二区| 精品国内在视频线2019| 青青操国产在线| 国产喷白浆精品一区二区豆腐| 日本免费视频一区二区三区| 亚洲熟妇丰满多毛xxxx| 国产精品igao视频| 日韩在线精品在线观看| 狼狼色丁香久久女婷婷综合| 日韩精品视频一区二区三区 | 女同性黄网aaaaa片| 久久精品成人亚洲另类欧美| 国产三级精品三级在专区中文| 图片小说视频一区二区| 性高朝久久久久久久| 特级毛片全部免费播放a一级| 国内偷拍国内精品多白86| 大肉大捧一进一出好爽视频| a在线观看免费网站大全| 国产颜射视频在线播放| 少妇人妻无一区二区三区|