# Mainframe Systems * One of the earliest computers * Large in size * Slow I/O devices: card reader/printer, tape drivers * Evolution * Batch -> Multi-programming -> Time-shared * 時至今日,如果某些專門用來大量處理某件工作的機器,我們仍會稱之為mainframe * For critical application with better reliability and security * bulk data processing * Widely used in hospitals, banks, etc. --- ## Batch System * 批次,也就是一次執行一個任務 * Processing steps: * User submit jobs(program, data, control card) * Operator sort jobs with similar requirement * **OS just simply transfer control from one job to the next** -> The only thing computer does * Memory Layout: * Two layer (user program area | operating system) * Drawbacks: 1. One job at a time 2. No interaction between users and jobs (執行過程中,user無法更改任何事情) 3. CPU is often idle * Why: I/O speed <<<<< CPU speed (at least 1:1000), so CPU is often waiting for I/O * (Although this problem still exists nowadays) * Solution: * For drawback 1 and 3: Process as many programs as possible * For drawback 2: Use Time-sharing concepts(a fast-switching program) * Keypoints: OS in Mainframe/Batch Systems does not need to make any decision --- ## Multi-programming System * Solution: * Overlaps I/O and computation (keep CPU and I/O devices working at higher rates) * How? **Spooling (Simultaneous Peripheral Operation On-Line)** * I/O is done with no CPU intervention * CPU just needs to be notified when I/O is done * Can be done by a mechanism called "interupt" * Several jobs are kept in the main memory (CPU can only execute jobs that are in the memory), and the CPU is multiplexed among them * 將磁碟機視為一個大 buffer,資料讀取與寫入時,不直接讀取,而由磁碟機中讀取。 例如有很多筆資料要交給印表機輸出時,可將待印資料的清單放在一個表格中,印表機印完一筆資料後,可直接至表格讀取下一筆待印資料,而 CPU 把待印資料的清單放在表格中後,可以去做別的計算,I/O也可繼續執行。 * 以前記憶體還沒那麼大的時候,就會利用job scheduling去決定哪些job要載入OS裡面,但現今已不會這麼做,現在大部分的系統都會直接全部載進去 ![image](https://hackmd.io/_uploads/B1heZx0wke.png) * OS tasks in multi-programming systems * Memory mangement - allocate memory to jobs * CPU scheduling - choose job to run * I/O system - I/O routine, allocation of devices * Jobs are still running in batch, so there might have delays between running different jobs --- ## Time-sharing System (Multi-tasking System) * An interactive system provides direct communication between the users and the system * CPU switches among jobs frequently (frequently detecting I/O) * Users can see results immediately (<1s) * Usually, keyboard/screen are used * Multiple users can share the computer simulaneously * In time-sharing system, jobs are switched when * finished * waiting for I/O * **a short period of time** * 簡單來說,time-sharing就會把CPU的執行分割成一小塊一小塊的timeslots,每一個job執行幾毫秒,所有在系統內的程式就輪流去使用這些timeslots * 現代電腦就是使用time-sharing system在進行多工 * OS tasks in time-sharing systems * Virtual memory (consider disk as memory) - jobs are swapped in and out of memory to get reasonable response time * 為什麼要擴大記憶體容量?因為我們希望系統能載入更多程式 * File system and disk management * Process synchronization and deadlock - concurrent execution --- ## Compare Each System ![image](https://hackmd.io/_uploads/BJh_IgCDke.png)
{"description":"One of the earliest computers","title":"Mainframe Systems","contributors":"[{\"id\":\"e3e1efe3-e0d0-4c6f-b7b1-bf11b1a1ee21\",\"add\":3218,\"del\":35}]"}
Expand menu