linux內核視頻
1. linux操作系統的界面是什麼樣的
Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基於POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的UNIX工具軟體、應用程序和網路協議。它支持32位和64位硬體。Linux繼承了Unix以網路為核心的設計思想,是一個性能穩定的多用戶網路操作系統。
操作系統界面如圖所示
拓展資料
1、Linux操作系統誕生於1991 年10 月5 日(這是第一次正式向外公布時間)。Linux存在著許多不同的Linux版本,但它們都使用了Linux內核。Linux可安裝在各種計算機硬體設備中,比如手機、平板電腦、路由器、視頻游戲控制台、台式計算機、大型機和超級計算機。
2、嚴格來講,Linux這個詞本身只表示Linux內核,但實際上人們已經習慣了用Linux來形容整個基於Linux內核,並且使用GNU工程各種工具和資料庫的操作系統。
3、Linux是一款免費的操作系統,用戶可以通過網路或其他途徑免費獲得,並可以任意修改其源代碼。這是其他的操作系統所做不到的。來自全世界的無數程序員參與了Linux的修改、編寫工作,程序員可以根據自己的興趣和靈感對其進行改變,這讓Linux吸收了無數程序員的精華,不斷壯大。
2. 操作系統課程設計《設計內核同步原語》
這里介紹linux內核修改
內核配置過程比較煩瑣,但是配置的適當與否與日後linux的運行直接相關,有必要了解一下一些主要的且經常用到的選項的設置。
配置內核可以根據需要與愛好使用下面命令中的一個:
#make config(基於文本的最為傳統的配置界面,不推薦使用)
#make menuconfig(基於文本選單的配置界面,字元終端下推薦使用)
#make xconfig(基於圖形窗口模式的配置界面,Xwindow下推薦使用)
#make oldconfig(如果只想在原來內核配置的基礎上修改一些小地方,會省去不少麻煩)
這三個命令中,make xconfig的界面最為友好,如果你可以使用Xwindow,那麼就推薦你使用這個命令
如果你不能使用Xwindow,那麼就使用make menuconfig好了。界面雖然比上面一個差點,總比make config的要好多了
選擇相應的配置時,有三種選擇,它們分別代表的含義如下:
Y--將該功能編譯進內核
N--不將該功能編譯進內核
M--將該功能編譯成可以在需要時動態插入到內核中的模塊
如果使用的是make xconfig,使用滑鼠就可以選擇對應的選項。如果使用的是 make menuconfig,則需要使用空格鍵進行選取。你會發現在每一個選項前都有個括弧, 但有的是中括弧有的是尖括弧,還有一種圓括弧。用空格鍵選擇時可以發現,中括弧里要麼是空,要麼是"*",而尖括弧里可以是空,"*"和"M"。這表示前者對應的項要麼不要,要麼編譯到內核里;後者則多一樣選擇,可以編譯成模塊。而圓括弧的內容是要你在所提供的幾個選項中選擇一項。
在編譯內核的過程中,最煩雜的事情就是這步配置工作了,很多新手都不清楚到底該如何選取這些選項。實際上在配置時,大部分選項可以使用其預設值,只有小部分需要根據用戶不同的需要選擇。選擇的原則是將與內核其它部分關系較遠且不經常使用的部分功能代碼編譯成為可載入模塊,有利於減小內核的長度,減小內核消耗的內存,簡化該功能相應的環境改變時對內核的影響;不需要的功能就不要選;與內核關心緊密而且經常使用的部分功能代碼直接編譯到內核中。
至於選項,因為比較復雜,只是簡單做一介紹,編譯時應視具體情況,參考幫助的內容再加以選擇。
1. Code maturity level options
代碼成熟等級。此處只有一項:prompt for development and/or incomplete code/drivers,如果你要試驗現在仍處於實驗階段的功能,比如khttpd、IPv6等,就必須把該項選擇為Y了;否則可以把它選擇為N。
2. Loadable mole support
對模塊的支持。這裡面有三項:
Enable loadable mole support:除非你准備把所有需要的內容都編譯到內核裡面,否則該項應該是必選的。
Set version inFORMation on all mole symbols:可以不選它。
Kernel mole loader:讓內核在啟動時有自己裝入必需模塊的能力,建議選上。
3. Processor type and features
CPU類型。內容蠻多的,不一一介紹了,有關的幾個如下:
Processor family:根據你自己的情況選擇CPU類型。
High Memory Support:大容量內存的支持。可以支持到4G、64G,一般可以不選。
Math emulation:協處理器模擬。協處理器是在386時代的寵兒,現在早已不用了。
MTTR support:MTTR支持。可不選。
Symmetric multi-processing support:對稱多處理支持。除非你富到有多個CPU,否則就不用選了。
4. General setup
這里是對最普通的一些屬性進行設置。這部分內容非常多,一般使用預設設置就可以了。下面介紹一下經常使用的一些選項:
Networking support:網路支持。必須,沒有網卡也建議你選上。
PCI support:PCI支持。如果使用了PCI的卡,當然必選。
PCI access mode:PCI存取模式。可供選擇的有BIOS、Direct和Any,選Any吧。
Support for hot-pluggabel devices:熱插拔設備支持。支持的不是太好,可不選。
PCMCIA/CardBus support:PCMCIA/CardBus支持。有PCMCIA就必選了。
System V IPC
BSD Process Accounting
Sysctl support:以上三項是有關進程處理/IPC調用的,主要就是System V和BSD兩種風格。如果你不是使用BSD,就按照預設吧。
Power Management support:電源管理支持。
Advanced Power Management BIOS support:高級電源管理BIOS支持。
5. Memory Technology Device(MTD)
MTD設備支持。可不選。
6. Parallel port support
並口支持。如果不打算使用串口,就別選了。
7. Plug and Play configuration
即插即用支持。雖然linux對即插即用目前支持的不如Windows好,但是還是選上吧,這樣你可以拔下滑鼠之類的體驗一下Linux下即插即用的感覺。
8. Block devices
塊設備支持。這個就得針對自己的情況來選了,簡單說明一下吧:
Normal PC floppy disk support:普通PC軟盤支持。這個應該必選。
XT hard disk support:
Compaq SMART2 support:
Mulex DAC960/DAC1100 PCI RAID Controller support:RAID鏡像用的。
Loopback device support:
Network block device support:網路塊設備支持。如果想訪問網上鄰居的東西,就選上。
Logical volume manager(LVM)support:邏輯卷管理支持。
Multiple devices driver support:多設備驅動支持。
RAM disk support:RAM盤支持。
9. Networking options
網路選項。這里配置的是網路協議。內容太多了,不一一介紹了,自己看吧,如果你對網路協議有所了解的話,應該可以看懂的。如果懶得看,使用預設選項(肯定要選中TCP/IP networking哦)就可以了。讓我們看看,TCP/IP、ATM、IPX、DECnet、Appletalk……支持的協議好多哦,IPv6也支持了,Qos and/or fair queueing(服務質量公平調度)也支持了,還有kHTTPd,不過這些都還在實驗階段。
10. Telephony Support
電話支持。linux下可以支持電話卡,這樣你就可以在IP上使用普通的電話提供語音服務了。記住,電話卡可和modem沒有任何關系哦。
11. ATA/IDE/MFM/RLL support
這個是有關各種介面的硬碟/光碟機/磁帶/軟盤支持的,內容太多了,使用預設的選項吧,如果你使用了比較特殊的設備,比如PCMCIA等,就到裡面自己找相應的選項吧。
12. SCSI support
SCSI設備的支持。我沒有SCSI的設備,所以根本就不用選,如果你用了SCSI的硬碟/光碟機/磁帶等設備,自己找好了。
13. Fusion MPT device support
需要Fusion MPT兼容PCI適配器,不用選。
14. I2O device support
需要I2O介面適配器支持,在智能Input/Output(I2O)體系介面中使用。
15. Network device support
網路設備支持。上面選好協議了,現在該選設備了,可想而知,內容肯定多得很。還好還好,裡面大概分類了,有ARCnet設備、Ethernet(10 or 100 Mbit)、Ethernet(1000Mbit)、Wireless LAN(non-hamradio)、Token Ring device、Wan interfaces、PCMCIA network device support幾大類。我用的是10/100M的乙太網,看來只需要選則這個了。還是10/100M的乙太網設備熟悉,內容雖然多,一眼就可以看到我所用的RealTeck RTL-8139 PCI Fast Ethernet Adapter support,為了免得麻煩,編譯到內核裡面好了,不選M了,選Y。耐心點,一般說來你都能找到自己用的網卡。如果沒有,你只好自己到廠商那裡去要驅動了。
16. Amateur Radio support
配置業余無線廣播。
17. IrDA(infrared)support
紅外線支持。
18. ISDN subsystem
如果你使用ISDN上網,這個就必不可少了。
19. Old CD-ROM drivers(not SCSI、not IDE)
做的可真周到,原來那些非SCSI/IDE口的光碟機誰還在用啊,自己選吧,用IDE的CD-ROM不用選。
20. Character devices
字元設備。這個內容又太多了,先使用預設設置,需要的話自己就修改。把大類介紹一下吧:
I2C support:I2C是Philips極力推動的微控制應用中使用的低速串列匯流排協議。如果你要選擇下面的Video For linux,該項必選。
Mice:滑鼠。現在可以支持匯流排、串口、PS/2、C&T 82C710 mouse port、PC110 digitizer pad,自己根據需要選擇。
Joysticks:手柄。即使在linux下把手柄驅動起來意義也不是太大,游戲太少了。
Watchdog Cards:雖然稱為Cards,這個可以用純軟體來實現,當然也有硬體的。如果你把這個選中,那麼就會在你的/dev下創建一個名為watchdog的文件,它可以記錄你的系統的運行情況,一直到系統重新啟動的1分鍾左右。有了這個文件,你就可以恢復系統到重啟前的狀態了。
Video For linux:支持有關的音頻/視頻卡。
Ftape, the floppy tape device driver:
PCMCIA character device support:
21. File systems
文件系統。內容又太多了,老法子,在預設選項的基礎上進行修改。介紹以下幾項:
Quota support:Quota可以限制每個用戶可以使用的硬碟空間的上限,在多用戶共同使用一台主機的情況中十分有效。
DOS FAT fs support:DOS FAT文件格式的支持,可以支持FAT16、FAT32。
ISO 9660 CD-ROM file system support:光碟使用的就是ISO 9660的文件格式。
NTFS file system support:ntfs是NT使用的文件格式。
/proc file system support:/proc文件系統是linux提供給用戶和系統進行交互的通道,建議選上,否則有些功能沒法正確執行。
還有另外三個大類都歸到這兒了:Network File Systems(網路文件系統)、Partition Types(分區類型)、Native Language Support(本地語言支持)。值得一提的是Network File Systems裡面的兩種:NFS和SMB分別是linux和Windows相互以網路鄰居的形式訪問對方所使用的文件系統,根據需要加以選擇。
22. Console drivers
控制台驅動。一般使用VGA text console就可以了,標準的80*25的文本控制台。
23. Sound
音效卡驅動。如果你能在列表中找到音效卡驅動那自然最好,否則就試試OSS了。
24. USB supprot
USB支持。很多USB設備,比如滑鼠、數據機、列印機、掃描儀等,在linux都可以得到支持,根據需要自行選擇。
25. Kernel hacking
配置了這個,即使在系統崩潰時,你也可以進行一定的工作了。普通用戶是用不著這個功能的。
配置完後,存檔退出,當然你也可以把現在的配置文件保存起來,這樣下次再配置的時候就省力氣了。
接下來是編譯,輸入以下命令。
#make dep
#make clean
#make bzImage或make zImage
#make moles
#make moles_install
#depmod -a
第一個命令make dep實際上讀取配置過程生成的配置文件,來創建對應於配置的依賴關系樹,從而決定哪些需要編譯而那些不需要;第二命令make clean完成刪除前面步驟留下的文件,以避免出現一些錯誤;make zImage和make bzImage則實現完全編譯內核,二者生成的內核都是使用gzip壓縮的,只要使用一個就夠了,它們的區別在於使用make bzImage可以生成大一點的內核。建議大家使用make bzImage命令。
後面三個命令只有在你進行配置的過程中,在回答Enable loadable mole support (CONFIG_MODULES)時選了"Yes"才是必要的,make moles和make moles_install分別生成相應的模塊和把模塊拷貝到需要的目錄中。
嚴格說來,depmod -a命令和編譯過程並沒有關系,它是生成模塊間的依賴關系,這樣你啟動新內核之後,使用modprobe命令載入模塊時就能正確地定位模塊。
更新
經過以上的步驟,我們終於得到了新版本的內核。為了能夠使用新版本的內核,我們還需要做一些改動:
#cp /usr/src/linux/System.map /boot/System.map-2.4.18
#cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.4.18
以上這兩個文件是我們剛才編譯時新生成的。下面修改/boot下的兩個鏈接System.map和vmlinuz,使其指向新內核的文件:
#cd /boot;rm -f System.map vmlinuz
#ln -s vmlinuz-2.4.18 vmlinuz
#ln -s System.map-2.4.18 System.map
七、修改啟動管理器
如果用LILO,修改/etc/lilo.conf,添加以下項:
image=/boot/vmlinuz-2.4.18
label=linux240
read-only
root=/dev/hda2
其中root=/dev/hda2一行要根據需要自行加以修改。
運行:
#/sbin/lilo -v
確認對/etc/lilo.conf的編輯無誤,現在重新啟動系統:
#shutdown -r now
如果是用Grub啟動管理器,則添加如下幾項即可。
title Red Hat linux (2.4.18)
root (hd0,0)
kernel /vmlinuz-2.4.18 ro root=/dev/hda2
Grub不需再次調用命令,自動生效。
重啟以後就可以用新內核了。
3. linux內核主要由哪幾個部分組成
一個完整的Linux內核一般由5部分組成,它們分別是內存管理、進程管理、進程間通信、虛擬文件系統和網路介面。
1、內存管理
內存管理主要完成的是如何合理有效地管理整個系統的物理內存,同時快速響應內核各個子系統對內存分配的請求。
Linux內存管理支持虛擬內存,而多餘出的這部分內存就是通過磁碟申請得到的,平時系統只把當前運行的程序塊保留在內存中,其他程序塊則保留在磁碟中。在內存緊缺時,內存管理負責在磁碟和內存間交換程序塊。
2、進程管理
進程管理主要控制系統進程對CPU的訪問。當需要某個進程運行時,由進程調度器根據基於優先順序的調度演算法啟動新的進程。:Linux支持多任務運行,那麼如何在一個單CPU上支持多任務呢?這個工作就是由進程調度管理來實現的。
在系統運行時,每個進程都會分得一定的時間片,然後進程調度器根據時間片的不同,選擇每個進程依次運行,例如當某個進程的時間片用完後,調度器會選擇一個新的進程繼續運行。
由於切換的時間和頻率都非常的快,由此用戶感覺是多個程序在同時運行,而實際上,CPU在同一時間內只有一個進程在運行,這一切都是進程調度管理的結果。
3、進程間通信
進程間通信主要用於控制不同進程之間在用戶空間的同步、數據共享和交換。由於不用的用戶進程擁有不同的進程空間,因此進程間的通信要藉助於內核的中轉來實現。
一般情況下,當一個進程等待硬體操作完成時,會被掛起。當硬體操作完成,進程被恢復執行,而協調這個過程的就是進程間的通信機制。
4、虛擬文件系統
Linux內核中的虛擬文件系統用一個通用的文件模型表示了各種不同的文件系統,這個文件模型屏蔽了很多具體文件系統的差異,使Linux內核支持很多不同的文件系統。
這個文件系統可以分為邏輯文件系統和設備驅動程序:邏輯文件系統指Linux所支持的文件系統,例如ext2、ext3和fat等;設備驅動程序指為每一種硬體控制器所編寫的設備驅動程序模塊。
5、網路介面
網路介面提供了對各種網路標準的實現和各種網路硬體的支持。網路介面一般分為網路協議和網路驅動程序。網路協議部分負責實現每一種可能的網路傳輸協議。
網路設備驅動程序則主要負責與硬體設備進行通信,每一種可能的網路硬體設備都有相應的設備驅動程序。
(3)linux內核視頻擴展閱讀:
Linux 操作系統的誕生、發展和成長過程始終依賴著五個重要支柱:UNIX操作系統、MINIX操作系統、GNU計劃、POSIX標准和Internet 網路。
1981 年IBM公司推出微型計算機IBM PC。
1991年,GNU計劃已經開發出了許多工具軟體,最受期盼的GNU C編譯器已經出現,GNU的操作系統核心HURD一直處於實驗階段,沒有任何可用性,實質上也沒能開發出完整的GNU操作系統,但是GNU奠定了Linux用戶基礎和開發環境。
1991年初,林納斯·托瓦茲開始在一台386sx兼容微機上學習minix操作系統。1991年4月,林納斯·托瓦茲開始醞釀並著手編制自己的操作系統。
1991 年4 月13 日在comp.os.minix 上發布說自己已經成功地將bash 移植到了minix 上,而且已經愛不釋手、不能離開這個shell軟體了。
1993年,大約有100餘名程序員參與了Linux內核代碼編寫/修改工作,其中核心組由5人組成,此時Linux 0.99的代碼大約有十萬行,用戶大約有10萬左右。
1994年3月,Linux1.0發布,代碼量17萬行,當時是按照完全自由免費的協議發布,隨後正式採用GPL協議。
1995年1月,Bob Young創辦了RedHat(小紅帽),以GNU/Linux為核心,集成了400多個源代碼開放的程序模塊,搞出了一種冠以品牌的Linux,即RedHat Linux,稱為Linux"發行版",在市場上出售。這在經營模式上是一種創舉。
2001年1月,Linux 2.4發布,它進一步地提升了SMP系統的擴展性,同時它也集成了很多用於支持桌面系統的特性:USB,PC卡(PCMCIA)的支持,內置的即插即用,等等功能。
2003年12月,Linux 2.6版內核發布,相對於2.4版內核2.6在對系統的支持都有很大的變化。
2004年的第1月,SuSE嫁到了Novell,SCO繼續頂著罵名四處強行「化緣」, Asianux, MandrakeSoft也在五年中首次宣布季度贏利。3月,SGI宣布成功實現了Linux操作系統支持256個Itanium 2處理器。
4. Android為什麼要使用Linux做為內核呢。
因為是個系統就需要內核。Android 本質上是一個基於 Linux 內核上面運行的 java 虛擬機。
手機上 WM 系統內核是 WinCE ,Symbian 系統裡面 Symbian 就是內核,Nokia 的 S60 系統這個 S60 就是界面+功能函數庫。索尼愛立信之前的幾款手機也有 Symbian 的內核,但用戶界面是 UIQ 。
Android 不過就是藉助了 Linux 內核作為系統的基礎,配合自己的 Andriod 基礎二進制函數庫和一些開源軟體作為基礎功能支持,跑上自己的 Dalvik 虛擬機,實際看到的 Android 界面,其實是 Dalvik 虛擬機裡面運行的 java 程序。
Android = Linux 內核 + 功能函數庫 + Dalvik 虛擬機 + java 程序
從系統的開發分層和難度來說,既然有了開源的 Linux ,為什麼還要自己去開發內核?就好象大家玩的一些游戲,有 Windows 系統可以直接跑,沒有幾個廠家會去重新開發底層系統。就連游戲機,其實他的操作系統和功能庫也都是現成的,游戲開發者只需要根據系統的功能寫程序就可以了。
這樣很好的減少了開發難度和成本。