Python全棧_Day2

來源:互聯網
上載者:User

標籤:無法   維護   .com   關鍵技術   背景   不同的   簡易   過程   面向   

1.為什麼要有作業系統

  電腦硬體系統非常複雜,如果沒有作業系統,程式員開發應用軟體時需要考慮到這些硬體細節,這會大大增加開發難度和影響開發效率,多個軟體同時運行時還會帶來硬體資源搶佔、衝突的問題,另外,不同電腦的硬體有很大差異,如果程式直接跑在硬體上就會有相容問題,可能在A電腦上正常啟動並執行軟體在B電腦上運行時就懵逼了。作業系統的存在就解決了這些問題,他運行在硬體之上,將硬體封裝成統一的平台,對硬體進行有序的管理,為應用軟體提供更好更簡單的運行環境。

2.作業系統的位置

  作業系統處於電腦硬體和應用軟體之間,由作業系統核心和系統調用兩個部分組成,作業系統核心運行於核心態管理電腦硬體,系統調用運行於使用者態為應用程式提供操作硬體的介面。

3. 作業系統的功能

  1. 屏蔽令人煩躁硬體操作細節,這樣開發應用程式時可以更簡單、高效的操作硬體,防止程式員因過度用腦迴轉發。

  2. 有時會出現多個應用軟體同時需要使用同一硬體的情況,這時候如果沒有統一調度管理,就會有衝突,作業系統將硬體請求統一管理實現有序化

4. 作業系統的發展第一代(1940~1955):真空管和穿孔卡片

第一代電腦的產生背景:

第一代之前人類是想用機械取代人力,第一代電腦的產生是電腦由機械時代進入電子時代的標誌,從Babbage失敗之後一直到第二次世界大戰,數字電腦的建造幾乎沒有什麼進展,第二次世界大戰刺激了有關電腦研究的爆炸性進展。

lowa州立大學的john Atanasoff教授和他的學生Clifford Berry建造了據認為是第一台可工作的數字電腦。該機器使用300個真空管。大約在同時,Konrad Zuse在柏林用繼電器構建了Z3電腦,英格蘭布萊切利園的一個小組在1944年構建了Colossus,Howard Aiken在哈佛大學建造了Mark 1,賓夕法尼亞大學的William Mauchley和他的學生J.Presper Eckert建造了ENIAC。這些機器有的是二進位的,有的使用真空管,有的是可程式化的,但都非常原始,設定需要花費數秒鐘時間才能完成最簡單的運算。

在這個時期,同一個小組裡的工程師們,設計、建造、編程、操作及維護同一台機器,所有的程式設計是用純粹的機器語言編寫的,甚至更糟糕,需要通過成千上萬根電纜街道擴充卡上連成電路來控制機器的準系統。沒有程式設計語言(彙編也沒有),作業系統則是從來都沒聽說過。使用機器的過程更加原始,詳見下‘工作過程’

特點:
沒有作業系統的概念
所有的程式設計都是由純粹的機器語言編寫的

 

工作過程:
程式員在牆上的機時表預約一段時間,然後程式員拿著他的外掛程式版到機房裡,將自己的擴充卡街道電腦裡,這幾個小時內他獨享整個電腦資源,後面的一批人都得等著(兩萬多個真空管經常會有被燒壞的情況出現)。

後來出現了穿孔卡片,可以將程式寫在卡片上,然後讀入機而不用擴充卡

 

優點:

程式員在申請的時間段內獨享整個資源,即時的調試自己的程式,如果有bug可以即時處理,

缺點:

這對於電腦供應商來說是一種浪費(你買一台電腦4000塊,那 一年中你用365比只用1天,肯定是省成本的,物盡其用)
你有一台電腦你往外租,你一次租2個小時,那麼即便是使用者在第一個小時就已經完成工作了,剩下的1個小時你的電腦就空閑了,而一天你只能租給12個人,相當於要浪費12個小時。

 

注意:同一時刻只有一個程式在記憶體中,被cpu調用執行,比方說10個程式的執行,是串列的

第二代電腦(1955~1965):晶體管和批處理系統

第二代電腦的產生背景:

由於當時的電腦非常昂貴,自認很自然的想辦法較少機時的浪費。通常採用的方法就是批處理系統。

特點:
設計人員、生產人員、操作人員、程式人員和維護人員直接有了明確的分工,電腦被鎖在專用空調房間中,由專業操作人員運行,這便是‘大型主機’。

有了作業系統的概念,就是最早期的作業系統:是人力與電腦結合的系統,需要人蔘與。

有了程式設計語言:FORTRAN語言或組合語言,寫到紙上,然後穿孔打成卡片,再講卡片盒帶到輸入室,交給操作員,然後喝著咖啡等待輸出介面

工作過程:插圖

第一代電腦的問題是:
人機互動太多了(人機互動過程:輸入-》計算-》輸出)
一個人的互動:輸入-》計算-》輸出

10個人的互動:
輸入-》計算-》輸出
輸入-》計算-》輸出
輸入-》計算-》輸出
輸入-》計算-》輸出
輸入-》計算-》輸出

第二代如何解決第一代的問題:
1.把一堆人的輸入攢成一大波輸入,
2.然後順序計算(這是有問題的,但是第二代計算也沒有解決)
3.把一堆人的輸出攢成一大波輸出

 

現代作業系統的前身:

在收集了大約一個小時的批量作業之後,這些卡片被讀入磁帶,然後磁帶被送到機房裡並裝到磁帶上。然後磁帶被送到機房裡並裝到磁帶機上。隨後,操作員裝入一個特殊的程式,它負責從磁帶上讀入第一個作業(job,一個或一組程式)並運行,其輸出寫到第二個磁帶上,而且不列印。每個作業結束後,作業系統自動的從磁帶上讀入下一個作業並且運行。當一整批的作業全部結束後,操作員去下輸入和輸出磁帶,講輸入磁帶換成下一批作業,並且把輸出磁帶拿到一台1041機器上進行離線(不與主要電腦聯機)列印,這一套需要人蔘的情況下機器才能啟動並執行系統乃現代作業系統的前身

 

優點:批處理,節省了機時
缺點:
1.整個流程需要人蔘與控制,將磁帶搬來搬去(中間倆小人)

2.計算的過程仍然是順序計算-》串列

3.程式員原來獨享一段時間的電腦,現在必須被統一規划到一批作業中,等待結果和重新調試的過程都需要等同批次的其他程式都運作完才可以(這極大的影響了程式的開發效率,無法及時偵錯工具)

第三代電腦(1965~1980):整合電路晶片和多道程式設計

第三代電腦的產生背景:

20世紀60年代初期,大多數電腦廠商都有兩條完全不相容的生產線。

一條是面向字的:大型的科學電腦,如IBM 7094,見,主要用於科學計算和工程計算

另外一條是面向字元的:商用電腦,如IBM 1401,見,主要用於銀行和保險公司從事磁帶歸檔和列印服務

開發和維護完全不同的產品是昂貴的,同時不同的使用者對電腦的用途不同。

IBM公司試圖通過引入system/360系列來同時滿足科學計算和商業計算,360系列低檔機與1401相當,高檔機比7094功能強很多,不同的效能賣不同的價格

360是第一個採用了(小規模)晶片(整合電路)的主流機型,與採用晶體管的第二代電腦相比,性價比有了很大的提高。這些電腦的後代仍在大型的電腦中心裡使用,此乃現在伺服器的前身,這些伺服器每秒處理不小於千次的請求。

如何解決第二代電腦的問題1:
卡片被拿到機房後能夠很快的將作業從卡片讀入磁碟,於是任何時刻當一個作業結束時,作業系統就能將一個作業從磁帶讀出,裝進空出來的記憶體地區運行,這種技術叫做
同時的外部裝置聯機操作:SPOOLING,該技術同時用於輸出。當採用了這種技術後,就不在需要IBM1401機了,也不必將磁帶搬來搬去了(中間倆小人不再需要)

如何解決第二代電腦的問題2:

第三代電腦的作業系統廣泛應用了第二代電腦的作業系統沒有的關鍵技術:多道技術
多道技術(詳見第七節):

多道技術中的多道指的是多個程式,多道技術的實現是為瞭解決多個程式競爭或者說共用同一個資源(比如cpu)的有序調度問題,解決方式即多工,多工分為時間上的複用和空間上的複用。

空間上的複用:將記憶體分為幾部分,每個部分放入一個程式,這樣,同一時間記憶體中就有了多道程式。

 

時間上的複用:當一個程式在等待I/O時,另一個程式可以使用cpu,如果記憶體中可以同時存放足夠多的作業,則cpu的利用率可以接近100%,類似於我們小學數學所學的統籌方法

空間上的複用最大的問題是:程式直接的記憶體必須分割,這種分割在硬體層面實現,由作業系統控制實現。如果記憶體彼此不分割,則一個程式可以訪問另外一個程式的記憶體,

首先喪失的是安全性,比如你的qq程式可以訪問作業系統的記憶體,這意味著你的qq可以拿到作業系統的所有許可權。

其次喪失的是穩定性,某個程式崩潰時有可能把別人的記憶體也給回收了,比方說把作業系統的記憶體給回收了,則作業系統崩潰。

第三代電腦的作業系統仍然是批處理

許多程式員懷念第一代獨享的電腦,可以即時調試自己的程式。為了滿足程式員們很快可以得到響應,出現了分時作業系統

如何解決第二代電腦的問題3:

分時作業系統:
多個聯機終端+多道技術

20個用戶端同時載入到記憶體,有17在思考,3個在運行,cpu就採用多道的方式處理記憶體中的這3個程式,由於客戶提交的一般都是簡短的指令而且很少有耗時間長度的,索引電腦能夠為許多使用者提供快速的互動式服務,所有的使用者都以為自己獨享了電腦資源

CTTS:麻省理工(MIT)在一台改裝過的7094機上開發成功的,CTSS相容分時系統,第三代電腦廣泛採用了必須的保護硬體(程式之間的記憶體彼此隔離)之後,分時系統才開始流行

MIT,貝爾實驗室和通用電氣在CTTS成功研製後決定開發能夠同時支援上百終端的MULTICS(其設計者著眼於建造滿足波士頓地區所有使用者計算需求的一台機器),很明顯真是要上天啊,最後摔死了。

後來一位參加過MULTICS研製的貝爾實驗室電腦科學家Ken Thompson開發了一個簡易的,單使用者版本的MULTICS,這就是後來的UNIX系統。基於它衍生了很多其他的Unix版本,為了使程式能在任何版本的unix上運行,IEEE提出了一個unix標準,即posix(可移植的作業系統介面Portable Operating System Interface)

後來,在1987年,出現了一個UNIX的小型複製,即minix,用於教學使用。芬蘭學生Linus Torvalds基於它編寫了Linux

第四代電腦(1980~至今):個人電腦

略 

5. 多道技術

  處理來自多個程式發起的多個(多個即多路)共用(共用即複用)資源的請求,簡稱多工,他的實現方式有兩種:

  1.時間上的複用

  當一個資源在時間上複用時,不同的程式或使用者輪流使用它,第一個程式擷取該資源使用結束後,在輪到第二個。。。第三個。。。

  例如當多個程式同時需要在CPU上運行時,作業系統每隔一段很短的時間輪流執行這些任務或者在某個程式暫時不需要CPU時(如正在等待硬碟讀取),則先執行下一個任務,由於任務間切換時間非常短,給人的感覺這些任務就是同時運行。

  2. 空間上的複用  

  每個客戶都擷取了一個大的資源中的一小部分資源,從而減少了排隊等待資源的時間。

  例如:多個啟動並執行程式同時進入記憶體,硬體層面提供保護機制來確保各自的記憶體是分割開的,且由作業系統控制,這比一個程式獨佔記憶體一個一個排隊進入記憶體效率要高的多。

有關空間複用的其他資源還有磁碟,在許多系統中,一個磁碟同時為許多使用者儲存檔案。分配磁碟空間並且記錄誰正在使用哪個磁碟塊是作業系統資源管理的典型任務。

  

Python全棧_Day2

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.