1.3作業系統簡介

水木·圳烜發表於2018-02-27

@為什麼要有作業系統?

  • 計算機硬體能夠直接識別的語言是機器語言,是由1和0所組成的,其底層是電路的閉合與斷開;
  • 計算機硬體在出廠時,將硬體提供的功能封裝為相對易讀的指令集,指令集與硬體是唯一適配的,沒有通用性,這極大地制約了計算機的易用性和普及程度;
  • 在此背景下,作業系統定義了硬體功能的標準介面,硬體廠商通過自家的驅動程式,對這些標準介面進行具體實現;
  • 程式設計師在為計算機硬體開發應用程式時,無需考慮具體硬體對標準介面的實現細節,而只需要通過統一標準的介面去呼叫硬體的功能,就能為不同硬體開發相同的應用程式了;
  • 只要硬體搭載的是相同的作業系統,就能實現一套應用程式跑在不同的硬體上;
  • 因此,作業系統誕生最原始的初衷,就是為了實現“不一樣的硬體,一樣的程式碼”,這使得計算機變得易於“操作”了;
  • 隨著應用程式的日漸豐富和複雜,位於應用和硬體中間層的作業系統,還承擔著系統管理、資源排程、應用程式排程等諸多職責;

@系統管理

  • 管理檔案系統,實現共享、實現安全;
  • 管理外部裝置,例如電源、磁碟、網路等等;
  • 管理使用者和許可權,使得多個使用者可以安全地使用同一臺裝置,這對伺服器尤其重要;

@資源排程

  • 由於CPU、記憶體、外設、磁碟等資源,都是為眾多應用程式所共享的,因此作業系統承擔著資源排程之責,即:
  • CPU執行時間片排程;
  • 記憶體空間排程;
  • 輸入輸出裝置排程;
  • 磁碟IO排程;

@應用程式排程

  • 如今的作業系統都是支援多工的,即使用者可以一邊寫程式碼,一邊聽音樂,一邊下載電影,一邊執行服務程式,一邊執行爬蟲程式,等等,whatever you say!
  • 具體到某一個應用程式,其內部又支援多程式、程式內又支援多執行緒;
  • 因此任務管理、併發管理、以及其間的資源排程,都需要經由作業系統來實現;
  • 這種管理和排程,既應該是自動的智慧的,又應該支援使用者自定義操作;

@著名作業系統

  • Windows,圖形使用者介面的先驅(其實是抄襲施樂),蓋茨實現了人人桌面都有一臺電腦的夢想,使用者量最大、應用程式最多;
  • Mac,使用者體驗最好的個人電腦,美觀、高效、易用,無論休閒、辦公還是開發;
  • Linux,開源的、以網路通訊為出發點的作業系統,廣泛用於伺服器、嵌入式裝置,經過定製的桌面版作業系統同樣是很棒的PC機作業系統;開源、高效、安全、強大,越來越多地得到各國政府(包括中國政府)的大力支援;比較著名的定製版有Ubuntu、CentOS、RedHat、Debian、KaliLinux;國產的有紅旗、在Ubuntu基礎上優化過的Deepin等;安卓作業系統也使用的也是Linux核心;

相關文章