5,網絡編程-操做系統分類/進程

 

多道程序系統,html

分時系統,linux

實時系統,程序員

通用操做系統,算法

操做系統的進一步發展,安全

操做系統的做用.服務器

 

內容總結:網絡

 操做系統
操做系統種類 : 多道\分時\實時
操做系統的做用 : 幫助你調度硬件資源,幫助你調度管理軟件
進程
進程是計算機中最小的資源分配單位
進程調度 : 多級反饋
進程是一個正在運行的程序
程序和進程的區別 : 進程是正在運行的,程序沒有運行
同步異步 阻塞非阻塞
同步 就是順序執行
異步 能夠同時執行
阻塞 停住
非阻塞 不停
並行和併發
並行 有多個CPU在同時執行多個任務
併發 只有一個CPU,交替執行多個任務

 

 

手工操做 —— 穿孔卡片

程序員將對應於程序和數據的已穿孔的紙帶(或卡片)裝入輸入機,而後啓動輸入機把程序和數據輸入計算機內存,接着經過控制檯開關啓動程序針對數據運行;計算完畢,打印機輸出計算結果;用戶取走結果並卸下紙帶(或卡片)後,才讓下一個用戶上機。session

手工操做方式兩個特色:
  (1)用戶獨佔全機。不會出現因資源已被其餘用戶佔用而等待的現象,但資源的利用率低。
  (2)CPU 等待手工操做。CPU的利用不充分。
 

批處理 —— 磁帶存儲

批處理系統:加載在計算機上的一個系統軟件,在它的控制下,計算機可以自動地、成批地處理一個或多個用戶的做業(這做業包括程序、數據和命令)。併發

聯機批處理系統

主機與輸入機之間增長一個存儲設備——磁帶,在運行於主機上的監督程序的自動控制下,計算機可自動完成:成批地把輸入機上的用戶做業讀入磁帶,依次把磁帶上的用戶做業讀入主機內存並執行並把計算結果向輸出機輸出。完成了上一批做業後,監督程序又從輸入機上輸入另外一批做業,保存在磁帶上,並按上述步驟重複處理。
監督程序不停地處理各個做業,從而實現了做業到做業的自動轉接,減小了做業創建時間和手工操做時間,有效克服了人機矛盾,提升了計算機的利用率。
可是,在做業輸入和結果輸出時,主機的高速CPU仍處於空閒狀態,等待慢速的輸入/輸出設備完成工做: 主機處於「忙等」狀態。
 
 

脫機批處理系統

爲克服與緩解:高速主機與慢速外設的矛盾,提升CPU的利用率,又引入了 脫機批處理系統,即輸入/輸出脫離主機控制。
衛星機:一臺不與主機直接相連而專門用於與輸入/輸出設備打交道的。
  其功能是:
  (1)從輸入機上讀取用戶做業並放到輸入磁帶上。
  (2)從輸出磁帶上讀取執行結果並傳給輸出機。
  這樣,主機不是直接與慢速的輸入/輸出設備打交道,而是與速度相對較快的磁帶機發生關係,有效緩解了主機與設備的矛盾。主機與衛星機可並行工做,兩者分工明確,能夠充分發揮主機的高速計算能力。
      脫機批處理系統:20世紀60年代應用十分普遍,它極大緩解了人機矛盾及主機與外設的矛盾。
  不足:每次主機內存中僅存放一道做業,每當它運行期間發出輸入/輸出(I/O)請求後,高速的CPU便處於等待低速的I/O完成狀態,導致CPU空閒。
爲改善CPU的利用率,又引入了多道程序系統。
 
 
 
多道程序系統:
 
所謂多道程序設計技術,就是指容許多個程序同時進入內存並運行。即同時把多個程序放入內存,並容許它們交替在CPU中運行,它們共享系統中的各類硬、軟件資源。當一道程序因I/O請求而暫停運行時,CPU便當即轉去運行另外一道程序。
 
 
多道程序設計技術不只使CPU獲得充分利用,同時改善I/O設備和內存的利用率,從而提升了整個系統的資源利用率和系統吞吐量(單位時間內處理做業(程序)的個數),最終提升了整個系統的效率。
   單處理機系統中多道程序運行時的特色:
  (1)多道:計算機內存中同時存放幾道相互獨立的程序;
  (2)宏觀上並行:同時進入系統的幾道程序都處於運行過程當中,即它們前後開始了各自的運行,但都未運行完畢;
  (3)微觀上串行:實際上,各道程序輪流地用CPU,並交替運行。
 
多道程序系統的出現,標誌着操做系統漸趨成熟的階段,前後出現了做業調度管理、處理機管理、存儲器管理、外部設備管理、文件系統管理等功能。
因爲多個程序同時在計算機中運行,開始有了空間隔離的概念,只有內存空間的隔離,才能讓數據更加安全、穩定。
出了空間隔離以外,多道技術還第一次體現了時空複用的特色,遇到IO操做就切換程序,使得cpu的利用率提升了,計算機的工做效率也隨之提升。
 
 

分時系統

分時技術:把處理機的運行時間分紅很短的時間片,按時間片輪流把處理機分配給各聯機做業使用異步

 
分時技術:把處理機的運行時間分紅很短的時間片,按時間片輪流把處理機分配給各聯機做業使用。
  若某個做業在分配給它的時間片內不能完成其計算,則該做業暫時中斷,把處理機讓給另外一做業使用,等待下一輪時再繼續其運行。因爲計算機速度很快,做業運行輪轉得很快,給每一個用戶的印象是,好象他獨佔了一臺計算機。而每一個用戶能夠經過本身的終端向系統發出各類操做控制命令,在充分的人機交互狀況下,完成做業的運行。
具備上述特徵的計算機系統稱爲分時系統,它容許多個用戶同時聯機使用計算機。
  特色:
  (1) 多路性。若干個用戶同時使用一臺計算機。微觀上看是各用戶輪流使用計算機;宏觀上看是各用戶並行工做。
  (2)交互性。用戶可根據系統對請求的響應結果,進一步向系統提出新的請求。這種能使用戶與系統進行人機對話的工做方式,明顯地有別於批處理系統,於是, 分時系統又被稱爲交互式系統。
  (3)獨立性。用戶之間能夠相互獨立操做,互不干擾。系統保證各用戶程序運行的完整性,不會發生相互混淆或破壞現象。
  (4)及時性。系統可對用戶的輸入及時做出響應。分時系統性能的主要指標之一是響應時間,它是指:從終端發出命令到系統予以應答所需的時間。
   分時系統的主要目標:對用戶響應的及時性,即不至於用戶等待每個命令的處理時間過長。
分時系統能夠同時接納數十個甚至上百個用戶,因爲內存空間有限,每每採用對換(又稱交換)方式的存儲方法。即將未「輪到」的做業放入磁盤,一旦「輪到」,再將其調入內存;而時間片用完後,又將做業存回磁盤(俗稱「滾進」、「滾出「法),使同一存儲區域輪流爲多個用戶服務。
多用戶分時系統是當今計算機操做系統中最廣泛使用的一類操做系統。
       注意:分時系統的分時間片工做,在沒有遇到IO操做的時候就用完了本身的時間片被切走了,這樣的切換工做其實並無提升cpu的效率,反而使得計算機的效率下降了。可是咱們犧牲了一點效率,卻實現了多個程序共同執行的效果,這樣你就能夠在計算機上一邊聽音樂一邊聊qq了。
 
 
 

實時系統

 
雖然多道批處理系統和分時系統能得到較使人滿意的資源利用率和系統響應時間,但卻不能知足實時控制與實時信息處理兩個應用領域的需求。因而就產生了實時系統,即系統可以及時響應隨機發生的外部事件,並在嚴格的時間範圍內完成對該事件的處理。
實時系統在一個特定的應用中常做爲一種控制設備來使用。
    實時系統可分紅兩類:
    (1)實時控制系統。當用于飛機飛行、導彈發射等的自動控制時,要求計算機能儘快處理測量系統測得的數據,及時地對飛機或導彈進行控制,或將有關信息經過顯示終端提供給決策人員。當用於軋鋼、石化等工業生產過程控制時,也要求計算機能及時處理由各種傳感器送來的數據,而後控制相應的執行機構。
    (2)實時信息處理系統。當用於預約飛機票、查詢有關航班、航線、票價等事宜時,或當用於銀行系統、情報檢索系統時,都要求計算機能對終端設備發來的服務請求及時予以正確的回答。此類對響應及時性的要求稍弱於第一類。
   實時操做系統的主要特色
  (1) 及時響應。每個信息接收、分析處理和發送的過程必須在嚴格的時間限制內完成。
  (2) 高可靠性。需採起冗餘措施,雙機系統先後臺工做,也包括必要的保密措施等。
 
 
 
分時——如今流行的PC,服務器都是採用這種運行模式,即把CPU的運行分紅若干時間片分別處理不一樣的運算請求 linux系統
實時——通常用於單片機上、PLC等,好比電梯的上下控制中,對於按鍵等動做要求進行實時處理 
 
 
 

通用操做系統:

 

 

 
操做系統的三種基本類型:多道批處理系統、分時系統、實時系統。
   通用操做系統:具備多種類型操做特徵的操做系統。能夠同時兼有多道批處理、分時、實時處理的功能,或其中兩種以上的功能。
  例如:實時處理+批處理=實時批處理系統。首先保證優先處理實時任務,插空進行批處理做業。常把實時任務稱爲前臺做業,批做業稱爲後臺做業。
  再如:分時處理+批處理=分時批處理系統。即:時間要求不強的做業放入「後臺」(批處理)處理,需頻繁交互的做業在「前臺」(分時)處理,處理機優先運行「前臺」做業。
  從上世紀60年代中期,國際上開始研製一些大型的通用操做系統。這些系統試圖達到功能齊全、可適應各類應用範圍和操做方式變化無窮的環境的目標。可是,這些系統過於複雜和龐大,不只付出了巨大的代價,且在解決其可靠性、可維護性和可理解性方面都遇到很大的困難。
  相比之下, UNIX操做系統倒是一個例外。這是一個通用的多用戶分時交互型的操做系統。它首先創建的是一個精幹的核心,而其功能卻足以與許多大型的操做系統相媲美,在覈心層之外,能夠支持龐大的軟件系統。它很快獲得應用和推廣,並不斷完善,對現代操做系統有着重大的影響。
  至此,操做系統的基本概念、功能、基本結構和組成都已造成並漸趨完善。
 
 
 

操做系統的進一步發展

我的計算機操做系統:

我的計算機上的操做系統是聯機交互的單用戶操做系統,它提供的聯機交互功能與通用分時系統提供的功能很類似。
  因爲是我的專用,所以一些功能會簡單得多。然而,因爲我的計算機的應用普及,對於提供更方便友好的用戶接口和豐富功能的文件系統的要求會越來越迫切。
 
 

網絡操做系統:

計算機網絡:經過通訊設施,將地理上分散的、具備自治功能的多個計算機系統互連起來,實現信息交換、資源共享、互操做和協做處理的系統。
  網絡操做系統:在原來各自計算機操做系統上,按照網絡體系結構的各個協議標準增長網絡管理模塊,其中包括:通訊、資源共享、系統安全和各類網絡應用服務。
 
 
 

分佈式操做系統

 
表面上看,分佈式系統與計算機網絡系統沒有多大區別。分佈式操做系統也是經過通訊網絡,將地理上分散的具備自治功能的數據處理系統或計算機系統互連起來,實現信息交換和資源共享,協做完成任務。——硬件鏈接相同。
  但有以下一些明顯的區別:
  (1)分佈式系統要求一個統一的操做系統,實現系統操做的統一性。
  (2)分佈式操做系統管理分佈式系統中的全部資源,它負責全系統的資源分配和調度、任務劃分、信息傳輸和控制協調工做,併爲用戶提供一個統一的界面。
  (3)用戶經過這一界面,實現所須要的操做和使用系統資源,至於操做定在哪一臺計算機上執行,或使用哪臺計算機的資源,則是操做系統完成的,用戶沒必要知道,此謂:系統的透明性。
  (4)分佈式系統更強調分佈式計算和處理,所以對於多機合做和系統重構、堅強性和容錯能力有更高的要求,但願系統有:更短的響應時間、高吞吐量和高可靠性。
 
 
 
I/O操做都有哪些? 輸入輸出:是從內存寫入到硬盤,仍是硬盤讀入到內存.
輸入 input f.read accept recv connect
輸出 print f.write connect send
文件操做/網絡操做的都是IO操做

操做系統的做用

 

現代的計算機系統主要是由一個或者多個處理器,主存,硬盤,鍵盤,鼠標,顯示器,打印機,網絡接口及其餘輸入輸出設備組成。

  通常而言,現代計算機系統是一個複雜的系統。

  其一:若是每位應用程序員都必須掌握該系統全部的細節,那就不可能再編寫代碼了(嚴重影響了程序員的開發效率:所有掌握這些細節可能須要一萬年....)

  其二:而且管理這些部件並加以優化使用,是一件極富挑戰性的工做,因而,計算安裝了一層軟件(系統軟件),稱爲操做系統。它的任務就是爲用戶程序提供一個更好、更簡單、更清晰的計算機模型,並管理剛纔提到的全部設備。

  總結:

  程序員沒法把全部的硬件操做細節都瞭解到,管理這些硬件而且加以優化使用是很是繁瑣的工做,這個繁瑣的工做就是操做系統來乾的,有了他,程序員就從這些繁瑣的工做中解脫了出來,只須要考慮本身的應用軟件的編寫就能夠了,應用軟件直接使用操做系統提供的功能來間接使用硬件。

  精簡的說的話,操做系統就是一個協調、管理和控制計算機硬件資源和軟件資源的控制程序。

 
 
 
#一:隱藏了硬件調用接口,爲應用程序員提供調用硬件資源的更好,更簡單,更清晰的模型(系統調用接口)。
應用程序員有了這些接口後,就不用再考慮操做硬件的細節,專心開發本身的應用程序便可。 例如:操做系統提供了文件這個抽象概念,對文件的操做就是對磁盤的操做,
有了文件咱們無需再去考慮關於磁盤的讀寫控制(好比控制磁盤轉動,移動磁頭讀寫數據等細節), #二:將應用程序對硬件資源的競態請求變得有序化 例如:不少應用軟件實際上是共享一套計算機硬件,
比方說有可能有三個應用程序同時須要申請打印機來輸出內容,
那麼a程序競爭到了打印機資源就打印,而後多是b競爭到打印機資源,也多是c,這就致使了無序,
打印機可能打印一段a的內容而後又去打印c...,操做系統的一個功能就是將這種無序變得有序。
 
 
 
  進程:
 

顧名思義,進程即正在執行的一個過程。進程是對正在運行程序的一個抽象。

進程的概念起源於操做系統,是操做系統最核心的概念,也是操做系統提供的最古老也是最重要的抽象概念之一。操做系統的其餘全部內容都是圍繞進程的概念展開的。

因此想要真正瞭解進程,必須事先了解操做系統,點擊進入    

PS:即便能夠利用的cpu只有一個(早期的計算機確實如此),也能保證支持(僞)併發的能力。將一個單獨的cpu變成多個虛擬的cpu(多道技術:時間多路複用和空間多路複用+硬件上支持隔離),沒有進程的抽象,現代計算機將不復存在。

 
#一 操做系統的做用:
    1:隱藏複雜的硬件接口,提供良好的抽象接口
    2:管理、調度進程,而且將多個進程對硬件的競爭變得有序

#二 多道技術:
    1.產生背景:針對單核,實現併發
    ps:
    如今的主機通常是多核,那麼每一個核都會利用多道技術
    有4個cpu,運行於cpu1的某個程序遇到io阻塞,會等到io結束再從新調度,會被調度到4個
    cpu中的任意一個,具體由操做系統調度算法決定。
    
    2.空間上的複用:如內存中同時有多道程序
    3.時間上的複用:複用一個cpu的時間片
       強調:遇到io切,佔用cpu時間過長也切,核心在於切以前將進程的狀態保存下來,這樣
            才能保證下次切換回來時,能基於上次切走的位置繼續運行

 

 什麼是進程:

進程(Process)是計算機中的程序關於某數據集合上的一次運行活動,是系統進行資源分配和調度的基本單位,操做系統結構的基礎。在早期面向進程設計的計算機結構中,進程是程序的基本執行實體;在當代面向線程設計的計算機結構中,進程是線程的容器。程序是指令、數據及其組織形式的描述,進程是程序的實體

狹義定義: 進程是正在運行的程序的實例(an instance of a computer program that is being executed)。
廣義定義:進程是一個具備必定獨立功能的程序關於某個數據集合的一次運行活動。它是 操做系統動態執行的 基本單元,在傳統的 操做系統中, 進程既是基本的分配單元,也是基本的執行單元
進程的概念:
第一,進程是一個實體。每個進程都有它本身的地址空間,通常狀況下,包括文本區域(text region)、
數據區域(data region)和堆棧(stack region)。
文本區域存儲處理器執行的代碼;數據區域存儲變量和進程執行期間使用的動態分配的內存;
堆棧區域存儲着活動過程調用的指令和本地變量。 第二,進程是一個「執行中的程序」。程序是一個沒有生命的實體,只有處理器賦予程序生命時(操做系統執行之),它才能成爲一個活動的實體,咱們稱其爲進程。
第三, 進程是操做系統中最基本、重要的概念。
是多道程序系統出現後,爲了刻畫系統內部出現的動態狀況,描述系統內部各道程序的活動規律引進的一個概念,全部多道程序設計操做系統都創建在進程的基礎上。

 

 
 進程的特徵:
動態性:進程的實質是程序在多道程序系統中的一次執行過程,進程是動態產生,動態消亡的。
併發性:任何進程均可以同其餘進程一塊兒併發執行
獨立性:進程是一個能獨立運行的基本單位,同時也是系統分配資源和調度的獨立單位;
異步性:因爲進程間的相互制約,使進程具備執行的間斷性,即進程按各自獨立的、不可預知的速度向前推動
結構特徵:進程由程序、數據和進程控制塊三部分組成。
多個不一樣的進程能夠包含相同的程序:一個程序在不一樣的數據集裏就構成不一樣的進程,能獲得不一樣的結果;可是執行過程當中,程序不能發生改變。

 

 進程與程序的區別:
 
程序是指令和數據的有序集合,其自己沒有任何運行的含義,是一個靜態的概念。 而進程是程序在處理機上的一次執行過程,它是一個動態的概念。 程序能夠做爲一種軟件資料長期存在,而進程是有必定生命期的。 程序是永久的,進程是暫時的。
 
 注意:同一個程序執行兩次,就會在操做系統中出現兩個進程,因此咱們能夠同事運行一個軟件,
分別作不一樣的事情也不會混亂,
 
 
 
 

進程調度

 要想多個進程交替運行,操做系統必須對這些進程進行調度,這個調度也不是隨即進行的,而是須要遵循必定的法則,由此就有了進程的調度算法。
 
1, 先來先服務調度算法:
先來先服務(FCFS)調度算法是一種最簡單的調度算法,該算法既可用於做業調度,也可用於進程調度。
FCFS算法比較有利於長做業(進程),而不利於短做業(進程)。
由此可知,本算法適合於CPU繁忙型做業,而不利於I/O繁忙型的做業(進程)。
 2,短做業優先調度算法
短做業(進程)優先調度算法(SJ/PF)是指對短做業或短進程優先調度的算法,
該算法既可用於做業調度,也可用於進程調度。
但其對長做業不利;不能保證緊迫性做業(進程)被及時處理;做業的長短只是被估算出來的。
 3,時間片輪轉法:
時間片輪轉(Round Robin,RR)法的基本思路是讓每一個進程在就緒隊列中的等待時間與享受服務的時間成比例。
在時間片輪轉法中,須要將CPU的處理時間分紅固定大小的時間片.
4,
前面介紹的各類用做進程調度的算法都有必定的侷限性。如短進程優先的調度算法,僅照顧了短進程而忽略了長進程,並且若是並未指明進程的長度,則短進程優先和基於進程長度的搶佔式調度算法都將沒法使用。
而多級反饋隊列調度算法則沒必要事先知道各類進程所需的執行時間,並且還能夠知足各類類型進程的須要,於是它是目前被公認的一種較好的進程調度算法。在採用多級反饋隊列調度算法的系統中,調度算法的實施過程以下所述。
(1) 應設置多個就緒隊列,併爲各個隊列賦予不一樣的優先級。第一個隊列的優先級最高,第二個隊列次之,其他各隊列的優先權逐個下降。該算法賦予各個隊列中進程執行時間片的大小也各不相同,在優先權愈高的隊列中,爲每一個進程所規定的執行時間片就愈小。例如,第二個隊列的時間片要比第一個隊列的時間片長一倍,……,第i+1個隊列的時間片要比第i個隊列的時間片長一倍。
(2) 當一個新進程進入內存後,首先將它放入第一隊列的末尾,按FCFS原則排隊等待調度。當輪到該進程執行時,如它能在該時間片內完成,即可準備撤離系統;若是它在一個時間片結束時還沒有完成,調度程序便將該進程轉入第二隊列的末尾,再一樣地按FCFS原則等待調度執行;若是它在第二隊列中運行一個時間片後仍未完成,再依次將它放入第三隊列,……,如此下去,當一個長做業(進程)從第一隊列依次降到第n隊列後,在第n 隊列便採起按時間片輪轉的方式運行。

(3) 僅當第一隊列空閒時,調度程序才調度第二隊列中的進程運行;僅當第1~(i-1)隊列均空時,纔會調度第i隊列中的進程運行。若是處理機正在第i隊列中爲某進程服務時,又有新進程進入優先權較高的隊列(第1~(i-1)中的任何一個隊列),則此時新進程將搶佔正在運行進程的處理機,即由調度程序把正在運行的進程放回到第i隊列的末尾,把處理機分配給新到的高優先權進程。
多級反饋隊列

 

進程的並行與併發

 

並行 : 並行是指二者同時執行,好比賽跑,兩我的都在不停的往前跑;(資源夠用,好比三個線程,四核的CPU )

併發 : 併發是指資源有限的狀況下,二者交替輪流使用資源,好比一段路(單核CPU資源)同時只能過一我的,A走一段後,讓給B,B用完繼續給A ,交替使用,目的是提升效率。

區別:

並行是從微觀上,也就是在一個精確的時間片刻,有不一樣的程序在執行,這就要求必須有多個處理器。
併發是從宏觀上,在一個時間段上能夠看出是同時執行的,好比一個服務器同時處理多個session

 
 

同步異步阻塞非阻塞

 
 進程的幾個狀態:就緒,運行,阻塞.
 
 
 
 
 

(1)就緒(Ready)狀態

  當進程已分配到除CPU之外的全部必要的資源,只要得到處理機即可當即執行,這時的進程狀態稱爲就緒狀態。

  (2)執行/運行(Running)狀態當進程已得到處理機,其程序正在處理機上執行,此時的進程狀態稱爲執行狀態。

  (3)阻塞(Blocked)狀態正在執行的進程,因爲等待某個事件發生而沒法執行時,便放棄處理機而處於阻塞狀態。引發進程阻塞的事件可有多種,例如,等待I/O完成、申請緩衝區不能知足、等待信件(信號)等。

 
 
 

同步和異步

所謂同步就是一個任務的完成須要依賴另一個任務時,只有等待被依賴的任務完成後,依賴的任務才能算完成,這是一種可靠的任務序列。要麼成功都成功,失敗都失敗,兩個任務的狀態能夠保持一致。

  所謂異步是不須要等待被依賴的任務完成,只是通知被依賴的任務要完成什麼工做,依賴的任務也當即執行,只要本身完成了整個任務就算完成了。至於被依賴的任務最終是否真正完成,依賴它的任務沒法肯定,因此它是不可靠的任務序列

 

阻塞與非阻塞

阻塞:中止,
非阻塞:不中止,繼續運行,
 

同步/異步與阻塞/非阻塞

1,同步阻塞形式:效率最低
2,異步阻塞形式:異步操做是能夠被阻塞住的,只不過它不是在處理消息時阻塞,
而是在等待消息通知是被阻塞.
3,同步非阻塞形式:效率低下,
4,異步非阻塞形式:效率高,
相關文章
相關標籤/搜索