• /  60
  • 下載費用: 9.90積分  

Linux基礎教程教學課件作者清華PPT電子教案第2章.ppt

'Linux基礎教程教學課件作者清華PPT電子教案第2章.ppt'
第2章 處理機管理2.1 作業2.2 進程2.3 線程2.4 小結習題提高處理機(CPU)的使用率,使它盡可能處于工作狀態,是操作系統管理功能的主要目標之一。在Linux系統中,提高處理機使用率的技術措施主要是多道和分時,處理機在進程之間切換,按照一定的規則輪流執行每個進程。對于單個處理機的系統,這些進程宏觀上看似并行執行,而微觀上來看仍然是串行執行的,這種執行方式被稱為并發執行。操作系統通過并發控制機制,對處理機進行分配、調度,在保證每個進程都得到公平合理執行的同時,使系統中的各種資源得到充分的使用。本章主要圍繞處理機管理展開,著重介紹進程的概念,同時也包括相關的兩個基本概念:作業和線程。2.1 作業作業是用戶向計算機系統提交一項工作的基本單位,是用戶在一次事務處理或計算過程中要求計算機所做工作的總和。作業和程序是兩個相互聯系而又不同的概念。如果一次業務處理可以由某一個程序完成,就是說這個業務處理只要提交這一個程序就夠了,這種情況下,這個程序就是一個作業。通常,完成一次業務需要由多個程序協同完成,這時,多個程序、這些程序需要的數據以及必要的作業說明一起構成一個作業。系統通過作業說明書或者作業控制語句(JCL)控制程序和相應的數據執行,完成整個業務處理。按照對作業的處理方式,可以分為聯機、批處理等作業。Linux系統中的shell提供了操作系統和用戶之間的聯機命令接口。Linux的shell同時提供了程序級接口。用戶通過提交一個命令或一個命令序列以批處理方式執行特定的操作(詳見本書第2部分)。在Linux分時批處理系統中,也可以根據對作業執行時的響應特征分為前臺作業和后臺作業。在多用戶系統中,多個用戶、不同類型的作業可能同時請求執行,控制和管理這些作業,協調它們之間的關系,就是作業調度,作業調度是處理機調度的一部分。2.2 進程計算機內存中同時存放多個相互獨立的已經開始運行的程序實體,大家按照某種規則輪流使用處理器,這是現代多道操作系統實現資源共享,提高系統資源利用率的主要方式。描述這些程序實體的概念就是進程。在多道情況下,每個進程獨立地擁有各種必要的資源,占有處理機,獨立地運行。在多道系統中,同時存在多個進程,所以當某個進程進入等待狀態時,操作系統將把處理機控制權拿過來并交給其他可以運行的進程。進程之間存在著相互制約、相互依賴的約束關系。一種最糟糕的情況是所有進程都擁有部分資源,同時在等待其他進程擁有的資源,這樣,大家都無法運行,進入一種永久等待的狀態,這種情況稱為死鎖,死鎖是對系統資源極大的浪費,必須設法避免。本節著重討論現代多道操作系統中的核心概念——進程,這是理解操作系統工作原理的基礎和關鍵。首先介紹單個進程的狀態、狀態轉換的條件和控制原語、進程在系統中的靜態描述等,接著介紹多個進程之間的約束關系,由此引出進程間通信的概念,通信是協調、解決進程間約束關系的惟一手段,這種約束關系處理不當造成的最嚴重的后果就是死鎖。2.2.1 進程的概念進程(process)的概念最早出現在60年代中期,用于多道系統,在Linux系統中,進程也稱為任務(task)。簡單地講,進程就是正在運行的程序,更為嚴謹的表達是,進程是一個具有一定獨立功能的程序關于某個數據集合的一次運行活動。進程的概念對于理解操作系統有決定性的意義,而真正理解進程,必須了解它的基本性質。進程是操作系統分配資源和進行調度的獨立單位,具有獨立性。同時,具有動態性。多道系統中同時存在多個進程,這些進程擁有各自的資源,各自獨立地執行,對于單處理機系統,進程宏觀上同時運行而微觀上是依次執行,這種情況稱為并發執行。1. 進程和程序進程和程序是一對相互聯系的概念。程序是指令的有序集合,是一個靜態的概念,描述完成某個功能的一個具體操作過程,而進程是程序針對某一組數據的一次執行過程,更強調動態特征。一個完整的進程,包括程序、執行程序所需要的數據,同時還必須包括記錄進程狀態的數據資料。在多道分時操作系統中,按照時間片輪流在各個進程間切換。對于單處理器系統,每一個時刻只能有一個進程在執行,當分配給該進程的時間片用完之后,不管該進程運行到什么程度,都必須立即停止,然后讓出處理器資源,下一個進程進入執行狀態。讓出處理器的進程必須記錄好正在運行的狀態,包括寄存器、堆棧等各種信息,這些信息保證當處理器下次切換到這個進程的時候,進程能夠正確地從上次執行到的位置繼續往下執行。一個程序在處理相同或不同的操作數據時可以同時對應于多個進程。一個進程也可以包含多個程序,某個程序在運行過程中,可能同時會調用到多個其他程序,這些具有調用關系的多個程序共同構成一次完整的運行活動,即一個完整的進程。舉一個直觀的例子。我們在Linux系統下使用編輯器vi進行編輯,同時打開多個窗口,編輯多個不同名稱的文件,vi編輯器是一個可執行程序,不同的文件就是不同的操作數據,而對應于這些文件同時打開的每一個編輯窗口就對應著一個進程,每一個進程都處于不同的狀態。如果說程序是提供計算機操作的一組工作流程的話,進程就是具體的工作過程,按照同樣的工作流程,針對不同的原料,可以同時開始多個工作過程,得到多種不同的成品。這種工作流程和工作過程的關系就可以類比為程序和進程的關系。2. 進程和作業作業是用戶向計算機系統提交一項工作的基本單位,是用戶在一次事務處理或計算過程中要求計算機所做工作的總和。進程是一個具有一定獨立功能的程序關于某個數據集合的一次運行活動,是操作系統分配資源和進行調度的基本單位。作業是描述用戶向系統提交工作任務的實體單位,而進程是系統完成工作任務時程序執行的實體單位。從這個角度講,他們處于不同的層次,作業描述用戶和操作系統之間的任務委托關系,而進程描述操作系統內部任務的具體執行過程。一個用戶的任務,即作業,由用戶提交給系統,必須以進程的形式具體完成。對于批處理系統,通常,作業放在外存中專門的作業隊列中等待進入內存執行,要經過一次宏觀調度,由外存進入內存,以進程的形式運行。而對于UNIX/Linux這樣的分時系統,沒有宏觀調度,作業不經過調度,直接進入內存,以進程的形式開始運行。任何一個進程,都存在于內存中,并且是已經開始運行的動態實體。2.2.2 進程描述我們知道,進程是一個動態的概念,描述程序的一次運行活動。它存在于系統的內存中,是操作系統可感知、可控制的動態實體,是系統分配各種資源、進行調度的基本單位。1. 進程控制塊現在我們來討論進程在內存中的靜態存在方式。在多道系統中,處理機在多個進程之間來回切換,每個進程都會在暫停、運行這兩種狀態之間來回轉換。當一個進程在處理機切換過來重新進入運行狀態時,它必須嚴格精確地接著上次運行的位置繼續進行,進程的靜態描述可以保持切換現場,確保準確銜接,保證進程調度的實現,順利完成程序所規定任務。進程切換現場稱為進程上下文(context),包含了一個進程所具有的全部信息,一般包括:進程控制塊(Process Control Block,PCB)、有關程序段和相應的數據集,具體組成見圖2.1。程序段是某個進程執行的相關指令集合,和靜態的程序段有明確的對應關系,相應數據集是這個程序。省略部分。路,每一個進程已獲得的資源同時被下一個進程請求。解決死鎖的方案就是破壞死鎖產生的必要條件。方法分為預防、回避、檢測恢復三種。預防指采取某種策略,控制并發進程對資源的請求,保證死鎖的四個必要條件在系統運行的任何時刻都無法滿足。避免指系統采取某種算法,對資源使用情況進行預測,使資源分配盡可能合理,避免死鎖的發生。這兩種方法需要大量的系統開銷,而且系統的資源也無法得到充分的利用。因此,一般系統都采取檢測恢復的方法,這種方法是在死鎖發生之后,根據系統情況,檢測死鎖發生的位置和原因,使用外力,重新分配資源,破壞死鎖發生的條件,系統就可以從死鎖狀態恢復正常運行,這樣的方法只要使用少量的系統資源,尤其是CPU時間就可以排除死鎖。2.3 線程多道處理系統中,進程是系統調度和資源分配的基本單位,計算機的CPU不停地在不同進程之間切換,進程切換現場稱為進程上下文,每一次切換過程,系統都要對換出進程的上下文做詳細記錄,然后恢復換入進程的上下文。因此,系統的進程管理過程要耗費相當多的系統資源和CPU時間,尤其是對于需要頻繁進程切換的任務。針對進程切換的時間和資源耗費問題,為了減少系統進程切換的時間,提高整個系統的效率,引入了線程的概念。2.3.1 線程的概念線程是在一個進程內的基本調度單位。線程可以看作是一個執行流,擁有記錄自己狀態和運行現場的少量數據(棧段和上下文),但沒有單獨的代碼段和數據段,而是與其他線程共享。多個線程共享一個進程內部的各種資源,分別按照不同的路徑執行,同時線程也是一個基本調度單位,可以在一個進程內部進行線程切換,現場保護工作量小。一方面通過共享進程的基本資源而減輕系統開銷,另一方面提高了現場切換的效率,因此,線程也被稱為輕權進程或輕量級進程。許多流行的多任務操作系統基本都支持線程。按照系統的管理策略,線程可以分為用戶級線程和系統級線程(內核級線程)兩種基本類型。用戶級線程指不需要內核支持,在用戶程序中實現的線程都需要用戶程序自己完成。系統級線程由內核完成線程的調度并提供相應的系統調用,用戶程序可以通過這些接口函數對線程進行一定的控制和管理。用戶級線程不需要額外的內核開銷,一般只要提供一個線程庫即可,剩下的工作就主要由用戶自己負責了。但是由于用戶級線程與系統內核無關,當一個進程因I/O而被調度程序切換為等待狀態時,屬于該進程的某個執行線程可能仍然處于執行狀態。系統級線程的調度由內核完成,不需要更多用戶干預,但要占用更多的系統開銷,效率相對低一些。線程也是系統中動態變化的實體,它描述程序的運行活動,在內存中需要記錄。線程的記錄信息要保證系統能夠準確地進行線程切換。在線程的生命周期里,線程作為一個基本的執行單位而存在,不斷地在執行和停止的狀態之間轉換。線程的基本狀態是執行、就緒和等待。線程的同步是一個相當關鍵的問題。線程之間的通信相對容易,而線程間的同步問題需要更仔細地對待,特別是用戶級線程,這個問題相當突出。2.3.2線程和進程進程是操作系統資源分配和系統調度的基本單位,每一個進程都有自己獨立的地址空間和各種資源,線程也是一種系統調度的基本單位,多個線程可以共享一個進程的資源,在存儲方面,線程占用的資源更少。進程的調度主要由操作系統完成,而線程根據其類型的不同,可以由系統調度(內核級線程),也可以由用戶進行調度(用戶級線程)。進程調度的過程中要進行切換,切換現場的保護與恢復要求對進程上下文做完整的記錄,要消耗一定的存儲資源和處理機時間;線程共享進程的資源,可以在進程內部切換,不涉及資源保存和內存地址變換等操作,可以節約大量的空間和時間資源。因此,對于切換頻繁的工作任務,多線程方式比多進程方式可以提供更高的響應速度。多個線程共享同一進程的資源,線程相互間通訊容易。而進程間通訊一般必須要通過系統提供的進程間通訊機制。進程和線程都是用來描述程序的運行活動,是存在于系統存儲區中的動態實體,都有自己的狀態,整個生命周期都在不同的狀態之間切換。2.3.3 Linux系統的線程Linux可以同時支持內核級線程(也稱為系統級線程)和用戶級線程。Linux的系統級線程在表示格式、管理調度等方面與進程沒有嚴格的區分,都是當作進程來統一對待。Linux系統級線程和進程的區別主要在于資源管理方面,線程可以共享父進程的部分資源(執行上下文)。在Linux系統中,線程共享資源的類型是可以控制的,系統調用clone里有五種形式的clone:CLONE-VM(存儲空間),CLONE-FILES(文件描述表),CLONE-FD(文件系統信息),CLONE-SIGHAND(信號控制表),CLONE-PID(進程號)。Linux的內核級線程和其他操作系統的內核實現不同。大多數操作系統單獨定義描述線程的數據結構,采用獨立的線程管理方式,提供專門的線程調度,這些都增加了內核和調度程序的復雜性。而在Linux中,將線程定義為“執行上下文”,它實際只是進程的另外一個執行上下文而已,和進程采用同樣的表示、管理、調度方式。這樣,Linux內核并不需要區分進程和線程,只需要一個進程/線程數組,而且調度程序也只有進程的調度程序,內核的實現相對簡單得多,而且節約系統的用于管理方面的時間開銷。但是,Linux系統使用相對復雜的進程控制塊來記錄信息,而線程本身的控制信息很少,完全可以采用相當簡單的線程控制塊數據結構,這就造成了內存空間的一定浪費。一個值得注意的問題是,在Linux系統中,專門有一種稱為kernel threads的線程,直譯為內核線程,它和我們這里討論的系統級線程(kernel level threads)在Linux系統中是兩個完全不同的概念,它們的區別,將在4.3節“Linux進程調度”中詳細介紹。Linux支持POSIX標準定義的線程(pthreads),提供用戶級線程支持。利用這樣的線程庫函數,用戶可以方便地創建、調度和撤銷線程,也可以實現線程間通信,而且這些線程還可以映射為系統級線程,由系統調度執行。實現用戶級線程創建的函數是pthread-create。2.4 小結進程是現代操作系統的核心概念,它用來描述程序執行的過程,是實現多道操作系統的基礎。和進程聯系密切的概念是程序、作業和線程,正確地區分和理解這些概念,有助于正確地理解和認識計算機操作系統本身。Linux系統中基本沒有區分進程和線程,它們都使用相同的描述方法,使用相同的調度和管理策略。描述進程的靜態數據是進程控制塊PCB。在Linux等多道操作系統中,程序是并發執行的,進程的個數總是多于系統CPU的個數,宏觀上所有進程同時都在運行,微觀上這些進程輪流使用CPU,在執行、等待和就緒等基本狀態之間轉換,直到執行完成。習題2-1 什么是作業?簡述Linux系統作業的概念。2-2 作業、程序和進程有什么區別?2-3 進程能不能理解為由偽處理機執行的一個程序?為什么?2-4 什么是進程間的互斥和同步?2-5 并發進程間的制約有哪幾種?引起的原因分別是什么?2-6 Linux系統中的線程有哪幾類?分別是如何描述和管理的?2-7 訪問Internet,了解Linux系統進程控制塊的現狀,有哪些改進,你認為改進方案如何?
關 鍵 詞:
教學 作者 清華 ppt 教程 電子 基礎 教案 linux
 天天文庫所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:Linux基礎教程教學課件作者清華PPT電子教案第2章.ppt
鏈接地址: http://www.476824.live/p-51617632.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服點擊這里,給天天文庫發消息,QQ:1290478887 - 聯系我們

本站為“文檔C2C交易模式”,即用戶上傳的文檔直接賣給(下載)用戶,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有【成交的100%(原創)】。本站是網絡服務平臺方,若您的權利被侵害,侵權客服QQ:1290478887 歡迎舉報。

[email protected] 2017-2027 http://www.476824.live 網站版權所有

粵ICP備19057495號 

收起
展開
球探网即时蓝球比分 北京11选五直选 刘伯温精选一肖大公开 加拿大快乐8预测pc28 东方财富股票数据导出 彩票辽宁35选7官方网站 山西快乐十分钟app 山西快乐十分规则和奖金 上海时时乐开奖控 辽宁11选五开奖结果查 配资盘股票配资网