真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

linux中pud命令,linux curl命令

linux kernel 內(nèi)存管理-頁表、TLB

頁表用來把虛擬頁映射到物理頁,并且存放頁的保護(hù)位(即訪問權(quán)限)。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比大悟網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式大悟網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋大悟地區(qū)。費用合理售后完善,10余年實體公司更值得信賴。

在Linux4.11版本以前,Linux內(nèi)核把頁表分為4級:

頁全局目錄表(PGD)、頁上層目錄(PUD)、頁中間目錄(PMD)、直接頁表(PT) 。

4.11版本把頁表擴(kuò)展到5級,在頁全局目錄和頁上層目錄之間增加了 頁四級目錄(P4D) 。

各處處理器架構(gòu)可以選擇使用5級,4級,3級或者2級頁表,同一種處理器在頁長度不同的情況可能選擇不同的頁表級數(shù)。可以使用配置宏CONFIG_PGTABLE_LEVELS配置頁表的級數(shù),一般使用默認(rèn)值。

如果選擇4級頁表,那么使用PGD,PUD,PMD,PT;如果使用3級頁表,那么使用PGD,PMD,PT;如果選擇2級頁表,那么使用PGD和PT。 如果不使用頁中間目錄 ,那么內(nèi)核模擬頁中間目錄,調(diào)用函數(shù)pmd_offset 根據(jù)頁上層目錄表項和虛擬地址獲取頁中間目錄表項時 , 直接把頁上層目錄表項指針強制轉(zhuǎn)換成頁中間目錄表項 。

每個進(jìn)程有獨立的頁表,進(jìn)程的mm_struct實例的成員pgd指向頁全局目錄,前面四級頁表的表項存放下一級頁表的起始地址,直接頁表的頁表項存放頁幀號(PFN) 。

內(nèi)核也有一個頁表, 0號內(nèi)核線程的進(jìn)程描述符init_task的成員active_mm指向內(nèi)存描述符init_mm,內(nèi)存描述符init_mm的成員pgd指向內(nèi)核的頁全局目錄swapper_pg_dir 。

ARM64處理器把頁表稱為轉(zhuǎn)換表,最多4級。ARM64處理器支持三種頁長度:4KB,16KB,64KB。頁長度和虛擬地址的寬度決定了轉(zhuǎn)換表的級數(shù),在虛擬地址的寬度為48位的條件下,頁長度和轉(zhuǎn)換表級數(shù)的關(guān)系如下所示:

ARM64處理器把表項稱為描述符,使用64位的長描述符格式。描述符的0bit指示描述符是不是有效的:0表示無效,1表示有效。第1位指定描述符類型。

在塊描述符和頁描述符中,內(nèi)存屬性被拆分為一個高屬性和一個低屬性塊。

處理器的MMU負(fù)責(zé)把虛擬地址轉(zhuǎn)換成物理地址,為了改進(jìn)虛擬地址到物理地址的轉(zhuǎn)換速度,避免每次轉(zhuǎn)換都需要查詢內(nèi)存中的頁表,處理器廠商在管理單元里加了稱為TLB的高速緩存,TLB直譯為轉(zhuǎn)換后備緩沖區(qū),意譯為頁表緩存。

頁表緩存用來緩存最近使用過的頁表項, 有些處理器使用兩級頁表緩存 : 第一級TLB分為指令TLB和數(shù)據(jù)TLB,好處是取指令和取數(shù)據(jù)可以并行;第二級TLB是統(tǒng)一TLB,即指令和數(shù)據(jù)共用的TLB 。

不同處理器架構(gòu)的TLB表項的格式不同。ARM64處理器的每條TLB表項不僅包含虛擬地址和物理地址,也包含屬性:內(nèi)存類型、緩存策略、訪問權(quán)限、地址空間標(biāo)識符(ASID)和虛擬機(jī)標(biāo)識符(VMID)。 地址空間標(biāo)識符區(qū)分不同進(jìn)程的頁表項 , 虛擬機(jī)標(biāo)識符區(qū)分不同虛擬機(jī)的頁表項 。

如果內(nèi)核修改了可能緩存在TLB里面的頁表項,那么內(nèi)核必須負(fù)責(zé)使舊的TLB表項失效,內(nèi)核定義了每種處理器架構(gòu)必須實現(xiàn)的函數(shù)。

當(dāng)TLB沒有命中的時候,ARM64處理器的MMU自動遍歷內(nèi)存中的頁表,把頁表項復(fù)制到TLB,不需要軟件把頁表項寫到TLB,所以ARM64架構(gòu)沒有提供寫TLB的指令。

為了減少在進(jìn)程切換時清空頁表緩存的需要,ARM64處理器的頁表緩存使用非全局位區(qū)分內(nèi)核和進(jìn)程的頁表項(nG位為0表示內(nèi)核的頁表項), 使用地址空間標(biāo)識符(ASID)區(qū)分不同進(jìn)程的頁表項 。

ARM64處理器的ASID長度是由具體實現(xiàn)定義的,可以選擇8位或者16位。寄存器TTBR0_EL1或者TTBR1_EL1都可以用來存放當(dāng)前進(jìn)程的ASID,通常使用寄存器TCR_EL1的A1位決定使用哪個寄存器存放當(dāng)前進(jìn)程的ASID,通常使用寄存器 TTBR0_EL1 。寄存器TTBR0_EL1的位[63:48]或者[63:56]存放當(dāng)前進(jìn)程的ASID,位[47:1]存放當(dāng)前進(jìn)程的頁全局目錄的物理地址。

在SMP系統(tǒng)中,ARM64架構(gòu)要求ASID在處理器的所有核是唯一的。假設(shè)ASID為8位,ASID只有256個值,其中0是保留值,可分配的ASID范圍1~255,進(jìn)程的數(shù)量可能超過255,兩個進(jìn)程的ASID可能相同,內(nèi)核引入ASID版本號解決這個問題。

(1)每個進(jìn)程有一個64位的軟件ASID, 低8位存放硬件ASID,高56位存放ASID版本號 。

(2) 64位全局變量asid_generation的高56位保存全局ASID版本號 。

(3) 當(dāng)進(jìn)程被調(diào)度時,比較進(jìn)程的ASID版本號和全局版本號 。如果版本號相同,那么直接使用上次分配的ASID,否則需要給進(jìn)程重新分配硬件ASID。

存在空閑ASID,那么選擇一個分配給進(jìn)程。不存在空閑ASID時,把全局ASID版本號加1,重新從1開始分配硬件ASID,即硬件ASID從255回繞到1。因為剛分配的硬件ASID可能和某個進(jìn)程的ASID相同,只是ASID版本號不同,頁表緩存可能包含了這個進(jìn)程的頁表項,所以必須把所有處理器的頁表緩存清空。

引入ASID版本號的好處是:避免每次進(jìn)程切換都需要清空頁表緩存,只需要在硬件ASID回環(huán)時把處理器的頁表緩存清空 。

虛擬機(jī)里面運行的客戶操作系統(tǒng)的虛擬地址轉(zhuǎn)物理地址分兩個階段:

(1) 把虛擬地址轉(zhuǎn)換成中間物理地址,由客戶操作系統(tǒng)的內(nèi)核控制 ,和非虛擬化的轉(zhuǎn)換過程相同。

(2) 把中間物理地址轉(zhuǎn)換成物理地址,由虛擬機(jī)監(jiān)控器控制 ,虛擬機(jī)監(jiān)控器為每個虛擬機(jī)維護(hù)一個轉(zhuǎn)換表,分配一個虛擬機(jī)標(biāo)識符,寄存器 VTTBR_EL2 存放當(dāng)前虛擬機(jī)的階段2轉(zhuǎn)換表的物理地址。

每個虛擬機(jī)有獨立的ASID空間 ,頁表緩存使用 虛擬機(jī)標(biāo)識符 區(qū)分不同虛擬機(jī)的轉(zhuǎn)換表項,避免每次虛擬機(jī)切換都要清空頁表緩存,在虛擬機(jī)標(biāo)識符回繞時把處理器的頁表緩存清空。

linux pgd pte 是什么關(guān)系

根據(jù)pid獲取pcb,根據(jù)pcb獲取vm,之后就可以了埃 下面是一個樣本代碼: pcb=find_task_by_pid(pid); pgd=pgd_offset(pcb-mm,va); pud=pud_offset(pgd,va); pmd=pmd_offset(pud,va); pte=pte_offset_kernel(pmd,va)

linux發(fā)行版本有哪幾種劃分方式

按打包方式劃分

基于Dpkg (Debian系)

Debian GNU / Linux是一種強調(diào)使用自由軟件的發(fā)行版。它支持多種硬件平臺。Debian及其派生發(fā)行版使用deb軟件包格式,并使用dpkg及其前端作為包管理器。

? Adamantix:基于Debian,特別關(guān)注安全。

? Amber Linux:基于Debian,針對拉脫維亞用戶作了一些定制。

? ASLinux Desktop:西班牙語,基于Debian與KDE,針對各種桌面用途,包括家用、辦公、教育、游戲、科學(xué)、軟件開發(fā),最大的賣點在于其豐富的可用性。

? Anthon GNU/Linux: 即安同OS,是直接從源碼構(gòu)建的開源Linux操作系統(tǒng),但采用Dpkg包管理系統(tǒng),遵循LGPL授權(quán)協(xié)議,使用KDE桌面環(huán)境,由安同開源操作系統(tǒng)社區(qū)社區(qū)成員共同開發(fā)。

? B2D Linux:基于Debian,希望可以由“做中學(xué)”來產(chǎn)生一個小而美的中文Linux包的計劃。

? Debian GNU/Linux:由大批社區(qū)志愿者收集的包。Debian擁有龐大的軟件包可供選擇(29000個以上),支持大量的硬件平臺(12個計算機(jī)系統(tǒng)結(jié)構(gòu))。以前該包因為安裝困難受到責(zé)難,但最新的版本具備了簡單易用的文本式安裝環(huán)境。非自由軟件不會包含在Debian的主要軟件包中。

? Grml:進(jìn)行系統(tǒng)救援的Live CD。

? Guadalinex:由西班牙的安達(dá)盧西亞地方政府推動,基于Debian,針對西班牙語的家庭用戶以及學(xué)校。

? Knoppix:第一張Debian的自啟動運行光盤。包含的軟件非常多,啟動時會自動進(jìn)行硬件監(jiān)測。從4.0起,用DVD作光盤。

o 以下基于Knoppix:

Gnoppix:Knoppix的GNOME版,該包發(fā)行周期較長,未來會跟Ubuntu進(jìn)行集成。

Kanotix:自啟動運行光盤,基于Knoppix,也可以安裝到硬盤上。有很好的硬件支持,桌面與筆記本電腦的集成也很出色。

Kurumin:針對巴西用戶的Knoppix。

? LinEx:由西班牙的埃斯特雷馬杜拉地方政府推動的包。

? Loco Linux:基于Debian的阿根廷Linux。

? MEPIS: 基于Debian的桌面和服務(wù)器。

? Rays Linux(華鐳):基于Debian,針對亞洲市場,由新華科技(南京)系統(tǒng)軟件有限公司開發(fā)。

? Skolelinux:在挪威發(fā)起,旨在打造適合于學(xué)校的輕便包。

? Symphony OS:基于Debian,與眾不同地采用Mezzo桌面。

? Ubuntu:對初學(xué)者而言最易用的Linux包。由Canonical有限公司贊助,基于Debian,使用自己的軟件包庫,與Debian的有所不同,旨在開發(fā)出更加友好的桌面,已經(jīng)獲取了良好的聲譽。

o 以下基于Ubuntu:

Linux Mint:基于Ubuntu的發(fā)行版,人氣很高,是目前排行榜上第三名的發(fā)行版。

Edubuntu:是Ubuntu的教育發(fā)行版。

Elementary OS:基于Ubuntu,使用基于GNOME名為Pantheon的桌面環(huán)境。

Linux Deepin:基于Ubuntu,使用Gnome 3桌面環(huán)境的中文發(fā)行版(初期使用的是Xfce)。0.x版基于Debian。

Kubuntu:使用KDE桌面環(huán)境的Ubuntu包。

Lubuntu:使用LXDE桌面環(huán)境的Ubuntu包。

PUD GNU/Linux:基于Ubuntu的小型Linux,可安裝于光盤或256 MB以上的USB U盤。

Ubuntu Kylin:添加了少量中國化定制的 Ubuntu 發(fā)行版。

Xubuntu:使用Xfce桌面環(huán)境的Ubuntu包。

Ylmf OS: 基于Ubuntu發(fā)行版(現(xiàn)已更名為Start OS且基于linux內(nèi)核獨立制作)。

Ubuntu GNOME: 基于Ubuntu是Linux發(fā)行版,但使用的是桌面環(huán)境是Gnome。

Zorin OS:基于Ubuntu的Linux發(fā)行版,目的是盡可能的模擬Windows及操作習(xí)慣。

基于RPM (Red Hat系)

Red Hat Linux和SUSE Linux是最早使用RPM格式軟件包的發(fā)行版,如今RPM格式已廣泛運用于眾多的發(fā)行版。這兩種發(fā)行版后來都分為商業(yè)版本和社區(qū)支持版本。Red Hat Linux的社區(qū)支持版本現(xiàn)稱為Fedora,商業(yè)版本則稱為Red Hat Enterprise Linux。

? aLinux:原名Peanut Linux,針對家庭用戶。

? ALT Linux:東歐版本。

? Ark Linux:強調(diào)易學(xué)易用。

? ASPLinux:提供俄語等東歐語言的支持。

? Asianux Server:由中國紅旗、日本Miracle、韓國Hannsoft三家聯(lián)合開發(fā),主要市場針對亞洲地區(qū),對中文、日文、韓文的支持比較好。

? Blag Linux:體積小,但功能較多。

? Caixa Mágica:葡萄牙語的Linux。

? cAos Linux:由社區(qū)創(chuàng)建的包,功能通用、培植簡單。

? CentOS:由社區(qū)支持的包,旨在100%地與Red Hat Linux企業(yè)版兼容,但不包含Red Hat 的商業(yè)軟件。

? Cobind:桌面。

? Conectiva:一個巴西包,曾經(jīng)是United Linux的創(chuàng)建成員,現(xiàn)在該公司已經(jīng)并入到Mandriva Linux。

? EduLinux:用于教育的包。

? Fedora:可用作工作站、桌面以及服務(wù)器,由紅帽公司及其社區(qū)開發(fā)。

? Linux Mobile System:基于Fedora Core的包,設(shè)計成從USB存儲設(shè)備啟動,比如U盤。

? Linpus Linux:來自臺灣廠商發(fā)行的Linux版本。是一套通過LSB 3.1認(rèn)證、GB18030-2000編碼檢驗測試及支持CNS11643中文標(biāo)準(zhǔn)交換碼全字庫的Linux桌面型系統(tǒng)。在中文支持能力上較為完善。

? Magic Linux:一個易用的中文包,基于Fedora和KDE桌面環(huán)境。

? Mandriva Linux:最初是紅帽的一個變種,針對奔騰級CPU作了優(yōu)化,后來在保持兼容性的同時,派生成為更友好的包。Mandriva中所有的軟件仍然免費,還有活躍的社區(qū)支持,另外通過注冊以及銷售盒裝產(chǎn)品,Mandriva還提供企業(yè)級的支持與服務(wù),還有針對付費用戶的俱樂部。

? Novell Linux Desktop:由于Novell收購了SUSE,他們的Linux產(chǎn)品對原來的包有所繼承。

? PCLinuxOS:一個易用的自啟動運行光盤,以良好的觀感著稱;硬盤安裝也同樣輕而易舉。最初基于Mandrake 9.2,而后PCLinuxOS針對桌面用戶,開始自己的開發(fā)道路。在保留基于RPM包的同時,PCLinuxOS別出心裁地使用自己的APT包管理工具(受Debian影響),但圖形前端仍然用的是Synaptic。

? PCQLinux2004:由印度的PCQuest雜志生產(chǎn),基于Fedora Core。

? PLD Linux:來自波蘭的包,針對較高級別的用戶,比Slackware、Gentoo更加易用。

? QiLinux:意大利生產(chǎn),包括桌面版、光盤自啟動版,還有服務(wù)器版、高級服務(wù)器版。

? Qomo Linux:以Linux人社區(qū)作為依托開發(fā),目標(biāo)是提供一款最新、最酷、最快,輕量級、模塊化的Linux操作系統(tǒng)。

? Red Flag Linux:即紅旗Linux,由北京中科紅旗軟件技術(shù)有限公司開發(fā),主要針對中國市場。

? Red Hat Enterprise Linux:紅帽Linux家族中唯一的商業(yè)分支。

? Scientific Linux:由紅帽Linux企業(yè)版,將遵循GPL的軟件重新編譯而成。

? SUSE/openSUSE:來自德國,是歐洲最流行的包之一。跟紅帽一樣,也包括大量的軟件,需要7張以上的CD,現(xiàn)在則用雙DVD。這個包有獨特的配置工具YaST。也是United Linux的創(chuàng)立者之一,已經(jīng)被Novell公司收購。openSUSE是一個新的版本,基于社區(qū),完全開源。

? Tinfoil Hat Linux:對安全格外關(guān)注的包。

? Trustix:專注于安全與穩(wěn)定性的包。

? Turbo Linux:在亞洲較流行的一個包,基于Red Hat,是United Linux的成員。

? Vine Linux:基于Red Hat的一個日本包。

? White Box Enterprise Linux:意在兼容Red Hat企業(yè)版第三版。

? Yellow Dog:基于Red Hat,針對PowerPC平臺。

? YOPER:"Your Operating System"(你的操作系統(tǒng)),來自新西蘭的桌面包。

Slackware系

Slackware 走了一條同其他的發(fā)行版本(Red Hat、Debian、Gentoo、SuSE、 Mandriva、Ubuntu等)不同的道路,它力圖成為“UNIX風(fēng)格”的Linux發(fā)行版本。它的方針是只吸收穩(wěn)定版本的應(yīng)用程序,并且缺少其他 linux版本中那些為發(fā)行版本定制的配置工具。

? Kate OS:基于Slackware的設(shè)計理念,一個輕便的波蘭語包。

? Zenwalk Linux(以前是MiniSlack):基于Slackware作了優(yōu)化,注重簡便、快捷。

? Plamo Linux:基于Slackware的日語包。

? Slackware:一個老牌包,由Patrick Volkerding維護(hù),特別注重簡潔與安全。

? Ultima Linux:基于Slackware,由Martin Ultima作了優(yōu)化。

? SLAX:一個基于Slackware的自啟動運行光盤,由Tomas Matejicek維護(hù)。

? Frugalware:通用Linux包,面向中級用戶。

其他打包方式的包

? ArchLinux:基于KISS原則,針對i686和x86-64的CPU做了優(yōu)化,以.pkg.tar.xz格式打包并由包管理器進(jìn)行跟蹤維護(hù),特別適合動手能力強的Linux用戶。

? Chakra GNU/Linux:原先基于ArchLinux,后來獨立成有自己特色的發(fā)行版,如:官方包庫不含依賴GTK+的軟件包、只使用KDE桌面環(huán)境等。

? Calculate Linux:基于Gentoo,來自俄羅斯。

? CRUX:采用類BSD Port包管理系統(tǒng),針對i686的CPU做了最優(yōu)化,適合狂熱愛好者以及專業(yè)人士使用。

? Foresight Linux:采用Conary包管理系統(tǒng),引入了GNOME中的許多最新技術(shù),比如beagle、f-spot、howl以及最新的hal等,這個包在保持易用的同時,更注重革新。

? Gentoo:這個包采用自己獨特的Portage包管理系統(tǒng),吸引了許多狂熱愛好者以及專業(yè)人士,由于能自己編譯及調(diào)整源碼依賴等選項,而獲得至高的自定義性及優(yōu)化的軟件,在源碼包也有相當(dāng)多新舊版本的選擇,是個強調(diào)能自由選擇的發(fā)行版。

? GoboLinux:構(gòu)建了新的目錄結(jié)構(gòu),比如GCC放在/Programs/GCC/這樣的目錄,為了讓系統(tǒng)能找到這些文件,在/System/Links/Executables這樣的目錄下歸組,這樣就包含了/Programs目錄下所有可執(zhí)行文件的符號鏈接。

? Heretix:以前叫做RubyX,包的管理,包括包管理,都是通過由Ruby寫的腳本來完成,所有的包都安裝在/pkg目錄下。

? ImpiLinux,來自南非的包,主要針對非洲用戶。

? Jedi GNU/Linux:使用force-get包管理器,允許源碼、二進(jìn)制軟件包共存。

? Linux From Scratch:這是一份文檔,介紹如何自己動手,如何白手起家編譯打造自己獨一無二的Linux系統(tǒng)。

? Lunar Linux,基于源碼,由Sorcerer GNU/Linux所派生。

? MkLinux:"Microkernel Linux"的縮寫,旨在將Linux移植到跑Mach微核的PowerPC機(jī)器上。

? Onebase Linux:采用OLM包管理器,對二進(jìn)制、源碼進(jìn)行管理。

? Sabayon Linux:基于Gentoo,來自意大利。

? Sorcerer GNU/Linux:基于源碼。

? Source Mage GNU/Linux:也是基于源碼,由Sorcerer GNU/Linux所派生。

? Ututo:基于Gentoo,來自阿根廷。

? Open Client:基于Red Hat Enterprise Linux,來自IBM,提供有Fedora、Ubuntu、SLED的Layer。

給老機(jī)器訂制的小型包

一般的迷你包,除了可以硬盤安裝,也可以安裝在U盤上。

? Austrumi:拉脫維亞的自啟動CD包,支持英語,功能比較豐富,基于Slackware。

? cAos Linux:有社區(qū)維護(hù),功能通用。

? Damn Small Linux(DSL): 這是小型包的老祖宗,放在迷你CD上,原先設(shè)計是想看看一張50M的CD可以放多少桌面程序,原來是作為個人玩具,但不久Damn Small Linux周圍就聚成了一個社區(qū),不少人加入進(jìn)來,參與改進(jìn),包括一個遠(yuǎn)程、本地的程序安裝系統(tǒng),多功能的備份、還原系統(tǒng),另外還加入了Knoppix的硬件檢測,使用自己的*.dsl軟件包系統(tǒng),默認(rèn)的窗口管理器是Fluxbox。可以在微軟虛擬機(jī)軟件里運行,無須關(guān)閉WINDOWS系統(tǒng)專門進(jìn)入LINUX系統(tǒng),特別適合初學(xué)者。

? Feather Linux:類似于Damn Small Linux,但總?cè)萘渴?15MB,兼容Debian的軟件包。

? Flonix USB版:放在USB設(shè)備上的可移動桌面包,這是個商業(yè)版,只能給購買的U盤作預(yù)裝。

? Knopperdisk:為U盤設(shè)計的包,基于Gentoo。

? Puppy Linux:啟動特別地快,在配置較低的PC上(內(nèi)存小于48M),也可以運行自如。包含的工具都是特別精簡的,使用Fvwm95作為窗口管理器(現(xiàn)在是JWM)。

? Kuppy Linux:基于Puppy發(fā)展的發(fā)行版,擁有啟動特別地快,在配置較低的PC上等特點外,將桌面置換為XFCE4,更適合習(xí)慣windows操作的用戶。

? Tiny Core Linux:是一個僅有10MB的桌面操作系統(tǒng),甚至可以在486上運行,但它并不是一個完整的桌面,而且只支持有限局域網(wǎng)。

? Stem桌面:一個混合產(chǎn)品,使用標(biāo)準(zhǔn)的Debian來編譯桌面(Fvwm95)。針對老機(jī)器(CPU小于等于266Mhz,內(nèi)存小于等于64M)設(shè)計,從Debian軟件倉庫種選擇的包都是最輕巧的。與眾不同的是,該包沒有自己的安裝光盤,用戶得先安裝Debian,然后運行文本界面的安裝腳本,然后通過網(wǎng)絡(luò)連接,編譯剩余的軟件。這個包100%跟Debian兼容。

? SPBLinux:用于軟盤、U盤的迷你版本。

? Vector Linux:中小型包,針對新老機(jī)器,采用小而快的應(yīng)用程序,以及簡化的安裝程序。該包有多個版本,包括大小為2G的SOHO(Small Office, Home Office)版,以及800M的"Dynamite"版。SOHO版提供KDE/IceWM窗口管理器,外觀很專業(yè);Dynamite版只采用IceWM,以及部分工具。該包包括了簡單的升級包管理程序,基于Slackware。

? eMoviX:小型包,專門用作媒體播放用途。

按發(fā)行方式劃分

部分或全部的商業(yè)版

? BlueCat Linux:Linux嵌入式系統(tǒng),可用于小型客戶定制的設(shè)備,乃至大規(guī)模多CPU的系統(tǒng)。

? Libranet:基于Debian的桌面包,與Debian保持100%的兼容。安裝過程有硬件自動檢測,桌面有一個管理員菜單(文字模式與圖形模式),這樣簡化了硬件與軟件的配置。

? Linspire:另一個桌面包,以前叫Lindows,基于Debian??梢酝ㄟ^Linspire或者Debian的apt命令,添加額外的軟件,但不保證跟Debian的兼容性。該包包含不少的專屬軟件。

? Mandriva Linux:Mandrakesoft跟Conectiva合并以后,更名為Mandriva Linux。對于菜鳥來說,該包的各種產(chǎn)品,包括服務(wù)器、工作站、小型商用以及個人版,是最容易維護(hù)的Linux包之一。原來是Red Hat的一個變種,針對奔騰級CPU作了優(yōu)化,進(jìn)而發(fā)展出了更加方便的包。在保留完全自由軟件的同時,Mandriva商業(yè)模式,通過捐獻(xiàn),以及對非會員延遲發(fā)布政策,增加了企業(yè)級的支持與服務(wù)。

? MEPIS:一個基于Debian的包,也可以作為自啟動光盤來運行,這樣可以在決定硬盤安裝前,嘗嘗鮮。

? Nitix:第一個基于Linux服務(wù)器的自治操作系統(tǒng),具有自管理、自恢復(fù)、自配置和自優(yōu)化的能力。

? Novell Linux 桌面:Novell收購SUSE后,兩家的包就互相融合了。

? Progeny Debian:由Progeny開發(fā),基于Debian,使用從Red Hat移植過來的Anaconda安裝器,該包又稱為Progeny Componentized Linux。

? Red Hat Enterprise Linux:從Red Hat Linux派生出的純商業(yè)版。

? SUSE:基于德國的紐倫堡,以前叫SuSE,是歐洲最流行的Linux包,由自己獨特的配置工具YaST,用戶可以下載到體驗版(跟專業(yè)版類似)。該公司是United Linux的創(chuàng)建者,最近被Novell收購。

? Xandros:來自加拿大,基于過去的Corel Linux,專注于桌面市場,以及跟Windows的兼容性。該包包含一些專屬軟件,跟Debian的dpkg包管理系統(tǒng)兼容。

? YES Linux:針對小型公司,提供建議的網(wǎng)絡(luò)環(huán)境。

專用包

? Mobilinux:針對手機(jī),由MontaVista出品。

? Android:來自Google,以apk格式打包,采用Dalvik虛擬機(jī)提供類似Java (編程語言)的應(yīng)用程序接口,目前已成為用戶最多的智能手機(jī)系統(tǒng)之一。

? Maemo:來自諾基亞,基于Debian,目前專用于諾基亞的N770、N800、N810網(wǎng)絡(luò)終端,以及N900手機(jī)。

? Moblin︰來自英特爾,現(xiàn)已捐給Linux基金會,用于Eee PC或其他上網(wǎng)本,支持快速啟動。

? MeeGo:Maemo與Moblin計劃結(jié)合的產(chǎn)物。

? Bada (操作系統(tǒng)):針對手機(jī),由三星電子出品。

? LiMo 平臺:由LiMo基金會主導(dǎo)開發(fā)的移動電話發(fā)行版。

? Tizen:MeeGo、LiMo 平臺與bada計劃結(jié)合的產(chǎn)物。

? Meltemi:MeeGo的另一個后繼者,面向低端智能手機(jī)。

? webOS:針對手機(jī)和平板電腦,由Palm公司出品,后被惠普公司開源。

其它平臺

iPodLinux基于修改版uClinux內(nèi)核,并編寫有所謂的“podzilla”簡單用戶界面。目前僅支持第四代之前的iPod。

linux內(nèi)核模塊編寫要求從一個虛存區(qū)VMA和一個虛地址addr求這個地址所在的物理頁面

implicit declaration of function ***

查查英語也應(yīng)該曉得了阿....

隱式的函數(shù)聲明,就是說你使用了kmap_atomic、kmap_atomic但是沒有聲明,一般是因為沒有包含頭文件,或者是內(nèi)核的API發(fā)生了些許變化。

這兩個函數(shù)包含在linux/highmem.h中,你在程序中添加一句:#include linux/highmem.h試試。

PS :這個是在2.6.38的內(nèi)核中的,你在lxr.linux.no搜下對應(yīng)版本的kernel,我沒有細(xì)細(xì)查。

如何在LINUX中獲取進(jìn)程中某個虛擬地址所在物理內(nèi)

/*

*偽代碼,示例

*32位地址,三級映射(沒有pud_t),頁面大小4KB

*/

unsigned long addr = 0x12345678;//要找的虛擬地址,用戶空間所訪問的地址

unsigned long real_addr = 0x00;//要輸出的地址

struct task_struct *cur_task = get_current();//獲取當(dāng)前進(jìn)程控制塊

struct mm_struct *mm = cur_task - mm;//進(jìn)程虛擬空間

pgd_t *pgd;//描述頁全局目錄項

pmd_t *pmd;//描述頁中間項

pte_t *pte;//頁表項

pgd = pgd_offset(mm, addr);//找出所在目錄

if (pgd_none(*pgd)){

goto out;

}

pmd = pmd_offset(pgd, addr);//找出所在中間項

if (pmd_none(*pmd)){

goto out;

}

pte = pte_offset(pmd, addr);//找出所在頁面

if (pte_none(*pte)) {

goto out;

}

//假設(shè)每頁4KB

real_addr = addr 0x00003fff; //取出頁面偏移量

real_addr += pte;//內(nèi)核空間訪問的地址

real_addr -= PAGE_OFFSET;//真正物理地址()

printk("物理地址是 %x\n",real_addr);

return;

out:

printk("沒有內(nèi)存映射",real_addr);


分享文章:linux中pud命令,linux curl命令
本文地址:http://weahome.cn/article/hoiojs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部