操作系統筆記-1-操作系統概述

背景

很早就看了《MODERN OPERATING SYSTEMS》和《Operating System Concepts》這兩本書本書,當時也做了很多筆記。爲了方便自己能更好的溫故知新,也爲了防止自己的筆記丟失,遂搬到雲上(手動狗頭)。這是操作系統學習筆記的一個系列,這是第一篇筆記,主要是講個操作系統的大概,以及它是個什麼東西,能做什麼,我們平時做開發是怎麼和它打交道。

做開發要不要了解OS

答案肯定是要的。其實這個問題和寫程序要不要學算法一個道理。如果覺得沒用,只能說明你寫的程序可能還停留在CRUD階段(不要打我,沒有貶低的意思)。我們都知道,但凡做的稍微深一點,必然涉及到操作系統的知識,比如當Java應用程序假死的時候需要分析線程調用棧,線程的狀態其實就是內核線程的映射;又比如CPU佔用高時要分析問題在哪兒,你可能要先找到佔用cpu的進程或線程,多的就不扯了。

操作系統是什麼

我覺得操作系統是用戶軟件的容器,是用戶和硬件的橋樑,如果讓每個用戶直接操作硬件,用戶軟件開發是個成本及其高的事,也是不顯示的事,因爲如果各個軟件都可以直接控制硬件,那麼也是一件非常危險的事。操作系統提供給軟件一個棲身之所,也加快軟件開發,因爲軟件開發只需要調用操作系統提供的接口,而任何的資源訪問和調度都有操作系統統一調度,同時也給用戶提供一個統一的交互系統。大概就是下面這樣
在這裏插入圖片描述

計算機模型

計算機運行模型

在這裏插入圖片描述

計算機組成

在這裏插入圖片描述

  • 硬件
    1. cpu
    2. 磁盤
    3. I/O設備(網卡、顯示器、鍵盤、鼠標…)
    4. 內存
    5. buses(總線,連接各個硬件設備,使其能相互通信)
      在這裏插入圖片描述
  • 操作系統(PC主流)
    1. unix
    2. linux
    3. win
  • 軟件(各種運行在操作系統之上的程序)

操作系統

操作系統歷史
  • 第一時代(1945-55):真空管手工時代
  • 第二時代(1955-65):晶體管批處理時代,批處理要執行下一個任務必須等待上一個任務執行完成,不能中途切換。
  • 第三時代(1965-80):集成電路多道程序系統時代,多道程序系統可以併發執行多個任務
  • 第四時代(1980-至今):個人電腦時代,個人電腦的系統強調的是實時交互,因此是搶佔式系統,並且提供用戶友好的GUI
  • 第五時代(1990-至今):移動計算時代
操作系統大觀園
  • 大型機操作系統:主要提供三類服務,批處理,事務處理,分時系統。典型代表OS/390,逐漸被Linux取代
  • 服務器操作系統:爲若干個用戶提供服務,用戶可以共享硬件和軟件資源。提供打印服務、文件服務、web服務,這類系統代表Solaris、FreeBSD、Linux和Windows server
  • 多處理器操作系統:一種聯合多個cpu來獲得聯合計算能力,現在的個人計算機也有多核cpu,通常windows和linux都可以運行在多核上
  • 個人計算機系統:FreeBSD、Linux和Windows和mac OS
  • 移動計算機系統:移動設備,手機、平板等,主要是Android和iOS
  • 嵌入式計算機系統:這類系統是用來控制設備,通常不允許用戶安裝軟件,像DVD之類的。主要是Embedded Linux, QNX和VxWorks
  • 傳感器操作系統:通常這類系統是基於事件驅動或者基於內部時鐘週期性測量,系統小。代表是TinyOS
  • 實時操作系統:這類系統時間是關鍵參數,比如流水線對時間要求非常嚴格,實時系統多用於工業。代表是eCos
  • 智能卡操作系統:微小的操作系統,運行在智能卡上,有嚴格的運行能耗和存儲空間限制,有些智能卡是面向Java的,其ROM上有JVM
操作系統概念
  • 進程:本質是一個正在執行的程序,它被分配了一個地址空間,可以對該地址空間進行讀寫。詳細的介紹在之後的筆記中
  • 地址空間:早期主存小,程序運行時獨佔主存,當正在運行A程序時,要運行B程序,則要將A移除,置換B進主存,後期可以多個程序共享主存,後來又發展了虛擬內存技術來解決程序運行需要的內存比主存大的問題。詳細介紹在內存管理中介紹
    在這裏插入圖片描述
  • 文件:即文件系統,封裝了底層複雜的硬件操作,提供給開發人員簡單的接口。在文件系統中詳細介紹
  • Input/Ouput:I/O
  • 保護:系統安全性
  • shell:操作系統的命令解釋器
系統調用

操作系統就是封裝了硬件的接口而爲開發人員提供簡單的接口調用,在上邊的計算機運行模型圖中可以看到,軟件是運行在用戶態的,而要真正執行硬件控制時是運行在內核態的,因爲只要產生系統調用就會從用戶態切換到內核態,也就是所說的陷入內核。一個read操作如下圖所示
在這裏插入圖片描述

  • 進程管理系統調用
    在這裏插入圖片描述
  • 文件管理系統調用
    在這裏插入圖片描述
  • 目錄管理和文件系統系統調用
    在這裏插入圖片描述
  • 其他各種系統調用
    在這裏插入圖片描述

總結

操作系統是一個複雜的系統,其主要作用是建立一道用戶通向硬件之間的橋樑。一方面管理和調度硬件資源,一方面提供給用戶以友好的訪問接口。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章