• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      操作系統(tǒng)與Oracle內(nèi)存管理比較

      2021-09-09 07:36:46王潤中
      現(xiàn)代計(jì)算機(jī) 2021年19期
      關(guān)鍵詞:存儲管理內(nèi)核進(jìn)程

      王潤中

      (Gina Code School of Engineering and Computer Science, Concordia University,Canada)

      0 引言

      最初我們接觸操作系統(tǒng)時(shí),我們了解到的操作系統(tǒng)是管理計(jì)算機(jī)硬件與軟件資源的計(jì)算機(jī)程序,具有五大管理功能,其中之一就是存儲管理,之二就是進(jìn)程管理,但是隨著Oracle的微機(jī)版的出現(xiàn),從披露出來不多的內(nèi)存和進(jìn)程管理和在操作系統(tǒng)上所安裝的Oracle、其對內(nèi)存的占用達(dá)到80%的情況,以及以數(shù)據(jù)特征進(jìn)行存儲的方式上看,我們有必要探索操作系統(tǒng)與Oracle內(nèi)存管理和進(jìn)程管理并對其主要特性進(jìn)行比較。

      1 操作系統(tǒng)的內(nèi)存管理

      整個(gè)操作系統(tǒng)內(nèi)核可以大致分成三個(gè)模塊,其中內(nèi)存管理和進(jìn)程管理分別對內(nèi)存和CPU進(jìn)行分配和調(diào)度,如圖1所示。內(nèi)存是CPU直接存放處理數(shù)據(jù)的地方,是CPU與外部設(shè)備交換數(shù)據(jù)的地方,同時(shí)也是所有計(jì)算機(jī)程序的運(yùn)行之所在。

      1.1 進(jìn)程管理

      對操作系統(tǒng)而言,當(dāng)要進(jìn)行數(shù)據(jù)處理時(shí)需要將相應(yīng)的程序調(diào)入到內(nèi)存中運(yùn)行,此時(shí)系統(tǒng)要進(jìn)行資源分配和調(diào)度,于是進(jìn)程便成為這樣一個(gè)基本單位,負(fù)責(zé)程序及相關(guān)數(shù)據(jù)集合的一次運(yùn)行活動,具有獨(dú)立運(yùn)行、獨(dú)立分配資源、獨(dú)立接受調(diào)度的特點(diǎn),如圖2所示。

      圖1 內(nèi)存管理與進(jìn)程管理

      圖2 進(jìn)程的內(nèi)容結(jié)構(gòu)

      操作系統(tǒng)管理著許多的進(jìn)程,許多的進(jìn)程由進(jìn)程管理統(tǒng)一調(diào)度,包括創(chuàng)建與終止以及釋放所占資源,通過對進(jìn)程的管理可以有效地提高CPU的利用率。每一個(gè)進(jìn)程由進(jìn)程控制模塊(PCB)、程序和數(shù)據(jù)集合組成。所有進(jìn)程都必須占用一定數(shù)量的內(nèi)存,內(nèi)核的運(yùn)行也是需要操作內(nèi)存,而每個(gè)進(jìn)程又要保持獨(dú)立性,這就需要虛擬內(nèi)存來實(shí)現(xiàn),每個(gè)進(jìn)程有自己的虛擬內(nèi)存,通過進(jìn)程控制塊,按照時(shí)間片的方式,進(jìn)程輪流執(zhí)行,只有輪詢到自己的時(shí)候,才對應(yīng)由物理內(nèi)存來使用,其他時(shí)間就等待。

      1.2 內(nèi)存管理

      一般我們敘述的存儲管理方案主要包括分區(qū)存儲管理、分頁存儲管理、分段存儲管理、段頁式存儲管理以及虛擬存儲管理。分段就是將一個(gè)程序分成代碼段,數(shù)據(jù)段,堆棧段等,分頁存儲管理則是將一個(gè)進(jìn)程的邏輯地址空間分成若干個(gè)大小相等的片,稱為頁,并為各頁加以編號,而分段分頁就是將這些段,例如代碼段分成均勻的小塊,圖3所示,通過段表和頁表,頁內(nèi)偏移找到程序的物理地址。分段的作業(yè)地址空間是二維的,程序員在標(biāo)識一個(gè)地址時(shí),既需給出段名,又需給出段內(nèi)地址。分頁的作業(yè)地址空間是維一的,即單一的線性空間,程序員只須利用一個(gè)記憶符,即可表示一地址?,F(xiàn)代的大多數(shù)計(jì)算機(jī)系統(tǒng),都支持非常大的邏輯地址空間(232~264)。在這樣的環(huán)境下,頁表就變得非常大,要占用相當(dāng)大的內(nèi)存空間。如此復(fù)雜的存儲管理已經(jīng)成為阻礙網(wǎng)絡(luò)存儲廣泛應(yīng)用的一個(gè)重要原因。

      圖3 段頁式存儲管理

      2 Oracle的內(nèi)存結(jié)構(gòu)和進(jìn)程結(jié)構(gòu)

      很多的書籍和文章中都直接給出了如圖4所示的Oracle的內(nèi)存和進(jìn)程結(jié)構(gòu)圖,這張圖展示的Oracle內(nèi)存結(jié)構(gòu)包含一系列組件,用戶進(jìn)程、服務(wù)進(jìn)程等。當(dāng)客戶端向服務(wù)器發(fā)送連接請求時(shí),服務(wù)器在監(jiān)聽到客戶端要求后,生成一個(gè)Server Process來代理用戶的請求,然后向服務(wù)器進(jìn)程實(shí)例發(fā)起連接,創(chuàng)建會話,此時(shí)PGA(程序全局區(qū))分配內(nèi)存,在這個(gè)過程中,一個(gè)進(jìn)程一個(gè)PGA。

      當(dāng)用戶進(jìn)程執(zhí)行一個(gè)查詢語句時(shí),用戶進(jìn)程先將信息存儲到UGA(用戶全局區(qū))中,語句本身被解析為

      圖4 Oracle內(nèi)存和進(jìn)程結(jié)構(gòu)圖

      ASCII碼,生成hash_value,在PGA中匹配,進(jìn)行快速解析,然后傳遞給實(shí)例,在SGA(系統(tǒng)全局區(qū))的共享池中處理這條語句,在數(shù)據(jù)緩沖區(qū)中判斷是否有所需要的塊,如果沒有從磁盤讀入,然后undo緩存塊會對該塊做鏡像,讀鏡像中的數(shù)據(jù)得到行的結(jié)果返回給用戶,用戶看到執(zhí)行的結(jié)果。無論在自動內(nèi)存管理模式還是手動內(nèi)存管理模式,Oracle通常都會將內(nèi)存的70%-80%分配給SGA,而PGA僅達(dá)到20%。

      Oracle給出的不僅是清晰的內(nèi)存管理與操作的功能視圖,也是將存放在內(nèi)存的各種處理要求不同的數(shù)據(jù)與其操作的相應(yīng)進(jìn)程的邏輯圖,這對內(nèi)存的管理比傳統(tǒng)方式的操作系統(tǒng)更為有效,進(jìn)而Oracle也有了自動內(nèi)存管理模式。其次,PGA是將用戶的請求分解為公有和私有部分,對于數(shù)據(jù)的請求全部放在SGA中,這種公私分離的模式提高了內(nèi)存的使用效率,這使得即便在PC上,其查詢的能力也能達(dá)到TB的數(shù)量級。

      3 操作系統(tǒng)與Oracle內(nèi)存管理比較

      3.1 操作系統(tǒng)與Oracle相似比較

      首先相似的地方是在內(nèi)存的分配上,無論操作系統(tǒng)還是Oracle均是通過功能相似的進(jìn)程分配內(nèi)存的。在操作系統(tǒng)在啟動時(shí),例如Linux,需要加載內(nèi)核映像到內(nèi)存中,內(nèi)核映像并不是一個(gè)可執(zhí)行的內(nèi)核,而是一個(gè)壓縮過的內(nèi)核映像。必須先啟動例程實(shí)現(xiàn)少量硬件設(shè)置后,對內(nèi)核映像中包含的內(nèi)核進(jìn)行解壓縮,然后將其放入高端內(nèi)存中。

      分配內(nèi)存的時(shí)候,系統(tǒng)先是安排內(nèi)核內(nèi)存空間,這里存放各個(gè)內(nèi)核進(jìn)程工作的數(shù)據(jù)和系統(tǒng)日志數(shù)據(jù),然后系統(tǒng)為用戶分配用以存放用戶進(jìn)程的內(nèi)存。無論是內(nèi)核進(jìn)程,還是用戶進(jìn)程,Linux對內(nèi)存的分配都是基于進(jìn)程的。

      當(dāng)啟動Oracle一個(gè)數(shù)據(jù)實(shí)例時(shí),Oracle數(shù)據(jù)庫系統(tǒng)會啟動多個(gè)后臺進(jìn)程,這些后臺進(jìn)程負(fù)責(zé)不同的工作,都需要一定的內(nèi)存存放工作時(shí)的永久數(shù)據(jù)和臨時(shí)數(shù)據(jù),用以完成數(shù)據(jù)庫數(shù)據(jù)文件、日志文件、參數(shù)文件等的讀寫操作。

      當(dāng)客戶端請求連接Oracle數(shù)據(jù)庫,Oracle數(shù)據(jù)庫也會動態(tài)產(chǎn)生一個(gè)服務(wù)器進(jìn)程為該客戶端服務(wù),客戶要對數(shù)據(jù)庫的各種操作,包括查增刪改、事務(wù)提交回滾等,均委派相應(yīng)的服務(wù)器進(jìn)程統(tǒng)一處理。每一次客戶端與服務(wù)器的連接,均包括多個(gè)會話,而每次會話,系統(tǒng)都會分配不同的會話內(nèi)存空間,用于存放不同會話的不同數(shù)據(jù)。無論是后臺進(jìn)程,還是服務(wù)進(jìn)程,Oracle對內(nèi)存的分配都是基于進(jìn)程的。

      補(bǔ)充一點(diǎn),對于不同的會話,無論操作系統(tǒng)和還是Oracle都是基于用戶的。用戶是根據(jù)所獲取權(quán)限,對操作系統(tǒng)或數(shù)據(jù)庫資源對象進(jìn)行不同級別的使用和處理,更好地維護(hù)了數(shù)據(jù)的安全。

      3.2 操作系統(tǒng)與Oracle不同之處

      操作系統(tǒng)與Oracle不同的地方,突出的是操作系統(tǒng)通常使用的虛擬內(nèi)存管理Oracle是沒有的。例如在Linux中,每個(gè)用戶進(jìn)程都可以有4GB的虛擬空間,為了更好地管理這部分虛擬空間,Linux定義了虛擬段,虛擬段是某個(gè)進(jìn)程的一段連續(xù)的虛擬空間,一個(gè)進(jìn)程通常占用幾個(gè)虛擬段。虛擬段不僅代表一段內(nèi)存區(qū)間,也可以對應(yīng)于一個(gè)文件、共享內(nèi)存或者對換設(shè)備。由于幾乎所有的操作系統(tǒng)都支持虛擬內(nèi)存,不可避免的是操作系統(tǒng)將Oracle的SGA整個(gè)作為虛擬內(nèi)存。

      其次,內(nèi)存區(qū)域是否共享是操作系統(tǒng)與Oracle的重要區(qū)別,操作系統(tǒng)中并不存在一個(gè)系統(tǒng)全局內(nèi)存區(qū)供內(nèi)核進(jìn)程和用戶進(jìn)程共享,相反,操作系統(tǒng)中的進(jìn)程在內(nèi)存區(qū)域上是相對獨(dú)立的,不同的進(jìn)程維護(hù)不同的內(nèi)存區(qū)。在Oracle中存在SGA,為系統(tǒng)分配著一組共享的內(nèi)存結(jié)構(gòu),包含一個(gè)數(shù)據(jù)庫實(shí)例的數(shù)據(jù)和控制信息。在一個(gè)數(shù)據(jù)實(shí)例中,可以有多個(gè)后臺進(jìn)程和服務(wù)器進(jìn)程共享系統(tǒng)全局區(qū)中的數(shù)據(jù);此外,Oracle不僅僅有共享的內(nèi)存,而且也有PGA,跟操作系統(tǒng)進(jìn)程一樣,該內(nèi)存區(qū)是專門為某以O(shè)racle服務(wù)器進(jìn)程或者后臺進(jìn)程服務(wù)的。

      第三,Oracle從Oracle 9i開始引入自動內(nèi)存管理ASMM支持動態(tài)SGA特性,使得Oracle內(nèi)存管理更加靈活多樣,通過組合有5種內(nèi)存管理形式,即自動內(nèi)存管理,自動共享內(nèi)存管理,手工共享內(nèi)存管理,自動PGA(Program Global Area)管理以及手動PGA管理方式。單擊“自動內(nèi)存管理”禁用按鈕,并選擇“啟用自動共享內(nèi)存管理”,DBA可不再通過手工設(shè)置shared pool、buffer pool、db_cache_size等若干內(nèi)存池的大小的情況下,數(shù)據(jù)庫自動完成并達(dá)到各SGA組件的最佳內(nèi)存配置分配方式。

      4 結(jié)語

      傳統(tǒng)的概念上講,存儲管理和進(jìn)程管理是操作系統(tǒng)的五個(gè)職能中的兩個(gè),但從Oracle上我們直接看到的在上述兩個(gè)區(qū)域Oracle同樣執(zhí)行這樣的功能,比起一級一級的頁表進(jìn)行繁瑣的尋址,Oracle給出了清晰的內(nèi)存管理與操作的功能視圖,便于程序員編寫代碼;其次Oracle將用戶的請求分解為公有和私有部分,且大部分的共享數(shù)據(jù)的請求全部放在占有大多內(nèi)存的SGA中,這種公私分離的模式提高了內(nèi)存的使用效率;第三,Oracle的ASMM內(nèi)存管理可以智能化分配SGA組件的內(nèi)存。最后,Oracle的整個(gè)SGA直接映射為操作系統(tǒng)將虛擬內(nèi)存,獨(dú)到之處體現(xiàn)了其在操作系統(tǒng)下的類似自治管理方式的優(yōu)勢,值得借鑒。

      猜你喜歡
      存儲管理內(nèi)核進(jìn)程
      萬物皆可IP的時(shí)代,我們當(dāng)夯實(shí)的IP內(nèi)核是什么?
      強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
      債券市場對外開放的進(jìn)程與展望
      中國外匯(2019年20期)2019-11-25 09:54:58
      基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
      Linux內(nèi)核mmap保護(hù)機(jī)制研究
      一種衛(wèi)星數(shù)據(jù)廣播系統(tǒng)端站存儲管理方案設(shè)計(jì)
      電子制作(2017年13期)2017-12-15 09:00:32
      文檔存儲管理系統(tǒng)的設(shè)計(jì)
      省級氣象數(shù)據(jù)文件共享存儲管理系統(tǒng)研究
      社會進(jìn)程中的新聞學(xué)探尋
      我國高等教育改革進(jìn)程與反思
      虹口区| 上虞市| 海淀区| 安阳县| 沅江市| 渝北区| 汨罗市| 堆龙德庆县| 电白县| 社旗县| 乌兰察布市| 南丹县| 仲巴县| 延安市| 宁河县| 集贤县| 大石桥市| 新余市| 克东县| 海南省| 聂荣县| 揭西县| 天水市| 敦煌市| 太原市| 阿拉善左旗| 武夷山市| 安远县| 金平| 财经| 阿图什市| 清苑县| 城市| 汉阴县| 道真| 温宿县| 桂林市| 上饶市| 措美县| 神农架林区| 休宁县|