亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3830 | 回復(fù): 1
打印 上一主題 下一主題

AIX 程序地址空間概述 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2006-10-01 21:13 |只看該作者 |倒序?yàn)g覽
內(nèi)容\r\n提要         AIX 程序地址空間概述\r\n正文         \r\n\r\n程序地址空間概述\r\n\r\n基本操作系統(tǒng)提供了很多編寫應(yīng)用程序內(nèi)存使用情況的服務(wù)。可利用工具來輔助分配內(nèi)存、映射內(nèi)存和文件并概要分析應(yīng)用程序的內(nèi)存使用情況。本節(jié)作為背景知識,描述了系統(tǒng)的內(nèi)存管理體系結(jié)構(gòu)和內(nèi)存管理策略。\r\n\r\n系統(tǒng)內(nèi)存體系結(jié)構(gòu)介紹\r\n\r\n系統(tǒng)使用一種通過軟件擴(kuò)展物理硬件能力的內(nèi)存管理方案。因?yàn)榈刂房臻g與實(shí)內(nèi)存不是一一對應(yīng)的,所以地址空間(以及系統(tǒng)將其與實(shí)內(nèi)存相對應(yīng)的方法)稱為虛擬內(nèi)存。\r\n\r\n內(nèi)核和硬件子系統(tǒng)相互合作以將虛擬地址轉(zhuǎn)換為物理地址,它們組成了內(nèi)存管理子系統(tǒng)。內(nèi)存管理策略由內(nèi)核采用的操作構(gòu)成,那些操作保證進(jìn)程能平等地分享主內(nèi)存。以下幾節(jié)更詳細(xì)地描述了內(nèi)存管理子系統(tǒng)的特征。\r\n\r\n32 位系統(tǒng)的物理地址空間\r\n硬件提供了一個連續(xù)的虛擬內(nèi)存地址范圍(從 0x0000000000000 到 0xFFFFFFFFFFFFF)來存取數(shù)據(jù)?偟目蓪ぶ房臻g超過 1000 TB。內(nèi)存訪問指令生成一個 32 位的地址:4 位用來選擇段寄存器,而 28 位用來給出在此段內(nèi)的偏移量。該尋址方案提供了對 16 個段的訪問,每個段最大可達(dá) 256 MB。每個段寄存器包含一個 24 位的段標(biāo)識,該標(biāo)識成為了該 28 位偏移量的前綴,它們一起構(gòu)成了虛擬內(nèi)存地址。所得的 52 位虛擬地址指向一個系統(tǒng)范圍的大型單一虛擬內(nèi)存空間。\r\n\r\n該進(jìn)程空間是一個 32 位的地址空間;即程序使用 32 位指針。然而,每個進(jìn)程或中斷處理程序只可尋址其段標(biāo)識位于段寄存器中的系統(tǒng)范圍虛擬內(nèi)存空間(段)。進(jìn)程通過快速更改寄存器可訪問超過 16 個段。\r\n\r\n64 位系統(tǒng)上的 32 位進(jìn)程擁有和 32 位系統(tǒng)(232 字節(jié))相同的有效地址空間,但可以訪問與 64 位進(jìn)程可訪問的相同虛擬地址空間(280 字節(jié))。\r\n\r\n64 位系統(tǒng)的物理地址空間\r\n硬件提供了一個連續(xù)的虛擬內(nèi)存地址范圍(從 0x00000000000000000000 到 0xFFFFFFFFFFFFFFFFFFFF)來存取數(shù)據(jù)?偟目蓪ぶ房臻g超過 1 萬億 TB。內(nèi)存訪問指令生成一個 64 位的地址:36 位用來選擇段寄存器,而 28 位用來給出在此段內(nèi)的偏移量。該尋址方案提供了對超過 6400 萬個段的訪問,每個段最大可達(dá) 256 MB。每個段寄存器包含一個 52 位的段標(biāo)識,該標(biāo)識成為了該 28 位偏移量的前綴,它們一起構(gòu)成了虛擬內(nèi)存地址。所得的 80 位虛擬地址指向一個系統(tǒng)范圍的大型單一虛擬內(nèi)存空間。\r\n\r\n該進(jìn)程空間是一個 64 位的地址空間;即程序使用 64 位指針。然而,每個進(jìn)程或中斷處理程序只可尋址其段標(biāo)識位于段寄存器中的系統(tǒng)范圍虛擬內(nèi)存空間(段)。\r\n\r\n段寄存器尋址\r\n系統(tǒng)內(nèi)核以常規(guī)方式為所有進(jìn)程裝入某些段寄存器,從而隱式提供了大多數(shù)進(jìn)程所需的內(nèi)存可尋址性。這些寄存器包括兩個內(nèi)核段、一個共享庫段和一個 I/O 設(shè)備段,這些段由所有進(jìn)程共享且其內(nèi)容對非內(nèi)核程序是只讀的。對于進(jìn)程的 exec 系統(tǒng)調(diào)用還有一個段,在只讀的基礎(chǔ)上它與其他執(zhí)行相同程序的進(jìn)程、包含可讀寫的庫數(shù)據(jù)的專用共享庫數(shù)據(jù)段,以及進(jìn)程的專用可讀寫段一起實(shí)現(xiàn)共享?梢允褂脙(nèi)存映射技術(shù)裝入其余的段寄存器以提供更多的內(nèi)存,或根據(jù)內(nèi)核強(qiáng)加的訪問許可權(quán)通過內(nèi)存訪問文件。請參閱了解內(nèi)存映射以獲取關(guān)于可用的內(nèi)存映射服務(wù)的信息。\r\n\r\n通過間接能力提供的系統(tǒng) 32 位尋址和訪問給每個進(jìn)程提供了一個與系統(tǒng)范圍虛擬內(nèi)存空間的實(shí)際大小無關(guān)的接口。某些段寄存器由所有進(jìn)程共享,其他段寄存器由進(jìn)程的子集共享,而另外的一些則只有一個進(jìn)程才可訪問。共享是通過允許兩個或更多的進(jìn)程裝入相同的段標(biāo)識來實(shí)現(xiàn)的。\r\n\r\n調(diào)頁空間\r\n為了向有限的實(shí)內(nèi)存空間提供很大的虛擬內(nèi)存空間,系統(tǒng)使用實(shí)內(nèi)存作為工作空間,并將沒有映射的非活動數(shù)據(jù)和程序保存在磁盤上。包含該數(shù)據(jù)的磁盤區(qū)域稱為調(diào)頁空間。頁是一個虛擬內(nèi)存單位,包含 4 KB 的數(shù)據(jù)并可在實(shí)際存儲器和輔助存儲器之間傳送。當(dāng)系統(tǒng)需要頁面空間中的數(shù)據(jù)或程序時,它執(zhí)行以下操作:\r\n\r\n查找當(dāng)前沒有活動的內(nèi)存區(qū)域。\r\n確保來自那個內(nèi)存區(qū)域的數(shù)據(jù)或程序的最新副本位于磁盤的調(diào)頁空間中。\r\n將新的程序或數(shù)據(jù)從磁盤上的調(diào)頁空間讀入新釋放的內(nèi)存區(qū)域。\r\n內(nèi)存管理策略\r\n實(shí)地址到虛擬地址的地址轉(zhuǎn)換和大多數(shù)其他虛擬內(nèi)存設(shè)施由“虛擬內(nèi)存管理器”(VMM)透明地提供給系統(tǒng)。VMM 實(shí)現(xiàn)了虛擬內(nèi)存,允許創(chuàng)建大于系統(tǒng)的可用物理內(nèi)存的段。它通過維護(hù)一個實(shí)內(nèi)存的空閑頁列表(用來檢索所需轉(zhuǎn)入內(nèi)存的頁面)來實(shí)現(xiàn)這個功能。\r\n\r\nVMM 有時必須通過從實(shí)內(nèi)存除去某些當(dāng)前頁數(shù)據(jù)來補(bǔ)充空閑列表上的頁。在需要數(shù)據(jù)時在內(nèi)存和磁盤之間移動數(shù)據(jù)的過程稱為“頁面調(diào)度”。為了完成頁面調(diào)度,VMM 使用將頁分為三類的頁面挪用算法,每一類有唯一的進(jìn)入和退出條件:\r\n\r\n工作存儲器頁\r\n本地文件頁\r\n遠(yuǎn)程文件頁\r\n一般來說,工作頁擁有最高的優(yōu)先級,接下來是本地文件頁,然后再是遠(yuǎn)程文件頁。\r\n\r\n此外,VMM 使用通常所說的時鐘算法技術(shù)來選擇要替換的頁。該技術(shù)利用每頁的訪問位作為哪些頁最近使用(訪問)過的指示。當(dāng)調(diào)用頁面挪用程序例程時,它在頁幀表中循環(huán),檢測每頁的訪問位。如果沒有訪問該頁且該頁是可挪用的(即沒有固定并符合其他頁面挪用條件),則它被挪用并置于空閑列表上。訪問頁可能沒有被挪用,但其訪問位將復(fù)位,從而使該訪問有效“老化”,這樣就可能在下一次發(fā)出頁面挪用算法時挪用該頁。請參閱頁面空間程序的需求以獲得更多信息。\r\n\r\n內(nèi)存分配\r\n此操作系統(tǒng)的版本 3 對分配給應(yīng)用程序的存儲器使用延遲頁面調(diào)度時間片技術(shù)。這意味著當(dāng)存儲器以子例程(如 malloc)分配給應(yīng)用程序時,只有在訪問該存儲器后才會把調(diào)頁空間分配給該存儲器。請參閱使用 malloc 子系統(tǒng)的系統(tǒng)內(nèi)存分配以獲取更多關(guān)于系統(tǒng)的分配策略的信息。\r\n\r\n了解內(nèi)存映射\r\n\r\n在系統(tǒng)上處理應(yīng)用程序指令的速度與為獲取程序可尋址內(nèi)存之外的數(shù)據(jù)所需的訪問操作的數(shù)量成正比。系統(tǒng)提供了兩種方法來減少與這些讀寫操作相關(guān)的處理開銷。可將文件數(shù)據(jù)映射到進(jìn)程的地址空間中。也可將進(jìn)程映射到可能由協(xié)作進(jìn)程共享的匿名內(nèi)存區(qū)域中。\r\n\r\n通過將文件數(shù)據(jù)合并入進(jìn)程地址空間,內(nèi)存映射文件提供了一種進(jìn)程存取文件的機(jī)制。使用映射文件可顯著減少 I/O 數(shù)據(jù)移動,因?yàn)槲募䲠?shù)據(jù)不必如 read 和 write 子例程所做的那樣被復(fù)制到進(jìn)程數(shù)據(jù)緩沖區(qū)中。當(dāng)超過一個進(jìn)程映射相同的文件時,其內(nèi)容將被這些進(jìn)程共享,這提供了一個低開銷的進(jìn)程同步與通信機(jī)制。\r\n\r\n已映射的內(nèi)存內(nèi)存區(qū)域,也稱為共享內(nèi)存區(qū)域,可作為在進(jìn)程間交換數(shù)據(jù)的大池?捎玫淖永滩惶峁┻M(jìn)程間的鎖定或訪問控制。因此,使用共享內(nèi)存區(qū)域的進(jìn)程必須設(shè)置信號控制方法以防止訪問沖突,并確保進(jìn)程不更改其他進(jìn)程正在使用的數(shù)據(jù)。在進(jìn)程間的數(shù)據(jù)交換量太大以至于無法傳送消息,或進(jìn)程維護(hù)一共用的大型數(shù)據(jù)庫時,共享內(nèi)存區(qū)域帶來的益處最大。\r\n\r\n系統(tǒng)提供了兩個映射文件和匿名內(nèi)存區(qū)域的方法。以下子例程都被認(rèn)為是 shmat 服務(wù),它們特別用于創(chuàng)建并使用來自程序的共享內(nèi)存段:\r\n\r\nshmctl 控制共享內(nèi)存操作\r\nshmget 獲取或創(chuàng)建共享內(nèi)存段\r\nshmat 連接來自進(jìn)程的共享內(nèi)存段。不允許映射塊設(shè)備。\r\nshmdt 拆離來自進(jìn)程的共享內(nèi)存段\r\ndisclaim 除去來自共享內(nèi)存段內(nèi)指定的地址范圍的映射\r\n\r\nftok 子例程提供了 shmget 子例程用來創(chuàng)建共享段的密鑰。\r\n\r\n第二個服務(wù)組都被認(rèn)為是 mmap 服務(wù),特別用于映射文件,雖然它還可能被用于創(chuàng)建共享內(nèi)存段。\r\n\r\n所有對由文件的 mmap() 產(chǎn)生的內(nèi)存的有效操作對由塊設(shè)備的 mmap() 產(chǎn)生的內(nèi)存的也有效。塊設(shè)備是一個特殊文件,它提供對給出塊接口的設(shè)備驅(qū)動程序的訪問。設(shè)備驅(qū)動程序的塊接口需要大小固定的塊中的數(shù)據(jù)訪問。該接口特別用于接口數(shù)據(jù)。\r\n\r\nmmap 服務(wù)包括以下子例程:\r\n\r\nmadvise 將進(jìn)程的預(yù)期調(diào)頁行為通知系統(tǒng)\r\nmincore 確定內(nèi)存頁的駐留\r\nmmap 將對象文件映射到虛擬內(nèi)存中。允許一次一個進(jìn)程地映射塊設(shè)備。\r\nmprotect 修改內(nèi)存映射的訪問保護(hù)\r\nmsync 使映射文件與其底層的存儲設(shè)備同步\r\nmunmap 對已映射的內(nèi)存區(qū)域取消映射\r\n\r\nmsem_init、msem_lock、msem_unlock、msem_remove、msleep 和 mwakeup 子例程提供了對使用 mmap 服務(wù)映射的進(jìn)程的訪問控制。\r\n\r\n請參閱以下章節(jié)以了解更多關(guān)于內(nèi)存映射的信息。\r\n\r\n將 mmap 與 shmat 比較\r\nmmap 兼容性注意事項(xiàng)\r\n使用信號子例程\r\n用 shmat 子例程映射文件\r\n用 shmat 子例程映射共享內(nèi)存\r\n將 mmap 與 shmat 比較\r\n與和使用 shmat 服務(wù)一樣,可用于使用 mmap 服務(wù)映射文件的進(jìn)程地址空間部分與該進(jìn)程是 32 位進(jìn)程還是 64 位進(jìn)程有關(guān)。對于 32 位進(jìn)程,可用于映射的地址空間部分由 0x30000000-0xCFFFFFFF 范圍內(nèi)的地址組成,總的地址空間高達(dá) 2.5 GB?捎糜谟成湮募牡刂房臻g部分由 0x30000000-0xCFFFFFFF 和 0xE0000000-0xEFFFFFFF 范圍內(nèi)的地址組成,總的地址空間高達(dá) 2.75 GB。在 AIX 5.2 和更新的版本中,以超大地址空間模型運(yùn)行的 32 位進(jìn)程擁有的可用映射范圍為 0x30000000-0xFFFFFFFF,總的地址空間高達(dá) 3.25 GB。要獲得更多關(guān)于超大地址空間模型的信息,請參閱理解大地址空間模型。\r\n\r\n32 為進(jìn)程地址空間內(nèi)的所有可用范圍均可用于固定位置和可變位置的映射。在應(yīng)用程序指定映射所在的地址空間的固定位置時,發(fā)生固定位置映射。在應(yīng)用程序指定由系統(tǒng)確定映射應(yīng)該所在的位置時,發(fā)生可變位置映射。\r\n\r\n對于 64 位過程,有兩個進(jìn)程地址空間的地址范圍組可用于 mmap 或 shmat 映射。第一個由單個范圍 0x07000000_00000000-0x07FFFFFF_FFFFFFFF 組成,可用于固定位置和可變位置映射。第二個地址組僅可用于固定位置映射,由 0x30000000-0xCFFFFFFF、0xE0000000-0xEFFFFFFF 和 0x10_00000000-0x06FFFFFF_FFFFFFFF 范圍組成。其最后一個范圍(由 0x10_00000000-0x06FFFFFF_FFFFFFFF 組成)也可用于系統(tǒng)裝入程序以保留程序文本、數(shù)據(jù)和堆,這樣只有那部分未使用的范圍才可用于固定位置映射。\r\n\r\nmmap 和 shmat 服務(wù)均提供了將多個進(jìn)程映射到同一對象區(qū)域的能力,這樣它們就可共享對該對象的尋址能力。然而,通過允許建立相對無限的映射數(shù)量,mmap 子例程將其能力延伸到 shmat 子例程所提供的能力之外。在該能力提高每個文件對象或內(nèi)存段所支持的映射數(shù)量的同時,它被證明對某些應(yīng)用程序無效,這種應(yīng)用程序中有許多進(jìn)程將相同的文件數(shù)據(jù)映射到地址空間中。\r\n\r\nmmap 子例程為每個映射到對象的進(jìn)程提供了一個唯一的對象地址。這是該軟件通過為每個進(jìn)程提供一個唯一的虛擬地址(即通常所說的別名)來完成的。shmat 子例程允許進(jìn)程共享已映射對象的地址。\r\n\r\n因?yàn)槿魏螘r候?qū)ο笾械慕o定頁的現(xiàn)存別名里只有一個擁有實(shí)地址轉(zhuǎn)換,所以只有一個 mmap 映射可在不導(dǎo)致缺頁故障的情況下引用該頁。任何通過不同的映射(即不同的別名)對頁的引用會導(dǎo)致缺頁故障,該故障會造成該頁的現(xiàn)存實(shí)地址轉(zhuǎn)換無效。結(jié)果,必須為其在不同的別名下建立新的轉(zhuǎn)換。進(jìn)程通過在這些不同的轉(zhuǎn)換中移動它們來共享頁。\r\n\r\n對于其中許多進(jìn)程將相同的文件數(shù)據(jù)映射到其地址空間中的應(yīng)用程序,該切換進(jìn)程可能對性能有負(fù)面影響。在這些情況下,shmat 子例程可能提供更有效的文件映射能力。\r\n\r\n注:\r\n在使用 PowerPC 處理器的系統(tǒng)上,對同一實(shí)地址可存在多個虛擬地址。實(shí)地址可對不同進(jìn)程中不同的有效地址擁有別名,而不用切換。因?yàn)闆]有開關(guān),也就沒有性能的下降。\r\n在以下情況下,請使用 shmat 服務(wù):\r\n\r\n對于 32 位應(yīng)用程序,同時映射了 11 個或更少的文件,且每個小于 256 MB。\r\n映射大于 256 MB 的文件時。\r\n映射需要在無關(guān)(沒有父子關(guān)系)進(jìn)程間共享的共享內(nèi)存區(qū)域時。\r\n映射整個文件時。\r\n在以下情況下,請使用 mmap:\r\n\r\n要考慮應(yīng)用程序的可移植性。\r\n同時映射許多文件。\r\n只需要映射文件的一部分。\r\n需要在映射時設(shè)置頁級別的保護(hù)。\r\n需要專用映射。\r\n“擴(kuò)展的 shmat”能力可用于地址空間有限的 32 位應(yīng)用程序。如果定義了環(huán)境變量 EXTSHM=ON,則在那個環(huán)境中執(zhí)行的進(jìn)程可以創(chuàng)建并連接多于 11 個的共享內(nèi)存段。進(jìn)程可將這些段連接到地址空間中,以獲得段的大小。其他段可在相同的 256MB 區(qū)域中被連接到第一個段的末尾。進(jìn)程可在其上連接的地址位于頁邊界,它是 SHMLBA_EXTSHM 字節(jié)的倍數(shù)。\r\n\r\n對于使用 shmat 功能部件有一些限制。這些共享內(nèi)存區(qū)域不能被作為 I/O 緩沖區(qū)(其中緩沖區(qū)固定的取消發(fā)生在中斷處理程序內(nèi))使用。使用擴(kuò)展的 shmat I/O 緩沖區(qū)的限制與 mmap 緩沖區(qū)的相同。\r\n\r\n該環(huán)境變量為應(yīng)用程序執(zhí)行選項(xiàng)提供了能在 EXTSHM=ON 時連接超過 11 個段的附加功能,或提供在沒有設(shè)置該環(huán)境變量時對 11 個或更少的段的性能更高的訪問。此外,“擴(kuò)展的 shmat”能力只能應(yīng)用于 32 位進(jìn)程。\r\n\r\nmmap 兼容性注意事項(xiàng)\r\n\r\nmmap 服務(wù)由不同的標(biāo)準(zhǔn)指定,且通常用作其他操作系統(tǒng)實(shí)現(xiàn)中選項(xiàng)的文件映射接口。然而,mmap 子例程的系統(tǒng)實(shí)現(xiàn)可能與其他實(shí)現(xiàn)不同。mmap 子例程包括以下改進(jìn):\r\n\r\n不支持映射到進(jìn)程的專用區(qū)域。\r\n映射不被隱式取消。如果映射已經(jīng)在所指定的范圍中存在,指定 MAP_FIXED 的 mmap 操作將失敗。\r\n對于專用映射,寫入時復(fù)制語義在第一次寫入引用上創(chuàng)建頁的復(fù)制。\r\n不支持 I/O 或設(shè)備內(nèi)存的映射。\r\n不支持字符設(shè)備或?qū)?mmap 區(qū)域用作對字符設(shè)備進(jìn)行讀寫操作的緩沖區(qū)的映射。\r\nmadvise 子例程只是為了兼容性而提供的。系統(tǒng)不按照該所指定的建議采取任何操作。\r\nmprotect 子例程允許指定的區(qū)域包含未映射的頁。在操作中,未映射的頁被簡單地跳過。\r\n不支持缺省精確映射和 MAP_INHERIT、MAP_HASSEMAPHORE 以及 MAP_UNALIGNED 標(biāo)志的特定于 OSF/AES 的選項(xiàng)。\r\n使用信號子例程\r\nmsem_init、msem_lock、msem_unlock、msem_remove、msleep 和 mwakeup 子例程符合 OSF 應(yīng)用程序環(huán)境規(guī)范。它們提供了 IPC 接口(如 semget 和 semop 子例程)的替換物。使用該信號的好處包括高效的串行化方法和由于不必在沒有信號爭用的情況下建立系統(tǒng)調(diào)用而減少了的開銷。\r\n\r\n信號可在共享內(nèi)存區(qū)域中找到。信號由 msemaphore 結(jié)構(gòu)指定。msemaphore 結(jié)構(gòu)中的所有值應(yīng)該由 msem_init 子例程調(diào)用得出。跟在該調(diào)用后可能是 msem_lock 子例程或 msem_unlock 子例程的調(diào)用序列,也可能不是。如果 msemaphore 結(jié)構(gòu)值以其他方式產(chǎn)生,信號子例程的結(jié)果不確定。\r\n\r\nmsemaphore 結(jié)構(gòu)的地址為有效數(shù)字。應(yīng)該注意不要修改該結(jié)構(gòu)的地址。如果該結(jié)構(gòu)包含復(fù)制自其他地址上的 msemaphore 結(jié)構(gòu)的值,該信號子例程的結(jié)果將是不確定的。\r\n\r\n在信號結(jié)構(gòu)存在于由 mmap 創(chuàng)建的匿名內(nèi)存存儲器中時,可能會證實(shí)信號子例程沒有那么高效,特別是在許多進(jìn)程引用相同的信號時。在這種情況下,應(yīng)該在由 shmget 和 shmat 子例程創(chuàng)建的共享內(nèi)存區(qū)域以外分配信號結(jié)構(gòu)。\r\n\r\n用 shmat 子例程映射文件\r\n映射可用于減少涉及文件內(nèi)容讀寫的開銷。一旦文件內(nèi)容被映射到用戶內(nèi)存區(qū)域,可像內(nèi)存中的數(shù)據(jù)一樣使用該數(shù)據(jù)的指針而不是輸入/輸出調(diào)用操作該文件。磁盤上該文件的副本也可用作該文件的頁面調(diào)度區(qū)域來保存調(diào)頁空間。\r\n\r\n程序可將任何常規(guī)文件用作映射數(shù)據(jù)文件。還可將映射數(shù)據(jù)文件的功能擴(kuò)展到包含已編譯和可執(zhí)行對象代碼的文件。因?yàn)樵L問映射文件比訪問常規(guī)文件更快,所以如果其可執(zhí)行對象文件被映射到文件,系統(tǒng)可更快地裝入程序。請參閱用 shmat 子例程創(chuàng)建映射數(shù)據(jù)文件以獲得關(guān)于將任何常規(guī)文件用作映射數(shù)據(jù)文件的信息。\r\n\r\n要創(chuàng)建作為已映射可執(zhí)行文件的程序,請使用 cc 或 ld 命令的 -K 標(biāo)志編譯并鏈接該程序。-K 標(biāo)志通知鏈接程序創(chuàng)建頁對齊格式的對象文件。就是說,對象文件的每個部件在頁界(可被 2 KB 整除的地址)啟動。該選項(xiàng)會導(dǎo)致對象文件中某些空的空間,但允許可執(zhí)行文件被映射到內(nèi)存。系統(tǒng)將對象文件映射到內(nèi)存時,對文本和數(shù)據(jù)部分進(jìn)行不同的處理。\r\n\r\n寫入時復(fù)制映射文件\r\n要阻止對映射文件的更改立即出現(xiàn)在磁盤上的文件中,請將文件映射為寫入時復(fù)制文件。該選項(xiàng)創(chuàng)建更改保存在系統(tǒng)頁空間中,而不是磁盤上的文件副本上的映射文件。必須選擇將這些更改寫入磁盤上的副本以保存這些更改。否則在關(guān)閉文件時會丟失這些更改。\r\n\r\n因?yàn)楦牟皇橇⒓捶从吃谄渌脩艨赡茉L問的文件的副本中,使用寫入時復(fù)制映射文件。\r\n\r\n系統(tǒng)不檢測用 shmat 子例程映射的文件末尾。因此,如果程序通過存儲入相應(yīng)的內(nèi)存段(映射文件的地方)以在寫入時復(fù)制映射文件中寫入超出文件當(dāng)前的末尾,則用由零組成的塊來擴(kuò)展磁盤上的實(shí)際文件,以此為新的數(shù)據(jù)好準(zhǔn)備。如果程序在關(guān)閉文件前沒有使用 fsync 子例程,寫在文件以前的末尾之外的數(shù)據(jù)不會被寫入磁盤。文件看起來更大了,但只包含所添加的零。因此,在關(guān)閉寫入時復(fù)制映射文件前請始終使用 fsync 子例程。請參閱用 shmat 子例程創(chuàng)建寫入時復(fù)制的映射數(shù)據(jù)文件以獲取其他信息。\r\n\r\n用 shmat 子例程映射共享內(nèi)存\r\n系統(tǒng)使用與其創(chuàng)建和使用文件相似的方法來使用共享內(nèi)存段。以更熟悉的文件系統(tǒng)術(shù)語來定義用于共享內(nèi)存的術(shù)語對了解共享內(nèi)存是非常關(guān)鍵的。共享內(nèi)存術(shù)語的定義列表如下:\r\n\r\n術(shù)語 定義\r\nkey 特定的共享段的唯一標(biāo)識。只要該共享段存在它就與該共享段相關(guān)聯(lián)。在這點(diǎn)上,它與文件的文件名相似。\r\nshmid 為了在特定進(jìn)程中使用而分配給共享段的標(biāo)識。它在使用上與文件的文件描述符相似。\r\nattach 指定了進(jìn)程必須連接一個共享段以使用它。連接共享段與打開文件相似。\r\ndetach 指定了一旦進(jìn)程完成了對共享段的使用,必須將其拆離。拆離共享段與關(guān)閉文件相似。\r\n\r\n進(jìn)程間通信(IPC)的局限\r\n此文檔描述了 IPC 機(jī)制的系統(tǒng)限制。\r\n\r\n在某些 UNIX? 系統(tǒng)上,系統(tǒng)管理員可以編輯 /etc/master 文件并定義 IPC 機(jī)制(信號、共享內(nèi)存段和消息隊(duì)列)的限制。此方法的問題是限制越高,操作系統(tǒng)使用的內(nèi)存越多,且性能可能受到負(fù)面影響。\r\n\r\nAIX 使用不同的方法。在 AIX 中定義了 IPC 機(jī)制的上限, 它是不可配置的。按需已分配并釋放個別 IPC 數(shù)據(jù)結(jié)構(gòu),因此內(nèi)存需求與當(dāng)前系統(tǒng)的 IPC 機(jī)制使用有關(guān)。\r\n\r\n方法的差別有時會混淆正在安裝或使用數(shù)據(jù)庫的用戶。最令人費(fèi)解的限制是每個進(jìn)程可同時連接的共享內(nèi)存段的最大數(shù)量。對于 64 位進(jìn)程,共享內(nèi)存段的最大數(shù)量為 268435456。對于 32 位進(jìn)程,共享內(nèi)存段的最大數(shù)量為 11,除非使用了擴(kuò)展的 shmat 能力。關(guān)于擴(kuò)展 shmat 的更多信息,請參閱了解內(nèi)存映射。\r\n\r\n下表總結(jié)了 IPC 機(jī)制的信號量限制。\r\n\r\n信號量 4.3.0 4.3.1 4.3.2 5.1 5.2 5.3\r\n32 位內(nèi)核的信號量標(biāo)識的最大數(shù)量 4096 4096 131072 131072 131072 131072\r\n64 位內(nèi)核的信號量標(biāo)識的最大數(shù)量 4096 4096 131072 131072 131072 1048576\r\n每個信號量標(biāo)識的最大信號量 65535 65535 65535 65535 65535 65535\r\n每個 semop 調(diào)用的最大操作數(shù)量 1024 1024 1024 1024 1024 1024\r\n每個進(jìn)程的最大撤銷條目數(shù)量 1024 1024 1024 1024 1024 1024\r\n撤銷結(jié)構(gòu)的大。˙) 8208 8208 8208 8208 8208 8208\r\n信號量的最大值 32767 32767 32767 32767 32767 32767\r\n退出時調(diào)整的最大值 16384 16384 16384 16384 16384 16384\r\n\r\n下表總結(jié)了 IPC 機(jī)制的消息隊(duì)列限制。\r\n\r\n消息隊(duì)列 4.3.0 4.3.1 4.3.2 5.1 5.2 5.3\r\n最大消息大小 4 MB 4 MB 4 MB 4 MB 4 MB 4 MB\r\n隊(duì)列上的最大字節(jié)數(shù) 4 MB 4 MB 4 MB 4 MB 4 MB 4 MB\r\n32 位內(nèi)核的消息隊(duì)列標(biāo)識的最大數(shù)量 4096 4096 131072 131072 131072 131072\r\n64 位內(nèi)核的消息隊(duì)列標(biāo)識的最大數(shù)量 4096 4096 131072 131072 131072 1048576\r\n每個隊(duì)列標(biāo)識的最大消息數(shù)量 524288 524288 524288 524288 524288 524288\r\n\r\n下表總結(jié)了 IPC 機(jī)制的共享內(nèi)存限制。\r\n\r\n共享內(nèi)存 4.3.0 4.3.1 4.3.2 5.1 5.2 5.3\r\n段的最大大。32 位進(jìn)程) 256 MB 2 GB 2 GB 2 GB 2 GB 2 GB\r\n32 位內(nèi)核的段的最大大小(64 位進(jìn)程) 256 MB 2 GB 2 GB 64 GB 1 TB 1 TB\r\n64 位內(nèi)核的段的最大大。64 位進(jìn)程) 256 MB 2 GB 2 GB 64 GB 1 TB 32 TB\r\n段的最小大小 1 1 1 1 1 1\r\n共享內(nèi)存標(biāo)識的最大數(shù)量(32 位內(nèi)核) 4096 4096 131072 131072 131072 131072\r\n共享內(nèi)存標(biāo)識的最大數(shù)量(64 位內(nèi)核) 4096 4096 131072 131072 131072 1048576\r\n每個進(jìn)程的段的最大數(shù)量(32 位進(jìn)程) 11 11 11 11 11 11\r\n每個進(jìn)程的段的最大數(shù)量(64 位進(jìn)程) 268435456 268435456 268435456 268435456 268435456 268435456\r\n\r\n注:\r\n對于 32 位進(jìn)程,在使用擴(kuò)展的 shmat 能力時,每個進(jìn)程的段的最大數(shù)量只受地址空間大小的限制。\r\nAIX 4.3 的 IPC 限制\r\n對于信號和消息隊(duì)列,該表顯示了系統(tǒng)限制\r\n對于共享內(nèi)存,最大共享內(nèi)存段大小為 256 GB。\r\n對于沒有擴(kuò)展 shmat 能力的共享內(nèi)存:\r\n進(jìn)程可連接最多 11 個共享內(nèi)存段。\r\n對于有擴(kuò)展 shmat 能力的共享內(nèi)存:\r\n當(dāng)連接共享內(nèi)存段時,其大小舍入為 4096 字節(jié)的倍數(shù)\r\n進(jìn)程可連接的共享內(nèi)存段數(shù)量與可用地址空間相符。最大的可用地址空間大小為 11 個段,或 256 MB 的 11 倍。\r\n如果進(jìn)程開始執(zhí)行時環(huán)境變量 EXTSHM 的值為 ON,則使用擴(kuò)展 shmat 能力。\r\n如果使用大或超大地址空間模型,用于連接共享內(nèi)存段的可用地址空間被減少。關(guān)于更多信息,請參閱大程序支持。\r\nAIX 4.3.1 的 IPC 限制\r\n共享內(nèi)存段的最大大小從 256 MB 上升到 2 GB。當(dāng)連接大于 256 MB 的共享內(nèi)存段時,其大小被舍入到 256 MB 的倍數(shù),即使使用了擴(kuò)展的 shmat 能力。\r\nAIX 4.3.2 的 IPC 限制\r\n消息隊(duì)列、信號量標(biāo)識和共享內(nèi)存段的最大數(shù)量為 131072。\r\n每個隊(duì)列的最大消息數(shù)量為 524288。\r\nAIX 5.1 的 IPC 限制\r\n64 位進(jìn)程的共享內(nèi)存段的最大大小為 64 GB。32 位進(jìn)程不能連接大于 2 GB 的共享內(nèi)存段。\r\nAIX 5.2 的 IPC 限制\r\n64 位進(jìn)程的共享內(nèi)存段的最大大小為 1 TB。32 位進(jìn)程不能連接大于 2 GB 的共享內(nèi)存段。\r\n使用超大地址空間模型時,無需使用擴(kuò)展的 shmat,32 位應(yīng)用程序就可使用 shmat 能力以獲取多于 11 個段。要獲得更多關(guān)于超大地址空間模型的信息,請參閱理解超大地址空間模型。\r\n應(yīng)用程序可用使用 vmgetinfo 系統(tǒng)調(diào)用查詢系統(tǒng)的 IPC 限制。\r\nAIX 5.3 的 IPC 限制\r\n對于 64 位進(jìn)程,共享內(nèi)存段的最大大小為 32 TB。32 位進(jìn)程不能連接大于 2 GB 的共享內(nèi)存段。\r\n使用超大地址空間模型時,無需使用擴(kuò)展的 shmat,32 位應(yīng)用程序就可使用 shmat 能力以獲取多于 11 個段。要獲得更多關(guān)于超大地址空間模型的信息,請參閱理解超大地址空間模型。\r\n應(yīng)用程序可用使用 vmgetinfo 系統(tǒng)調(diào)用查詢系統(tǒng)的 IPC 限制。\r\n\r\n大程序支持\r\n本章提供的信息,主要關(guān)于使用大和超大地址空間模型以向程序提供大于由缺省地址空間模型提供的需要的數(shù)據(jù)區(qū)域。大地址空間模型可用于 AIX 4.3 及其更高版本。超大地址空間模型可用于 AIX 5.1 及其更高版本。\r\n\r\n注:\r\n本章所討論的問題僅應(yīng)用于 32 位進(jìn)程。有關(guān)缺省 32 位地址空間模型和 64 位地址空間模型的信息,請參閱程序地址空間概述和使用 malloc 子系統(tǒng)的系統(tǒng)內(nèi)存分配。\r\n32 位進(jìn)程的虛擬地址空間被劃分為 16 個 256 兆字節(jié)的區(qū)域(或段),每個均由獨(dú)立的硬件寄存器尋址。操作系統(tǒng)將段 2(虛擬地址 0x20000000-0x2FFFFFFF)引用為進(jìn)程專有段。缺省情況下,此段包含用戶堆棧和數(shù)據(jù),包括堆。進(jìn)程專有段也包含進(jìn)程的 u-block,它由操作系統(tǒng)使用,且不可被應(yīng)用程序讀取。\r\n\r\n因?yàn)橛脩魯?shù)據(jù)和堆棧共同使用單一段,所以它們的總計大小要稍小于 256 MB。但是,某些程序需要大數(shù)據(jù)區(qū)域(已初始或未初始的),或它們需要分配大量的內(nèi)存用于 malloc 或 sbrk 子例程?梢詫⒊绦驑(gòu)建為使用大或超大地址空間模型,以允許它們使用最多 2 GB 的數(shù)據(jù)。\r\n\r\n通過提供一個非零的 maxdata 值,可以使現(xiàn)有的程序使用大或超大地址空間模型。maxdata 值既可以從 LDR_CNTRL 環(huán)境變量,也可以從可執(zhí)行文件中的字段獲得。一些程序具有缺省地址空間模型的相關(guān)性,因此如果使用大地址空間模型運(yùn)行它們,它們將會中斷。\r\n\r\n理解大地址空間模型\r\n大地址空間模型允許指定的程序使用多于 256 MB 的數(shù)據(jù)。其他程序繼續(xù)使用缺省的地址空間模型。要允許程序使用大地址空間模型,請指定非零的 maxdata 值。通過在構(gòu)建程序時使用 ld 命令或在執(zhí)行程序之前導(dǎo)出 LDR_CNTRL 環(huán)境變量,您可以指定一個非零的 maxdata 值。\r\n\r\n當(dāng)執(zhí)行了使用大地址空間模型的程序時,系統(tǒng)保留所需的 256 MB 的段數(shù)量以容納由 maxdata 值指定的數(shù)據(jù)量。然后,由段 3 開始,將程序的初始數(shù)據(jù)從可執(zhí)行文件讀取到內(nèi)存中。在段 3 中開始數(shù)據(jù)讀取,即使 maxdata 值小于 256 MB。使用大地址空間模型,程序可以分別具有最多 8 段或 2 GB 或 3.25 GB 的數(shù)據(jù)。\r\n\r\n在缺省的地址空間模型中,shmat 或 mmap 子例程可以使用 12 段。當(dāng)使用了大地址空間模型,為數(shù)據(jù)保留的段數(shù)減少了用于 shmat 和 mmap 子例程的段數(shù)。因?yàn)閿?shù)據(jù)大小最大值為 2 GB,所以至少 2 段一直可用于 shmat 和 mmap 子例程。\r\n\r\n當(dāng)使用了大地址空間模型時,用戶堆棧保留在段 2 中。因此,堆棧的大小限制為稍小于 256 MB。但是,程序可以將其用戶堆棧重新部署到共享內(nèi)存段或已分配內(nèi)存中。\r\n\r\n雖然程序中已初始的數(shù)據(jù)大小可以是大的,但對文本大小仍有限制。在程序的可執(zhí)行文件中,文本部分的大小加上裝入程序部分的大小必須小于 256 MB。這是必需的,如此這些段才會適合單一的只讀段(段 1,TEXT 段)。您可以使用 dump 命令檢查段大小。\r\n\r\n理解超大地址空間模型\r\n超大地址空間模型以與大地址空間模型幾乎相同的方法啟用大數(shù)據(jù)程序,但它們之間仍有幾點(diǎn)不同。要允許程序使用超大地址空間模型,您必須指定 maxdata 值和動態(tài)段分配(dsa)屬性。使用 ld 命令或 LDR_CNTRL 環(huán)境變量指定 maxdata 值和 DSA 選項(xiàng)。\r\n\r\n如果指定了 maxdata 值,則超大地址空間模型遵循大地址空間模型,在該模型中,從段 3 開始程序數(shù)據(jù)被讀取到內(nèi)存中,且這些數(shù)據(jù)根據(jù)占據(jù)了盡可能多的段。但執(zhí)行期間,剩余的數(shù)據(jù)段并不被保留為數(shù)據(jù)區(qū)域,而是被動態(tài)地獲得。直到程序事件區(qū)域需要某一段,該段才可由 shmat 或 mmap 子例程使用。使用超大地址空間模型,程序可以具有最多 13 段或 3.25 GB 的數(shù)據(jù)。在這 13 段中,12 段或 3 GB 可用于 shmat 和 mmap 子例程。\r\n\r\n當(dāng)進(jìn)程試圖將其數(shù)據(jù)區(qū)域擴(kuò)展到新段時,只要 shmat 或 mmap 子例程未正在使用該段,操作就可以成功執(zhí)行。程序可以調(diào)用 shmdt 或 munmap 子例程,以停止使用段,這樣該段可以用于數(shù)據(jù)區(qū)域。然而,段已經(jīng)被用于數(shù)據(jù)區(qū)域后,它就不再用于其他任何用途,即使數(shù)據(jù)區(qū)域的大小已降低。\r\n\r\n如果未和 dsa 屬性一起指定 maxdata 值(maxdata = 0),則會使上述行為產(chǎn)生微小的變動。進(jìn)程將和常規(guī)進(jìn)程一樣,在段 2 中保留其數(shù)據(jù)和堆棧。進(jìn)程將不具有對全局共享庫的訪問權(quán),因此進(jìn)程使用的所有共享庫將被專有地裝入。按此種方式運(yùn)行地優(yōu)點(diǎn)在于,進(jìn)程具有的 13 個段(3.25 GB)將全部可由 shmat 和 mmap 子例程使用。\r\n\r\n為了降低 shmat 或 mmap 子例程使用可能用于數(shù)據(jù)區(qū)域的段的可能性,操作系統(tǒng)使用不同的規(guī)則,用于選擇要返回的地址(如果未請求指定的地址)。通常,shmat 或 mmap 子例程返回最低的可用段中的地址。當(dāng)使用了超大地址空間模型時,這些子例程將返回最高的可用段中的地址。只要地址不是位于已經(jīng)用于數(shù)據(jù)區(qū)域的段中,指定地址的請求就會成功。指定 dsa 屬性的所有進(jìn)程均遵循此行為。\r\n\r\n使用超大地址空間模型,可以指定 maxdata 值為零,或指定最大為 0xD0000000 的值。如果指定的 maxdata 值大于 0xAFFFFFFF,則程序?qū)⒉粫褂萌盅b入的共享庫。相反地,所有地共享庫將被專有地裝入。這可能會影響程序性能。\r\n\r\n啟用大和超大地址空間模型\r\n如果指定了 maxdata 值,而未指定動態(tài)段分配(dsa)屬性,則使用大地址空間模型。如果給定了所有的 maxdata 值并指定了 dsa 屬性,則使用超大地址空間模型。使用 ld 命令的 -bmaxdata 標(biāo)志指定 maxdata 值和設(shè)置 dsa 屬性。\r\n\r\n使用以下命令以鏈接到將為其數(shù)據(jù)保留最多 8 段的程序:\r\n\r\ncc -bmaxdata:0x80000000 sample.o\r\n要鏈接到 基于 POWER 的平臺 上啟用的使用超大地址空間模型的程序,請使用以下命令:\r\n\r\ncc -bmaxdata:0xD0000000/dsa sample.o\r\n要鏈接到啟用的使用超大地址空間模型的程序,請使用以下命令:\r\n\r\ncc -bmaxdata:0xD0000000/dsa sample.o\r\n您可以使現(xiàn)有的程序使用大或超大地址空間模型,方法是使用 LDR_CNTRL 環(huán)境變量指定 maxdata 值。例如,使用以下命令運(yùn)行 a.out 程序(為其數(shù)據(jù)區(qū)域保留 8 段)。\r\n\r\nLDR_CNTRL=MAXDATA=0x80000000 a.out\r\n以下命令運(yùn)行使用超大地址空間模型的 a.out 程序,允許程序的數(shù)據(jù)大小使用最多 8 段數(shù)據(jù):\r\n\r\nLDR_CNTRL=MAXDATA=0x80000000@DSA a.out\r\n您也可以修改現(xiàn)有的程序,這樣它將使用大或超大地址空間模型。要將現(xiàn)有的 32 位 XCOFF 程序(a.out)的 maxdata 值設(shè)置為 0x80000000,請使用以下命令:\r\n\r\n/usr/ccs/bin/ldedit -bmaxdata:0x80000000 a.out\r\n如果 maxdata 值為 0x80000000 的 32 位 XCOFF 程序(a.out)還未具有 DSA 屬性,則可以使用以下命令添加該屬性:\r\n\r\n/usr/ccs/bin/ldedit -bmaxdata:0x80000000/dsa a.out\r\n您可以使用 dump 命令檢查 maxdata 值,或確定程序是否具有 dsa 屬性。\r\n\r\n一些程序具有缺省地址空間模型的相關(guān)性。如果通過修改程序的可執(zhí)行文件或設(shè)置 LDR_CNTRL 環(huán)境變量而指定非零的 maxdata 值,則這些程序終止。\r\n\r\n執(zhí)行使用大數(shù)據(jù)區(qū)域的程序\r\n當(dāng)您這些使用大地址空間模型的程序時,操作系統(tǒng)嘗試修改數(shù)據(jù)大小軟限制以匹配 maxdata 值。如果 maxdata 值大于當(dāng)前數(shù)據(jù)大小的硬限制,則在環(huán)境變量 XPG_SUS_ENV 的值設(shè)置為 ON 時程序不會程序,或者軟限制將被設(shè)置為當(dāng)前的硬限制。\r\n\r\n如果 maxdata 值小于程序靜態(tài)數(shù)據(jù)的大小,則程序不會執(zhí)行。\r\n\r\n在將程序的已初始或未初始數(shù)據(jù)放置在段 3 及其以后段中之后,計算中斷值。中斷值定義進(jìn)程靜態(tài)數(shù)據(jù)的結(jié)束以及進(jìn)程的動態(tài)可分配數(shù)據(jù)的開始。使用 malloc、brk 或 sbrk 子例程,進(jìn)程可以移動中斷值以增加數(shù)據(jù)區(qū)域的大小。\r\n\r\n例如,如果由程序指定的 maxdata 值為 0x68000000,則最大中斷值位于段 9 之間(0x98000000)。brk 子例程將中斷值擴(kuò)展到段邊界以外,但數(shù)據(jù)區(qū)域的大小不能超過當(dāng)前的軟數(shù)據(jù)限制。\r\n\r\nsetrlimit 子例程允許進(jìn)程將其軟數(shù)據(jù)限制設(shè)置為不超過硬數(shù)據(jù)限制的任意值。然而,數(shù)據(jù)區(qū)域的最大大小被限制為原來的 maxdata 值,向上舍入為 256 MB 的倍數(shù)。\r\n\r\n多數(shù)的子例程不受大數(shù)據(jù)程序的影響。shmat 和 mmap 子例程最容易收到影響,這是因?yàn)樗鼈兙哂休^少的可以使用的段。如果大數(shù)據(jù)地址模型程序發(fā)生派生,則子進(jìn)程繼承當(dāng)前的數(shù)據(jù)資源限制。\r\n\r\n特殊注意事項(xiàng)\r\n使用大數(shù)據(jù)空間的程序需要大量的調(diào)頁空間。例如,如果使用 2 GB 地址空間的程序試圖訪問其地址空間中的每個頁面,則系統(tǒng)必須具有 2 GB 的調(diào)頁空間。當(dāng)調(diào)頁空間運(yùn)行低時,操作系統(tǒng)終止進(jìn)程。使用大數(shù)據(jù)空間的程序被首先終止,因?yàn)樗鼈兺ǔ拇罅康恼{(diào)頁空間。\r\n\r\n調(diào)試使用大數(shù)據(jù)模型的程序與調(diào)試其他程序相同。dbx 命令可以主動地或從核心轉(zhuǎn)儲調(diào)試這些大程序。大數(shù)據(jù)程序的完全核心轉(zhuǎn)儲可能相當(dāng)大。要避免截斷的核心文件,請確保 coredump 資源限制足夠大,并確保文件系統(tǒng)中具有足夠的可用空間以運(yùn)行您的程序。\r\n\r\n某些應(yīng)用程序可能依賴缺省地址空間模型的特征而進(jìn)行編寫。如果這些程序使用大或超大地址空間模型執(zhí)行,它們可能不會正常運(yùn)行。當(dāng)您運(yùn)行這些程序時,不要設(shè)置 LDR_CNTRL 環(huán)境變量。\r\n\r\n使用超大地址空間模型的進(jìn)程必須對它們的程序進(jìn)行代碼更改,以便移動大于 2 GB 程序塊中地址空間的中斷值。這是采用帶符號的值作為參數(shù)的 sbrk 系統(tǒng)調(diào)用的一個限制。其變通方法是,程序可以多次調(diào)用 sbrk 以將中斷值移動到需要的位置。

論壇徽章:
0
2 [報告]
發(fā)表于 2006-10-14 07:48 |只看該作者
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP