# 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裡面,但現今已不會這麼做,現在大部分的系統都會直接全部載進去

* 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

{"description":"One of the earliest computers","title":"Mainframe Systems","contributors":"[{\"id\":\"e3e1efe3-e0d0-4c6f-b7b1-bf11b1a1ee21\",\"add\":3218,\"del\":35}]"}