# Historical Perspection ###### tags: `OS Note Pro` [TOC] 本章來介紹各式各樣的系統架構,還沒討論到OS。 ## Mainframe system Mainframe 通常指的是大型機種的電腦,用於server或一些專業領域。今天我們要來探討的是它系統架構的演進。 ### <font color='blue'>Batch system:</font> 古早的電腦是由字卡來寫程式,而電腦會以讀到的字卡以一個batch一個batch(批)的方式讀取來執行。Bactch的特點在於,他一次只能處理一個job,會先將指令和data存在main memory,而後才經由CPU來執行,而執行的順序是由operater這個"人"來決定的,也就是操作系統者。 <font color='red'>缺點:</font> 1. 一次只能執行一個job,無法多工或互動(interactive)。 2. 容易idel,因為處理I/O的速度是遠遠慢於CPU計算速度的,所以只要有程序是處理I/O就會全部人等它一個。 <font color='green'>優點:</font> 1. 資源運用乾淨俐落,執行完的job就會將它的memory清掉然後給下一個job使用。 2. 可靠性以及安全性 ### <font color="blue">Multi-Programing</font> Multi-programing著重於**CPU的使用率**,CPU並不會因為I/O device而卡著,~~一次可以從main memory中讀取多個job,而memory也會在job被處理完後從disk中抓其它的job來執行~~,可以藉由OS的scheduling從disk分配job進入memory,memeory一直處於可以隨時被處理狀態,所以CPU可以說是被不斷利用的。 ### <font color="blue">Time sharing</font> 主要強調的是**互動(interactive)**,除了多工之外,每個job之間是不斷切換的,這能使使用者與系統之間達到溝通的效果。比如說咱們的智慧型手機,點及觸控螢幕對系統來說就是在下達指令,而這時job之間若無法切換,那使用者只能等它做完它本來在做的計算才來處理你,這樣的延遲使用者是受不了的,所以不斷的切換,不斷的接受新的job,才能達到interactive的效果。而切換的因素有三: (1.) job finished (2.) waiting I/O (3.) 每隔一段時間就切換 ## Computer-system-architectuer ### <font color='blue'>Desktop system</font> 就是**Single processer**(PC),當然我們現在的桌機不一定是single processer,但這裡主要是說這個系統就是僅有單一個體(處理器)存在這個概念。對象只for single user。早期對於個人電腦的要求並不大,只要能run就夠了,而且也沒有網路的概念,所以安全性與可靠性都很差。 ### <font color='blue'>Parallel system</font> 平行化系統就是指multiprocesser,多個processer透過一條hardware Bus連在一起,達到多工或平行化處理。而這個系統下有兩種架構: **Symetrical Multipal Processer(SMP)** 以及 **Asymterical Multipal Processer(AMP)** ,**SMP** 的每個processer都是用同一個OS,AMP應該也是拉。是目前最受歡迎的架構。對於memory並需要有極高的synchronization。而 **AMP**有一個主要的CPU和很多附屬的CPU。每個processer都賦予各自不同的任務。多用於大型server的架構。 :::success **UMA** : 這個架構是多個processer共享一個memory,且所有processer存取memory的速度都一樣快以確保達到資料的同步,這樣設計的<font color="green">優點在於: 整體來說對memory的存取是快的,因為所有人都修改同一塊memory,因此這也是比較大眾的架構。</font><font color='red'>但缺點就是: 你無法控制你現在要用哪一顆processer,有可能是相距甚遠的,且若processer數量一多,整體協調上是會變慢的。</font> **NUMA** : 是各自擁有自己的memory區塊,要存取資料(globel)需要透過其他processer,<font color='red'>這導致存取memory上是比較慢的</font>,<font color='green'>但由於非對稱,所以可以控制你要用哪個processer運作你的程式,可以讓需要頻繁共享memory的工作排在相鄰的processer以增加效率。</font> ::: 除了Multiprocesser之外,在每個processer上還可以建造**Multicore**,在一個chip中含了2個甚至多個core,而每個core通常都會有自己的cache,core與core之間再透過bus一起連到memory。 除了Multicore,在一個chip中若core數量更多甚至上千上萬,這時我們稱為**Manycore** ,主要差異在於應用用途,manycore多用於特殊的複雜運算,如GPU之類的圖形化處理或For機器學習的大量矩陣運算等等。 :::spoiler Multicore vs Manycore Multicore typically refers to devices with 2-8 or so cores in them. Manycore typically refers to devices with dozens or hundreds of cores. As far as I know, there's no hard definition of when you go from a multicore to manycore device. My guess would be that the words were defined by someone's marketing department... One difference between them is that manycore systems will only run efficiently with software that is designed with multiple cores in mind - single threaded software will be extra slow on such equipment. ::: ### <font color='blue'>Distribution System</font> 比較loosely 的connected,如:Internet,應用如:雲端運算等。形式有:**Client-Server、Peer2Peer**。是現今非常普及的系統架構。 <font color="blue">特性:</font> 1. Rsourse sharing 2. Load sharing 3. Reliablity #### Cluster system LAN ## Special Purpose ### <font color='blue'>Real-time systems</font> 只在指定時間內要完成job。又分為**Soft** 以及 **Hard** real-time。 **Soft**:指盡量在時間內完成,但沒完成也沒關係,也不會造成太重大影響。 **Hard**:指必須在時間內完成,若沒完成將會造成嚴重的影響。如:電動車、核電廠電源。 ### <font color='blue'>Multimedia systems</font> For 多媒體串流、影音串流,對於資料的處理會讓重要的資訊,如影片的重要線條、顏色等先出現,而後慢慢提升畫質等,這種系統在現今很常看到。應用如:Live直播或存在buffer的影片等等。 ### <font color='blue'>Handheld system</font> 手機等Embedded device,對於硬體及作業系統的要求就不同以往,追求精巧靈敏,對於電池的續航也是一大考量。