試着儘可能用圖示來表示我的對內容的理解,不足之處,還望不吝指教。前端
[TOC]c++
1. cpu與指令集程序員
CPU分爲運算器和控制器編程
CPU指令架構
特權指令函數
擁有管理權限,(通常狀況下,只有OS纔有權限運行特權指令)spa
普通指令操作系統
擁有普通功能,通常應用程序運行命令行
不一樣的運算由不一樣的運算器完成運算(由指令集提供運算)code
程序員:通常面向操做系統編程
圖示說明:
2. 人與機器
感受沒什麼好解釋的,一切盡在圖中
圖示說明:
1. OS的目的與功能
OS:Operating System
System Call
簡稱爲:Syscall (系統調用)
OS的通用目的與功能
圖示說明:
2. 編程的層次
硬件規格:hardware specifiacation
不一樣廠商的硬件規格千差萬別,API也各不相同,寫起來極爲不便;
系統調用:數量不多,可是很精巧;
庫調用:library call
把底層的功能整合出來,提供成離最終目標更近的功能;對全部的計算機功能來講,全部的功能都是經過調用實現;(一般都是c,c++庫)
圖示說明:
3. 指令環
由內到外依次是環0、環一、環二、環3;
環0是特權指令,通常只有操做系統有權限運行;
環一、環2出於歷史緣由,沒有使用;
環3是普通指令,通常應用程序使用;
特殊狀況:例如:mkdir /home/test
Note:沒辦法直接完成,須要向內核申請權限;
圖示說明:
4. 程序的運行模式
用戶空間:user space(us)
內核空間:system space
圖示說明:
對OS來講:UI是用戶接口、對用戶來講UI是前端;
GUI:Graphic User Interface (圖形用戶接口)
CLI:Command Line Interface (命令行接口)
圖示說明:
ABI:Application Binary Interface(應用程序二進制接口)
描述了應用程序(或者其餘類型)和操做系統之間或其餘應用程序的低級接口。
API:Application Programming Interface(應用程序編程接口)
是一些預先定義的函數,目的是提供應用程序與開發人員基於某軟件或硬件得以訪問一組例程的能力,而又無需訪問源碼,或理解內部工做機制的細節
圖示說明:
圖示說明:
圖示說明: