国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
深入SQL SERVER 2000的內(nèi)存管理機制(一)

深入SQL SERVER 2000的內(nèi)存管理機制(一)

[日期:2005-07-08]來源:CSDN  作者:[字體: ]

深入SQL SERVER 2000的內(nèi)存管理機制

 

 

http://msdn.microsoft.com/data/default.aspx?pull=/library/en-us/dnsqldev/html/sqldev_01262004.asp

 

Ken Henderson

Microsoft Corporation

備注Ken Henderson 從開發(fā)者的角度來闡述了SQL SERVER 2000內(nèi)存管理的內(nèi)部機制

 

簡介

在本專欄中,我們將從一個開發(fā)者的角度來探索SQL SERVER 的內(nèi)存管理。因此我們將討論服務器內(nèi)存管理的API和操作系統(tǒng)的內(nèi)存管理機制,他們是如何運行的? 以這種新穎的方式來探討SQL SERVER內(nèi)存管理,可以使開發(fā)人員明白其中的前因后果,精通一個產(chǎn)品,我們要了解它內(nèi)部是如何運行和特定的用途。

我們首先開始的研究,它包括一些Windows內(nèi)存管理的基本原理。和所有的32位的Windows程序一樣,SQL SERVER也是使用Windows的內(nèi)存管理機制來分配、釋放和通用的內(nèi)存管理資源。也就是說,SQLSERVER和其他Windows程序一樣通過WIN32 API函數(shù)和操作系統(tǒng)提供的內(nèi)存管理資源交互。

     因為幾乎所有的SQLSERVER內(nèi)存分配都是使用虛擬內(nèi)存(而不是堆的方式),大部分的內(nèi)存分配的代碼分解到最后都是調(diào)有Win32VirtualAllo VirtualFree API函數(shù)。SQL SERVER通過調(diào)用VirtualAllo函數(shù)來預留和提交虛擬內(nèi)存,通過VirtualFree函數(shù)來釋放內(nèi)存。

 

虛擬內(nèi)存和物理內(nèi)存

X86處理器的系列中,Windows提供所有的程序可以尋址4GB虛擬內(nèi)存空間。所謂“虛擬”的意思是,這并不是傳統(tǒng)意義上的內(nèi)存,它僅僅是一段沒有物理存儲的隱式地址段。因為只有一個程序開始內(nèi)存分配,才開始使用這些地址段和物理的分配存儲空間。而且,這些物理的存儲空間并不需要物理的內(nèi)存(不完全),通常是磁盤空間。明確的說應該是在系統(tǒng)的虛擬頁文件中。這就是為什么有許多程序(每個程序有4GB的虛擬內(nèi)存空間)可以同時運行在只有128M的物理內(nèi)存的機器上,就像每個程序自己分配真實的內(nèi)存一樣。Windows透明地控制從系統(tǒng)頁文件拷貝和讀取數(shù)據(jù),因此程序可以在運行的機器上分配比物理內(nèi)存更多的內(nèi)存空間并且各種程序可以均等的訪問該機器物理內(nèi)存。

4GB的內(nèi)存地址空間分為2塊:用戶內(nèi)存空間和核心內(nèi)存空間。默認每個容量為2G,你可以通過Windows NT 系列操作系統(tǒng)的BOOT.INI文件來改變默認空間的大?。ū热纾?/span>Windows NT,Windows 2000,Windows XP Windows Server 2003都是Windows NT 系列的產(chǎn)品,Windows 9x Windows ME不是的)。

Figure 1. Windows partitions a process‘s virtual address space into the user mode (application) and kernel mode (operating system) partitions.

 

盡管每一個程序接受自己的虛擬內(nèi)存空間,系統(tǒng)代碼和設備驅(qū)動代碼共享一個單獨私有的虛擬地址空間。每個虛擬內(nèi)存頁都和一種特殊處理器模式關(guān)聯(lián)。為了滿足所有的系統(tǒng)頁都可以被訪問,處理器必須是請求模式。這個意思是說用戶的程序是無法直接訪問核心內(nèi)存空間,系統(tǒng)必須切換為核心模式,這樣核心模式的內(nèi)存空間才可以被訪問。

 

程序內(nèi)存空間調(diào)整

BOOT.INI文件中有一個/3GB的參數(shù)可以允許改變默認的限制(這個參數(shù)在Windows advanced server Windows 2000 Data Center有效),這樣可以通過犧牲核心內(nèi)存空間(2G降低到1G)將用戶應用程序的內(nèi)存空間從2G增加到3G.Windows的用法中,這種機制叫程序內(nèi)存空間調(diào)整或叫4GT調(diào)整(4GT).你可以通過在BOOT.INI文件的[operating systems]區(qū)域的適當?shù)男屑?/span>/3GB參數(shù)來調(diào)整應用程序的內(nèi)存空間.對一般的人來說可以選擇配置BOOT.INI文件的[operating systems]區(qū)域的適當?shù)男性黾?/span>/3GB或不加/3GB參數(shù)來啟動系統(tǒng).

警告:你也可以在Windows 2000 ProfessionalWindows 2000 的啟動文件中加/3GB的參數(shù)來啟動系統(tǒng),可是這樣只是減少了核心內(nèi)存空間到1GB但并沒有增加應用程序內(nèi)存空間.換句話說,這樣做并沒有從降低核心內(nèi)存空間獲得益處

注釋:WindowsXPWindows Server 2003中提供一個新的啟動參數(shù)/USERVA,可以和/3GB參數(shù)一樣使用,但允許你有更加出色的控制度.你可以象/3GB 一樣將/USERVA參數(shù)到BOOT.INI文件中. /USERVA參數(shù)比/3GB的優(yōu)勢在于,它可以允許你指定內(nèi)存地址空間分配給應用程序的大小.比如: /USERVA=2500 的意思就是配置2.5G的內(nèi)存地址空間預留給用戶內(nèi)存空間,1.5G的留給核心內(nèi)存空間.特別說明/3GB參數(shù)還是可以單獨使用的
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
SQL Server 2000數(shù)據(jù)庫的優(yōu)化
深度對比Oracle與SQL Server
SQL SERVER 內(nèi)存分配及常見內(nèi)存問題 簡介
題庫
微軟有意讓32位Vista操作系統(tǒng)內(nèi)存限制為4GB
如何配置 SQL Server 以便使用 2 GB 以上的物理內(nèi)存
更多類似文章 >>
生活服務
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服