Linux預備知識(二):進程空間地劃分-用戶空間/內(nèi)核空間

查看機器上棧大小命令

ulimit -a

或者

ulimit -s

大小不固定飘诗,可以用 ulimit -s 進行調(diào)整,默認一般為 8M

棧區(qū)(stack sagment):由操作系統(tǒng)自動分配釋放 仓犬,存放函數(shù)的參數(shù)值局部變量的值等。 如果申請的空間超過棧的剩余空間時废菱,將提示overflow。因此抖誉,能從棧獲得的空間較小殊轴。棧大小是有默認值的,如果申請的臨時變量太大的話就會超過棧大小袒炉,造成棧溢出旁理。

堆棧溢出就是不顧堆棧中分配的局部數(shù)據(jù)塊大小(在棧中分配的局部數(shù)據(jù)塊大小和局部變量的聲明的大小有關),向該數(shù)據(jù)塊寫入了過多的數(shù)據(jù)我磁,導致數(shù)據(jù)越界孽文,結果覆蓋了老的堆棧數(shù)據(jù)(包括函數(shù)的返回地址)。 或者解釋為在長字符串中嵌入一段代碼夺艰,并將過程的返回地址覆蓋為這段代碼的地址芋哭,這樣當過程返回時,程序就轉(zhuǎn)而開始執(zhí)行這段自編的代碼了.這東西很像病毒郁副。

堆(heap):一般由程序員分配釋放减牺, 若程序員不釋放,程序結束時可能由OS回收霞势,分配方式倒是類似于鏈表烹植。堆是用于存放進程運行中被動態(tài)分配的內(nèi)存段,它的大小并不固定愕贡,可動態(tài)擴張或縮減草雕。當進程調(diào)用malloc等函數(shù)分配內(nèi)存時,新分配的內(nèi)存就被動態(tài)添加到堆上(堆被擴張)固以;當利用free等函數(shù)釋放內(nèi)存時墩虹,被釋放的內(nèi)存從堆中被剔除(堆被縮減)

BSS段:存放的是未初始化的全局變量和靜態(tài)變量嘱巾。BSS是英文Block Started by Symbol的簡稱。BSS段屬于靜態(tài)內(nèi)存分配诫钓。

數(shù)據(jù)段:初始化過的數(shù)據(jù)(Data)旬昭,存放已初始化的全局變量、靜態(tài)變量(全局和局部)菌湃、常量數(shù)據(jù)问拘。數(shù)據(jù)段屬于靜態(tài)內(nèi)存分配。

代碼段:存放CPU執(zhí)行的機器指令惧所,代碼區(qū)是可共享骤坐,并且是只讀的這部分區(qū)域的大小在程序運行前就已經(jīng)確定

用戶空間就是用戶進程所在的內(nèi)存區(qū)域下愈,相對的纽绍,系統(tǒng)空間就是操作系統(tǒng)占據(jù)的內(nèi)存區(qū)域。用戶進程和系統(tǒng)進程的所有數(shù)據(jù)都在內(nèi)存中势似。

為什么要劃分用戶空間和系統(tǒng)空間呢拌夏?當然是有必要的。操作系統(tǒng)的數(shù)據(jù)都是存放于系統(tǒng)空間的履因,用戶進程的數(shù)據(jù)是存放于用戶空間的障簿。分開來存放,就讓系統(tǒng)的數(shù)據(jù)和用戶的數(shù)據(jù)互不干擾栅迄,保證系統(tǒng)的穩(wěn)定性卷谈。分開存放,管理上很方便霞篡,而更重要的是世蔗,將用戶的數(shù)據(jù)和系統(tǒng)的數(shù)據(jù)隔離開,就可以對兩部分的數(shù)據(jù)的訪問進行控制朗兵。這樣就可以確保用戶程序不能隨便操作系統(tǒng)的數(shù)據(jù)污淋,這樣防止用戶程序誤操作或者是惡意破壞系統(tǒng)。處于用戶態(tài)的程序只能訪問用戶空間余掖,而處于內(nèi)核態(tài)的程序可以訪問用戶空間和內(nèi)核空間寸爆。

Linux使用兩級保護機制:0級供內(nèi)核使用,3級供用戶程序使用盐欺,每個進程有各自的私有用戶空間(0~3G)赁豆,這個空間對系統(tǒng)中的其他進程是不可見的,最高的1GB字節(jié)虛擬內(nèi)核空間則為所有進程以及內(nèi)核所共享冗美。

用戶態(tài)切換到內(nèi)核態(tài)的3種方式

a. 系統(tǒng)調(diào)用

這是用戶態(tài)進程主動要求切換到內(nèi)核態(tài)的一種方式魔种,用戶態(tài)進程通過系統(tǒng)調(diào)用申請使用操作系統(tǒng)提供的服務程序完成工作,比如fork()實際上就是執(zhí)行了一個創(chuàng)建新進程的系統(tǒng)調(diào)用粉洼。而系統(tǒng)調(diào)用的機制其核心還是使用了操作系統(tǒng)為用戶特別開放的一個中斷來實現(xiàn)节预,例如Linux的int 80h中斷叶摄。

b. 異常

當CPU在執(zhí)行運行在用戶態(tài)下的程序時,發(fā)生了某些事先不可知的異常安拟,這時會觸發(fā)由當前運行進程切換到處理此異常的內(nèi)核相關程序中蛤吓,也就轉(zhuǎn)到了內(nèi)核態(tài),比如缺頁異常糠赦。

c. 外圍設備的中斷

當外圍設備完成用戶請求的操作后会傲,會向CPU發(fā)出相應的中斷信號,這時CPU會暫停執(zhí)行下一條即將要執(zhí)行的指令轉(zhuǎn)而去執(zhí)行與中斷信號對應的處理程序拙泽,如果先前執(zhí)行的指令是用戶態(tài)下的程序唆铐,那么這個轉(zhuǎn)換的過程自然也就發(fā)生了由用戶態(tài)到內(nèi)核態(tài)的切換。比如硬盤讀寫操作完成奔滑,系統(tǒng)會切換到硬盤讀寫的中斷處理程序中執(zhí)行后續(xù)操作等。

這3種方式是系統(tǒng)在運行時由用戶態(tài)轉(zhuǎn)到內(nèi)核態(tài)的最主要方式顺少,其中系統(tǒng)調(diào)用可以認為是用戶進程主動發(fā)起的朋其,異常和外圍設備中斷則是被動的。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末脆炎,一起剝皮案震驚了整個濱河市梅猿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌秒裕,老刑警劉巖袱蚓,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異几蜻,居然都是意外死亡喇潘,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門梭稚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來颖低,“玉大人,你說我怎么就攤上這事弧烤〕佬迹” “怎么了?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵暇昂,是天一觀的道長莺戒。 經(jīng)常有香客問我,道長急波,這世上最難降的妖魔是什么从铲? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮澄暮,結果婚禮上食店,老公的妹妹穿的比我還像新娘渣淤。我一直安慰自己,他們只是感情好吉嫩,可當我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布价认。 她就那樣靜靜地躺著,像睡著了一般自娩。 火紅的嫁衣襯著肌膚如雪用踩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天忙迁,我揣著相機與錄音脐彩,去河邊找鬼。 笑死姊扔,一個胖子當著我的面吹牛惠奸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播恰梢,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼佛南,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了嵌言?” 一聲冷哼從身側(cè)響起嗅回,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎摧茴,沒想到半個月后绵载,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡苛白,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年娃豹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片购裙。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡培愁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缓窜,到底是詐尸還是另有隱情定续,我是刑警寧澤,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布禾锤,位于F島的核電站私股,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏恩掷。R本人自食惡果不足惜倡鲸,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望黄娘。 院中可真熱鬧峭状,春花似錦克滴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至胆敞,卻和暖如春着帽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背移层。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工仍翰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人观话。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓予借,卻偏偏與公主長得像,于是被迫代替她去往敵國和親频蛔。 傳聞我的和親對象是個殘疾皇子灵迫,可洞房花燭夜當晚...
    茶點故事閱讀 43,509評論 2 348

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