so true

          心懷未來,開創(chuàng)未來!
          隨筆 - 160, 文章 - 0, 評(píng)論 - 40, 引用 - 0
          數(shù)據(jù)加載中……

          程序、進(jìn)程、線程學(xué)習(xí)筆記

          程序是計(jì)算機(jī)指令的集合,它以文件的形式存儲(chǔ)在計(jì)算機(jī)磁盤上;而進(jìn)程是一個(gè)正在運(yùn)行的程序的一個(gè)實(shí)例,是程序在其自身的地址空間中的一次執(zhí)行活動(dòng)。
          程序不占用系統(tǒng)的運(yùn)行資源,程才可以申請(qǐng)資源、被系統(tǒng)調(diào)度、獨(dú)立運(yùn)行。
          一個(gè)程序可以對(duì)應(yīng)多個(gè)進(jìn)程,一個(gè)進(jìn)程中也可以同時(shí)訪問多個(gè)程序。
          進(jìn)程由內(nèi)核對(duì)象和地址空間兩部分組成。內(nèi)核象是操作系統(tǒng)分配出的有特定數(shù)據(jù)結(jié)構(gòu)的一內(nèi)存塊,用于維護(hù)進(jìn)程的各種信息,進(jìn)程不能直接訪問該內(nèi)存塊,只能通過系統(tǒng)給提供的一些函數(shù)來獲取一些信息。地址空間包含了所有可執(zhí)行模塊或DLL模塊的代碼和數(shù)據(jù),還包括動(dòng)態(tài)內(nèi)存分配的空間,比如運(yùn)行中線程需要分配的堆棧和堆空間。
          進(jìn)程是線程的容器,是線程的運(yùn)行環(huán)境,真正完成執(zhí)行地址空間中代碼的是線程。
          一個(gè)進(jìn)程可以有多個(gè)線程,這些線程都執(zhí)行該進(jìn)程內(nèi)的同一地址空間中的代碼。
          一個(gè)進(jìn)程至少得有一個(gè)線程來執(zhí)行其地址空間中的代碼。創(chuàng)建進(jìn)程時(shí),操作系統(tǒng)就會(huì)自動(dòng)創(chuàng)建該進(jìn)程的第一個(gè)線程,也就是主線程,然后再由主線程來調(diào)用其它線程,我們常說的main或WinMain函數(shù)就是主線程的入口函數(shù)。
          對(duì)于32位的進(jìn)程來說,地址空間最大為4GB,這由進(jìn)程指針的尋址能力所限,而且對(duì)于每個(gè)進(jìn)程而言,該地址空間都是它私有的,其他的進(jìn)程是不能訪問的,而且我們所說的地址空間是虛擬的地址空間,怎么理解虛擬二字呢?就是說將物理內(nèi)存和頁面文件中的某部分拿出來映射為我們這里的地址空間,它只是內(nèi)存地址的一個(gè)范圍。
          線程也是由對(duì)應(yīng)于它的內(nèi)核對(duì)象以及線程堆棧組成,這里的內(nèi)核對(duì)象也是一個(gè)有特定數(shù)據(jù)結(jié)構(gòu)的內(nèi)存塊,由于系統(tǒng)管理線程的統(tǒng)計(jì)信息。
          由一個(gè)進(jìn)程創(chuàng)建的多個(gè)線程之間的地位都是平等的,它們都可以隨意的訪問進(jìn)程內(nèi)核對(duì)象中的所有句柄等等屬于該進(jìn)程的信息,而且各個(gè)線程之間是可以互相隨意的訪問彼此的線程堆棧的,因此線程間通信就很容易了,而且線程只有一個(gè)內(nèi)核對(duì)象和堆棧,因此占用的內(nèi)存少,所以提倡多線程編程,而不是創(chuàng)建多個(gè)進(jìn)程。
          對(duì)于一個(gè)CPU,在某時(shí)刻只能有一個(gè)線程在運(yùn)行,多個(gè)線程的運(yùn)行是通過時(shí)間片輪轉(zhuǎn)來實(shí)現(xiàn)的,并不是真正意義上的同時(shí)運(yùn)行。

          posted on 2008-02-23 19:29 so true 閱讀(339) 評(píng)論(0)  編輯  收藏 所屬分類: C&C++

          主站蜘蛛池模板: 安泽县| 股票| 前郭尔| 余姚市| 佛山市| 吉木萨尔县| 砚山县| 合肥市| 讷河市| 苍南县| 固始县| 肥西县| 浑源县| 馆陶县| 昌江| 勐海县| 宜阳县| 满城县| 亚东县| 景德镇市| 迁安市| 丹寨县| 昭通市| 当涂县| 佛冈县| 上饶县| 曲水县| 苏尼特左旗| 克东县| 辽宁省| 莱州市| 漳州市| 望谟县| 麻阳| 循化| 正阳县| 灵山县| 莱西市| 绥化市| 宝应县| 兰溪市|