计算机基础知识-操作系统
1.2 操作系統(tǒng)
用來(lái)操作硬件,了解每一個(gè)硬件的作用并熟知其物理特性及使用方法(這是一個(gè)極其繁瑣、龐大的工作)。
桌面很占用系統(tǒng)資源
為什么要有操作系統(tǒng)
一般而言,現(xiàn)代計(jì)算機(jī)系統(tǒng)是一個(gè)復(fù)雜的系統(tǒng)。如果每位應(yīng)用程序員都必須掌握該系統(tǒng)所有的細(xì)節(jié),那就不可能再編寫(xiě)代碼了(嚴(yán)重影響了程序員的開(kāi)發(fā)效率:全部掌握這些細(xì)節(jié)可能需要一萬(wàn)年....),并且管理這些部件并加以優(yōu)化使用,是一件極富挑戰(zhàn)性的工作,于是,計(jì)算機(jī)安裝了一層軟件(系統(tǒng)軟件),稱為操作系統(tǒng)。它的任務(wù)就是為用戶程序提供一個(gè)更好、更簡(jiǎn)單、更清晰的計(jì)算機(jī)模型,并管理所有設(shè)備。
總結(jié):程序員無(wú)法把所有的硬件操作細(xì)節(jié)都了解到,管理這些硬件并且加以優(yōu)化使用是非常繁瑣的工作,這個(gè)繁瑣的工作就是操作系統(tǒng)來(lái)干的,有了他,程序員就從這些繁瑣的工作中解脫了出來(lái),只需要考慮自己的應(yīng)用軟件的編寫(xiě)就可以了,應(yīng)用軟件直接使用操作系統(tǒng)提供的功能來(lái)間接使用硬件。
什么是操作系統(tǒng)
操作系統(tǒng)(Operating System,簡(jiǎn)稱OS)是管理和控制計(jì)算機(jī)硬件與軟件資源的計(jì)算機(jī)程序,是直接運(yùn)行在“裸機(jī)”上的最基本的系統(tǒng)軟件,任何其他軟件都必須在操作系統(tǒng)的支持下才能運(yùn)行。
精簡(jiǎn)的說(shuō)的話,操作系統(tǒng)就是一個(gè)協(xié)調(diào)、管理和控制計(jì)算機(jī)硬件資源和軟件資源的控制程序。
操作系統(tǒng)的位置
操作系統(tǒng)位于計(jì)算機(jī)硬件與應(yīng)用軟件之間,本質(zhì)也是一個(gè)軟件。操作系統(tǒng)由操作系統(tǒng)的內(nèi)核(運(yùn)行于內(nèi)核態(tài),管理硬件資源)以及系統(tǒng)調(diào)用(運(yùn)行于用戶態(tài),為應(yīng)用程序員寫(xiě)的應(yīng)用程序提供系統(tǒng)調(diào)用接口)兩部分組成,所以,單純的說(shuō)操作系統(tǒng)是運(yùn)行于內(nèi)核態(tài)的,是不準(zhǔn)確的。
操作系統(tǒng)的功能:
一、隱藏了丑陋的硬件調(diào)用接口
為應(yīng)用程序員提供調(diào)用硬件資源的更好,更簡(jiǎn)單,更清晰的模型(系統(tǒng)調(diào)用接口)。應(yīng)用程序員有了這些接口后,就不用再考慮操作硬件的細(xì)節(jié),專心開(kāi)發(fā)自己的應(yīng)用程序即可。
比如,磁盤(pán)資源的抽象是文件系統(tǒng)(C盤(pán),D盤(pán),E盤(pán)...下的目錄及文件),有了文件的概念,我們直接打開(kāi)文件,讀或者寫(xiě)就可以了,無(wú)需關(guān)心記錄是否應(yīng)該使用修正的調(diào)頻記錄方式,以及當(dāng)前電機(jī)的狀態(tài)等細(xì)節(jié)。文件、文件夾都只是邏輯意義存在的,不存在實(shí)體。文件本質(zhì)上是操作系統(tǒng)封裝好的對(duì)硬盤(pán)的操作。
需要指出的是,操作系統(tǒng)的實(shí)際客戶是應(yīng)用程序(應(yīng)用程序員負(fù)責(zé)開(kāi)發(fā)應(yīng)用程序,因而也可以說(shuō)應(yīng)用程序員是操作系統(tǒng)的客戶)。應(yīng)用程序直接與操作系統(tǒng)及其抽象打交道。而最終,用戶則是與應(yīng)用程序(即用戶接口)打交道,或者是命令行shell或者是圖形界面(比如桌面),它們都只是運(yùn)行于操作系統(tǒng)之上的應(yīng)用軟件,并不屬于操作系統(tǒng)。
二、將應(yīng)用程序?qū)τ布Y源的競(jìng)爭(zhēng)請(qǐng)求變得有序化
例如:很多應(yīng)用軟件其實(shí)是共享一套計(jì)算機(jī)硬件,比方說(shuō)有可能有三個(gè)應(yīng)用程序同時(shí)需要申請(qǐng)打印機(jī)來(lái)輸出內(nèi)容,那么a程序競(jìng)爭(zhēng)到了打印機(jī)資源就打印,然后可能是b競(jìng)爭(zhēng)到打印機(jī)資源,也可能是c,這就導(dǎo)致了無(wú)序,打印機(jī)可能打印一段a的內(nèi)容然后又去打印c...,操作系統(tǒng)的一個(gè)功能就是將這種無(wú)序變得有序。
操作系統(tǒng)與普通軟件的區(qū)別
用戶無(wú)法修改
你不想用暴風(fēng)影音了你可以選擇用迅雷播放器或者干脆自己寫(xiě)一個(gè),但是你無(wú)法寫(xiě)一個(gè)屬于操作系統(tǒng)一部分的程序(時(shí)鐘中斷處理程序),操作系統(tǒng)由硬件保護(hù),不能被用戶修改。
大型、復(fù)雜、長(zhǎng)壽
操作系統(tǒng)與用戶程序的差異并不在于二者所處的地位。特別地,操作系統(tǒng)是一個(gè)大型、復(fù)雜、長(zhǎng)壽的軟件,
- 大型 :linux或windows的源代碼有五百萬(wàn)行數(shù)量級(jí)。按照每頁(yè)50行共1000行的書(shū)來(lái)算,五百萬(wàn)行要有100卷,要用一整個(gè)書(shū)架子來(lái)擺置,這還僅僅是內(nèi)核部分。用戶程序,如GUI,庫(kù)以及基本應(yīng)用軟件(如windows Explorer等),很容易就能達(dá)到這個(gè)數(shù)量的10倍或者20倍之多。
- 長(zhǎng)壽:操作系統(tǒng)很難編寫(xiě),如此大的代碼量,一旦完成,操作系統(tǒng)所有者便不會(huì)輕易扔掉,再寫(xiě)一個(gè)。而是在原有的基礎(chǔ)上進(jìn)行改進(jìn)。(基本上可以把windows95/98/Me看出一個(gè)操作系統(tǒng),而windows NT/2000/XP/Vista則是兩位一個(gè)操作系統(tǒng),對(duì)于用戶來(lái)說(shuō)它們十分相似。還有UNIX以及它的變體和克隆版本也演化了多年,如System V版,Solaris以及FreeBSD等都是Unix的原始版,不過(guò)盡管linux非常依照UNIX模式而仿制,并且與UNIX高度兼容,但是linux具有全新的代碼基礎(chǔ))
操作系統(tǒng)發(fā)展史
第一代計(jì)算機(jī)(1940~1955):真空管和穿孔卡片
第一代計(jì)算機(jī)的產(chǎn)生背景:
第一代之前人類是想用機(jī)械取代人力,第一代計(jì)算機(jī)的產(chǎn)生是計(jì)算機(jī)由機(jī)械時(shí)代進(jìn)入電子時(shí)代的標(biāo)志,從Babbage失敗之后一直到第二次世界大戰(zhàn),數(shù)字計(jì)算機(jī)的建造幾乎沒(méi)有什么進(jìn)展,第二次世界大戰(zhàn)刺激了有關(guān)計(jì)算機(jī)研究的爆炸性進(jìn)展。
lowa州立大學(xué)的john Atanasoff教授和他的學(xué)生Clifford Berry建造了據(jù)認(rèn)為是第一臺(tái)可工作的數(shù)字計(jì)算機(jī)。該機(jī)器使用300個(gè)真空管。大約在同時(shí),Konrad Zuse在柏林用繼電器構(gòu)建了Z3計(jì)算機(jī),英格蘭布萊切利園的一個(gè)小組在1944年構(gòu)建了Colossus,Howard Aiken在哈佛大學(xué)建造了Mark 1,賓夕法尼亞大學(xué)的William Mauchley和他的學(xué)生J.Presper Eckert建造了ENIAC。這些機(jī)器有的是二進(jìn)制的,有的使用真空管,有的是可編程的,但都非常原始,設(shè)置需要花費(fèi)數(shù)秒鐘時(shí)間才能完成最簡(jiǎn)單的運(yùn)算。
- 在這個(gè)時(shí)期,同一個(gè)小組里的工程師們,設(shè)計(jì)、建造、編程、操作及維護(hù)同一臺(tái)機(jī)器,所有的程序設(shè)計(jì)是用純粹的機(jī)器語(yǔ)言編寫(xiě)的,甚至更糟糕,需要通過(guò)成千上萬(wàn)根電纜接到插件板上連成電路來(lái)控制機(jī)器的基本功能。沒(méi)有程序設(shè)計(jì)語(yǔ)言(匯編也沒(méi)有),操作系統(tǒng)則是從來(lái)都沒(méi)聽(tīng)說(shuō)過(guò)。使用機(jī)器的過(guò)程更加原始,詳見(jiàn)下‘工作過(guò)程’
特點(diǎn):
沒(méi)有操作系統(tǒng)的概念
所有的程序設(shè)計(jì)都是直接操控硬件
工作過(guò)程:
程序員在墻上的機(jī)時(shí)表預(yù)約一段時(shí)間,然后程序員拿著他的插件版到機(jī)房里,將自己的插件板街道計(jì)算機(jī)里,這幾個(gè)小時(shí)內(nèi)他獨(dú)享整個(gè)計(jì)算機(jī)資源,后面的一批人都得等著(兩萬(wàn)多個(gè)真空管經(jīng)常會(huì)有被燒壞的情況出現(xiàn))。后來(lái)出現(xiàn)了穿孔卡片,可以將程序?qū)懺诳ㄆ?#xff0c;然后讀入機(jī)而不用插件板
優(yōu)點(diǎn):
程序員在申請(qǐng)的時(shí)間段內(nèi)獨(dú)享整個(gè)資源,可以即時(shí)地調(diào)試自己的程序(有bug可以立刻處理)
缺點(diǎn):
浪費(fèi)計(jì)算機(jī)資源,一個(gè)時(shí)間段內(nèi)只有一個(gè)人用。
注意:
同一時(shí)刻只有一個(gè)程序在內(nèi)存中,被cpu調(diào)用執(zhí)行,比方說(shuō)10個(gè)程序的執(zhí)行,是串行的
第二代計(jì)算機(jī)(1955~1965):晶體管和批處理系統(tǒng)
第二代計(jì)算機(jī)的產(chǎn)生背景:
由于當(dāng)時(shí)的計(jì)算機(jī)非常昂貴,便會(huì)想辦法減少機(jī)時(shí)的浪費(fèi)。通常采用的方法就是批處理系統(tǒng)。
特點(diǎn):
設(shè)計(jì)人員、生產(chǎn)人員、操作人員、程序人員和維護(hù)人員直接有了明確的分工,計(jì)算機(jī)被鎖在專用空調(diào)房間中,由專業(yè)操作人員運(yùn)行,這便是‘大型機(jī)’。有了操作系統(tǒng)的概念;有了程序設(shè)計(jì)語(yǔ)言:FORTRAN語(yǔ)言或匯編語(yǔ)言,寫(xiě)到紙上,然后穿孔打成卡片,再講卡片盒帶到輸入室,交給操作員,然后喝著咖啡等待輸出接口。
-
工作過(guò)程:插圖
-
第二代如何解決第一代的問(wèn)題/缺點(diǎn):
- 把一堆人的輸入攢成一大波輸入,
- 然后順序計(jì)算(這是有問(wèn)題的,但是第二代計(jì)算也沒(méi)有解決)
-
把一堆人的輸出攢成一大波輸出
-
現(xiàn)代操作系統(tǒng)的前身:(見(jiàn)圖)
-
優(yōu)點(diǎn):批處理,節(jié)省了機(jī)時(shí)
- 缺點(diǎn): 1.整個(gè)流程需要人參與控制,將磁帶搬來(lái)搬去(中間倆小人)
2.計(jì)算的過(guò)程仍然是順序計(jì)算-->串行
3.程序員原來(lái)獨(dú)享一段時(shí)間的計(jì)算機(jī),現(xiàn)在必須被統(tǒng)一規(guī)劃到一批作業(yè)中,等待結(jié)果和重新調(diào)試的過(guò)程都需要等同批次的其他程序都運(yùn)作完才可以(這極大的影響了程序的開(kāi)發(fā)效率,無(wú)法及時(shí)調(diào)試程序)
第三代計(jì)算機(jī)(1965~1980):集成電路芯片和多道程序設(shè)計(jì)
第三代計(jì)算機(jī)的產(chǎn)生背景:
20世紀(jì)60年代初期,大多數(shù)計(jì)算機(jī)廠商都有兩條完全不兼容的生產(chǎn)線。一條是面向字的:大型的科學(xué)計(jì)算機(jī),如IBM 7094,見(jiàn)上圖,主要用于科學(xué)計(jì)算和工程計(jì)算。另外一條是面向字符的:商用計(jì)算機(jī),如IBM 1401,見(jiàn)上圖,主要用于銀行和保險(xiǎn)公司從事磁帶歸檔和打印服務(wù)。開(kāi)發(fā)和維護(hù)完全不同的產(chǎn)品是昂貴的,不同的用戶對(duì)計(jì)算機(jī)的用途也不相同。
IBM公司試圖通過(guò)引入system/360系列來(lái)同時(shí)滿足科學(xué)計(jì)算和商業(yè)計(jì)算,360系列低檔機(jī)與1401相當(dāng),高檔機(jī)比7094功能強(qiáng)很多,不同的性能賣不同的價(jià)格。360是第一個(gè)采用了(小規(guī)模)芯片(集成電路)的主流機(jī)型,與采用晶體管的第二代計(jì)算機(jī)相比,性價(jià)比有了很大的提高。這些計(jì)算機(jī)的后代仍在大型的計(jì)算機(jī)中心里使用,此乃現(xiàn)在服務(wù)器的前身,這些服務(wù)器每秒處理不小于千次的請(qǐng)求。
-
如何解決第二代計(jì)算機(jī)的問(wèn)題1:
卡片被拿到機(jī)房后能夠很快的將作業(yè)從卡片讀入磁盤(pán),于是任何時(shí)刻當(dāng)一個(gè)作業(yè)結(jié)束時(shí),操作系統(tǒng)就能將一個(gè)作業(yè)從磁帶讀出,裝進(jìn)空出來(lái)的內(nèi)存區(qū)域運(yùn)行,這種技術(shù)叫做同時(shí)的外部設(shè)備聯(lián)機(jī)操作:SPOOLING,該技術(shù)同時(shí)用于輸出。當(dāng)采用了這種技術(shù)后,就不在需要IBM1401機(jī)了,也不必將磁帶搬來(lái)搬去了(中間倆小人不再需要)。 -
如何解決第二代計(jì)算機(jī)的問(wèn)題2:
第三代計(jì)算機(jī)的操作系統(tǒng)廣泛應(yīng)用了第二代計(jì)算機(jī)的操作系統(tǒng)沒(méi)有的關(guān)鍵技術(shù):多道技術(shù)
多道技術(shù)
多道技術(shù)產(chǎn)生的技術(shù)背景:cpu在執(zhí)行一個(gè)任務(wù)的過(guò)程中,若需要操作硬盤(pán),則發(fā)送操作硬盤(pán)的指令,指令一旦發(fā)出,硬盤(pán)上的機(jī)械手臂滑動(dòng)讀取數(shù)據(jù)到內(nèi)存中,這一段時(shí)間,cpu需要等待,時(shí)間可能很短,但對(duì)于cpu來(lái)說(shuō)已經(jīng)很長(zhǎng)很長(zhǎng),長(zhǎng)到可以讓cpu做很多其他的任務(wù),如果我們讓cpu在這段時(shí)間內(nèi)切換到去做其他的任務(wù),這樣cpu不就充分利用了嗎。
內(nèi)存支持多個(gè)程序
CPU在多個(gè)程序之間來(lái)回切換
切換條件:單個(gè)程序運(yùn)行時(shí)間過(guò)長(zhǎng) 遇到程序需求I/O操作(I/O阻塞)
- 多道技術(shù)中的多道指的是多道程序,多道技術(shù)的實(shí)現(xiàn)是為了解決多個(gè)程序競(jìng)爭(zhēng)或者說(shuō)共享同一個(gè)資源(比如cpu)的有序調(diào)度問(wèn)題,解決方式即多路復(fù)用,多路復(fù)用分為時(shí)間上的復(fù)用和空間上的復(fù)用。
- 空間上的復(fù)用:將內(nèi)存分為幾部分,每個(gè)部分放入一個(gè)程序,這樣,同一時(shí)間內(nèi)存中就有了多道程序。
- 時(shí)間上的復(fù)用:當(dāng)一個(gè)程序在等待I/O時(shí),另一個(gè)程序可以使用cpu,如果內(nèi)存中可以同時(shí)存放足夠多的作業(yè),則cpu的利用率可以接近100%,類似于我們小學(xué)數(shù)學(xué)所學(xué)的統(tǒng)籌方法。
- 空間上的復(fù)用最大的問(wèn)題是:程序之間的內(nèi)存必須從物理級(jí)別分割,由操作系統(tǒng)控制。如果內(nèi)存彼此不分割,則一個(gè)程序可以訪問(wèn)另外一個(gè)程序的內(nèi)存,
首先喪失的是安全性,比如你的qq程序可以訪問(wèn)操作系統(tǒng)的內(nèi)存,這意味著你的qq可以拿到操作系統(tǒng)的所有權(quán)限。
其次喪失的是穩(wěn)定性,某個(gè)程序崩潰時(shí)有可能把別的程序的內(nèi)存也給回收了,比方說(shuō)把操作系統(tǒng)的內(nèi)存給回收了,則操作系統(tǒng)崩潰。
第三代計(jì)算機(jī)的操作系統(tǒng)仍然是批處理。同時(shí)許多程序員懷念第一代獨(dú)享的計(jì)算機(jī),可以即時(shí)調(diào)試自己的程序。為了滿足程序員們很快可以得到響應(yīng),出現(xiàn)了分時(shí)操作系統(tǒng)
- 如何解決第二代計(jì)算機(jī)的問(wèn)題3:
分時(shí)操作系統(tǒng):多個(gè)聯(lián)機(jī)終端+多道技術(shù)
20個(gè)客戶端同時(shí)加載到內(nèi)存,有17在思考,3個(gè)在運(yùn)行,cpu就采用多道的方式處理內(nèi)存中的這3個(gè)程序,由于客戶提交的一般都是簡(jiǎn)短的指令而且很少有耗時(shí)長(zhǎng)的,索引計(jì)算機(jī)能夠?yàn)樵S多用戶提供快速的交互式服務(wù),所有的用戶都以為自己獨(dú)享了計(jì)算機(jī)資源
CTTS:麻省理工(MIT)在一臺(tái)改裝過(guò)的7094機(jī)上開(kāi)發(fā)成功的,CTSS兼容分時(shí)系統(tǒng),第三代計(jì)算機(jī)廣泛采用了必須的保護(hù)硬件(程序之間的內(nèi)存彼此隔離)之后,分時(shí)系統(tǒng)才開(kāi)始流行
MIT,貝爾實(shí)驗(yàn)室和通用電氣在CTTS成功研制后決定開(kāi)發(fā)能夠同時(shí)支持上百終端的MULTICS(其設(shè)計(jì)者著眼于建造滿足波士頓地區(qū)所有用戶計(jì)算需求的一臺(tái)機(jī)器),很明顯真是要上天啊,最后摔死了。
后來(lái)一位參加過(guò)MULTICS研制的貝爾實(shí)驗(yàn)室計(jì)算機(jī)科學(xué)家Ken Thompson開(kāi)發(fā)了一個(gè)簡(jiǎn)易的,單用戶版本的MULTICS,這就是后來(lái)的UNIX系統(tǒng)。基于它衍生了很多其他的Unix版本,為了使程序能在任何版本的unix上運(yùn)行,IEEE提出了一個(gè)unix標(biāo)準(zhǔn),即posix(可移植的操作系統(tǒng)接口Portable Operating System Interface)
后來(lái),在1987年,出現(xiàn)了一個(gè)UNIX的小型克隆,即minix,用于教學(xué)使用。芬蘭學(xué)生Linus Torvalds基于它編寫(xiě)了Linux
第四代計(jì)算機(jī)(1980~至今):個(gè)人計(jì)算機(jī)
略
總結(jié):
操作系統(tǒng)的兩大作用:
作用一:為應(yīng)用程序提供如何使用硬件資源的抽象
作用二:把多個(gè)程序?qū)τ布母?jìng)爭(zhēng)變得有序化(管理應(yīng)用)(匯編程序?qū)懙拇a控制)
多道技術(shù)
多道指的是多個(gè)程序,多道技術(shù)是為了解決多個(gè)程序?qū)蚕碣Y源的有效調(diào)度,采用多路復(fù)用實(shí)現(xiàn),多路復(fù)用分為空間上的復(fù)用:即對(duì)內(nèi)存實(shí)現(xiàn)物理級(jí)別的分割,每一塊內(nèi)存存放一個(gè)程序;時(shí)間上的復(fù)用:CPU在不同程序之間切換,切換條件有兩個(gè),一個(gè)是當(dāng)單個(gè)應(yīng)用程序占用CPU時(shí)間過(guò)長(zhǎng),二是遇到程序I/O阻塞
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/richiewlq/p/8455776.html
總結(jié)
以上是生活随笔為你收集整理的计算机基础知识-操作系统的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Orleans学习总结(二)--创建工程
- 下一篇: [Gradle] 在 Eclipse 下