程式 程序 執行緒 協程到底是什麼

2021-10-14 01:37:37 字數 1057 閱讀 7069

簡單來說就是一段指揮計算機執行的指令集合。

乙個可執行程式是由我們人所能理解的語言所寫的**編譯而成的機器碼(指令)。

機器指令:

40055d:       48 83 ec 08             sub    $0x8,%rsp

400561: be 04 06 40 00 mov $0x400604,%esi

400566: bf 01 00 00 00 mov $0x1,%edi

40056b: b8 00 00 00 00 mov $0x0,%eax

400570: e8 eb fe ff ff callq 400460 <__printf_chk@plt>

400575: b8 00 00 00 00 mov $0x0,%eax

40057a: 48 83 c4 08 add $0x8,%rsp

40057e: c3 retq

40057f: 90 nop

第二列:機器指令(16進製制)

第三列:機器指令對應的組合語言。 包含

記憶體可用空間

堆區,向上增長,通過程式手動申請/釋放,未釋放又不使用則是記憶體洩露。

資料段,儲存全域性變數

指令段,是唯讀的

32位作業系統中,程序的記憶體模型,所有程序均認為自己獨佔了4g記憶體,作業系統占用1g記憶體,自己可用3g記憶體,這就是通過作業系統實現的虛擬記憶體技術,程序所使用的位址空間,均為乙個範圍4g的位址,與真實物理記憶體無關。 硬碟

作業系統

程序 程序狀態切換:

程序切換:

執行緒協程

多進/執行緒的好處:

linux可以通過檔案來檢視程序以及核心的執行資訊,檔案在/proc下。

pstree可以檢視程序樹

協程是什麼

以下是我自己的理解 一般的執行緒切換是由作業系統來執行的,而協程則是一種特殊的執行緒,這種執行緒的切換是由使用者自己來決定的,並且切換需要做的額外工作如 執行狀態和執行位置的儲存,也是由使用者自己來做的。以下是乙個解釋的比較清楚的內容 筆者最美好的記憶來自於早年在6502 cpu的cc800上寫彙編...

程序 執行緒 協程

多程序多執行緒的最終目地都是為了加快任務處理的時間,但是受限於cpu核數 只有多核才能實現並行,任務耗時 單核任務耗時 cpu核數 那麼在單核上執行多程序多執行緒是不是沒有用了,加快不了處理的速度了?答案肯定是不是的,不然這個東西設計出來太雞肋了,那它們加快處理的原理是什麼呢?乙個程序耗時 b程序耗...

程序 執行緒 協程

程序是系統資源分配的最小單位,系統由乙個個程序 程式 組成。一般情況下,包括文字區域 text region 資料區域 data region 和堆疊 stack region 檔案描述符表 程序每次開啟乙個檔案,系統就會在該程序的使用者檔案描述符表中分配乙個相應的表項,表項的索引返回給該程序,用於...