c是貝爾實驗室的Dennis Ritchie建立的的。起初是爲了減小彙編代碼的編寫量。java
gcc編譯c源文件的過程有:shell
gcc是gnu(GNUL'S NOT UNIX)(有Richard Stallman發起的開源項目)的開發出來的工具之一。現代開放源碼運動的思想起源是GNU項目中的自由軟件概念(自由並非說免費)。數組
處理器cpu:核心是一個大小爲一個字的存儲設備(寄存器),即程序計數器pc。pc指向主存中某條機器語言的指令地址。cpu的工做:緩存
處理器看上去是它的指令集架構的簡單實現。實際上固然是複雜的多。安全
高速緩存存儲器(cache)的提出是爲了解決cpu和主存的速度問題。cache將cpu經常使用、將要用到的數據、指令從主存加載到本身處,而後cpu讀取cache的數據便可。爲了更好的實現緩存功能,人們還實現了多級緩存。高級緩存比低級緩存快,但同時存儲空間也相對小。網絡
os有兩個基本功能:數據結構
os經過幾個抽象概念來實現這兩個功能:進程、虛存、文件架構
Unix的層次文件系統、做爲用戶級進程的shell概念,都是從Multics(上世紀60年代的一個較爲成功的系統)來的。後來加州大學的伯克利分校增長了虛存和internet協議,稱爲BSD(Berkeley software distribution)。後來不少廠商加入了一些其餘的功能,可是不一樣產商的特性一般不兼容,爲了解決這個問題,Richard Stallman和ieee標準化了Unix的開發。這個標註稱爲posix。併發
進程是os對一個正在運行的程序的抽象。一個os能夠同時運行多個進程(併發運行),是經過上線文切換來實現的(系統保持跟蹤進程運行所需的全部狀態信息,這種狀態,就是上下文)。函數
內核不是一個獨立的程序,它是系統管理所有進程所用代碼和數據結構的集合。
一個進程能夠有多個線程(至少一個)。每一個線程運行在進程的上下文中,共享進程的代碼和全局數據,同時每一個線程有本身的上下文。
線程分爲內核級和用戶級兩種。
os爲進程提供一個假象,即每一個進程都在獨佔地使用主存。每一個進程看到的內存都是一致的。
內核 --------- 用戶棧 --------- 共享庫的內存映射區域 --------- --------- 運行時堆 --------- 讀寫數據 --------- 只讀代碼和數據(程序開始的位置,注意,不是從0開始的喔) --------- 0
文件就是字節序列,僅此而已。io設備均可以當作是文件,裏面的數據就是字節序列。系統的輸入輸出都是經過使用一組稱爲Unix io的系統函數調用讀寫文件來實現的。
1991年,Linus Torvalds謹慎地發佈一個新的類unix os內核,後來逐漸發展稱爲一個技術和文化現象。
網絡能夠視爲一個io設備。網絡經過一個適配器,做爲io介入計算機。
原文:https://blog.givenzeng.cn/book/computer_system/chapter_1/