一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - 易語(yǔ)言 - 易語(yǔ)言關(guān)于程序進(jìn)程和線程的基礎(chǔ)知識(shí)

易語(yǔ)言關(guān)于程序進(jìn)程和線程的基礎(chǔ)知識(shí)

2022-02-24 16:14三葉資源網(wǎng) 易語(yǔ)言

今天小編就為大家分享一篇關(guān)于易語(yǔ)言關(guān)于程序進(jìn)程和線程的基礎(chǔ)知識(shí),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧

程序是計(jì)算機(jī)指令的集合,它以文件的形式存儲(chǔ)在磁盤(pán)上。

進(jìn)程:通常被定義為一個(gè)正在運(yùn)行的程序的實(shí)例,是一個(gè)程序在其自身的地址空間中的一次執(zhí)行活動(dòng)。

進(jìn)程是資源申請(qǐng)、調(diào)度和獨(dú)立運(yùn)行的單位,因此,它使用系統(tǒng)中的運(yùn)行資源;而程序不能申請(qǐng)系統(tǒng)資源,不能被系統(tǒng)調(diào)度,也不能作為獨(dú)立運(yùn)行的單位,因此,它不占用系統(tǒng)的運(yùn)行資源。

進(jìn)程由兩個(gè)部分組成:

  •  1、操作系統(tǒng)用來(lái)管理進(jìn)程的內(nèi)核對(duì)象。內(nèi)核對(duì)象也是系統(tǒng)用來(lái)存放關(guān)于進(jìn)程的統(tǒng)計(jì)信息的地方。
  •  2、地址空間。它包含所有可執(zhí)行模塊或DLL模塊的代碼和數(shù)據(jù)。它還包含動(dòng)態(tài)內(nèi)存分配的空間。如線程堆棧和堆分配空間。

進(jìn)程是不活動(dòng)的。進(jìn)程從來(lái)不執(zhí)行任何東西,它只是線程的容器。若要使進(jìn)程完成某項(xiàng)操作,它必須擁有一個(gè)在它的環(huán)境中運(yùn)行的線程,此線程負(fù)責(zé)執(zhí)行包含在進(jìn)程的地址空間中的代碼。

單個(gè)進(jìn)程可能包含若干個(gè)線程,這些線程都“同時(shí)” 執(zhí)行進(jìn)程地址空間中的代碼。

每個(gè)進(jìn)程至少擁有一個(gè)線程,來(lái)執(zhí)行進(jìn)程的地址空間中的代碼。當(dāng)創(chuàng)建一個(gè)進(jìn)程時(shí),操作系統(tǒng)會(huì)自動(dòng)創(chuàng)建這個(gè)進(jìn)程的第一個(gè)線程,稱(chēng)為主線程。此后,該線程可以創(chuàng)建其他的線程。

進(jìn)程地址空間

系統(tǒng)賦予每個(gè)進(jìn)程獨(dú)立的虛擬地址空間。對(duì)于32位進(jìn)程來(lái)說(shuō),這個(gè)地址空間是4GB。

每個(gè)進(jìn)程有它自己的私有地址空間。進(jìn)程A可能有一個(gè)存放在它的地址空間中的數(shù)據(jù)結(jié)構(gòu),地址是0x12345678,而進(jìn)程B則有一個(gè)完全不同的數(shù)據(jù)結(jié)構(gòu)存放在它的地址空間中,地址是0x12345678。當(dāng)進(jìn)程A中運(yùn)行的線程訪問(wèn)地址為0x12345678的內(nèi)存時(shí),這些線程訪問(wèn)的是進(jìn)程A的數(shù)據(jù)結(jié)構(gòu)。當(dāng)進(jìn)程B中運(yùn)行的線程訪問(wèn)地址為0x12345678的內(nèi)存時(shí),這些線程訪問(wèn)的是進(jìn)程B的數(shù)據(jù)結(jié)構(gòu)。進(jìn)程A中運(yùn)行的線程不能訪問(wèn)進(jìn)程B的地址空間中的數(shù)據(jù)結(jié)構(gòu),反之亦然。

4GB是虛擬的地址空間,只是內(nèi)存地址的一個(gè)范圍。在你能成功地訪問(wèn)數(shù)據(jù)而不會(huì)出現(xiàn)非法訪問(wèn)之前,必須賦予物理存儲(chǔ)器,或者將物理存儲(chǔ)器映射到各個(gè)部分的地址空間。

4GB虛擬地址空間中,2GB是內(nèi)核方式分區(qū),供內(nèi)核代碼、設(shè)備驅(qū)動(dòng)程序、設(shè)備I/O高速緩沖、非頁(yè)面內(nèi)存池的分配和進(jìn)程頁(yè)面表等使用,而用戶(hù)方式分區(qū)使用的地址空間約為2GB,這個(gè)分區(qū)是進(jìn)程的私有地址空間所在的地方。一個(gè)進(jìn)程不能讀取、寫(xiě)入、或者以任何方式訪問(wèn)駐留在該分區(qū)中的另一個(gè)進(jìn)程的數(shù)據(jù)。對(duì)于所有應(yīng)用程序來(lái)說(shuō),該分區(qū)是維護(hù)進(jìn)程的大部分?jǐn)?shù)據(jù)的地方。

線程由兩個(gè)部分組成:

  •  1、線程的內(nèi)核對(duì)象,操作系統(tǒng)用它來(lái)對(duì)線程實(shí)施管理。內(nèi)核對(duì)象也是系統(tǒng)用來(lái)存放線程統(tǒng)計(jì)信息的地方。
  •  2、線程堆棧,它用于維護(hù)線程在執(zhí)行代碼時(shí)需要的所有參數(shù)和局部變量。

當(dāng)創(chuàng)建線程時(shí),系統(tǒng)創(chuàng)建一個(gè)線程內(nèi)核對(duì)象。該線程內(nèi)核對(duì)象不是線程本身,而是操作系統(tǒng)用來(lái)管理線程的較小的數(shù)據(jù)結(jié)構(gòu)。可以將線程內(nèi)核對(duì)象視為由關(guān)于線程的統(tǒng)計(jì)信息組成的一個(gè)小型數(shù)據(jù)結(jié)構(gòu)。

線程總是在某個(gè)進(jìn)程環(huán)境中創(chuàng)建。系統(tǒng)從進(jìn)程的地址空間中分配內(nèi)存,供線程的堆棧使用。新線程運(yùn)行的進(jìn)程環(huán)境與創(chuàng)建線程的環(huán)境相同。因此,新線程可以訪問(wèn)進(jìn)程的內(nèi)核對(duì)象的所有句柄、進(jìn)程中的所有內(nèi)存和在這個(gè)相同的進(jìn)程中的所有其他線程的堆棧。這使得單個(gè)進(jìn)程中的多個(gè)線程確實(shí)能夠非常容易地互相通信。

線程只有一個(gè)內(nèi)核對(duì)象和一個(gè)堆棧,保留的記錄很少,因此所需要的內(nèi)存也很少。

因?yàn)榫€程需要的開(kāi)銷(xiāo)比進(jìn)程少,因此在編程中經(jīng)常采用多線程來(lái)解決編程問(wèn)題,而盡量避免創(chuàng)建新的進(jìn)程。

操作系統(tǒng)為每一個(gè)運(yùn)行線程安排一定的CPU時(shí)間 —— 時(shí)間片。系統(tǒng)通過(guò)一種循環(huán)的方式為線程提供時(shí)間片,線程在自己的時(shí)間內(nèi)運(yùn)行,因時(shí)間片相當(dāng)短,因此,給用戶(hù)的感覺(jué),就好像線程是同時(shí)運(yùn)行的一樣。

如果計(jì)算機(jī)擁有多個(gè)CPU,線程就能真正意義上同時(shí)運(yùn)行了。

互斥對(duì)象

互斥對(duì)象(mutex)屬于內(nèi)核對(duì)象,它能夠確保線程擁有對(duì)單個(gè)資源的互斥訪問(wèn)權(quán)。

互斥對(duì)象包含一個(gè)使用數(shù)量,一個(gè)線程ID和一個(gè)計(jì)數(shù)器。

ID用于標(biāo)識(shí)系統(tǒng)中的哪個(gè)線程當(dāng)前擁有互斥對(duì)象,計(jì)數(shù)器用于指明該線程擁有互斥對(duì)象的次數(shù)。事件對(duì)象

事件對(duì)象也屬于內(nèi)核對(duì)象,包含一個(gè)使用計(jì)數(shù),一個(gè)用于指明該事件是一個(gè)自動(dòng)重置的事件還是一個(gè)人工重置的事件的布爾值,另一個(gè)用于指明該事件處于已通知狀態(tài)還是未通知狀態(tài)的布爾值。

有兩種不同類(lèi)型的事件對(duì)象。一種是人工重置的事件,另一種是自動(dòng)重置的事件。當(dāng)人工重置的事件得到通知時(shí),等待該事件的所有線程均變?yōu)榭烧{(diào)度線程。當(dāng)一個(gè)自動(dòng)重置的事件得到通知時(shí),等待該事件的線程中只有一個(gè)線程變?yōu)榭烧{(diào)度線程。

關(guān)鍵代碼段

關(guān)鍵代碼段(臨界區(qū))工作在用戶(hù)方式下。

關(guān)鍵代碼段(臨界區(qū))是指一個(gè)小代碼段,在代碼能夠執(zhí)行前,它必須獨(dú)占對(duì)某些資源的訪問(wèn)權(quán)。

線程死鎖

哲學(xué)家進(jìn)餐的問(wèn)題

線程1擁有了臨界區(qū)對(duì)象A,等待臨界區(qū)對(duì)象B的擁有權(quán),線程2擁有了臨界區(qū)對(duì)象B,等待臨界區(qū)對(duì)象A的擁有權(quán),就造成了死鎖。互斥對(duì)象、事件對(duì)象與關(guān)鍵代碼段的比較

互斥對(duì)象和事件對(duì)象屬于內(nèi)核對(duì)象,利用內(nèi)核對(duì)象進(jìn)行線程同步,速度較慢,但利用互斥對(duì)象和事件對(duì)象這樣的內(nèi)核對(duì)象,可以在多個(gè)進(jìn)程中的各個(gè)線程間進(jìn)行同步。

關(guān)鍵代碼段是工作在用戶(hù)方式下,同步速度較快,但在使用關(guān)鍵代碼段時(shí),很容易進(jìn)入死鎖狀態(tài),因?yàn)樵诘却M(jìn)入關(guān)鍵代碼段時(shí)無(wú)法設(shè)定超時(shí)值。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)服務(wù)器之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

原文鏈接:http://www.sanye.cx/?id=5665

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品久久久久久综合网 | aaa一级最新毛片 | xx顶级欧美熟妞xxhd | 日韩视频在线精品视频免费观看 | 久久九九有精品国产23百花影院 | 国内精品久久久久久久久久久久 | 91久久精品国产一区二区 | h肉动漫在线视频无修无遮挡 | 亚洲视频一区二区在线观看 | 国产成人久久久精品一区二区三区 | 久久久久久久久人体 | 欧美日韩国产另类一区二区三区 | 欧美亚洲高清日韩成人 | 色婷婷婷丁香亚洲综合不卡 | 91九色视频无限观看免费 | 国产一区精品 | 日本不卡一区二区三区在线观看 | 国产91网站在线观看 | 国产永久免费爽视频在线 | 亚洲香蕉网久久综合影院3p | 肉性天堂 | 久久精品一区二区免费看 | 五月最新商场女厕所高跟嘘嘘 | 国产精品日本亚洲777 | 沟厕okn系列在线播放 | 果冻传媒在线视频观看免费 | 华人亚洲欧美精品国产 | 亚洲天堂v | 亚洲国产午夜看片 | 继攵催眠女乱h调教 | 免费一级片在线观看 | 色哟哟哟在线精品观看视频 | 国产盗摄女厕美女嘘嘘 | chinese老头和老太交hd | 肉色欧美久久久久久久蜜桃 | 午夜伦午夜伦锂电影 | 免费观看一级欧美在线视频 | 亚洲欧美另类在线观看 | 成人特级毛片69免费观看 | 日韩视频免费一区二区三区 | 美女隐私部位视频网站 |