操作系統(tǒng)與編譯

Q:源代碼是怎么變成可執(zhí)行文件的朴爬,每一步的作用是什么?

(預(yù)編譯橡淆,詞法分析召噩,語法分析,語義分析逸爵,中間語言生成目標(biāo)代碼生成具滴,匯編,鏈接)

步驟如下:

1师倔、驅(qū)動程序首先調(diào)用C預(yù)處理器(CPP)把源文件翻譯成一個ASCII中間文件mian.i构韵,預(yù)處理器會把#include所包含的內(nèi)容都插入到聲明的位置,并且做宏替換趋艘,把main.c 文件的第3行 的SIZE替換成2(注意這里只是做簡單的文本替換)疲恢。

2、接下來驅(qū)動程序的C編譯器將main.i翻譯成匯編語言程序main.s

3瓷胧、然后驅(qū)動程序的匯編器將匯編語言程序main.s 翻譯成可重定位的二進(jìn)制文件main.o

4显拳、最后運行鏈接器將main.o 與swap.o 以及一些必要的系統(tǒng)目標(biāo)文件(比如你將調(diào)用的printf函數(shù)就是printf.o)連接起來變成一個可執(zhí)行的二進(jìn)制文件。

Q:虛擬內(nèi)存空間是什么抖单,為什么要有虛擬內(nèi)存空間萎攒。

所謂的虛擬地址空間,是指應(yīng)用程序自己認(rèn)為矛绘,自己所處的地址空間。它區(qū)別于物理地址空間刃永。后者是真實存在的货矮,比如電腦有一根8G的內(nèi)存條,物理地址空間就是0~8Gb斯够。CPU的MMU負(fù)責(zé)把虛擬地址轉(zhuǎn)換成物理地址囚玫。

因為 虛擬地址空間可以大于物理地址空間喧锦,進(jìn)行分頁交換,彌補了進(jìn)程太多時抓督,物理地址空間不夠用燃少。

Q:靜態(tài)鏈接和動態(tài)鏈接分別表示什么

靜態(tài)鏈接:在生成可執(zhí)行文件的時候(鏈接階段),把所有需要的函數(shù)的二進(jìn)制代碼都包含到可執(zhí)行文件中去铃在。
缺點:程序體積會相對大一些阵具。

動態(tài)鏈接:在編譯的時候不直接拷貝可執(zhí)行代碼,而是通過記錄一系列符號和參數(shù)定铜,在程序運行或加載時將這些信息傳遞給操作系統(tǒng)阳液,操作系統(tǒng)負(fù)責(zé)將需要的動態(tài)庫加載到內(nèi)存中,然后程序在運行到指定的代碼時揣炕,去共享執(zhí)行內(nèi)存中已經(jīng)加載的動態(tài)庫可執(zhí)行代碼帘皿,最終達(dá)到運行時連接的目的。
缺點: 由于是運行時加載畸陡,可能會影響程序的前期執(zhí)行性能鹰溜。

Q:進(jìn)程的內(nèi)存格局是怎樣的?(堆丁恭、棧奉狈、全局/靜態(tài)區(qū),代碼區(qū)涩惑,常量區(qū))

Q:堆和棧的區(qū)別仁期,函數(shù)調(diào)用和棧的關(guān)系

一個由C/C++編譯的程序占用的內(nèi)存分為以下幾個部分
1、棧區(qū)(stack)— 由編譯器自動分配釋放 竭恬,存放函數(shù)的參數(shù)值跛蛋,局部變量的值等。其
操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧痊硕。
2赊级、堆區(qū)(heap) — 一般由程序員分配釋放, 若程序員不釋放岔绸,程序結(jié)束時可能由OS回
收 理逊。注意它與數(shù)據(jù)結(jié)構(gòu)中的堆是兩回事,分配方式倒是類似于鏈表盒揉,呵呵晋被。
3、全局區(qū)(靜態(tài)區(qū))(static)—刚盈,全局變量和靜態(tài)變量的存儲是放在一塊的羡洛,初始化的
全局變量和靜態(tài)變量在一塊區(qū)域, 未初始化的全局變量和未初始化的靜態(tài)變量在相鄰的另
一塊區(qū)域藕漱。 - 程序結(jié)束后由系統(tǒng)釋放欲侮。
4崭闲、文字常量區(qū) —常量字符串就是放在這里的。 程序結(jié)束后由系統(tǒng)釋放
5威蕉、程序代碼區(qū)—存放函數(shù)體的二進(jìn)制代碼刁俭。

棧和堆的區(qū)別:

棧由系統(tǒng)自動分配,堆由程序員自己申請管理
申請大小的限制:iOS棧為一塊連續(xù)的內(nèi)存韧涨,最大為1M,堆是不連續(xù)的牍戚,受限于計算機(jī)的虛擬內(nèi)存,由此可見氓奈,堆獲取的空間比較靈活翘魄。
申請效率,棧由系統(tǒng)分配,速度較快舀奶。堆由malloc分配暑竟,速度慢,容易產(chǎn)生內(nèi)存碎片育勺。
堆和棧的存貯內(nèi)容:
棧:在函數(shù)調(diào)用的時候但荤,第一個進(jìn)棧的是執(zhí)行函數(shù)后的笑一個指令,然后是函數(shù)的參數(shù),然后是函數(shù)里面的局部變量.出棧和這個相反.
堆:堆的頭部用一個字節(jié)存放堆的大小.

Q:進(jìn)程和線程的區(qū)別

進(jìn)程:是程序運行的實例涧至,是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個獨立單位腹躁,它包括獨立的地址空間,資源以及1個或多個線程南蓬。

線程:可以看成是輕量級的進(jìn)程纺非,是CPU調(diào)度和分派的基本單位。

區(qū)別:

1.調(diào)度 :從上面的定義可以看出一個是調(diào)度和分派的基本單位赘方,一個是擁有資源的基本單位

2.共享地址空間烧颖,資源:進(jìn)程擁有各自獨立的地址空間,資源窄陡,所以共享復(fù)雜炕淮,需要用IPC,同步簡單跳夭; 線程共享所屬進(jìn)程的資源涂圆,共享簡單,但同步復(fù)雜币叹,要通過加鎖等措施润歉。

3.占用內(nèi)存,cpu: 進(jìn)程占用內(nèi)存多套硼,切換復(fù)雜卡辰,CPU利用率低; 線程占用內(nèi)存少邪意,切換簡單九妈,CPU利用率高。

4.相互影響: 進(jìn)程間不會相互影響雾鬼; 一個線程掛掉會導(dǎo)致整個進(jìn)程掛掉萌朱。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市策菜,隨后出現(xiàn)的幾起案子晶疼,更是在濱河造成了極大的恐慌,老刑警劉巖又憨,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翠霍,死亡現(xiàn)場離奇詭異,居然都是意外死亡蠢莺,警方通過查閱死者的電腦和手機(jī)寒匙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來躏将,“玉大人锄弱,你說我怎么就攤上這事』霰铮” “怎么了会宪?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蚯窥。 經(jīng)常有香客問我掸鹅,道長,這世上最難降的妖魔是什么拦赠? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任巍沙,我火速辦了婚禮,結(jié)果婚禮上矛紫,老公的妹妹穿的比我還像新娘赎瞎。我一直安慰自己,他們只是感情好颊咬,可當(dāng)我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布务甥。 她就那樣靜靜地躺著,像睡著了一般喳篇。 火紅的嫁衣襯著肌膚如雪敞临。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天麸澜,我揣著相機(jī)與錄音挺尿,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛编矾,可吹牛的內(nèi)容都是我干的熟史。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼窄俏,長吁一口氣:“原來是場噩夢啊……” “哼蹂匹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起凹蜈,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤限寞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后仰坦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體履植,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年悄晃,在試婚紗的時候發(fā)現(xiàn)自己被綠了玫霎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡传泊,死狀恐怖鼠渺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情眷细,我是刑警寧澤拦盹,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站溪椎,受9級特大地震影響普舆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜校读,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一沼侣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧歉秫,春花似錦蛾洛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至兔甘,卻和暖如春谎碍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背洞焙。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工蟆淀, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留拯啦,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓熔任,卻偏偏與公主長得像褒链,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子笋敞,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容