深入理解计算机系统学后感,深入理解计算机系统(读书笔记)
第一章計(jì)算機(jī)系統(tǒng)漫游
計(jì)算機(jī)系統(tǒng)是由硬件和系統(tǒng)軟件組成的,它們共同工作l來(lái)運(yùn)行應(yīng)用程序。
通過(guò)hello程序來(lái)了解,運(yùn)行的時(shí)候程序會(huì)發(fā)生什么。
#include
int main()
{
printf("hello world\n");
return 0;
}
通過(guò)跟蹤hello程序的生命周期來(lái)開(kāi)始對(duì)系統(tǒng)的學(xué)習(xí)--------從它被程序員創(chuàng)建開(kāi)始,到在系統(tǒng)上運(yùn)行,輸出簡(jiǎn)單的消息,然后終止。
1.1 信息就是位 + 上下文
hello程序的生命周期是從一個(gè)源程序開(kāi)始的,文件名是hello.c。源程序?qū)嶋H上j就是一個(gè)由值0和1組成的位(又稱為比特)序列,8個(gè)位被組織成一組,稱為字節(jié)。每個(gè)字節(jié)表示程序中的某些文本字符。hello.c實(shí)際上就是將文本字符使用ASCII,轉(zhuǎn)化為一個(gè)唯一的單字節(jié)大小的整數(shù)值,
1.2 程序被其他程序翻譯成不同的格式
在unix系統(tǒng)上,從源文件到目標(biāo)文件的轉(zhuǎn)化是由編譯器驅(qū)動(dòng)完成
gcc hello.c -o hello
從源程序文件hello.c翻譯成可執(zhí)行目標(biāo)文件hello,這個(gè)翻譯過(guò)程可分為四個(gè)階段完成,執(zhí)行這四個(gè)階段的程序(預(yù)處理器,編譯器,匯編器,鏈接器)
(1)預(yù)處理階段:預(yù)處理器(cpp)根據(jù)以字符#開(kāi)頭的命令,修改原始的c程序。就是將stdio.h里面的內(nèi)容插入到原先的程序文本中,得到另一個(gè)c程序hello.i
(2)編譯階段:編譯器(ccl)將文本文件hello.i翻譯成文本文件hello.s,它包含一個(gè)匯編語(yǔ)言程序,該程序包含函數(shù)main的定義
(3)匯編階段:匯編器(as)將hello.s翻譯成機(jī)器語(yǔ)言指令,把這些指令打包成一種叫做可重定位m目標(biāo)程序的格式,并將結(jié)果保存在目標(biāo)文件hello.o中
(4)鏈接階段:鏈接器(ld)就是負(fù)責(zé)將hello程序中的庫(kù)函數(shù)文件以某種方式合并到我們的hello.o程序中。結(jié)果就得到了hello文件,它是一個(gè)可執(zhí)行目標(biāo)文件,可以被加載到內(nèi)存中,由系統(tǒng)執(zhí)行。
1.3 了解編譯系統(tǒng)如何工作是大有益處的
了解編譯系統(tǒng)如何工作的好處
(1)、優(yōu)化程序性能:為了在c程序中做出好的編碼選擇,我們需要了解一些機(jī)器代碼以及編譯器將不同的c語(yǔ)句轉(zhuǎn)化機(jī)器代碼的方式。
(2)、理解鏈接時(shí)出現(xiàn)的錯(cuò)誤
(3)、避免安全漏洞
1.4 處理器讀并解釋儲(chǔ)存在內(nèi)存中的指令
1.4.1 系統(tǒng)硬件組成
下圖是一個(gè)典型系統(tǒng)的硬件組成
1、總線:貫穿整個(gè)系統(tǒng)的是一組電子管道,稱作總線,它攜帶信息并負(fù)責(zé)在各個(gè)部件間傳遞。通常總線被設(shè)計(jì)成傳送定長(zhǎng)的字節(jié)塊,也就是字。字中的字節(jié)數(shù)(即字長(zhǎng))是一個(gè)基本的系統(tǒng)參數(shù),各個(gè)系統(tǒng)都不盡相同。現(xiàn)在的大多數(shù)機(jī)器字長(zhǎng)要么是4個(gè)字節(jié),要么是8個(gè)字節(jié)。
2、I/O設(shè)備:I/O(輸入/輸出)設(shè)備是系統(tǒng)與外部世界的聯(lián)系通道。以上示例系統(tǒng)包括四個(gè)I/O設(shè)備:作為用戶輸入的鍵盤和鼠標(biāo),作為用戶輸出的顯示器,以及用于長(zhǎng)期存儲(chǔ)數(shù)據(jù)和程序的磁盤驅(qū)動(dòng)器。每個(gè)I/O設(shè)備都通過(guò)一個(gè)控制器和適配器與I/O總線相連,控制器和適配器之間的區(qū)別主要在于它們的封裝方式。
3、主存:主存是一個(gè)臨時(shí)存儲(chǔ)設(shè)備,在處理器執(zhí)行程序時(shí),用來(lái)存放程序和程序處理的數(shù)據(jù)。從物理上來(lái)說(shuō),主存是由一組動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)芯片組成的。
4、處理器:中央處理單元(CPU),簡(jiǎn)稱處理器,是解釋(或執(zhí)行)存儲(chǔ)在主存中的指令的引擎。處理器的核心是一個(gè)大小為一個(gè)字的存儲(chǔ)設(shè)備(或寄存器),稱為程序計(jì)數(shù)器(PC)。
1.4.2 運(yùn)行hello程序
初始時(shí),shell程序執(zhí)行它的指令,等待我們輸入一個(gè)命令。當(dāng)我們鍵盤上輸入字符串”./hello“后。shell程序?qū)⒆址鹨蛔x入寄存器,再把它放到內(nèi)存中。
1.5 高速緩存至關(guān)重要
Near_World
發(fā)布了7 篇原創(chuàng)文章 · 獲贊 2 · 訪問(wèn)量 9743
私信
關(guān)注
標(biāo)簽:計(jì)算機(jī)系統(tǒng),字節(jié),讀書(shū)筆記,系統(tǒng),程序,編譯器,深入,處理器,hello
來(lái)源: https://blog.csdn.net/ppppphp/article/details/104142586
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的深入理解计算机系统学后感,深入理解计算机系统(读书笔记)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 是苹果最大的杀手锏是苹果最大的杀手锏吗
- 下一篇: 电信光猫连接两个路由器该怎样设置电信的光