操作系統課堂筆記一-操作系統概述

操作系統概述

簡介

  • 本文主要針對操作系統裏面一些原理進行剖析, 操作系統也可以說是程序員必經之路, 學的好壞會有本質的區別,尤其是大公司(BAT)的面試, 對操作系統有了解必然是極大的加分項, 個人極力推薦一位老師-陳向羣老師(北京大學), 我的大部分理論也是從她那裏學來的, 博主會把一些關鍵點記錄好給大家方便查看, 後期有時間會優化下結構。

一個完整的程序執行

  • 下面展示一段c語言代碼,大家想一下我們執行的時候到底經歷了什麼?
#include<stdio.h>
int main(int argc, char const *argv[])
{
    /* code */
    puts("hello world");
    return 0;
}
  • 瞭解即可
  • 下面瞭解下完整的執行過程:
	• 用戶告知操作系統(方式很多)
	• 操作系統判斷文件是否是可執行文件(pe, elf)
	• 操作系統創建一個進程,將可執行文件格式映射到進程結構,由該進程執行程序
	• 操作系統將控制權交給調度程序,爲hello world程序設置上下文環境,跳到程序開始之處(調度程序如何選中? i/o多路複用?)
	• 執行第一條指令,發生缺頁異常(爲什麼缺頁異常?)
	• 因爲代碼執行需要將代碼load到內存, 但是你一開始沒有被分配, 於是操作系統(內存管理模塊)就會分配一塊空閒的內存來執行helloworld,有時候一頁還不夠,就有可能進行多次的缺頁異常以及分配內存的操作   ps.代碼是從 磁盤讀入內存
	• 接着操作系統執行puts函數(系統調用),  作用是在標準的輸出設備上顯示字符串
	• 操作系統把需要寫入屏幕的字符串送給一個進程
	• 控制設備的進程通知窗口顯示字符串, 窗口系統確定是個合法操作,將字符串->像素->設備存儲映像區
	• 視頻硬件->顯示器可以接受的控制數據信號
最後 在屏幕上看到了hello world

操作系統作用

作用一: 操作系統是資源的管理者

  • 管理哪些資源?
    • 硬件資源: CPU, 內存, 設備(I/O設備, 磁盤, 時鐘, 網卡等)
    • 軟件資源: 磁盤上的文件, 各類管理信息等
  • 怎麼管理資源?
    • 通過數據結構和算法 跟蹤記錄資源的使用情況(數據結構決定可以有哪些功能, 基於這些功能可以策劃有哪些算法支持資源如何分配,有哪些空閒資源可以分配等問題)
  • 相關策略
    • 靜態分配策略: 程序運行前就將資源全部分配完成, 會造成資源浪費
    • 動態分配策略: 執行過程中, 需要資源再提出申請, 會根據數據結構決定是否分配
    • 分配和回收: 具體取決於數據結構(如 可以使用位圖去實現, 已分配標註1 未分配0)
  • 資源管理角度-操作系統五大基本功能
    • 進程線程管理(CPU管理): 進程線程狀態, 控制, 同步/互斥, 通信, 調度…
    • 存儲管理: 分配/回收, 地址轉換, 存儲保護, 內存擴充…
    • 文件管理: 文件目錄, 文件操作, 磁盤空間, 文件存儲控制 …
    • 設備管理: 設備驅動, 分配回收, 緩衝技術…
    • 用戶接口: 系統命令, 編程接口

作用二: 操作系統是系統服務的提供者

  • 舉例
    • 進程的創建,執行
    • 文件和目錄的操作
    • I/O 設備的使用

作用三: 操作系統對機器硬件的擴展

  • 舉例
    • 操作系統是硬件基礎上的第一層軟件
    • 將硬件的複雜程度簡化(例如: 軟盤的I/O操作)

操作系統的特徵

併發

  • 指的是操作系統具有同時處理多個任務的能力
  • 併發引起的問題
    • 任務切換,保護,互相依賴任務之間同步的問題
  • 同時執行多個程序的錯覺: 單CPU場景下, 任務之間輪流執行
  • 並行: 不同任務同時在多個硬件部件上執行。 (注意併發和並行的區別)

共享

  • 指的就是多個用戶程序共同使用操作系統的資源
  • 舉例
    • 互斥共享(打印機)
    • 同時共享(重入代碼, 磁盤文件)
  • 問題: 操作系統資源分配,保證不同進程間不被影響

虛擬

  • 將物理實體(CPU,內存) 映射爲若干個邏輯實體-分時,分空間
  • 目的: 提升資源利用率
  • 舉例:
    • CPU: 每個進程在虛擬CPU上在跑, 但是微觀上只有一個進程在一個CPU上在跑
    • 進程獨立地址空間,物理上是共用一塊物理內存
    • 顯示設備可以多開, 也是虛擬化的結果

隨機

  • 操作系統必須隨時對次序不可預測的任務進行響應
  • 舉例
    • 進程運行速度不可預知,多個進程同時運行 (上下CPU)
    • 難以重現系統在某一個時刻的狀態

操作系統架構

windows

  • 簡化了一版基本架構,如圖:
    在這裏插入圖片描述
  • 其中和硬件打交道的就是 內核和硬件抽象層
  • 用戶和操作系統打交道的是 動態鏈接庫

unix

  • 看下簡單版的unix架構
    unix架構
  • 看下相對全面一些的
    在這裏插入圖片描述

linux

  • 感覺用的最多的, 按照自己的理解整了一套架構圖, 不知道對不對,哈哈
    在這裏插入圖片描述

操作系統的分類

  • 操作系統的發展是隨着計算機硬件技術的發展

批處理系統

  • 單道批處理系統
  • 多道批處理系統
  • 真脫機
  • 假脫機(Spooling技術) : 這個覺得很經典

分時操作系統

  • 輪流爲每個用戶服務
  • 時間片: 按照時間片輪轉爲每個用戶服務
  • 追求目標: 響應時間

通用操作系統

  • 將分時和批處理結合
  • 場景前臺: (分時優先,批處理後)
  • 場景後臺: (批處理先,分時後)

實時操作系統

  • 能夠及時響應外部請求, 能夠在嚴格的時間內完成
  • 實時過程控制: 航空
  • 實時通信系統: 交換機, 銀行
  • 追求目標
    1 嚴格時間內能有響應
    2 高可靠性

個人計算機操作系統

  • 計算機在某一時刻只爲一個人服務
  • 追求目標: 界面友好,使用簡單, 豐富應用軟件

網絡操作系統

  • 基於網絡體系結構和網絡協議標準開發的網絡模塊
  • 功能: 網絡通信, 安全, 資源共享, 以及各種網絡應用

分佈式操作系統

  • 以網絡爲基礎 或者 以多機爲基礎, 特徵是將計算任務分佈在不同計算機上
  • 技術點: 任務分配, 調度, 負載均衡
  • 優點: 處理能力強, 速度快, 可靠性強, 具有透明性

嵌入式操作系統

  • 對應不同設備的軟硬件系統, 他是某一個設備中的系統, 不一定是計算機
  • 功能: 控制設備中的各個部件協調工作, 合理調度

智能卡操作系統

  • 智能卡: 一種帶有CPU芯片的卡片
  • 特點: 由於非常小,對能耗和存儲都有嚴格的限制
  • 舉例: 電子支付

核心點

  • 操作系統的定義
  • 操作系統的三個作用, 四個特徵
  • Spooling技術
  • windows, linux, unix架構特點

參考

[1] 陳向羣老師操作系統課程-北京大學

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