網路城邦
上一篇 回創作列表 下一篇   字體:
作業系統筆記(1) 電腦系統
2020/10/04 22:28:57瀏覽2672|回應0|推薦0

ch.1

1. 認識電腦系統

John von Neumann在西元1945年發表「First Draft of a Report on the EDVAC,裡面首度揭示所謂的儲存程式電腦(stored-program computer)的架構,電腦和其他的電器用品一樣,是由固定的電子零件組成的,但是電腦有一個很特殊的地方,就是它所表現出來的功能會因為裡頭程式(program)的不同而有差異。

西元1940年代,包括John von Neumann在內的幾個科學家成功地發展出所謂的「凡紐曼電腦結構」(von Neumann computer architecture,主要的基礎就是上述的概念,我們現在在認定一個設備是否有電腦的特徵時,依據是以同樣的概念為基礎。

凡紐曼的架構是電腦發展初期相當重要的啟蒙觀念,簡單地說,在這樣的架構下,指令循序地執行,改變儲存於記憶體中的資料,藉此完成工作。

電腦的種類雖然很多,包括大型主機(mainframe),工作站(workstation)、個人電腦與個人數位助理(PDA),但是其功能、結構與原理大同小異。要把電腦分類的話,可以採取很多種方式,例如按照出現的時間先後來分,或是依照所適用的場合來區分。

大型主機的時代龐大的機房裡頭占空間的電腦設備,現在雖然也有機房,可是裡頭的擺設跟從前已經大不相同。

IBM的中型主機(midrange),體積明顯縮小,效能反而增加,而且成本降低,原本龐大的機房似乎一夕之間變得空蕩蕩的,IBM1980年代的AS/400是中型主機中推得非常成功的機種。

工作站(workstation)的發展在於精簡指令集(RISC)的電腦架構的出現,在某些效能的因素上優於複雜指令集(CISC)的電腦架構,因此像DECSUNIBMHP等廠商競相推出新機種,不過真正的關鍵還是在於軟體的發展,因為組織或企業的現有系統必須要能平靜安全地轉移到新的平台上。

其實在個人電腦的發展上並不輸給大型的電腦,尤其是在使用的介面、軟體應用與硬體的外型上都各具巧思,像圖1-12顯示的麥金塔(Macintosh)系列的電腦就相當具有代表性。研究領域的電腦其實種類很多,只是一般人接觸的機會很少。像圖1-13中的Cray 2超級電腦就曾經聲名大噪,不過跟今日的電腦系統比較起來,已經沒有那麼神奇了! 倒是在電腦架構的發展上,多處理器電腦的架構是很活躍的領域,目前有的企業等級的工作站就是多處理器的電腦。類神經網路(neural networks)的研究所用的處理器數目很大,以軟體來模擬時所用的處理器的數目更是超出一般人的想像。

觸控面板(touch screen)的發展是平板電腦與智慧型手機受到歡迎的主要原因之一,另外一個重要的原因在於這一類設備的可攜性,再加上上網的管道越來越方便、社交網站的盛行,使得很多人都成為愛玩觸控的低頭族。平板電腦與智慧型手機都有完整的電腦特徵,而且需要作業系統。

系統程式或是系統軟體(system software)包含很多種程式,主要的功能是支援電腦的作業,這裡的作業跟電腦的內部機制有關。

原始程式是用組合語言(assembly language)寫成的,使用指令集的指令與格式來表示程式的邏輯,例如對暫存器(register)進行資料存取的loadstore指令,進行算術運算的指令,或是比較數值的指令,跟程式語言有很多類似的地方,但是所描述的操作很詳細,跟硬體的工作關係密切

目標程式(object program)含有從原始程式轉換過來的指令(instructions)與資料,而且指定了該把這些物件載入到記憶體的那個位址。有時候可能有數個彼此相關的目標程式需要載入,這時候還需要將目標程式連結(link)在一起。

編譯程式(compiler)是用來處理高階程式語言(high-level programming language)所寫出來的程式。程式語言的最主要功能是用來開發各種軟體系統

除了前面所介紹的系統軟體以外,下面的軟體通常也歸屬為系統軟體,像資料庫管理系統(DBMS, database management system)、文字編輯程式(text editor)與偵錯程式(debugger)等。

2. 作業系統簡介

作業系統的主要功能就是管理電腦的硬體和軟體資源,不管是哪一種硬體,都需要作業系統的功能,才能夠正常的工作;軟體也需要建立在作業系統的基礎上,作業系統也是電腦與使用者之間溝通的橋樑。

1(first generation, 1945-1955) Babbage所設計的電腦並沒有成功地運作,到了1940年代中才開始有一些成功的例子,像哈佛大學的Howard AikenPrincetonJohn von Neumann、賓州大學的J. Presper EckertWilliam Mauchley,以及德國的Konrad Zuse等人所建立的運算機器。當初所用的機械式的裝置得到的系統週期(cycle times)是以秒來計算的,後來改用真空管(vacuum tubes) ,機器非常龐大。當時的程式設計是在機器語言(machine language)的層次上,而且還沒有程式語言與作業系統的概念

2(second generation, 1955-1965) 電腦可以穩定地發揮功能,而且在作業上開始有適當的分工。這個時期的代表是大型主機(mainframes) ,安裝在空調機房內由專業的人員維護與操作,只有大型的組織與企業才有辦法購置使用。使用者通常要把程式打在有孔的卡片上,利用讀卡機輸入執行,然後等待輸出的結果。

3(third generation, 1965-1980) 電腦廠商致力於兩大類的產品製造,一種是科學或工程用的電腦,需要進行大量的運算,另外一種是商業應用的電腦,主要的用途是資料處理。

4(fourth generation, 1980以後)大型積體電路(LSI, large scale integration)的發展促成了個人電腦的製造,以架構來說,個人電腦跟之前的電腦差不多,但是價格上個人電腦要便宜多了

資源的分配與共用方面,常會聽到兩個名詞:

1.時間多工(time-multiplexed) : 指資源依時間的切割來共用,例如每個行程輪流使用CPU一段固定長度的時間。

2.空間多工(space-multiplexed) : 指資源本身分成多個部分讓人共用,例如記憶體空間分成很多部分供多個行程分別使用。

作業系統的實作(implementation)指實際把作業系統寫出來,作業系統是大型的系統程式,要寫出一個作業系統,所需要的理論知識和程式撰寫技巧都非常深入,不是一般人有能力獨自完成的,不過,我們倒是可以從前人的經驗中體驗一下作業系統的實作。

1.處理器模式(processor mode) : CPU在執行工作的時候,有的工作與作業系統有關,有的則來自一般的使用者,這些不同來源的工作在執行時對於系統資源的使用權限是不同的,使得CPU處於不同的執行模式。

2.核心設計(kernel design) : 通常作業系統有一些很重要的功能一定要在所謂的supervisor mode下執行,對於系統資源的使用權限很大。這些功能形成了作業系統的核心,電腦對於核心程式可以完全信任,對於使用者的程式則必須採取保護措施。

3.取得系統服務的方式: 使用者程式可以透過一些方法向kernel取得系統的服務。例如系統呼叫(system call)或是訊息傳送(message passing)

3. 作業系統的分類

早期的大型電腦使用讀卡機(card reader,由於電腦的處理速度遠超過讀卡機的機械速度,CPU經常處於閒置的狀態,作業系統的主要工作是安排程式依序執行到結束的過程,這種環境稱為批次系統(batch system)批次系統的設計很單純,算得上是一種優點,但是並不符合後來越來越複雜的要求。

多重程式處理(multiprogramming,能提升CPU的使用效率。

很多程式可以同時放在磁碟上,這時候那些程式能被移入主記憶體等待執行,就得由作業系統來做工作排程(job scheduling

主記憶體中的那個程式可到CPU中執行,則由CPU排程(CPU scheduling)來決定。 批次系統並未讓使用者與電腦有直接互動的機會,我們現在常用的視窗作業系統是容許互動的,這是分時系統(timesharing system)的由來

分時的意思是把CPU的時間切割,使CPU不會被一個程式拖得太久,分時系統具有多工(multitasking)的能力,雖然一般電腦的CPU只有一個,但在分時的效果下,好像很多程式都一起同時進行中。

<認清分時與多工的觀念>

從多重程式、分時到多工的觀念,似乎使用者越來越輕鬆了,這是因為作業系統背負了更多的責任,由於主記憶體的空間有限,程式有可能暫時要移出主記憶體,為了容納更多的程式,有人發展出虛擬記憶體(virtual memory)的技術,讓磁碟的部分空間當成主記憶體來用。這些新的功能都使作業系統變得更複雜。其實分時系統的觀念早在1960年代就有了,但是真正在作業系統中實現約晚了10年。

個人電腦約在1970年代出現,然後逐漸普及,之前在大型電腦上發展的作業系統很容易移植到個人電腦的平台上,從分時系統的角度來看,一台電腦可供多人使用(multi-user,而且可以同時執行數個程式,也就是多工的能力,但早期個人電腦並沒有足夠的效能來支援多人多工(multi-user, multitasking)的環境

行動裝置上的作業系統所謂的「電腦」在行動與無線通訊的時代已經產生了很大的變化,具有電腦特徵的裝置越來越多,尤其是可攜式的設備,例如筆記型電腦、平板電腦與手機等,這些設備也都需要作業系統,例如AndroidiOS或是Windows Mobile等都屬於這一類的作業系統。

「即時」在系統上又可分成兩大類:

1.硬性即時(hard real-time: 嚴格要求必須在時限內完成,因此任何資料的存取或是作業系統完成每項請求的時間,都要加以管制。

2.軟性即時(soft real-time: 只要求有即時性需求的工作給予較高的執行優先順序,在多媒體、虛擬實境等應用領域中都可以找到軟性即時系統適用的地方。

嵌入式作業系統(Embedded operating systems)

嵌入式系統(embedded systems)是涵蓋範圍相當廣泛的領域,包括軟體與硬體的發展,從作業系統的觀點來看,未來有些家電或是隨身的電子器具可能都會含有一個小型的作業系統,不但跟傳統的作業系統有很大的差異,而且彼此之間可能都互不相同,因為必須配合各種設備本身的特性與需求來設計。由於嵌入式系統不大,會執行的應用也可能很固定,所以在設計上可以特別花工夫進行最適化(optimization),嵌入式系統在設計上可以採用延伸的方式(extensible),在一些固定的功能與基礎之上擴充,例如: IoT物聯網需要嵌入式系統的配合。

嵌入式系統的處理器(processors)嵌入式系統存在於很多設備中,全世界所生產的微處理器有90%使用於嵌入式系統,越來越多家用設備內含嵌入式系統,嵌入式系統可以配合各種應用的需求與特徵來讓設計最適化(optimize),也就是說,既然嵌入式系統不是一般的電腦,我們可以為特定的功能做更專門合用的設計。

嵌入式系統在很多方面都跟作業系統有相似的特徵,例如同時性(concurrency)、多工(multi-tasking)、輸入與輸出等,因此在設計上跟一般的電腦系統有諸多相似之處,只不過嵌入式系統要特別跟應用的需求配合,我們可以把嵌入式系統的應用分成兩大類:

1.低階的(low-end)的應用: 消費性電器、家用電器、玩具與汽車等。

2.高階的(high-end)的應用: 飛航、衛星、噴射引擎控制、醫療儀器與核電廠控制等。

智慧卡(smart card)上存在的作業系統應該是最小型的作業系統,智慧卡的大小跟信用卡差不多,上面含有CPU晶片,但是處理能力與儲存功能很有限,有些智慧卡具有單一的功能,例如電子付款,有的則兼具數種功能。支援Java的智慧卡上會有JVM(Java Virtual Machine)的直譯程式(interpreter),能執行Java程式。

( 知識學習隨堂筆記 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=ben168&aid=151207240