導航:首頁 > 編程系統 > windowslinuxkit

windowslinuxkit

發布時間:2021-03-07 12:31:07

① 有沒有linux和windows環境下都可以用的jre

我可以說jre所有平抄台都不一樣! 你想啊 jre是神馬?是java運行環境也就是說不同的平台 實現了不同的java虛擬機 最終才可以實現運行編譯後的產物 所以只要平台不同jre就不同

jre和jdk完全不是一回事兒 一個是運行環境就是說你要運行java生成的軟體就必須裝
jdk是開發用的,你不做開發就不要裝,如果你做開發你就必須都裝 因為jdk是開發必須的,jre是運行你開發出來的東西必須的

② 在linux下掛載windows 7系統NTFS的文件系統

首先必須安裝了rpmforge軟體庫的源

1,yum-y install wget

1、下載rpmforge的rpm文件包

32位系統

[root@linuxsightlinuxsight]# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-1.el6.rf.i686.rpm

64位系統

[root@linuxsightlinuxsight]# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

2、安裝rpmforge的rpm文件包

[root@linuxsight linuxsight]# rpm -ivhrpmforge-release-0.5.2-1.el6.rf.i686.rpm

3、安裝ntfs-3g

[root@linuxsight linuxsight]# yuminstall fuse-ntfs-3g
Loaded plugins: fastestmirror,refresh-packagekit
Loading mirror speeds from cachedhostfile
* base: mirrors.ta139.com
* extras: ftp.nara.wide.ad.jp
* rpmforge: apt.sw.be
* updates: mirrors.ta139.com
rpmforge | 1.1 kB 00:00
rpmforge/primary | 1.3MB 01:22
rpmforge 3921/3921
Setting up Install Process
Package fuse-2.8.3-1.el6.i686 alreadyinstalled and latest version
Resolving Dependencies
–> Running transactioncheck
—> Package fuse-ntfs-3g.i6860:2010.10.2-1.el6.rf set to be updated
–> Finished DependencyResolution

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
fuse-ntfs-3g i686 2010.10.2-1.el6.rf rpmforge 637 k

Transaction Summary
================================================================================
Install 1 Package(s)
Upgrade 0 Package(s)

Total download size: 637 k
Installed size: 1.4 M
Is this ok [y/N]: y
Downloading Packages:
fuse-ntfs-3g-2010.10.2-1.el6.rf.i686.rpm | 637 kB 00:35
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
Installing :fuse-ntfs-3g-2010.10.2-1.el6.rf.i686 1/1

Installed:
fuse-ntfs-3g.i686 0:2010.10.2-1.el6.rf

Complete!

成功後你會發現已經可以掛載NTFS了。

③ 理解JVM怎麼使用Windows和Linux下的本機內存

Java™ 堆耗盡並不是造成 java.lang.OutOfMemoryError 的惟一原因。如果本機內存 耗盡,則會發生普通調試技巧無法解決的OutOfMemoryError。本文將討論本機內存的概念,Java 運行時如何使用它,它被耗盡時會出現什麼情況,以及如何在 Windows® 和 Linux® 上調試本機 OutOfMemoryError。針對 AIX® 系統的相同主題將在 另一篇同類文章 中介紹。
Java 堆(每個 Java 對象在其中分配)是您在編寫 Java 應用程序時使用最頻繁的內存區域。JVM 設計用於將我們與主機的特性隔離,所以將內存當作堆來考慮再正常不過了。您一定遇到過 Java 堆 OutOfMemoryError ,它可能是由於對象泄漏造成的,也可能是因為堆的大小不足以存儲所有數據,您也可能了解這些場景的一些調試技巧。但是隨著您的 Java 應用程序處理越來越多的數據和越來越多的並發負載,您可能就會遇到無法使用常規技巧進行修復的 OutOfMemoryError。在一些場景中,即使 java 堆未滿,也會拋出錯誤。當這類場景發生時,您需要理解 Java 運行時環境(Java Runtime Environment,JRE)內部到底發生了什麼。
Java 應用程序在 Java 運行時的虛擬化環境中運行,但是運行時本身是使用 C 之類的語言編寫的本機程序,它也會耗用本機資源,包括本機內存。 本機內存是可用於運行時進程的內存,它與 Java 應用程序使用的 java 堆內存不同。每種虛擬化資源(包括 Java 堆和 Java 線程)都必須存儲在本機內存中,虛擬機在運行時使用的數據也是如此。這意味著主機的硬體和操作系統施加在本機內存上的限制會影響到 Java 應用程序的性能。
本系列文章共分兩篇,討論不同平台上的相應話題。本文是其中一篇。在這兩篇文章中,您將了解什麼是本機內存,Java 運行時如何使用它,本機內存耗盡之後會發生什麼情況,以及如何調試本機 OutOfMemoryError。本文介紹 Windows 和 Linux 平台上的這一主題,不會介紹任何特定的運行時實現。另一篇 類似的文章 介紹 AIX 上的這一主題,著重介紹 IBM® Developer Kit for Java。(另一篇文章中關於 IBM 實現的信息也適合於除 AIX 之外的平台,因此如果您在 Linux 上使用 IBM Developer Kit for Java,或使用 IBM 32-bit Runtime Environment for Windows,您會發現這篇文章也有用處)。
本機內存簡介
我將首先解釋一下操作系統和底層硬體給本機內存帶來的限制。如果您熟悉使用 C 等語言管理動態內存,那麼您可以直接跳到 下一節。
硬體限制
本機進程遇到的許多限制都是由硬體造成的,而與操作系統沒有關系。每台計算機都有一個處理器和一些隨機存取存儲器(RAM),後者也稱為物理內存。處理器將數據流解釋為要執行的指令,它擁有一個或多個處理單元,用於執行整數和浮點運算以及更高級的計算。處理器具有許多寄存器 —— 常快速的內存元素,用作被執行的計算的工作存儲,寄存器大小決定了一次計算可使用的最大數值。
處 理器通過內存匯流排連接到物理內存。物理地址(處理器用於索引物理 RAM 的地址)的大小限制了可以定址的內存。例如,一個 16 位物理地址可以定址 0x0000 到 0xFFFF 的內存地址,這個地址范圍包括 2^16 = 65536 個惟一的內存位置。如果每個地址引用一個存儲位元組,那麼一個 16 位物理地址將允許處理器定址 64KB 內存。
處理器被描述 為特定數量的數據位。這通常指的是寄存器大小,但是也存在例外,比如 32 位 390 指的是物理地址大小。對於桌面和伺服器平台,這個數字為 31、32 或 64;對於嵌入式設備和微處理器,這個數字可能小至 4。物理地址大小可以與寄存器帶寬一樣大,也可以比它大或小。如果在適當的操作系統上運行,大部分 64 位處理器可以運行 32 位程序。
表 1 列出了一些流行的 Linux 和 Windows 架構,以及它們的寄存器和物理地址大小:

表 1. 一些流行處理器架構的寄存器和物理地址大小

架構
寄存器帶寬(位)
物理地址大小(位)

(現代)Intel® x86
32 32
36,具有物理地址擴展(Pentium Pro 和更高型號)

x86 64
64 目前為 48 位(以後將會增大)

PPC64
64 在 POWER 5 上為 50 位

390 31 位
32 31

390 64 位
64 64

操作系統和虛擬內存
如果您編寫無需操作系統,直接在處理器上運行的應用程序,您可以使用處理器可以定址的所有內存(假設連接到了足夠的物理 RAM)。但是要使用多任務和硬體抽象等特性,幾乎所有人都會使用某種類型的操作系統來運行他們的程序。
在 Windows 和 Linux 等多任務操作系統中,有多個程序在使用系統資源。需要為每個程序分配物理內存區域來在其中運行。可以設計這樣一個操作系統:每個程序直接使用物理內存,並 且可以可靠地僅使用分配給它的內存。一些嵌入式操作系統以這種方式工作,但是這在包含多個未經過集中測試的應用程序的環境中是不切實際的,因為任何程序都 可能破壞其他程序或者操作系統本身的內存。
虛擬內存 允許多個進程共享物理內存,而且不會破壞彼此的數據。在具有虛擬內存的操作系統(比如 Windows、Linux 和許多其他操作系統)中,每個程序都擁有自己的虛擬地址空間 —— 一個邏輯地址區域,其大小由該系統上的地址大小規定(所以,桌面和伺服器平台的虛擬地址空間為 31、32 或 64 位)。進程的虛擬地址空間中的區域可被映射到物理內存、文件或任何其他可定址存儲。當數據未使用時,操作系統可以在物理內存與一個交換區域 (Windows 上的頁面文件 或者 Linux 上的交換分區)之間移動它,以實現對物理內存的最佳利用率。當一個程序 嘗試使用虛擬地址訪問內存時,操作系統連同片上硬體會將該虛擬地址映射到物理位置,這個位置可以是物理 RAM、一個文件或頁面文件/交換分區。如果一個內存區域被移動到交換空間,那麼它將在被使用之前載入回物理內存中。圖 1 展示了虛擬內存如何將進程地址空間區域映射到共享資源:

程序的每個實例以進程 的形式運行。在 Linux 和 Windows 上,進程是一個由受操作系統控制的資源(比如文件和套接字信息)、一個典型的虛擬地址空間(在某些架構上不止一個)和至少一個執行線程構成的集合。
虛 擬地址空間大小可能比處理器的物理地址大小更小。32 位 Intel x86 最初擁有的 32 位物理地址僅允許處理器定址 4GB 存儲空間。後來,添加了一種稱為物理地址擴展(Physical Address Extension,PAE)的特性,將物理地址大小擴大到了 36 位,允許安裝或定址至多 64GB RAM。PAE 允許操作系統將 32 位的 4GB 虛擬地址空間映射到一個較大的物理地址范圍,但是它不允許每個進程擁有 64GB 虛擬地址空間。這意味著如果您將大於 4GB 的內存放入 32 位 Intel 伺服器中,您將無法將所有內存直接映射到一個單一進程中。
地址窗口擴展(Address Windowing Extension)特性允許 Windows 進程將其 32 位地址空間的一部分作為滑動窗口映射到較大的內存區域中。Linux 使用類似的技術將內存區域映射到虛擬地址空間中。這意味著盡管您無法直接引用大於 4GB 的內存,但您仍然可以使用較大的內存區域。
內核空間和用戶空間
盡管每個進程都有其自己的地址空間,但程序通常無法使用所有這些空間。地址空間被劃分為用戶空間 和內核空間。內核是主要的操作系統程序,包含用於連接計算機硬體、調度程序以及提供聯網和虛擬內存等服務的邏輯。
作為計算機啟動序列的一部分,操作系統內核運行並初始化硬體。一旦內核配置了硬體及其自己的內部狀態,第一個用戶空間進程就會啟動。如果用戶程序需要來自操作系統的服務,它可以執行一種稱為系統調用 的操作與內核程序交互,內核程序然後執行該請求。系統調用通常是讀取和寫入文件、聯網和啟動新進程等操作所必需的。
當 執行系統調用時,內核需要訪問其自己的內存和調用進程的內存。因為正在執行當前線程的處理器被配置為使用地址空間映射來為當前進程映射虛擬地址,所以大部 分操作系統將每個進程地址空間的一部分映射到一個通用的內核內存區域。被映射來供內核使用的地址空間部分稱為內核空間,其餘部分稱為用戶空間,可供用戶應 用程序使用。
內核空間和用戶空間之間的平衡關系因操作系統的不同而不同,甚至在運行於不同硬體架構之上的同一操作系統的各個實例 間也有所不同。這種平衡通常是可配置的,可進行調整來為用戶應用程序或內核提供更多空間。縮減內核區域可能導致一些問題,比如能夠同時登錄的用戶數量限制 或能夠運行的進程數量限制。更小的用戶空間意味著應用程序編程人員只能使用更少的內存空間。
默認情況下,32 位 Windows 擁有 2GB 用戶空間和 2GB 內核空間。在一些 Windows 版本上,通過向啟動配置添加 /3GB 開關並使用/LARGEADDRESSAWARE 開關重新鏈接應用程序,可以將這種平衡調整為 3GB 用戶空間和 1GB 內核空間。在 32 位 Linux 上,默認設置為 3GB 用戶空間和 1GB 內核空間。一些 Linux 分發版提供了一個 hugemem 內核,支持 4GB 用戶空間。為了實現這種配置,將進行系統調用時使用的地址空間分配給內核。通過這種方式增加用戶空間會減慢系統調用,因為每次進行系統調用時,操作系統必 須在地址空間之間復制數據並重置進程地址-空間映射。圖 2 展示了 32 位 Windows 的地址-空間布局:

31 位 Linux 390 上還使用了一個獨立的內核地址空間,其中較小的 2GB 地址空間使對單個地址空間進行劃分不太合理,但是,390 架構可以同時使用多個地址空間,而且不會降低性能。
進 程空間必須包含程序需要的所有內容,包括程序本身和它使用的共享庫(在 Windows 上為 DDL,在 Linux 上為 .so 文件)。共享庫不僅會占據空間,使程序無法在其中存儲數據,它們還會使地址空間碎片化,減少可作為連續內存塊分配的內存。這對於在擁有 3GB 用戶空間的 Windows x86 上運行的程序尤為明顯。DLL 在構建時設置了首選的載入地址:當載入 DLL 時,它被映射到處於特定位置的地址空間,除非該位置已經被佔用,在這種情況下,它會載入到別處。Windows NT 最初設計時設置了 2GB 可用用戶空間,這對於要構建來載入接近 2GB 區域的系統庫很有用 —— 使大部分用戶區域都可供應用程序自由使用。當用戶區域擴展到 3GB 時,系統共享庫仍然載入接近 2GB 數據(約為用戶空間的一半)。盡管總體用戶空間為 3GB,但是不可能分配 3GB 大的內存塊,因為共享庫無法載入這么大的內存。
在 Windows 中使用 /3GB 開關,可以將內核空間減少一半,也就是最初設計的大小。在一些情形下,可能耗盡 1GB 內核空間,使 I/O 變得緩慢,且無法正常創建新的用戶會話。盡管 /3GB 開關可能對一些應用程序非常有用,但任何使用它的環境在部署之前都應該進行徹底的負載測試。參見 參考資料,獲取關於 /3GB 開關及其優缺點的更多信息的鏈接。
本 機內存泄漏或過度使用本機內存將導致不同的問題,具體取決於您是耗盡了地址空間還是用完了物理內存。耗盡地址空間通常只會發生在 32 位進程上,因為最大 4GB 的內存很容易分配完。64 位進程具有數百或數千 GB 的用戶空間,即使您特意消耗空間也很難耗盡這么大的空間。如果您確實耗盡了 Java 進程的地址空間,那麼 Java 運行時可能會出現一些陌生現象,本文稍後將詳細討論。當在進程地址空間比物理內存大的系統上運行時,內存泄漏或過度使用本機內存會迫使操作系統交換後備存 儲器來用作本機進程的虛擬地址空間。訪問經過交換的內存地址比讀取駐留(在物理內存中)的地址慢得多,因為操作系統必須從硬碟驅動器拉取數據。可能會分配 大量內存來用完所有物理內存和所有交換內存(頁面空間),在 Linux 上,這將觸發內核內存不足(OOM)結束程序,強制結束最消耗內存的進程。在 Windows 上,與地址空間被占滿時一樣,內存分配將會失敗。
同時,如果嘗試使用比物理內存大的虛擬內存,顯然在進程由於消 耗內存太大而被結束之前就會遇到問題。系統將變得異常緩慢,因為它會將大部分時間用於在內存與交換空間之間來回復制數據。當發生這種情況時,計算機和獨立 應用程序的性能將變得非常糟糕,從而使用戶意識到出現了問題。當 JVM 的 Java 堆被交換出來時,垃圾收集器的性能會變得非常差,應用程序可能被掛起。如果一台機器上同時使用了多個 Java 運行時,那麼物理內存必須足夠分配給所有 Java 堆。

Java 運行時如何使用本機內存
Java 運行時是一個操作系統進程,它會受到我在上一節中列出的硬體和操作系統局限性的限制。運行時環境提供的功能受一些未知的用戶代碼驅動,這使得無法預測在每 種情形中運行時環境將需要何種資源。Java 應用程序在託管 Java 環境中執行的每個操作都會潛在地影響提供該環境的運行時的需求。本節描述 Java 應用程序為什麼和如何使用本機內存。
Java 堆和垃圾收集
Java 堆是分配了對象的內存區域。大多數 Java SE 實現都擁有一個邏輯堆,但是一些專家級 Java 運行時擁有多個堆,比如實現 Java 實時規范(Real Time Specification for Java,RTSJ)的運行時。一個物理堆可被劃分為多個邏輯扇區,具體取決於用於管理堆內存的垃圾收集(GC)演算法。這些扇區通常實現為連續的本機內存 塊,這些內存塊受 Java 內存管理器(包含垃圾收集器)控制。
堆的大小可以在 Java 命令行使用 -Xmx 和 -Xms 選項來控制(mx 表示堆的最大大小,ms 表示初始大小)。盡管邏輯堆(經常被使用的內存區域)可以根據堆上的對象數量和在 GC 上花費的時間而增大和縮小,但使用的本機內存大小保持不變,而且由 -Xmx 值(最大堆大小)指定。大部分 GC 演算法依賴於被分配為連續的內存塊的堆,因此不能在堆需要擴大時分配更多本機內存。所有堆內存必須預先保留。
保留本機內存與分配本機內存不同。當本機內存被保留時,無法使用物理內存或其他存儲器作為備用內存。盡管保留地址空間塊不會耗盡物理資源,但會阻止內存被用於其他用途。由保留從未使用的內存導致的泄漏與泄漏分配的內存一樣嚴重。
當使用的堆區域縮小時,一些垃圾收集器會回收堆的一部分(釋放堆的後備存儲空間),從而減少使用的物理內存。
對於維護 Java 堆的內存管理系統,需要更多本機內存來維護它的狀態。當進行垃圾收集時,必須分配數據結構來跟蹤空閑存儲空間和記錄進度。這些數據結構的確切大小和性質因實現的不同而不同,但許多數據結構都與堆大小成正比。
即時 (JIT) 編譯器
JIT 編譯器在運行時編譯 Java 位元組碼來優化本機可執行代碼。這極大地提高了 Java 運行時的速度,並且支持 Java 應用程序以與本機代碼相當的速度運行。
位元組碼編譯使用本機內存(使用方式與 gcc 等靜態編譯器使用內存來運行一樣),但 JIT 編譯器的輸入(位元組碼)和輸出(可執行代碼)必須也存儲在本機內存中。包含多個經過 JIT 編譯的方法的 Java 應用程序會使用比小型應用程序更多的本機內存。
類和類載入器
Java 應用程序由一些類組成,這些類定義對象結構和方法邏輯。Java 應用程序也使用 Java 運行時類庫(比如 java.lang.String)中的類,也可以使用第三方庫。這些類需要存儲在內存中以備使用。
存 儲類的方式取決於具體實現。Sun JDK 使用永久生成(permanent generation,PermGen)堆區域。Java 5 的 IBM 實現會為每個類載入器分配本機內存塊,並將類數據存儲在其中。現代 Java 運行時擁有類共享等技術,這些技術可能需要將共享內存區域映射到地址空間。要理解這些分配機制如何影響您 Java 運行時的本機內存佔用,您需要查閱該實現的技術文檔。然而,一些普遍的事實會影響所有實現。
從最基本的層面來看,使用更多的類將 需要使用更多內存。(這可能意味著您的本機內存使用量會增加,或者您必須明確地重新設置 PermGen 或共享類緩存等區域的大小,以裝入所有類)。記住,不僅您的應用程序需要載入到內存中,框架、應用伺服器、第三方庫以及包含類的 Java 運行時也會按需載入並佔用空間。
Java 運行時可以卸載類來回收空間,但是只有在非常嚴酷的條件下才會這樣做。不能卸載單個類,而是卸載類載入器,隨其載入的所有類都會被卸載。只有在以下情況下才能卸載類載入器:
Java 堆不包含對表示該類載入器的 java.lang.ClassLoader 對象的引用。
Java 堆不包含對表示類載入器載入的類的任何 java.lang.Class 對象的引用。
在 Java 堆上,該類載入器載入的任何類的所有對象都不再存活(被引用)。
需要注意的是,Java 運行時為所有 Java 應用程序創建的 3 個默認類載入器( bootstrap、extension 和 application )都不可能滿足這些條件,因此,任何系統類(比如 java.lang.String)或通過應用程序類載入器載入的任何應用程序類都不能在運行時釋放。
即使類載入器適合進行收集,運行時也只會將收集類載入器作為 GC 周期的一部分。一些實現只會在某些 GC 周期中卸載類載入器。
也 可能在運行時生成類,而不用釋放它。許多 JEE 應用程序使用 JavaServer Pages (jsP) 技術來生成 Web 頁面。使用 JSP 會為執行的每個 .jsp 頁面生成一個類,並且這些類會在載入它們的類載入器的整個生存期中一直存在 —— 這個生存期通常是 Web 應用程序的生存期。
另一種生成類的常見方法是使用 Java 反射。反射的工作方式因 Java 實現的不同而不同,但 Sun 和 IBM 實現都使用了這種方法,我馬上就會講到。
當使用 java.lang.reflect API 時,Java 運行時必須將一個反射對象(比如 java.lang.reflect.Field) 的方法連接到被反射到的對象或類。這可以通過使用 Java 本機介面(Java Native Interface,JNI)訪問器來完成,這種方法需要的設置很少,但是速度緩慢。也可以在運行時為您想要反射到的每種對象類型動態構建一個類。後一種 方法在設置上更慢,但運行速度更快,非常適合於經常反射到一個特定類的應用程序。
Java 運行時在最初幾次反射到一個類時使用 JNI 方法,但當使用了若干次 JNI 方法之後,訪問器會膨脹為位元組碼訪問器,這涉及到構建類並通過新的類載入器進行載入。執行多次反射可能導致創建了許多訪問器類和類載入器。保持對反射對象 的引用會導致這些類一直存活,並繼續佔用空間。因為創建位元組碼訪問器非常緩慢,所以 Java 運行時可以緩存這些訪問器以備以後使用。一些應用程序和框架還會緩存反射對象,這進一步增加了它們的本機內存佔用。
JNI
JNI 支持本機代碼(使用 C 和 C++ 等本機編譯語言編寫的應用程序)調用 Java 方法,反之亦然。Java 運行時本身極大地依賴於 JNI 代碼來實現類庫功能,比如文件和網路 I/O。JNI 應用程序可能通過 3 種方式增加 Java 運行時的本機內存佔用:
JNI 應用程序的本機代碼被編譯到共享庫中,或編譯為載入到進程地址空間中的可執行文件。大型本機應用程序可能僅僅載入就會佔用大量進程地址空間。

本機代碼必須與 Java 運行時共享地址空間。任何本機代碼分配或本機代碼執行的內存映射都會耗用 Java 運行時的內存。

某些 JNI 函數可能在它們的常規操作中使用本機內存。GetTypeArrayElements 和 GetTypeArrayRegion 函數可以將 Java 堆數據復制到本機內存緩沖區中,以供本機代碼使用。是否復制數據依賴於運行時實現。(IBM Developer Kit for Java 5.0 和更高版本會進行本機復制)。通過這種方式訪問大量 Java 堆數據可能會使用大量本機堆。

④ windows和linux雙系統,win系統時間不對,怎麼改回來

在BIOS中檢查時間設置。如果BIOS中時間正常,則可以在WINDOWS系統中設置。

⑤ 請問電腦有多少種系統

這個問題只能簡單說,電腦的操作系統簡單說分為以下幾個操作系統,這些操作系統又分不同的年代出了不同版本:

一、

  1. Windows系列操作系統
    由微軟公司生產;
    2.Unix類操作系統
    如SOLARIS,BSD系列(FREEBSD,openbsd,netbsd,pcbsd);
    3.Linux類操作系統
    如UBUNTU,suse linux,fedora,等
    4.Mac操作系統
    蘋果公司生產(Darwin),一般安裝於MAC電腦。

二、這里從WINDOWS說起。它是我們現在應用最廣泛的。

1985.11
Microsoft公司推出Windows 1.0。

1988.10
受雇的David Cutler與其以前的Digital同事一起開始NT的開發工作。

1989.6
由Chuk Whitmer領導的項目組開始從事NT的圖形工作。開始時,項目組試圖使用C++來編寫代碼,但後來因性能原因,部分代碼使用C來編寫。

1989.7
NT項目組完成的首個系統首次使用Intel i860處理器運行。

1990.1
比爾.蓋茨將主要設計師集中在一起,討論在Intel公司的386+處理器上運行NT的重要性,並選擇非Intel i860的一種新RISC處理器。一個月後,首個NT專門測試項目組組建。

1990.5
Windows 3.0發布。代碼名稱為Chicago,該版本具有一個增強的程序管理器和圖標系統,一個新的文件管理器,支持16色,運行得更好且更快。這一年,該軟體銷售了3百萬套。

1991.5
Microsoft公司向其合作者公開NT的一些詳細內容。

1992.4
Windows 3.1發布。前兩個月,軟體的銷售量為三百萬套,直到1995年Windows 95接替其前,其一直保持為首號操作系統。

1992.10
推出NT的第一個Beta版本。

1992.11
用於Windows NT的首個Win32軟體Development Kit發布。

1993.8
Windows NT 3.1最終發布。

1993.10
Microsoft公司發布NT 3.1的首個補丁(Service Pack),其修復了90處以上的錯誤。

1993.12
Motorola和Microsoft公司宣布將Windows NT引入PowerPC平台。Microsoft公司推測裝配了300000套NT。

1994.8
NT首次發布升級版本(NT 3.5)。Office for Windows NT的第一個版本包含了Word和Excel的32位版本。同時,發布了BackOffice。

1995.2
首台運行NT的PowerPC系統推出。

1995.5
Microsoft公司宣布了一個小但很重要的升級(3.51),以允許NT與即將出現的、專門為Windows 95設計的應用程序兼容,這令用戶感到很驚奇。

1995.8
Windows 95發布,這是不要求MS-DOS的第一個Windows版本,且被看作是一個用戶界面相當友好的操作系統。其包含了一個集成的TCP/IP堆棧、拔號網路和長文件名支持。

1996.8
Windows NT 4發布,其帶有類似於新95的外殼。

1996.9
Microsoft公司宣布64位支持將被添加到NT 5.0這個專門的版本中。

1996.10
Microsoft公司宣布在PowerPC上的NT支持將被取消,而只讓Alpha和x86作為唯一剩餘的選項。

1997.9
Microsoft公司在PDC將NT 5.0的首個測試版本公諸於眾。

1998.6
Windows 98發布。基於MS-DOS內核的最新Windows版本內置有IE 4。

1999.4
Windows 2000 Beta 3發布。

1999.11
Windows 2000 Release Candidate 3(RC3)在美國發布。

2000.2.17
Windows 2000最終版本的發布日期。

2000.3.20
Windows 2000在中國的發布日期。

2000年10.
Microsoft發布了面向家庭的Windows Me 。

2001年10.25
Windows XP發布。

2003年11月
Windows2003 家族發布

三、你的機器可以安裝XP系統。

⑥ LINUX 和 WINDOWS 內核的區別

二者最大的區別在於WINDOWS是個商業軟體,而LINUX是開源軟體。商業軟體的好處是可以集中一大批人力物力做一件事情。容易統一,兼容(因為客戶需求)。而開源的好處在於靈活,開放。

在下面的比較中,我一般先介紹下WINDOWS的,然後再介紹LINUX的。

1、觀念:商業 VS 開源

WINDOWS是個商業軟體,它的源碼是保密的. 當然,其他非MS的人也還是有機會看到源碼的. 如果你和MS 簽訂一個NDA(NON DISCLOSURE AGREEMENT),那麼你也有可能拿到WINDOWS代碼.

不過對於廣大窮學生,以及連VISUAL STUDIO都在用盜版的摳門公司來說,和MS簽個NDA幾乎是不可想像的. 所以在WINDOWS世界,想了解WINDOW 內核的具體信息變得很難. 只能靠DDK(DRIVER DEVELOPMENT KIT) 和WINDBG(內核調試工具)泄漏出來的一些. 然後就是REVERSE ENGINEERING (逆向工程,可以簡單的理解為反匯編,實際上更復雜一些).

這也造成了 <WINDOWS INTERNALS> 一書超級火爆的原因. 因為它是微軟授權的,而且公布了很多內部細節. 另外一本講內核的書是<UNDOCUMENTED WINDOWS 2K SECRETS>,雖然老了點,但是很多內幕。關於WINDOWS, undocumented 和secrets 這2個字絕對是可以類比「超級美女」的字眼。因為這些東西平時是看不到的.

與此對應,在LINUX世界,常見的一個詞是RTFS。也就是READ THE FXXXXXX SOURCE CODE (這句話據說最早出於linus torvalds, 也就是LINUX之父)。意思也就是說「去讀該死的代碼」。言外之意,我把代碼都給你你了,你還想要啥啊?這就好像一個男人對他GF / LP / LD說,我把全部的銀行帳戶密碼都給你了,你還想要啥啊?

其實他不知道(或者認識不到)女人還需要你的時間,精力來陪她。就好像LINUX 程序員意識不到文檔也是很重要的。當然,LINUX程序員應該也是知道文檔的重要的,不過一個是維護成本太高,另外是LINUX 內核變化太快。所以LINUX 的文檔總感覺比MSDN要差點。

話說當年WIN 2K的源碼泄漏出來了一些,我也迫不及待的下載了一份.雖然至今也沒看過,但是拿到WINDOWS 源碼的感覺,絕對不比娶了一個絕世美女差. (當然,真要娶老婆還是看內在).

相比之下, LINUX 是開源的,代碼隨時可見. 這對剛從WINDOWS世界轉過來的我是十分震撼的. 雖然我一直都知道這個事實, 但是當你發現了以前需要用盡各種方法,採用各種手段才可以得到只言片語的信息現在完全呈獻在你面前的時候,你才能真正體會開源確實是一件偉大的工程.

看了LINUX源碼之後,我終於發現,原來內核里大部分也是C語言(而不是以前想像的匯編). 同時內核似乎也就那樣,不像之前想像的那麼神秘. 原來編譯內核也就是比編譯個普通程序稍微麻煩點,用的時間長點. 原來編譯內核用普通的C編譯器就可以. 原來內核也是一個普通的可執行文件.(PS: 我懷疑MS也是用VS來編譯WINDOWS的. 同時我也知道WINDOWS內核也是一個可執行文件.) 原來更換內核是如此的簡單.

終於,內核可以被我隨便改了. 哇哈哈哈!

言規正傳,我覺得商業也還是有好處的。比如兼容性好,我以前用WDM寫一個驅動,最多改下編譯選項就可以在WIN 98, WIN 2K, WIN XP下運行。十分方便。而如果換成LINUX,那麼你只好祈禱不同的內核版本之間沒改那些你用到的頭文件,函數介面。否則就要改代碼了。

同時,開源的好處是適合學習,十分靈活。我覺得LINUX十分適合學校,學生。因為開源,當你發現不明白的地方的時候,可以直接去看源碼(還記得RTFS? )。看不懂還可以到論壇上問。而對於WINDOWS,你想了解它的內部機制就只好GOOGLE,然後祈禱了。比較好的一個資源是MSDN下面的一個雜志,其中有一個主題叫UNDER THE HOOD, 或者搜搜 BUGSLAYER 也可以。這2個專題的作者Matt Pietrek和John Robbins都是大牛級的人物。

順便說下UNDER THE HOOD 這個名字本身。以前一直不太理解,因為查字典的話,HOOD 的意思也就是個蓋子。那麼蓋子下面有啥呢?為啥要看蓋子下面呢?

來到美國之後,我漸漸明白了。HOOD 在這里應該理解為汽車的引擎蓋。在美國,汽車是很普遍的。如果你開車,但是從來沒打開過引擎蓋,那麼說明你只會用,而不了解汽車內部。那麼如果你打開蓋子看看呢?就可以看到很多內部細節,比如發動機啥的了。

在美國這個汽車王國,很多軟體術語和汽車有關,因為人們日常生活中對汽車也很了解。比如「引擎」這個詞,以前玩3D游戲的時候,常會看到介紹說,本游戲採用了最新的3D引擎。啥意思呢?就是游戲最核心的部分(汽車引擎)已經升級了。不是只把外面的人物形象改了下而已。

另外,開源軟體也經常用汽車來類比。開源意外著你買了車(軟體)後,可以隨便拿到一個修理廠去修。也就是什麼人都可以改,只要他懂。而COPY RIGHT 軟體呢,就是你買了車,但是引擎蓋子是鎖著的,壞了只能去生產廠家修,其他人修不了。如果萬一生產廠家不想修或者不會修呢?那你就只能認命了。

扯得有點遠了,打住。

1.1、發布:2進制 VS 源碼

這里主要討論下WINDOWS和LINUX在發布程序採用的不同的形式和觀念,這些和前面的商業還是開源的基本觀念是聯系在一起的。

在WINDOWS 世界,安裝程序幾乎全部都是以二進制形式發布的。也就是說,用戶下載了一個程序,然後雙擊,一路NEXT,NEXT,NEXT就可以了。這個方法很適合初學者。在LINUX世界也有類似的機制,比如YUM, APT-GET 等。不過YUM和APT-GET都是比較晚才出現的,在那之前,在LINUX世界安裝程序要更麻煩些。

有的時候,LINUX的YUM, APT-GET還不夠用。比如有的人寫的一個小軟體,沒有放到這些大的公共的庫裡面。這時,你就會發現他們一般提供一個或者一堆源文件,然後需要使用者自己下載,「編譯」,安裝。這也就是LINUX世界常見的源代碼發布的形式。

一開始的時候,十分不習慣LINUX的這種發布形式。用慣了WINDOWS的雙擊安裝,總覺得LINUX的安裝很麻煩,又要自己./CONFIGURE, MAKE, MAKE INSTALL. 萬一這個軟體又依賴於其他的庫,那麼又要自己去找那些庫,萬一那些庫又依賴其他的庫...... 另外,各種庫的版本也是一個問題,萬一不兼容,那麼又要找一個兼容的。

為什麼LINUX世界這么多源代碼發布呢?為什麼WINDOWS世界流行2進制文件發布,而不是源代碼呢?關於後者,很好解釋,因為WINDOWS那邊很多源代碼都是商業秘密,是不公開的。同時,WINDOWS的程序用到的那些庫在一般的系統里都裝好了。所以2進制發布可行,也十分方便。

關於前一個問題,我覺得源代碼發布的一個好處是可以在編譯的時候進行一些優化和設置。比如同樣的代碼,在32或64位平台下編譯的時候可以進行適當的優化。另外,用戶也可以在編譯的時候設置一些開關,這樣在編譯期間的優化一般要好於運行時間的優化。

不過源代碼發布的一個壞處就是對使用者要求較高。如果運行configue,make命令順利的話還好。如果萬一不順利,要自己改下頭文件啥的,無疑是一般的使用者無法做到的。另外庫之間的依賴關系如果是人手工處理的話也十分麻煩。好在LINUX世界後來有了YUM APT-GET之類的包管理系統。大多數軟體都可以很方便的安裝了。

2、進程及其創建 CreateProcess VS fork+execv

在WINDOWS世界,創建進程最常用的WIN 32 API 是 CreateProcess以及相關函數。這個函數需要一堆參數(WINDOWS API 的特點),不過很多參數可以簡單的用NULL, TRUE OR FALSE來表示。另外,你直接告訴它要執行的是哪個文件。

到了LINUX世界,我模糊的知道fork是用來創建一個新進程的。但是當我看fork的函數說明的時候,呆住了。因為fork不需要任何參數。習慣了 CreateProcess 的10來個參數,突然換成一個不要任何參數的函數,感覺很奇妙。一方面覺得似乎事情簡單了很多,不用去把10來個參數的每個意思都搞明白。另外一方面又很疑惑,我怎麼告訴它我要執行某個文件呢?

後來才知道,LINUX中的進程的含義和WINDOWS中是不一樣的。LINUX中的進程本身是可以執行的。而WINDOWS中,進程只是表示一個資源的擁有體,是不能執行的。要執行的話,一定需要一個線程。這也部分解釋了為什麼CreateProcess中為啥一定要傳入要執行的文件的名字。

而fork的含義是把進程本身CLONE一個新的出來。也就是說,FORK之後,父進程和子進程都執行同樣的一段代碼。如果想區分的話,可以根據FORK的返回值來區分。引用一段fork的說明:

On success, the PID of the child process is returned in the parent's thread of execution, and a 0 is returned in the child's thread of execution.

同時在LINUX程序中,常見的寫法如下:

int pid;
pid = fork();
switch (pid)
{
case 0: //I am the child

;
case -1: //failed.

;
default: //I am the parent

}

為什麼要這樣設計呢?因為LINUX的設計目標之一就是應用於伺服器。這種情況下,一個SERVICE可能會啟動很多進程(線程)來服務不同的CLIENT. 所以FORK設計成快速復制父進程。子進程直接使用父親的地址空間,只有子進程載入一個新的可執行文件的時候才創建自己的地址空間。

這樣節省了創建地址空間這個龐大的開銷,使得LINUX的進程創建十分快。不過實際上,這里的進程相對於WINDOWS中的線程,所以同WINDOWS中的線程創建相比,二者的開銷應該差不多。

那麼如何才能讓新的進程載入一個可執行文件呢,這時就要用execv以及相關函數了。所以LINUX中,代替CreateProcess()的函數是fork+execv

3、文件格式 PE VS ELF

WINDOWS中的可執行文件格式是PE。到了LINUX就變成了ELF。2者有相似的地方,比如都分成幾個SECTION,包含代碼段,數據段等。但是2個又不一樣。使得從一個轉到另外一個的人不得不重新學習下。有點象在國內開慣了車的人,到了香港或者英國開車,雖然也是4個輪子一個方向盤,但是一個靠左行駛,一個靠右。總是需要些時間來習慣。

那麼為啥LINUX不能和WINDOWS用同樣的文件格式呢?我覺得可能的原因有幾個。首先可能是2個差不多同時在設計的,彼此不知道對方的存在。所以也沒法一方壓倒一方。另外一個可能的原因是PE格式最開始還是保密的(後來MS公開了PE的SPEC),所以即使LINUX想直接用PE都不行。

順便說下,MS OFFICE 的文檔格式以前也是保密的,直到最近(好像是2008年)才公開。希望這可以使得OPEN OFFICE的開發順利很多。

4、內核API:固定 VS 非固定

WINDOWS內核有一套固定的API,而且向後兼容。這使得WINDOWS 驅動的開發人員在不同版本之間移植時變得很容易。比如我用WDM (WINDOWS DEVICE MODEL) 開發一個驅動,最多改下編譯選項就可以在WIN 98, 2K, XP, 2003 下使用。VISTA 我覺得也許都可以。

而LINUX沒有固定的內核API。2.4版本的內核模塊在2.6幾乎很大可能是不能兼容的。要移植的話,不只是改個編譯選項,而是要改一堆的頭文件和實現文件等。而麻煩的是,即使都是2.6內核,不同的小版本之間也有些不同。如果你的內核模塊剛好用到了變化的部分,那麼也只好重新學習,然後改自己的頭文件或者實現文件了。

固定內核API的好處是兼容性好,壞處是包袱比較大,不得不隨時支持老的,也許是過時的介面。比如WINDOWS內核里有WDM 一套API, 但是又有網卡專用的 NDIS 一套API. 實際上2套API的很多設計目標是重合的。那麼為什麼有2個呢?因為NDIS是先出來的,為了兼容性,一定要支持。而NDIS又只針對網卡,所以又出來了WDM。

不固定API的壞處是升級很麻煩,外圍的內核模塊維護者很辛苦。好處是可以隨時採用更新的設計。

5. WINDOWS與LINUX中的中斷處理比較

5.1不同之處:

在WINDOWS中,有一個IRQL (注意不是IRQ)的概念。最早的時候,我以為是CPU設計里就包括了這個東東。後來看INTEL CPU手冊,發現似乎沒有。最近又看了一遍WINDOWS INTERALS 4TH。感覺這個東西應該是包括在PIC OR APIC裡面的(關於APIC,可以看我以前的帖子)。對於X86-32,硬體設備的IRQ於IRQL之間的關系是:IRQL= 27-IRQ。引入IRQL的動機似乎是這樣的:當CPU運行在低IRQL時,如果來了一個高IRQL對應的中斷,那麼低的中斷的ISR是會被高的ISR搶過去的。就是說低的ISR又被一個更高級的ISR中斷了。這樣的好處是優先順序高的ISR可以更快的得到響應。

另外,在具體實現中,由於操作PIC OR APCI改IRQL是比較費時的,所以WINDOWS是盡量不去直接操作硬體,而是等到萬不得已的時候才改。

在LINUX中,似乎沒有類似IRQL這樣的觀念。就我目前看過的書和代碼來看,LINUX中的ISR或者是KERNLE最多是操作下CPU上的中斷標志位(IF)來開啟或者關閉中斷。也就是說,要麼中斷全開,要麼全關。

從這一點來看,LINUX在這部分的設計上比WINDOWS簡單。

5.2 相似之處:

WINDOWS和LINUX似乎都把中斷分成了2部分。在LINUX中叫ISR(還是其他?)和BOTTOM HALF。而WINODWS中,DPC(Deferred Procere Calls)和APC(Asynchronous Procere Calls)就非常類似BOTTOM HALF。二者把中斷分成兩部分的動機是差不多的。都是為了把ISR搞得越快越好。LINUX中,在ISR里一般關中斷,所以時間太長的話,其他中斷就得不到響應。WINDOWS中,ISR跑在一個很高的IRQL裡面,同樣會阻塞其他IRQL比較低的任務。

LINUX中的BOTTOM HALF 又可以分為TASKLET 和SOFIRQ。二者的主要區別是復雜度和並發性(CONCURRENCY)。下面COPY自<UNDERSTANDING LINUX NETWORK INTERNALS>一書。
Tasklet: Only one instance of each tasklet can run at any time. Different tasklets can run concurrently on different CPUs.
Softirq: Only one instance of each softirq can run at the same time on a CPU. However, the same softirq can run on different CPUs concurrentlyOnly one instance of each softirq can run at the same time on a CPU. However, the same softirq can run on different CPUs concurrently.

WINDOWS中的DPC有點類似TASKLET和SOFTIRQ。 DPC是系統范圍內的,並且運行在DPC IRQL。是一個類似中斷上下文的環境(INTERRUPT CONTEXT)。APC和DPC的區別是運行在更低級別的APC IRQL。另外,APC是針對每一個線程的。執行在某個線程環境中。主要目的也是把一部分事情放到以後去執行。APC又分為KERNEL APC 和USER APC。APC這個觀念在LINUX中似乎沒有類似的?至少我還沒想到。

5.3 參考文獻:
1. WINDOWS INTERALS 4TH
2. UNDERSTANDING LINUX NETWORK INTERNALS, 2005

UNICODE VS ASCII
KERNEL 4M/4K MIXED PAGE VS 4K PAGE
FS SEGMENT VS NO FS
GDI VS XWINDOWS
IRP VS FUNCTION POINTER
注冊表 VS 普通文件

⑦ jprofiler 9.2 windows和linux的jdk可以不相同嗎

Java™堆耗盡並不是造成java.lang.OutOfMemoryError的惟一原因。如果本機內存耗盡,則會發生普通調試技巧無法解決的OutOfMemoryError。本文將討論本機內存的概念,Java運行時如何使用它,它被耗盡時會出現什麼情況,以及如何在Windows®和Linux®上調試本機OutOfMemoryError。針對AIX®系統的相同主題將在另一篇同類文章中介紹。Java堆(每個Java對象在其中分配)是您在編寫Java應用程序時使用最頻繁的內存區域。JVM設計用於將我們與主機的特性隔離,所以將內存當作堆來考慮再正常不過了。您一定遇到過Java堆OutOfMemoryError,它可能是由於對象泄漏造成的,也可能是因為堆的大小不足以存儲所有數據,您也可能了解這些場景的一些調試技巧。但是隨著您的Java應用程序處理越來越多的數據和越來越多的並發負載,您可能就會遇到無法使用常規技巧進行修復的OutOfMemoryError。在一些場景中,即使java堆未滿,也會拋出錯誤。當這類場景發生時,您需要理解Java運行時環境(JavaRuntimeEnvironment,JRE)內部到底發生了什麼。Java應用程序在Java運行時的虛擬化環境中運行,但是運行時本身是使用C之類的語言編寫的本機程序,它也會耗用本機資源,包括本機內存。本機內存是可用於運行時進程的內存,它與Java應用程序使用的java堆內存不同。每種虛擬化資源(包括Java堆和Java線程)都必須存儲在本機內存中,虛擬機在運行時使用的數據也是如此。這意味著主機的硬體和操作系統施加在本機內存上的限制會影響到Java應用程序的性能。本系列文章共分兩篇,討論不同平台上的相應話題。本文是其中一篇。在這兩篇文章中,您將了解什麼是本機內存,Java運行時如何使用它,本機內存耗盡之後會發生什麼情況,以及如何調試本機OutOfMemoryError。本文介紹Windows和Linux平台上的這一主題,不會介紹任何特定的運行時實現。另一篇類似的文章介紹AIX上的這一主題,著重介紹IBM®DeveloperKitforJava。(另一篇文章中關於IBM實現的信息也適合於除AIX之外的平台,因此如果您在Linux上使用IBMDeveloperKitforJava,或使用IBM32-,您會發現這篇文章也有用處)。本機內存簡介我將首先解釋一下操作系統和底層硬體給本機內存帶來的限制。如果您熟悉使用C等語言管理動態內存,那麼您可以直接跳到下一節。硬體限制本機進程遇到的許多限制都是由硬體造成的,而與操作系統沒有關系。每台計算機都有一個處理器和一些隨機存取存儲器(RAM),後者也稱為物理內存。處理器將數據流解釋為要執行的指令,它擁有一個或多個處理單元,用於執行整數和浮點運算以及更高級的計算。處理器具有許多寄存器——常快速的內存元素,用作被執行的計算的工作存儲,寄存器大小決定了一次計算可使用的最大數值。處理器通過內存匯流排連接到物理內存。物理地址(處理器用於索引物理RAM的地址)的大小限制了可以定址的內存。例如,一個16位物理地址可以定址0x0000到0xFFFF的內存地址,這個地址范圍包括2^16=65536個惟一的內存位置。如果每個地址引用一個存儲位元組,那麼一個16位物理地址將允許處理器定址64KB內存。處理器被描述為特定數量的數據位。這通常指的是寄存器大小,但是也存在例外,比如32位390指的是物理地址大小。對於桌面和伺服器平台,這個數字為31、32或64;對於嵌入式設備和微處理器,這個數字可能小至4。物理地址大小可以與寄存器帶寬一樣大,也可以比它大或小。如果在適當的操作系統上運行,大部分64位處理器可以運行32位程序。表1列出了一些流行的Linux和Windows架構,以及它們的寄存器和物理地址大小:表1.一些流行處理器架構的寄存器和物理地址大小架構寄存器帶寬(位)物理地址大小(位)(現代)Intel®x86323236,具有物理地址擴展(PentiumPro和更高型號)x866464目前為48位(以後將會增大)PPC6464在POWER5上為50位39031位323139064位6464操作系統和虛擬內存如果您編寫無需操作系統,直接在處理器上運行的應用程序,您可以使用處理器可以定址的所有內存(假設連接到了足夠的物理RAM)。但是要使用多任務和硬體抽象等特性,幾乎所有人都會使用某種類型的操作系統來運行他們的程序。在Windows和Linux等多任務操作系統中,有多個程序在使用系統資源。需要為每個程序分配物理內存區域來在其中運行。可以設計這樣一個操作系統:每個程序直接使用物理內存,並且可以可靠地僅使用分配給它的內存。一些嵌入式操作系統以這種方式工作,但是這在包含多個未經過集中測試的應用程序的環境中是不切實際的,因為任何程序都可能破壞其他程序或者操作系統本身的內存。虛擬內存允許多個進程共享物理內存,而且不會破壞彼此的數據。在具有虛擬內存的操作系統(比如Windows、Linux和許多其他操作系統)中,每個程序都擁有自己的虛擬地址空間——一個邏輯地址區域,其大小由該系統上的地址大小規定(所以,桌面和伺服器平台的虛擬地址空間為31、32或64位)。進程的虛擬地址空間中的區域可被映射到物理內存、文件或任何其他可定址存儲。當數據未使用時,操作系統可以在物理內存與一個交換區域(Windows上的頁面文件或者Linux上的交換分區)之間移動它,以實現對物理內存的最佳利用率。當一個程序嘗試使用虛擬地址訪問內存時,操作系統連同片上硬體會將該虛擬地址映射到物理位置,這個位置可以是物理RAM、一個文件或頁面文件/交換分區。如果一個內存區域被移動到交換空間,那麼它將在被使用之前載入回物理內存中。圖1展示了虛擬內存如何將進程地址空間區域映射到共享資源:程序的每個實例以進程的形式運行。在Linux和Windows上,進程是一個由受操作系統控制的資源(比如文件和套接字信息)、一個典型的虛擬地址空間(在某些架構上不止一個)和至少一個執行線程構成的集合。虛擬地址空間大小可能比處理器的物理地址大小更小。32位Intelx86最初擁有的32位物理地址僅允許處理器定址4GB存儲空間。後來,添加了一種稱為物理地址擴展(PhysicalAddressExtension,PAE)的特性,將物理地址大小擴大到了36位,允許安裝或定址至多64GBRAM。PAE允許操作系統將32位的4GB虛擬地址空間映射到一個較大的物理地址范圍,但是它不允許每個進程擁有64GB虛擬地址空間。這意味著如果您將大於4GB的內存放入32位Intel伺服器中,您將無法將所有內存直接映射到一個單一進程中。地址窗口擴展(AddressWindowingExtension)特性允許Windows進程將其32位地址空間的一部分作為滑動窗口映射到較大的內存區域中。Linux使用類似的技術將內存區域映射到虛擬地址空間中。這意味著盡管您無法直接引用大於4GB的內存,但您仍然可以使用較大的內存區域。內核空間和用戶空間盡管每個進程都有其自己的地址空間,但程序通常無法使用所有這些空間。地址空間被劃分為用戶空間和內核空間。內核是主要的操作系統程序,包含用於連接計算機硬體、調度程序以及提供聯網和虛擬內存等服務的邏輯。作為計算機啟動序列的一部分,操作系統內核運行並初始化硬體。一旦內核配置了硬體及其自己的內部狀態,第一個用戶空間進程就會啟動。如果用戶程序需要來自操作系統的服務,它可以執行一種稱為系統調用的操作與內核程序交互,內核程序然後執行該請求。系統調用通常是讀取和寫入文件、聯網和啟動新進程等操作所必需的。當執行系統調用時,內核需要訪問其自己的內存和調用進程的內存。因為正在執行當前線程的處理器被配置為使用地址空間映射來為當前進程映射虛擬地址,所以大部分操作系統將每個進程地址空間的一部分映射到一個通用的內核內存區域。被映射來供內核使用的地址空間部分稱為內核空間,其餘部分稱為用戶空間,可供用戶應用程序使用。內核空間和用戶空間之間的平衡關系因操作系統的不同而不同,甚至在運行於不同硬體架構之上的同一操作系統的各個實例間也有所不同。這種平衡通常是可配置的,可進行調整來為用戶應用程序或內核提供空間。縮減內核區域可能導致一些問題,比如能夠同時登錄的用戶數量限制或能夠運行的進程數量限制。更小的用戶空間意味著應用程序編程人員只能使用更少的內存空間。默認情況下,32位Windows擁有2GB用戶空間和2GB內核空間。在一些Windows版本上,通過向啟動配置添加/3GB開關並使用/LARGEADDRESSAWARE開關重新鏈接應用程序,可以將這種平衡調整為3GB用戶空間和1GB內核空間。在32位Linux上,默認設置為3GB用戶空間和1GB內核空間。一些Linux分發版提供了一個hugemem內核,支持4GB用戶空間。為了實現這種配置,將進行系統調用時使用的地址空間分配給內核。通過這種方式增加用戶空間會減慢系統調用,因為每次進行系統調用時,操作系統必須在地址空間之間復制數據並重置進程地址-空間映射。圖2展示了32位Windows的地址-空間布局:31位Linux390上還使用了一個獨立的內核地址空間,其中較小的2GB地址空間使對單個地址空間進行劃分不太合理,但是,390架構可以同時使用多個地址空間,而且不會降低性能。進程空間必須包含程序需要的所有內容,包括程序本身和它使用的共享庫(在Windows上為DDL,在Linux上為.so文件)。共享庫不僅會占據空間,使程序無法在其中存儲數據,它們還會使地址空間碎片化,減少可作為連續內存塊分配的內存。這對於在擁有3GB用戶空間的Windowsx86上運行的程序尤為明顯。DLL在構建時設置了首選的載入地址:當載入DLL時,它被映射到處於特定位置的地址空間,除非該位置已經被佔用,在這種情況下,它會載入到別處。WindowsNT最初設計時設置了2GB可用用戶空間,這對於要構建來載入接近2GB區域的系統庫很有用——使大部分用戶區域都可供應用程序自由使用。當用戶區域擴展到3GB時,系統共享庫仍然載入接近2GB數據(約為用戶空間的一半)。盡管總體用戶空間為3GB,但是不可能分配3GB大的內存塊,因為共享庫無法載入這么大的內存。在Windows中使用/3GB開關,可以將內核空間減少一半,也就是最初設計的大小。在一些情形下,可能耗盡1GB內核空間,使I/O變得緩慢,且無法正常創建新的用戶會話。盡管/3GB開關可能對一些應用程序非常有用,但任何使用它的環境在部署之前都應該進行徹底的負載測試。參見參考資料,獲取關於/3GB開關及其優缺點的信息的鏈接。本機內存泄漏或過度使用本機內存將導致不同的問題,具體取決於您是耗盡了地址空間還是用完了物理內存。耗盡地址空間通常只會發生在32位進程上,因為最大4GB的內存很容易分配完。64位進程具有數百或數千GB的用戶空間,即使您特意消耗空間也很難耗盡這么大的空間。如果您確實耗盡了Java進程的地址空間,那麼Java運行時可能會出現一些陌生現象,本文稍後將詳細討論。當在進程地址空間比物理內存大的系統上運行時,內存泄漏或過度使用本機內存會迫使操作系統交換後備存儲器來用作本機進程的虛擬地址空間。訪問經過交換的內存地址比讀取駐留(在物理內存中)的地址慢得多,因為操作系統必須從硬碟驅動器拉取數據。可能會分配大量內存來用完所有物理內存和所有交換內存(頁面空間),在Linux上,這將觸發內核內存不足(OOM)結束程序,強制結束最消耗內存的進程。在Windows上,與地址空間被占滿時一樣,內存分配將會失敗。同時,如果嘗試使用比物理內存大的虛擬內存,顯然在進程由於消耗內存太大而被結束之前就會遇到問題。系統將變得異常緩慢,因為它會將大部分時間用於在內存與交換空間之間來回復制數據。當發生這種情況時,計算機和獨立應用程序的性能將變得非常糟糕,從而使用戶意識到出現了問題。當JVM的Java堆被交換出來時,垃圾收集器的性能會變得非常差,應用程序可能被掛起。如果一台機器上同時使用了多個Java運行時,那麼物理內存必須足夠分配給所有Java堆。Java運行時如何使用本機內存Java運行時是一個操作系統進程,它會受到我在上一節中列出的硬體和操作系統局限性的限制。運行時環境提供的功能受一些未知的用戶代碼驅動,這使得無法預測在每種情形中運行時環境將需要何種資源。Java應用程序在託管Java環境中執行的每個操作都會潛在地影響提供該環境的運行時的需求。本節描述Java應用程序為什麼和如何使用本機內存。Java堆和垃圾收集Java堆是分配了對象的內存區域。大多數JavaSE實現都擁有一個邏輯堆,但是一些專家級Java運行時擁有多個堆,比如實現Java實時規范(RealTimeSpecificationforJava,RTSJ)的運行時。一個物理堆可被劃分為多個邏輯扇區,具體取決於用於管理堆內存的垃圾收集(GC)演算法。這些扇區通常實現為連續的本機內存塊,這些內存塊受Java內存管理器(包含垃圾收集器)控制。堆的大小可以在Java命令行使用-Xmx和-Xms選項來控制(mx表示堆的最大大小,ms表示初始大小)。盡管邏輯堆(經常被使用的內存區域)可以根據堆上的對象數量和在GC上花費的時間而增大和縮小,但使用的本機內存大小保持不變,而且由-Xmx值(最大堆大小)指定。大部分GC演算法依賴於被分配為連續的內存塊的堆,因此不能在堆需要擴大時分配本機內存。所有堆內存必須預先保留。保留本機內存與分配本機內存不同。當本機內存被保留時,無法使用物理內存或其他存儲器作為備用內存。盡管保留地址空間塊不會耗盡物理資源,但會阻止內存被用於其他用途。由保留從未使用的內存導致的泄漏與泄漏分配的內存一樣嚴重。當使用的堆區域縮小時,一些垃圾收集器會回收堆的一部分(釋放堆的後備存儲空間),從而減少使用的物理內存。對於維護Java堆的內存管理系統,需要本機內存來維護它的狀態。當進行垃圾收集時,必須分配數據結構來跟蹤空閑存儲空間和記錄進度。這些數據結構的確切大小和性質因實現的不同而不同,但許多數據結構都與堆大小成正比。即時(JIT)編譯器JIT編譯器在運行時編譯Java位元組碼來優化本機可執行代碼。這極大地提高了Java運行時的速度,並且支持Java應用程序以與本機代碼相當的速度運行。位元組碼編譯使用本機內存(使用方式與gcc等靜態編譯器使用內存來運行一樣),但JIT編譯器的輸入(位元組碼)和輸出(可執行代碼)必須也存儲在本機內存中。包含多個經過JIT編譯的方法的Java應用程序會使用比小型應用程序的本機內存。類和類載入器Java應用程序由一些類組成,這些類定義對象結構和方法邏輯。Java應用程序也使用Java運行時類庫(比如java.lang.String)中的類,也可以使用第三方庫。這些類需要存儲在內存中以備使用。存儲類的方式取決於具體實現。SunJDK使用永久生成(permanentgeneration,PermGen)堆區域。Java5的IBM實現會為每個類載入器分配本機內存塊,並將類數據存儲在其中。現代Java運行時擁有類共享等技術,這些技術可能需要將共享內存區域映射到地址空間。要理解這些分配機制如何影響您Java運行時的本機內存佔用,您需要查閱該實現的技術文檔。然而,一些普遍的事實會影響所有實現。從最基本的層面來看,使用的類將需要使用內存。(這可能意味著您的本機內存使用量會增加,或者您必須明確地重新設置PermGen或共享類緩存等區域的大小,以裝入所有類)。記住,不僅您的應用程序需要載入到內存中,框架、應用伺服器、第三方庫以及包含類的Java運行時也會按需載入並佔用空間。Java運行時可以卸載類來回收空間,但是只有在非常嚴酷的條件下才會這樣做。不能卸載單個類,而是卸載類載入器,隨其載入的所有類都會被卸載。只有在以下情況下才能卸載類載入器:Java堆不包含對表示該類載入器的java.lang.ClassLoader對象的引用。Java堆不包含對表示類載入器載入的類的任何java.lang.Class對象的引用。在Java堆上,該類載入器載入的任何類的所有對象都不再存活(被引用)。需要注意的是,Java運行時為所有Java應用程序創建的3個默認類載入器(bootstrap、extension和application)都不可能滿足這些條件,因此,任何系統類(比如java.lang.String)或通過應用程序類載入器載入的任何應用程序類都不能在運行時釋放。即使類載入器適合進行收集,運行時也只會將收集類載入器作為GC周期的一部分。一些實現只會在某些GC周期中卸載類載入器。也可能在運行時生成類,而不用釋放它。許多JEE應用程序使用JavaServerPages(JSP)技術來生成Web頁面。使用JSP會為執行的每個.jsp頁面生成一個類,並且這些類會在載入它們的類載入器的整個生存期中一直存在——這個生存期通常是Web應用程序的生存期。另一種生成類的常見方法是使用Java反射。反射的工作方式因Java實現的不同而不同,但Sun和IBM實現都使用了這種方法,我馬上就會講到。當使用java.lang.reflectAPI時,Java運行時必須將一個反射對象(比如java.lang.reflect.Field)的方法連接到被反射到的對象或類。這可以通過使用Java本機介面(JavaNativeInterface,JNI)訪問器來完成,這種方法需要的設置很少,但是速度緩慢。也可以在運行時為您想要反射到的每種對象類型動態構建一個類。後一種方法在設置上更慢,但運行速度更快,非常適合於經常反射到一個特定類的應用程序。Java運行時在最初幾次反射到一個類時使用JNI方法,但當使用了若干次JNI方法之後,訪問器會膨脹為位元組碼訪問器,這涉及到構建類並通過新的類載入器進行載入。執行多次反射可能導致創建了許多訪問器類和類載入器。保持對反射對象的引用會導致這些類一直存活,並繼續佔用空間。因為創建位元組碼訪問器非常緩慢,所以Java運行時可以緩存這些訪問器以備以後使用。一些應用程序和框架還會緩存反射對象,這進一步增加了它們的本機內存佔用。JNIJNI支持本機代碼(使用C和C++等本機編譯語言編寫的應用程序)調用Java方法,反之亦然。Java運行時本身極大地依賴於JNI代碼來實現類庫功能,比如文件和網路I/O。JNI應用程序可能通過3種方式增加Java運行時的本機內存佔用:JNI應用程序的本機代碼被編譯到共享庫中,或編譯為載入到進程地址空間中的可執行文件。大型本機應用程序可能僅僅載入就會佔用大量進程地址空間。本機代碼必須與Java運行時共享地址空間。任何本機代碼分配或本機代碼執行的內存映射都會耗用Java運行時的內存。某些JNI函數可能在它們的常規操作中使用本機內存。GetTypeArrayElements和GetTypeArrayRegion函數可以將Java堆數據復制到本機內存緩沖區中,以供本機代碼使用。是否復制數據依賴於運行時實現。(IBMDeveloperKitforJava5.0和更高版本會進行本機復制)。通過這種方式訪問大量Java堆數據可能會使用大量本機堆。

⑧ 為什麼我在XP下安裝了Ext2IFS_1_11.exe還看不到liunx的ext分區

常用Windows下訪問和Reiser分區的工具

1. ext2ifs

這個工具與explore2fs都是John Newbigin使用Delphi寫的,explore2fs Copyright (C) 2000,Ext2IFS v0.3 Copyright (C) 2004,由此也可以推測下哪個程序更完善,ext2ifs默認支持ext分區的寫操作。

2.Paragon Ext2FS Anywhere

幫助你在 Windows 下訪問 Linux 分區,把其作為正常邏輯器使用。提供對隱藏或者剛剛被創建的和格式化的 FAT/NTFS 分區。將創建,刪除,格式,隱藏,在 Windows 下面取消隱藏初選,邏輯值或者擴展邏輯分區。你能夠也馬上改變的驅動器盤符。支持ext2/3讀寫,但是對超過4G的文件寫入存在不可預知的問題。

3.explore2fs

使用相當簡單,下載後解壓縮,執行explore2fs.exe,程序會自動搜索ext2、ext3分區。

4.Total Commander加Ext2+Reiser 插件

Total Commander 網上很多,自行搜索一下吧。

下載並安裝Total Commander,下載並解壓縮Ext2+Reiser插件中的output目錄到Total Commander的安裝目錄內(或硬碟的其他固定位置,想使用就不能刪除),運行Total Commander,選擇配置--插件--文件系統插件--配置--添加--找到ex2fs.wfx並添加,最後「確定」插件添加成功。

5.Ext2 Installable File System(另一個ext2ifs)

兩個軟體不是一個作者,不過實現的原理應該相似,驅動通用。這個軟體安裝後就能使用ext分區,可讀寫,但更改分區盤符很不方便,需要先到控制面板卸載,重啟後重新安裝程序重設盤符。

6.Paragon Mount Everything

和Paragon Ext2FS Anywhere這個軟體是同一個公司出品,功能極其相似,Paragon Mount Everything Professional里已經包含了Paragon Ext2FS Anywhere,當然賣的價格也高了10美元。支持ext2/3讀寫,但是對超過4G的文件寫入存在不可預知的問題。

Paragon Mount Everything Professional 是一款功能強勁的磁碟管理工具,程序

可以讓你掛載各種系統格式下文件的軟體,讓不同系統下的文件可以互相訪問。

Mount Everything 用於解除各個操作系統(DOS,Windows,Linux)訪問彼此文件

系統的分區,使得訪問計算機上別的操作系統的文件系統如同訪問自己本來的文件系

統一樣方便,可以自如的瀏覽、讀寫、創建甚至運行在各個分區的文件。

-支持NTFS1.2 - 3.1(Windows NT/2000/XP);

-支持可壓縮的NTFS
-支持Ex2和Ext3文件系統;

-在各中環境-Windows、DOS、Linux-下都支持大於4GB的分區;

-Windows平台支持:Windows 95/98/ME, Windows NT/2000 Workstation/Pro,

Windows XP;

-任何Windows版本都可以無限制的訪問Ext2/3FS和NTFS;

-DOS下對NTFS只讀;

-Linux下對NTFS只讀;

-在任何環境都支持基於腳本的批處理;

-Windows下提供了各種基本的分區功能;

-WIndows和DOS下隨意改變啟動器號;

-可建立能夠訪問NTFS以及其他各種移動存貯設備的DOS啟動盤;

-提供了一個啟動光碟,可直接進入DOS或Linux,並且訪問NTFS(只讀);

7.Ext2Fsd

安裝後使用mount命令對ext分區掛載卸載,可讀寫。

8、rfstool

命令行工具

9、rfsgui-2.2

使用rfstool功能,gui界面。

10、YAReG

也是使用rfstool功能,gui界面,需.net framework的支持

11.ReiserDriver Pre-release Version 2

12.R-studio

功能超強的數據恢復、反刪除工具,採用全新恢復技術,為使用 FAT12/16/32、NTFS、NTFS5(Windows 2000系統)和Ext2FS(Linux系統)分區的磁碟提供完整數據維護解決方案!同時提供對本地和網路磁碟的支持,此外大量參數設置讓高級用戶獲得最佳恢復效果。具體功能有:採用Windows資源管理器操作界面;通過網路恢復遠程數據(遠程計算機可運行 Win95/98/ME/NT/2000/XP、Linux、UNIX系統);支持FAT12/16/32、NTFS、NTFS5和Ext2FS文件系統;能夠重建損毀的RAID陣列;為磁碟、分區、目錄生成鏡像文件;恢復刪除分區上的文件、加密文件(NTFS 5)、數據流(NTFS、NTFS 5);恢復FDISK或其它磁碟工具刪除過得數據、病毒破壞的數據、MBR破壞後的數據;識別特定文件名;把數據保存到任何磁碟;瀏覽、編輯文件或磁碟內容等等。

上面列出的工具只是比較常見的,還有不少WINDOWS下可訪問LINUX分區的工具,這得益於微軟的IFS Kit。

Mount Everything 用這個工具好用

⑨ linux可以和windows xp一起裝嗎

中科紅旗Linux下載專區,這里提供有關紅旗和Linux的大量軟體、光碟映象、RPM包、驅動、補丁、源代碼和文檔手冊的下載
http://www.redflag-linux.com/xiazai/index.php

由於Linux是個自由軟體,所以在使用起來不及Windows這個商業軟體來得上手,但好的是,Linux正不斷改正這一缺點,現在普通用戶也可以輕松地掌握它了。本文就用戶在裝Linux的過程中,所遇到的Linux分區問題來詳細地介紹一下,這里以Red Hat Linux7.1為例。

首先我們要對硬碟分區的基本概念進行一些初步的了解,硬碟的分區主要分為基本分區(Primary Partion)和擴充分區(Extension Partion)兩種,基本分區和擴充分區的數目之和不能大於四個。且基本分區可以馬上被使用但不能再分區。擴充分區必須再進行分區後才能使用,也就是說它必須還要進行二次分區。那麼由擴充分區再分下去的是什麼呢?它就是邏輯分區(Logical Partion),況且邏輯分區沒有數量上限制。

對習慣於使用Dos或Windows的用戶來說,有幾個分區就有幾個驅動器,並且每個分區都會獲得一個字母標識符,然後就可以選用這個字母來指定在這個分區上的文件和目錄,它們的文件結構都是獨立的,非常好理解。但對這些用戶初上手Red Hat Linux嗎,可就有點惱人了。因為對Red Hat Linux用戶來說無論有幾個分區,分給哪一目錄使用,它歸根結底就只有一個根目錄,一個獨立且唯一的文件結構。Red Hat Linux中每個分區都是用來組成整個文件系統的一部分,因為它採用了一種叫「載入」的處理方法,它的整個文件系統中包含了一整套的文件和目錄,且將一個分區和一個目錄聯系起來。這時要載入的一個分區將使它的存儲空間在一個目錄下獲得。下面我們先來看看Red Hat Linux的驅動器是如何標識的。

對於IDE硬碟,驅動器標識符為「hdx~」,其中「hd」表明分區所在設備的類型,這里是指IDE硬碟了。「x」為盤號(a為基本盤,b為基本從屬盤,c為輔助主盤,d為輔助從屬盤),「~」代表分區,前四個分區用數字1到4表示,它們是主分區或擴展分區,從5開始就是邏輯分區。例,hda3表示為第一個IDE硬碟上的第三個主分區或擴展分區,hdb2表示為第二個IDE硬碟上的第二個主分區或擴展分區。對於SCSI硬碟則標識為「sdx~」,SCSI硬碟是用「sd」來表示分區所在設備的類型的,其餘則和IDE硬碟的表示方法一樣,不在多說。

我們從上面可以看到,Red Hat Linux的分區是不同於其它操作系統分區的,它的分區格式只有Ext2和Swap兩種,Ext2用於存放系統文件,Swap則作為Red Hat Linux的交換分區。那麼現在我們就可以知道Red Hat Linux至少需要兩個專門的分區(Linux Native和Linux Swap)況且不能將Red Hat Linux安裝在Dos/Windows分區。一般來說我們將Red Hat Linux安裝一個或多個類型為「Linux Native」的硬碟分區,但是在Red Hat Linux的每一個分區都必須要指定一個「Mount Point」(載入點),告訴Red Hat Linux在啟動時,這個目錄要給哪個目錄使用。對「Swap」分區來說,一般定義一個且它不必要定義載入點。下面我們先對「Linux Native」和「Linux Swap」有個初步的了解。

*SWAP分區是LINUX暫時存儲數據的交換分區,它主要是把主內存上暫時不用得數據存起來,在需要的時候再調進內存內,且作為SWAP使用的分區不用指定「Mout Point」(載入點),既然它作為交換分區,我們理所當然應給它指定大小,它至少要等於系統上實際內存的量,一般來說它的大小是內存的兩倍,如果你是16MB的內存,那麼SWAP分區的大小是32MB左右,以此類推。但必須還要注意一點,SWAP分區不要大於128MB,如果你是64MB的內存,那麼SWAP分區最大也只能被定為127MB,再大就是浪費空間了,因為系統不需要太大的交換分區。以此類推,如果你是128MB或更大的內存,SWAP分區也只能最大被定為127MB。況且你還必須注意的是如果你是128MB(或更大)的內存,你必須提醒系統你有這么大的內存,要不然它可不認你這個128MB內存。具體如下:當順利啟動了安裝過程後,會顯示一個boot:提示符,這時你只要鍵入boot:linux mem=128MB就可以了。另外你也可以創建和使用一個以上的交換分區,最多16個。

*Linux Native是存放系統文件的地方,它只能用EXT2的分區類型,上面已說過。對Windows用戶來說,操作系統必須裝在同一分區里,它是商業軟體嗎!所以你沒有選擇的餘地!對Red Hat Linux來說,你有了較大的選擇餘地,你可以把系統文件分幾個區來裝(必須要說明載入點),也可以就裝在同一個分區中(載入點是「/」)。下面我們看看可以創建哪些分區(僅列常用幾種)。

/boot分區,它包含了操作系統的內核和在啟動系統過程中所要用到的文件,建這個分區是有必要的,因為目前大多數的PC機要受到BIOS的限制,況且如果有了一個單獨的/boot啟動分區,即使主要的根分區出現了問題,計算機依然能夠啟動。這個分區的大小約在50MB—100MB之間。但是如果想用LILO啟動Red Hat Linux系統的話,含有/boot的分區必須完全在柱面1023以下。又由於8GB後的數據LILO不能讀取,所以Red Hat Linux要安裝在8GB的區域以內。

/usr分區,是Red Hat Linux系統存放軟體的地方,如有可能應將最大空間分給它。

/home分區,是用戶的home目錄所在地,這個分區的大小取決於有多少用戶。如果是多用戶共同使用一台電腦的話,這個分區是完全有必要的,況且根用戶也可以很好地控制普通用戶使用計算機,如對用戶或者用戶組實行硬碟限量使用,限制普通用戶訪問哪些文件等。其實單用戶也有建立這個分區的必要,因為沒這個分區的話,那麼你只能以根用戶的身份登陸系統,這樣做是危險的,因為根用戶對系統有絕對的使用權,可一旦你對系統進行了誤操作,麻煩也就來了。

/var/log分區,是系統日誌記錄分區,如果設立了這一單獨的分區,這樣即使系統的日誌文件出現了問題,它們也不會影響到操作系統的主分區。

/tmp分區,用來存放臨時文件。這對於多用戶系統或者網路伺服器來說是有必要的。這樣即使程序運行時生成大量的臨時文件,或者用戶對系統進行了錯誤的操作,文件系統的其它部分仍然是安全的。因為文件系統的這一部分仍然還承受著讀寫操作,所以它通常會比其它的部分更快地發生問題。

/bin分區,存放標准系統實用程序。

/dev分區,存放設備文件。

/opt分區,存放可選的安裝的軟體。

/sbin分區,存放標准系統管理文件。

上面介紹了幾個常用的分區,一般來說我們需要一個SWAP分區,一個/boot分區,一個/usr分區,一個/home 分區,一個/var/log分區。當然這沒有什麼規定,完全是依照你個人來定的。但記住至少要有兩個分區,一個SWAP分區,一個/分區。下面我們來看看怎樣分區。

用戶可以使用兩種分區工具:

1.Disk Druid:它是Red Hat Linux提供的硬碟管理工具,它最初是隨Red HatLinux5一起發售的,它可以根據用戶的要求創建和刪除硬碟分區,另外還可以為每個分區管理載入點,這是一個不錯的分區軟體,建議讀者使用。本文也將以此軟體詳細地介紹Red Hat Linux分區。

2.Fdisk:它是傳統的Linux硬碟分區工具,比Disk Druid更強大,使用更加靈活。但是Fdisk要求用戶對硬碟分區有一定經驗,並能夠適應且讀懂簡單的文本界面。如果你是第一次對一個硬碟驅動器進行分區操作的話,最好還是避免Fdisk這樣的程序,它雖然強大但用起來的感覺不是太好的。

附註:此外Red Hat Linux還提供了一種叫fips的分區軟體,但這種分區軟體具有一定的危險性,不宜提倡操作。雖然有許多人已經成功地用fips對他們的硬碟進行了分區,但這不能保證fips將在你的系統中也能正常地運行。況且Red Hat Linux也不提供對fips的支持,勸你對這種分區軟體還是慎用為好。

如果你希望將Red Hat Linux安裝在已經含有其他操作系統的盤上,也就是多重操作系統,這個情況就比較復雜了,因為一個錯誤就可以毀掉你辛辛苦苦保存的數據,讓你欲哭無淚。如果你想讓Red Hat Linux與OS/2共存,那你必須使用OS/2的分區軟體來創建硬碟分區,要不然OS/2將不能識別硬碟分區。另外你也可以用其它的一些分區軟體來分區,下面列出了一些常見的這種分區工具軟體:

*Partition Commander軟體,從www.v-com.com處下載。

*partition It軟體,從www.quarterdeck..com處下載。

*partition Magic軟體,從www.powerquest.com處下載。

注意:硬碟分區是一個非常危險的步驟,你要想安全地在不丟失數據的情況下改變磁碟的分區有點不太現實,所以我建議大家對重要得數據進行備份,裝多操作系統更要如此,以備不測。當然或許你是剛裝系統或就准備重裝,那也就是另外一回事了,但是大家對待分區一定要慎重又慎重,切記。

下面我們詳細地了解一下Red Hat Linux7.1自帶的Disk Druid分區軟體所包含的一些信息。

1.Current Disk Partitions區域(這里每一行代表了一個硬碟分區)

Mount Point 指出Red Hat Linux啟動並運行以後該分區的載入點,交換空間(Linux swap)是不需要載入點的。

Device 硬碟分區的設備名

Requeted 給這個分區定義時申請的最小空間

Actual 分配給該分區的實際空間

Type 說明了該分區的類型

2.Drive Summaries區域(這里每一行代表一個硬碟)

Drive 顯示硬碟的設備名

Geom[C/H/S] 顯示硬碟的物理信息,C(柱面),H(磁頭),S(扇區)

Total 顯示硬碟的可用空間

Used 顯示硬碟中已分配的空間

Free 顯示硬碟中末分配的空間

Bar Graph 該條圖形化地顯示當前硬碟使用的百分比,#號越少,空閑空間越多

3.Disk Druid按鈕

Add 增加一個分區

Edit 修改在Current Disk Partitons中被選中的分區的屬性,選中該按鈕將出現一個對話框來進行修改,但只能修改該分區的載入點。如果你需要修改其它內容,請先刪除該分區,而後再重新建這分區。

Delete 刪除一個在Current Disk Partitons中被選中的分區

Ok 確認

Back 不作保存,返回

4.如果你想增加一個分區,請點擊「add」按鈕,這時會出現一對話框,內容說明如下:

Mount Point 分區載入點,說明分區

Size 分區的大小

Grow to fill disk 表明這個分區將添滿一個硬碟的整個未分配空間。這時,這個分區的容量可以隨著其它分區的修改增加或減少

Type 選擇分區類型

Allowable Drives 選擇這個分區將創建在哪個硬碟上

好了,通過上面的了解想必大家都能容易地創建出適合自己的分區。下一步我們所要做的工作就是要格式化所建的分區,選擇你要格式化的分區並按Space鍵,如果想在格式化分區時檢查有無壞塊,選擇「Check for bad blocks ring format」,點擊OK並按Space鍵。如果分區中已無你要所保存的數據,最好都格式化一下。

閱讀全文

與windowslinuxkit相關的資料

熱點內容
哪些網路電話有話費贈送 瀏覽:831
里水哪裡有學Ug編程的 瀏覽:501
plc機器手臂編程用什麼軟體 瀏覽:189
法國啄木鳥黑絲大奶寡婦 瀏覽:163
像金十數據的手機app有哪些 瀏覽:671
intimacy法國觀看 瀏覽:768
天涯一個程序員 瀏覽:38
專門啃食女性乳房的鬼片 瀏覽:187
步進電機控制器用什麼軟體編程 瀏覽:605
蘋果手機鎖定忘記密碼 瀏覽:712
linux下安裝中文 瀏覽:452
怎麼找到電信營業廳app 瀏覽:387
文件名可以用顏色標注 瀏覽:175
有一本書男主老二被蛇咬了 瀏覽:648
那個網站在線觀看 瀏覽:561
免費視頻網站排行榜 瀏覽:619
萍果手機怎麼重設開機密碼 瀏覽:577
電腦網路是紅叉 瀏覽:246
男主和女主在書店相遇後來又在一個班 瀏覽:341
love愛情電影網為什麼找不到 瀏覽:470

友情鏈接