亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        王潤(rùn)中

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

        0 引言

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

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

        整個(gè)操作系統(tǒng)內(nèi)核可以大致分成三個(gè)模塊,其中內(nèi)存管理和進(jìn)程管理分別對(duì)內(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)程管理

        對(duì)操作系統(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òng),具有獨(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)建與終止以及釋放所占資源,通過對(duì)進(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)存來(lái)實(shí)現(xiàn),每個(gè)進(jìn)程有自己的虛擬內(nèi)存,通過進(jìn)程控制塊,按照時(shí)間片的方式,進(jìn)程輪流執(zhí)行,只有輪詢到自己的時(shí)候,才對(duì)應(yīng)由物理內(nèi)存來(lái)使用,其他時(shí)間就等待。

        1.2 內(nèi)存管理

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

        圖3 段頁(yè)式存儲(chǔ)管理

        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ā)送連接請(qǐng)求時(shí),服務(wù)器在監(jiān)聽到客戶端要求后,生成一個(gè)Server Process來(lái)代理用戶的請(qǐng)求,然后向服務(wù)器進(jìn)程實(shí)例發(fā)起連接,創(chuàng)建會(huì)話,此時(shí)PGA(程序全局區(qū))分配內(nèi)存,在這個(gè)過程中,一個(gè)進(jìn)程一個(gè)PGA。

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

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

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

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

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

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

        首先相似的地方是在內(nèi)存的分配上,無(wú)論操作系統(tǒng)還是Oracle均是通過功能相似的進(jìn)程分配內(nèi)存的。在操作系統(tǒng)在啟動(dòng)時(shí),例如Linux,需要加載內(nèi)核映像到內(nèi)存中,內(nèi)核映像并不是一個(gè)可執(zhí)行的內(nèi)核,而是一個(gè)壓縮過的內(nèi)核映像。必須先啟動(dòng)例程實(shí)現(xiàn)少量硬件設(shè)置后,對(duì)內(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)存。無(wú)論是內(nèi)核進(jìn)程,還是用戶進(jìn)程,Linux對(duì)內(nèi)存的分配都是基于進(jìn)程的。

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

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

        補(bǔ)充一點(diǎn),對(duì)于不同的會(huì)話,無(wú)論操作系統(tǒng)和還是Oracle都是基于用戶的。用戶是根據(jù)所獲取權(quán)限,對(duì)操作系統(tǒng)或數(shù)據(jù)庫(kù)資源對(duì)象進(jìn)行不同級(jí)別的使用和處理,更好地維護(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ū)間,也可以對(duì)應(yīng)于一個(gè)文件、共享內(nèi)存或者對(duì)換設(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ū)域上是相對(duì)獨(dú)立的,不同的進(jìn)程維護(hù)不同的內(nèi)存區(qū)。在Oracle中存在SGA,為系統(tǒng)分配著一組共享的內(nèi)存結(jié)構(gòu),包含一個(gè)數(shù)據(jù)庫(kù)實(shí)例的數(shù)據(jù)和控制信息。在一個(gè)數(shù)據(jù)實(shí)例中,可以有多個(gè)后臺(tái)進(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)程或者后臺(tái)進(jìn)程服務(wù)的。

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

        4 結(jié)語(yǔ)

        傳統(tǒng)的概念上講,存儲(chǔ)管理和進(jìn)程管理是操作系統(tǒng)的五個(gè)職能中的兩個(gè),但從Oracle上我們直接看到的在上述兩個(gè)區(qū)域Oracle同樣執(zhí)行這樣的功能,比起一級(jí)一級(jí)的頁(yè)表進(jìn)行繁瑣的尋址,Oracle給出了清晰的內(nèi)存管理與操作的功能視圖,便于程序員編寫代碼;其次Oracle將用戶的請(qǐng)求分解為公有和私有部分,且大部分的共享數(shù)據(jù)的請(qǐng)求全部放在占有大多內(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)勢(shì),值得借鑒。

        猜你喜歡
        存儲(chǔ)管理內(nèi)核進(jìn)程
        萬(wàn)物皆可IP的時(shí)代,我們當(dāng)夯實(shí)的IP內(nèi)核是什么?
        強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
        債券市場(chǎng)對(duì)外開放的進(jìn)程與展望
        基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
        Linux內(nèi)核mmap保護(hù)機(jī)制研究
        一種衛(wèi)星數(shù)據(jù)廣播系統(tǒng)端站存儲(chǔ)管理方案設(shè)計(jì)
        電子制作(2017年13期)2017-12-15 09:00:32
        文檔存儲(chǔ)管理系統(tǒng)的設(shè)計(jì)
        省級(jí)氣象數(shù)據(jù)文件共享存儲(chǔ)管理系統(tǒng)研究
        社會(huì)進(jìn)程中的新聞學(xué)探尋
        我國(guó)高等教育改革進(jìn)程與反思
        丝袜美腿高清在线观看| 国产乱子伦视频一区二区三区| 韩国免费一级a一片在线| 日本午夜剧场日本东京热| 免费人成年激情视频在线观看| 亚洲av无码成人精品区在线观看 | 西西人体大胆视频无码| 亚洲人成伊人成综合久久| 国产精品久久久久久| 老司机在线精品视频网站| 91热国内精品永久免费观看| 国产精品麻豆一区二区三区| 风情韵味人妻hd| 色一情一区二| 国产亚洲AV片a区二区| av网页免费在线观看| 国产激情无码一区二区三区| 无码人妻丰满熟妇精品区| 人妻丰满熟妇av一区二区| 91精品国产综合久久久蜜| 99久久免费国产精品| 亚洲欧美日韩综合在线观看| 国产精品亚洲一区二区三区妖精| 亚洲中文字幕国产视频| 一二三四视频社区在线| 仙女白丝jk小脚夹得我好爽| 久久91精品国产一区二区| 国产av无码专区亚洲avjulia| 狠狠躁夜夜躁人人爽超碰97香蕉| 加勒比东京热综合久久| 在线观看免费日韩精品| 中文无码一区二区不卡αv| 男女视频在线一区二区| 乳乱中文字幕熟女熟妇| 欧美人与禽z0zo牲伦交| 国产极品美女高潮无套在线观看| 久久久亚洲日本精品一区| 黄片视频免费在线观看国产| 国产av电影区二区三区曰曰骚网| 久久91精品国产91久| 亚洲国产精品久久无人区|