• <output id="aynwq"><form id="aynwq"><code id="aynwq"></code></form></output>

    <mark id="aynwq"><option id="aynwq"></option></mark>
  • <mark id="aynwq"><option id="aynwq"></option></mark><label id="aynwq"><dl id="aynwq"></dl></label>
  • 學習啦 > 學習電腦 > 操作系統 > 操作系統基礎知識 > 必須知道的操作系統原理

    必須知道的操作系統原理

    時間: 光寧1217 分享

    必須知道的操作系統原理

      操作系統(英語:operating system,縮寫作 OS)是管理計算機硬件與軟件資源的計算機程序,同時也是計算機系統的內核與基石。操作系統需要處理如管理與配置內存、決定系統資源供需的優先次序、控制輸入設備與輸出設備、操作網絡與管理文件系統等基本事務。操作系統也提供一個讓用戶與系統交互的操作界面。操作系統的類型非常多樣,不同機器安裝的操作系統可從簡單到復雜,可從移動電話的嵌入式系統到超級計算機的大型操作系統。許多操作系統制造者對它涵蓋范疇的定義也不盡一致,例如有些操作系統集成了圖形用戶界面,而有些僅使用命令行界面,而將圖形用戶界面視為一種非必要的應用程序。下面是小編收集整理的必須知道的操作系統原理范文,歡迎借鑒參考。

      必須知道的操作系統原理(一)

      進程概念是現在操作系統的基本概念,已經成為計算機科學中的一大成就。

      什么是進程?

      進程的出現,是為了是操作系統可以以一種有序的方式管理應用的執行,以達到以下目的:

      資源對多個應用程序是可用的;

      物理處理器在多個應用程序之間切換以保證所有程序都在執行中;

      處理器和I/O設備能得到充分利用;

      所有現在操作系統采用的方法都是依據一個或者多個進程存在的應用程序執行的一種模型。 到底什么是進程呢?

      進程是一組元素組成的實體,它可以是一個正在執行中的程序,也可以是一個能分配給處理器并由處理器執行的實體。

      進程的兩個基本元素是:程序代碼(program code)和代碼相關聯的數據集(set of data)。

      在進程執行時,任意給定一個時間,進程都可以唯一地表征為以下元素:

      標識符:進程的唯一標識符,用來區別其他進程

      狀態:進程在不同的生命周期有著不同的狀態

      優先級:相對于其他進程的優先級

      程序計數器:程序中即將被執行的下一條指令的地址

      內存指針:包含程序代碼和進程相關數據的指針,還有和其他進程共享內存塊的指針

      I/O狀態信息:包括顯示的I/O請求、分配給進程的I/O設備和被進程使用的文件列表等

      記賬信息:可能包括處理器時間總和、使用的時鐘數總和、時間限制、記賬號等

      上述的列表信息被存放在一個稱為進程控制塊的數據結構中,該控制塊由操作系統創建 和管理。

      進程狀態

      在任何時刻,進程可以處于以下兩種狀態之一:運行態和未運行態,這是最簡單的兩狀態模型。在這個模型中,會有一個調度器(dispatcher),使處理器從一個進程切換到另外一個進程。

      由于存在著一些處于非運行狀態但已經就緒等待執行的進程,而同時存在另外一些處于堵塞狀態等待I/O操作結束的進程。

      因此,解決這一問題比較自然的方法是使用五狀態模型: 運行態、就緒態、堵塞/等待態、新建態和退出態。

      >>(1)被掛起的進程

      上述的基本狀態提供了一種為進程建立系統模型的方法,并指導系統的實現。但是,往這個模型中添加其他狀態也是合理的。

      由于處理器的運行速度遠大于I/O,以至于內存中所有的進程都在等待I/O的情況也是很常見的。因此,即使是多道程序設計,大多數處理器仍然可能處于空閑狀態。

      一種解決方案是增大內存,使得內存中可以存在更多的進程。然而這種方案顯然是治標不治本的。

      另外一種解決方案是交換(swapping)。當內存中沒有處于就緒狀態的進程時,操作系統就把被阻塞的進程換出到磁盤中的掛起隊列(suspend queue)。操作系統在此之后取出掛起隊列中的另一個進程,或者接受一個新進程,將其加載到內存中運行。這時,在進程狀態模型中添加了另外一個狀態:掛起態。

      當操作系統從掛起隊列中取出一個依然阻塞的進程是毫無意義的,因為它仍然沒有準備好執行。所以為了區分被掛起的進程哪些是可以取出的,需要設計另外一種掛起模型:為了區分,需要四個狀態:

      就緒態:進程在內存中并可以執行

      阻塞態:進程在進程中并等待一個事件

      阻塞/掛起態:進程在外存中并等待一個事件

      就緒/掛起態:進程在外存中,但是只要被載入內存就可以執行

      總結一下掛起的進程的概念:

      1.進程不能被立即執行。

      2.進程可能是或不是正在等待一個事件。如果是,阻塞條件不依賴于掛起條件,阻塞事件的 的發生不會使進程立即執行。

      4.為組織進程的執行,可以通過代理把這個進程置于掛起狀態,代理可以是進程自己,也 可以是父進程或者操作系統。

      5. 除非代理顯示的命令操作系統進行狀態轉換,否則進程無法從這個狀態中轉移。

      6. 除了因為提供更多的內存空間,進程還會因為什么原因被掛起呢?

      必須知道的操作系統原理(二)

      1、進程與線程的區別

      (1)粒度性分析:線程的粒度小于進程。

      (2)調度性分析:進程是資源擁有的基本單位,線程是獨立調度與獨立運行的基本單位,出了寄存器,程序計數器等必要的資源外基本不擁有其他資源。

      (3)系統開銷分析:由于線程基本不擁有系統資源,所以在進行切換時,線程切換的開銷遠遠小于進程。

      2、進程的狀態及其轉換

      3、進程同步與互斥的區別

      互斥:是指某一資源同時只允許一個訪問者對其進行訪問,具有唯一性和排它性。但互斥無法限制訪問者對資源的訪問順序,即訪問是無序的。

      同步:是指在互斥的基礎上(大多數情況),通過其它機制實現訪問者對資源的有序訪問。在大多數情況下,同步已經實現了互斥,特別是所有寫入資源的情況必定是互斥的。少數情況是指可以允許多個訪問者同時訪問資源。

      簡單地說:同步體現的是一種協作性,互斥體現的是一種排他性。

      4、進程間的通信方式有哪些?

      (1) 管道( pipe ):管道是一種半雙工的通信方式,數據只能單向流動,而且只能在具有親緣關系的進程間使用。進程的親緣關系通常是指父子進程關系。

      (2)有名管道 (named pipe) : 有名管道也是半雙工的通信方式,但是它允許無親緣關系進程間的通信。

      (3)信號量( semophore ) : 信號量是一個計數器,可以用來控制多個進程對共享資源的訪問。它常作為一種鎖機制,防止某進程正在訪問共享資源時,其他進程也訪問該資源。因此,主要作為進程間以及同一進程內不同線程之間的同步手段。

      (4) 消息隊列( message queue ) : 消息隊列是由消息的鏈表,存放在內核中并由消息隊列標識符標識。消息隊列克服了信號傳遞信息少、管道只能承載無格式字節流以及緩沖區大小受限等缺點。

      (5)信號 ( sinal ) : 信號是一種比較復雜的通信方式,用于通知接收進程某個事件已經發生。

      (6)共享內存( shared memory ) :共享內存就是映射一段能被其他進程所訪問的內存,這段共享內存由一個進程創建,但多個進程都可以訪問。共享內存是最快的 IPC 方式,它是針對其他進程間通信方式運行效率低而專門設計的。它往往與其他通信機制,如信號兩,配合使用,來實現進程間的同步和通信。

      (7)套接字( socket ) : 套解口也是一種進程間通信機制,與其他通信機制不同的是,它可用于不同及其間的進程通信。

      5、作業(或進程)的調度算法有哪些?

      (1)先來先服務(FCFS,First-Come-First-Served): 此算法的原則是按照作業到達后備作業隊列(或進程進入就緒隊列)的先后次序來選擇作業(或進程)。

      (2)短作業優先(SJF,Shortest Process Next):這種調度算法主要用于作業調度,它從作業后備隊列中挑選所需運行時間(估計值)最短的作業進入主存運行。

      (3)時間片輪轉調度算法(RR,Round-Robin):當某個進程執行的時間片用完時,調度程序便停止該進程的執行,并將它送就緒隊列的末尾,等待分配下一時間片再執行。然后把處理機分配給就緒隊列中新的隊首進程,同時也讓它執行一個時間片。這樣就可以保證就緒隊列中的所有進程,在一給定的時間內,均能獲得一時間片處理機執行時間。

      (4)高響應比優先(HRRN,Highest Response Ratio Next): 按照高響應比((已等待時間+要求運行時間)/ 要求運行時間)優先的原則,在每次選擇作業投入運行時,先計算此時后備作業隊列中每個作業的響應比RP然后選擇其值最大的作業投入運行。

      (5) 優先權(Priority)調度算法: 按照進程的優先權大小來調度,使高優先權進程得到優先處理的調度策略稱為優先權調度算法。注意:優先數越多,優先權越小。

      (6)多級隊列調度算法:多隊列調度是根據作業的性質和類型的不同,將就緒隊列再分為若干個子隊列,所有的作業(或進程)按其性質排入相應的隊列中,而不同的就緒隊列采用不同的調度算法。

      6、死鎖產生的原因,死鎖產生的必要條件是什么,如何預防死鎖,如何避免死鎖,死鎖定理?

      死鎖產生的原因:(1)競爭資源;(2)進程推進順序不當。

      死鎖產生的必要條件:

      (1)互斥條件:一個資源一次只能被一個進程所使用,即是排它性使用。

      (2)不剝奪條件:一個資源僅能被占有它的進程所釋放,而不能被別的進程強占。

      (3)請求與保持條件:進程已經保持了至少一個資源,但又提出了新的資源要求,而該資源又已被其它進程占有,此時請求進程阻塞,但又對已經獲得的其它資源保持不放。

      (4)環路等待條件:當每類資源只有一個時,在發生死鎖時,必然存在一個進程-資源的環形鏈。

      預防死鎖:破壞四個必要條件之一。

      死鎖的避免:銀行家算法,該方法允許進程動態地申請資源,系統在進行資源分配之前,先計算資源分配的安全性。若此次分配不會導致系統從安全狀態向不安全狀態轉換,便可將資源分配給進程;否則不分配資源,進程必須阻塞等待。從而避免發生死鎖。

      死鎖定理:S為死鎖狀態的充分條件是:尚且僅當S狀態的資源分配圖是不可完全簡化的,該充分條件稱為死鎖定理。

      死鎖的解除:

      (1)方法1:強制性地從系統中撤消一個或多個死鎖的進程以斷開循環等待鏈,并收回分配給終止進程的全部資源供剩下的進程使用。

      (2)方法2:使用一個有效的掛起和解除機構來掛起一些死鎖的進程,其實質是從被掛起的進程那里搶占資源以解除死鎖。

      7、分段式存儲管理、分頁式存儲管理,兩個的區別?

      分段式存儲管理:分頁存儲管理是將一個進程的地址(邏輯地址空間)空間劃分成若干個大小相等的區域,稱為頁,相應地,將內存空間劃分成與頁相同大小(為了保證頁內偏移一致)的若干個物理塊,稱為塊或頁框(頁架)。在為進程分配內存時,將進程中的若干頁分別裝入多個不相鄰接的塊中。

      分頁式存儲管理:在分段存儲管理方式中,作業的地址空間被劃分為若干個段,每個段是一組完整的邏輯信息,如有主程序段、子程序段、數據段及堆棧段等,每個段都有自己的名字,都是從零開始編址的一段連續的地址空間,各段長度是不等的。

      兩者的區別:

      1、頁是信息的物理單位,分頁是為了實現非連續的分配,以便解決內存的碎片問題,或者說分頁是為了由于系統管理的需要。

      2、頁的大小固定是由系統確定的,將邏輯地址劃分為頁號和頁內地址是由機器硬件實現的。而段的長度是不固定的,決定與用戶的程序長度,通常由編譯程序進行編譯時根據信息的性質來劃分。

      3、分頁式存儲管理的作業地址空間是一維的,分段式的存儲管理的作業管理地址空間是二維的。

      8、頁面置換算法有哪些?

      (1)最佳置換算法(Optimal):即選擇那些永不使用的,或者是在最長時間內不再被訪問的頁面置換出去。(它是一種理想化的算法,性能最好,但在實際上難于實現)。

      (2)先進先出置換算法FIFO:該算法總是淘汰最先進入內存的頁面,即選擇在內存中駐留時間最久的頁面予以淘汰。

      (3)最近最久未使用置換算法LRU(Least Recently Used):該算法是選擇最近最久未使用的頁面予以淘汰,系統在每個頁面設置一個訪問字段,用以記錄這個頁面自上次被訪問以來所經歷的時間T,當要淘汰一個頁面時,選擇T最大的頁面。

      (4)Clock置換算法:也叫最近未用算法NRU(Not RecentlyUsed)。該算法為每個頁面設置一位訪問位,將內存中的所有頁面都通過鏈接指針鏈成一個循環隊列。當某頁被訪問時,其訪問位置“1”。在選擇一頁淘汰時,就檢查其訪問位,如果是“0”,就選擇該頁換出;若為“1”,則重新置為“0”,暫不換出該頁,在循環隊列中檢查下一個頁面,直到訪問位為“0”的頁面為止。由于該算法只有一位訪問位,只能用它表示該頁是否已經使用過,而置換時是將未使用過的頁面換出去,所以把該算法稱為最近未用算法。

      (5)最少使用置換算法LFU:該算法選擇最近時期使用最少的頁面作為淘汰頁。

      必須知道的操作系統原理(三)

      在工作中經常會遇到這樣的情況:想要安裝Linux但是計算機不帶光驅或軟驅,或者是筆記本配置的非標準的軟驅和光驅,如1394接口,USB接口等,在Linux安裝時所引導的Linux內核一般都不會帶這些接口的驅動,所以也無法通過本地安裝Linux,此外,在一些場合,如機房,IT實驗室,工廠生產線,有大量的計算機需要同時安裝Linux,如果通過光驅的方式一個個安裝,不僅效率低,也不利于維護。這是時候你就需要PXE的強大功能了。本文將就PXE的基本原理和工作方式進行簡要介紹。具體的實踐過程需要比較豐富的網絡知識。

      1.操作系統安裝的流程

      通用流程:首先,bios啟動,選擇操作系統的啟動(安裝)模式(此時,內存是空白的),然后根據相關的安裝模式,尋找操作系統的引導程序(不同的模式,對應不同的引導程序當然也對應著不同的引導程序存在的位置),引導程序加載文件系統初始化(initrd)程序和內核初始鏡像(vmlinuz),完成操作系統安裝前的初始化;接著,操作系統開始安裝相關的系統和應用程序。

      硬盤安裝的流程:bios啟動——MBR尋找grub——grub程序讀取menu.list等配置文件,找到內核啟動鏡像和相關初始化程序,安裝(或者啟動)。

      PXE(Pre-boot Execution Environment)是由Intel設計,可以使計算機通過網絡啟動的協議。協議分為client和server兩端,PXE client在網卡的ROM中,當計算機啟動時,BIOS把PXE client調入內存執行,并顯示出命令菜單,經用戶選擇后,PXE client將放置在遠端的操作系統通過網絡下載到本地運行。

      pxe網絡安裝的流程:bios啟動——pxe client中的程序進入內存,顯示命令菜單——此程序開始尋找網絡引導程序(bootstrap文件,這個文件的名字隨著發行版的不同而不同,在centos中,它是pxelinux.0)——引導程序讀取配置文件pxelinux.cfg,獲得系統初始化的相關文件信息——系統啟動,開始進行安裝。

      2.pxe模式安裝操作系統的原理

      2.1安裝流程

      客戶機從自己的PXE網卡啟動,向本網絡中的DHCP服務器索取IP,并搜尋引導文件的位置

      DHCP服務器返回分給客戶機IP以及bootstrap文件的放置位置(該文件一般是放在一臺TFTP服務器上)

      客戶機向本網絡中的TFTP服務器索取bootstrap文件

      客戶機取得bootstrap文件后之執行該文件

      根據bootstrap的執行結果,通過TFTP服務器加載內核和文件系統

      進入安裝畫面, 此時可以通過選擇FTP,HTTP,NFS方式之一進行安裝

      2.2流程小結

      總結就是:

      1)網卡的client 網卡rom 尋找dhcp服務器,由/etc/dhcp.conf得到ip和引導程序所在地點

      2)有dhcp.conf(引導程序文件名)和tftp的配置(tftp跟路徑,里面有引導程序和系統初始化程序),得到引導程序pxelinux啟動文件的絕對路徑,運行引導程序,讀取啟動配置文件pxelinux.cfg/default,得到操作系統初始化的兩個相關文件

      3)選擇安裝方式

      客戶端廣播dhcp請求——服務器相應請求,建立鏈接——由dhcp和tftp配置得到ip還有引導程序所在地點——客戶端下載引導程序并開始運行——引導程序讀取

      2.3.相關文件位置與內容:

      dhcp配置文件/etc/dhcpd/dhcp.conf——ip管理與引導程序名稱

      tftp配置文件/etc/xinetd.d/tftp——tftp根目錄,和上面的引導程序名稱組成完整路徑

      引導程序讀取的配置文件/tftpboot/pxelinux.cfg/default——啟動內核其他

      3.實戰過程

      實戰環境;centos 6.3,kernel 2.6.32

      3.1安裝前的準備:

      軟硬件配置:網卡要支持pxe啟動,操作系統也要支持pxe啟動,另外有ftp服務器用于存儲操作系統的安裝文件,dhcp服務器用于分配ip

      3.2服務器配置

      1)配置dhcp服務器

      由于PXE客戶機通常是尚未裝系統的裸機,因此為了如服務器取得聯系并正確下載相關引導文件,需要預先配置好DHCP服務來自動分配地址并告知引導文件的位置。

      注明:filename這一個選項很重要,它的作用是指明bootstrap所在的位置,一般是指向一個TFTP服務器的某個目錄下。這里是相對路徑,其中路徑的上半部分在的一個配置文件之中。

      2)配置tftp服務器

      TFTP服務的配置文件是/etc/xinetd.d/tftp,RedHat9 默認安裝已經生成了該文件

      注明:這個文件基本上不用改動,但是需要注意的的是server_args= -s /tftpboot這一行,它的含義是將/tftpboot作為root目錄,這樣在dhcpd.conf中的filename一行就應該寫bootstrap的相對路徑: filename “pxelinux.0”,這是出于安全方面考慮的.如果你去掉了-s這個參數,那幺就要在filename一行指出bootstrap的絕對路徑: filename “/tftpboot/pxelinux.0”.注意,這里-s的內容會因為發行版的內容不同而不同,一般不用改動。

      3.3添加引導程序

      Bootstrap對于支持網絡安裝的操作系統,Bootstrap基本上都可以從安裝源文件上找到,對于本例來說,centos的bootstrap就是cdrom:/isolinux/pxelinux.0我們把它們都拷貝到tftpboot下.

      3.4編輯引導配置文件

      把centos第一張安裝光盤上images/pxeboot目錄下的initr.img和vmlinux也考到tftpboot/目錄下。在/tftpboot創建pxelinux.cfg目錄,用于放isolinux的配制文件。光盤isolinux/下有一個isolinux.cfg文件,把它拷貝到/tftpboot/pxelinux.cfg/目錄下并改名為default.下面為修改后的default文件:

      default linux

      prompt 1

      timeout 30

      label linux

      kernel vmlinuz

      append initrd=initrd.img

      這個Default 文件很容易看懂,就是告訴啟動后使用那個內核引導

      3.5開始安裝

      1)確保:服務器端剛才配置的幾個服務都處于開啟狀態;關閉防火墻;bios中選擇從網絡啟動

      2)剩下的步驟和從硬盤安裝相同

    32932 主站蜘蛛池模板: 精品中文字幕一区在线| 欧美性大战久久久久久| 国产ts最新人妖在线| jizz大全欧美| 在线观看视频中文字幕| 中文字幕无码无码专区| 最近2019中文字幕mv免费看| 亚洲福利精品一区二区三区| 精品少妇一区二区三区视频 | 久久人妻少妇嫩草av蜜桃| 欧美性色欧美a在线播放| 伊人久久大香线蕉亚洲| 老子影院在线观看| 国产在线麻豆精品| 1024香蕉视频| 国产香港明星裸体XXXX视频| juy639黑人教练君岛美绪| 成人品视频观看在线| 久久久免费精品| 日韩成人在线免费视频| 亚洲乱码无码永久不卡在线| 波多野吉衣一区二区| 做暧暧小视频全集免费| 精品黑人一区二区三区| 国产乡下三级全黄三级| 黄网站色视频大全免费观看| 国产精品久久久久一区二区三区| 99re66热这里都是精品| 天天色天天射天天干| 一级中文字幕乱码免费| 成年女人男人免费视频播放| 久久亚洲中文字幕精品有坂深雪 | 免费视频专区一国产盗摄| 老子午夜我不卡理论影院| 国产人澡人澡澡澡人碰视频| 黑料不打烊tttzzz网址入口| 国产真实乱了在线播放| 在线国产你懂的| 国产精品无圣光一区二区| 91制片厂(果冻传媒)原档破解 | 波多野结无码高清中文|