1. 程式人生 > >操作系統筆記(四)中斷和系統調用等

操作系統筆記(四)中斷和系統調用等

trap ogr 單獨 設備驅動 gist urn all 保存 per

  • bootstrap:
  1. 執行者:boot-loader(不是操作系統的一部分). 如 GRUB
  2. 任務: 1)加載OS到內存 2)將控制轉交給OS
  • 中斷
  1. 處理步驟:
    • 硬件:保存寄存器, 切到ISR(Interrupt Service Routine)
    • ISR匯編:保存需要的寄存器,設置環境
    • ISR C: 處理中斷,從外設讀入數據
    • ISR C: 返回匯編ISR
    • ISR匯編:恢復寄存器,返回中斷點。
  2. 中斷向量:
    • 本質:以IRQ(Interrupt ReQuest number)為索引的ISR向量
    • 應用:處理中斷時,CPU根據設備的IRQ定位Interrupt vector中對應的ISR
  3. 異常
    • 本質:處理器執行指令時遭遇異常。因是同步事件(處理完才返回),又稱為軟件中斷或同步中斷
    • 與中斷區別:1)發起對象 外設 vs 軟件 2)處理方式 異步 vs 同步
  • 外設的訪問:device controller(含寄存器)
  1. I/O 端口(8/16地址):特殊命令,如IN/OUT reg, port 將I/O端口的數據讀或寫到CPU寄存器
  2. 內存映射I/O(內存地址):通用指令,同一總線。
    • 本質:視作內存
    • 優勢:設備驅動可以用C語言寫; 不需要單獨的I/O保護機制;指令重用
    • 劣勢:內存的緩沖機制對於外設很危險
  3. 現狀:結合使用,memory-mapped i/o用於數據寄存器,i/o端口用於指令寄存器
  • 硬件保護
  1. dual mode operation: 0 for 內核,1 for 用戶。設置在硬件上。
  2. privileged instructions:I/o 保護。包括所有I/o命令。僅在內核態執行。
  3. memory protection:控制內存可訪問的範圍。base register and limit register。【base, base + limit)
  4. cpu protection: 防止單程序一直占用CPU。計時器(counter register and holding register)
  • 系統調用
  1. 操作系統提供給用戶程序訪問的接口。
  2. call wapper of system call in C run-time(CRT) library ->
    store system call number -> trap into os -> get system call service routine by indexing a system call table using system call number -> run system call service routine and return to user programs ...
  3. 如何trap into os? exception(INT 0x80/0x2e) or special instruction(SYSENTER and SYSEXIT)
  4. 與庫函數的區別:系統調用需要切換到內核態,也就意味著更大的調用開銷。庫函數本質上和用戶自定義的函數一致。

操作系統筆記(四)中斷和系統調用等