作業系統儲存管理和oracle資料庫(第三篇)
在之前的一篇博文中討論了分頁儲存,http://blog.itpub.net/23718752/viewspace-1435671/
今天看了下分段儲存,儘管這部分內容都是大學的課程內容,但是感覺好像沒學過一樣:)
分段式儲存管理系統中,會為每個段分配一個連續的分割槽,而程式中的各個段可以離散地移入記憶體中不同的分割槽中,這一點上所說的段和資料庫中的段還是有著很大的區別,資料庫中的段是可以包含多個分割槽的,各個段
說起分段就會聯想到分頁,在這一點上自己的認識也很淺薄,查詢了下資料,個人認為下面的這段描述還是很到位的。
http://blog.163.com/clevertanglei900@126/blog/static/111352259201121734555459/
分頁與分段的主要區別
分頁和分段有許多相似之處,比如兩者都不要求作業連續存放.但在概念上兩者完全不同,主要表現在以下幾個方面:
(1)頁是資訊的物理單位,分頁是為了實現非連續分配,以便解決記憶體碎片問題,或者說分頁是由於系統管理的需要.段是資訊的邏輯單位,它含有一組意義相對完整的資訊,分段的目的是為了更好地實現共享,滿足使用者的需要.
(2)頁的大小固定,由系統確定,將邏輯地址劃分為頁號和頁內地址是由機器硬體實現的.而段的長度卻不固定,決定於使用者所編寫的程式,通常由編譯程式在對源程式進行編譯時根據資訊的性質來劃分.
(3)分頁的作業地址空間是一維的.分段的地址空間是二維的.
從資料庫的角度來看,感覺和資料庫中的段概念還是比較類似的。資料庫中段包含多個分割槽。各個分割槽也可以在不相鄰的分割槽中。
上一個圖來說明。
在分段情況下,會要求每個程式的地址空間劃分為若干個段,每個段都有自己的段名,對應到下圖中就是一個段號。每個段的地地址空間都是從0開始,是一個連續的地址空間,
從地址的儲存情況來說,段和頁的儲存方式都是類似的,都會包含兩部分。分段儲存中是段號和段內地址,和分頁儲存中的頁號和頁內地址類似。
由於一個程式由很多段組成,而且各個段可能被分配在主存中的多個不相鄰的分割槽中,為了將程式的邏輯地址轉換為實體地址,需要有一個短標來指出程式的某段放在主存中的位置以及段長。
這一點從資料庫層面來說有類似的方面,首先是程式由多個段組成,資料庫中可以理解為一個表包含多個段,資料段,索引段,lob段,lob索引段等等。這些都是獨立的段,在儲存的時候也可能分佈在不同的表空間中,所以可能不是一個相鄰的分割槽。
而段的資訊在作業系統層面是通過段表來維護的,資料庫層面則是通過資料字典,user_segment,user_extents來維護的,每個表包含的段,每個段包含的區都是很詳實的。
從分段和分頁的優點來說,因為它們涉及的層面和應用方向不同,但是還是有一定的可比性,在段共享方面,分段儲存還是很有優勢,誰讓它是段共享呢。
從作業系統層面舉個例子就是一個多使用者系統,有一個應用程式可能包含的程式段是100K,資料段是40K,按理說需要40K*40+100k*40=1600+4000=5600k
在分段儲存中則需要100k+40k*40=1700k,從這一點上來說還是很大的改進。
從這一點上來說,資料庫中的同義詞就有點分段儲存的味道,每個同義詞都可以訪問源表,相當於共享了資料,同義詞佔用的儲存空間很小,幾乎可以忽略。
可能分段儲存和分頁儲存都各有千秋,但是都是在不斷的使用和改進中主鍵發展起來的,分段儲存沒有段內碎片,只有外部碎片,簡單分段技術也是基於多重分割槽技術的發展而來。另外簡單分頁對於使用者是不可見的,使用者無法瞭解程式被分頁或者分頁的細節,但是簡單分段對於使用者基本是可見的,當程式被交換出記憶體的時候,對應的頁表和段表也需要隨著程式一起撤出記憶體。
當然分頁分段方式還在不斷的發展中,要不怎麼有後續的段頁式儲存呢,在後續章節繼續分享,需要多充充電,補補作業系統方面的東西。理解透了才能準確的類比資料庫層面的東西。
今天看了下分段儲存,儘管這部分內容都是大學的課程內容,但是感覺好像沒學過一樣:)
分段式儲存管理系統中,會為每個段分配一個連續的分割槽,而程式中的各個段可以離散地移入記憶體中不同的分割槽中,這一點上所說的段和資料庫中的段還是有著很大的區別,資料庫中的段是可以包含多個分割槽的,各個段
說起分段就會聯想到分頁,在這一點上自己的認識也很淺薄,查詢了下資料,個人認為下面的這段描述還是很到位的。
http://blog.163.com/clevertanglei900@126/blog/static/111352259201121734555459/
分頁與分段的主要區別
分頁和分段有許多相似之處,比如兩者都不要求作業連續存放.但在概念上兩者完全不同,主要表現在以下幾個方面:
(1)頁是資訊的物理單位,分頁是為了實現非連續分配,以便解決記憶體碎片問題,或者說分頁是由於系統管理的需要.段是資訊的邏輯單位,它含有一組意義相對完整的資訊,分段的目的是為了更好地實現共享,滿足使用者的需要.
(2)頁的大小固定,由系統確定,將邏輯地址劃分為頁號和頁內地址是由機器硬體實現的.而段的長度卻不固定,決定於使用者所編寫的程式,通常由編譯程式在對源程式進行編譯時根據資訊的性質來劃分.
(3)分頁的作業地址空間是一維的.分段的地址空間是二維的.
從資料庫的角度來看,感覺和資料庫中的段概念還是比較類似的。資料庫中段包含多個分割槽。各個分割槽也可以在不相鄰的分割槽中。
上一個圖來說明。
在分段情況下,會要求每個程式的地址空間劃分為若干個段,每個段都有自己的段名,對應到下圖中就是一個段號。每個段的地地址空間都是從0開始,是一個連續的地址空間,
從地址的儲存情況來說,段和頁的儲存方式都是類似的,都會包含兩部分。分段儲存中是段號和段內地址,和分頁儲存中的頁號和頁內地址類似。
由於一個程式由很多段組成,而且各個段可能被分配在主存中的多個不相鄰的分割槽中,為了將程式的邏輯地址轉換為實體地址,需要有一個短標來指出程式的某段放在主存中的位置以及段長。
這一點從資料庫層面來說有類似的方面,首先是程式由多個段組成,資料庫中可以理解為一個表包含多個段,資料段,索引段,lob段,lob索引段等等。這些都是獨立的段,在儲存的時候也可能分佈在不同的表空間中,所以可能不是一個相鄰的分割槽。
而段的資訊在作業系統層面是通過段表來維護的,資料庫層面則是通過資料字典,user_segment,user_extents來維護的,每個表包含的段,每個段包含的區都是很詳實的。
從分段和分頁的優點來說,因為它們涉及的層面和應用方向不同,但是還是有一定的可比性,在段共享方面,分段儲存還是很有優勢,誰讓它是段共享呢。
從作業系統層面舉個例子就是一個多使用者系統,有一個應用程式可能包含的程式段是100K,資料段是40K,按理說需要40K*40+100k*40=1600+4000=5600k
在分段儲存中則需要100k+40k*40=1700k,從這一點上來說還是很大的改進。
從這一點上來說,資料庫中的同義詞就有點分段儲存的味道,每個同義詞都可以訪問源表,相當於共享了資料,同義詞佔用的儲存空間很小,幾乎可以忽略。
可能分段儲存和分頁儲存都各有千秋,但是都是在不斷的使用和改進中主鍵發展起來的,分段儲存沒有段內碎片,只有外部碎片,簡單分段技術也是基於多重分割槽技術的發展而來。另外簡單分頁對於使用者是不可見的,使用者無法瞭解程式被分頁或者分頁的細節,但是簡單分段對於使用者基本是可見的,當程式被交換出記憶體的時候,對應的頁表和段表也需要隨著程式一起撤出記憶體。
當然分頁分段方式還在不斷的發展中,要不怎麼有後續的段頁式儲存呢,在後續章節繼續分享,需要多充充電,補補作業系統方面的東西。理解透了才能準確的類比資料庫層面的東西。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-1436338/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 作業系統程式、儲存和I/O作業系統
- linux和windows作業系統下完全刪除oracle資料庫LinuxWindows作業系統Oracle資料庫
- [資料庫系統]儲存和檔案結構資料庫
- 統信作業系統下資料庫管理利器作業系統資料庫
- Oracle資料庫適配哪些國產作業系統?Oracle資料庫作業系統
- 理解作業系統之儲存管理作業系統
- 作業系統——c++實現頁式虛擬儲存管理作業系統C++
- 什麼是大資料系統儲存及管理?大資料
- 麒麟作業系統下管理國內外主流資料庫作業系統資料庫
- 分散式系統技術:儲存之資料庫分散式資料庫
- 作業系統儲存管理實驗:最近最少使用LRU(Least Recently Used)作業系統AST
- 使用JavaScript和Python實現Oracle資料庫的儲存過程?JavaScriptPythonOracle資料庫儲存過程
- 【PDB】Oracle資料庫如何檢查和設定pdb最大儲存大小Oracle資料庫
- Flutter持久化儲存之資料庫儲存Flutter持久化資料庫
- 分散式文件儲存資料庫之MongoDB索引管理分散式資料庫MongoDB索引
- 資料庫與資料庫管理系統概述資料庫
- 【資料庫】資料庫儲存過程(一)資料庫儲存過程
- 作為最常用的儲存協議,企業如何進行NAS儲存統一管理?協議
- 大資料檔案儲存系統HDFS大資料
- gitlab資料庫儲存位置Gitlab資料庫
- 資料庫儲存過程資料庫儲存過程
- 【大資料】BigTable分散式資料儲存系統分散式資料庫 | 複習筆記大資料分散式資料庫筆記
- 數商雲SCM管理系統庫存管理功能助力新能源汽車企業倉儲管理更高效
- 使用Hazelcast作為Spring資料儲存庫的開源案例ASTSpring
- 系統管理指南:Oracle Solaris Containers-資源管理和 Oracle Solaris ZonesOracleAI
- 作業系統-程式管理作業系統
- 【NUMBER】Oracle資料庫最佳化之理解NUMBER儲存機制Oracle資料庫
- 讀資料工程之道:設計和構建健壯的資料系統18資料儲存系統(上)
- 讀資料工程之道:設計和構建健壯的資料系統19資料儲存系統 (下)
- 面試資料-作業系統面試作業系統
- 企業管理系統庫存管理軟體進銷存系統協同辦公系統二次開發
- 報表資料分庫儲存
- MySQL資料庫操作、儲存引擎MySql資料庫儲存引擎
- MySql資料庫——儲存過程MySql資料庫儲存過程
- 【學習筆記之作業系統原理篇】儲存管理筆記作業系統
- 庫存管理系統,實用於製造業服務業
- NVM作為主存上對資料庫管理系統的影響資料庫
- 自研資料庫CynosDB儲存系統如何實現即時恢復資料庫
- 明解資料庫------資料庫儲存演變史資料庫