Linuxç³»ç»ä¸è¬æ4个主è¦é¨åï¼
å æ ¸ãshellãæ件系ç»ååºç¨ç¨åºãå æ ¸ãshellåæ件系ç»ä¸èµ·å½¢æäºåºæ¬çæä½ç³»ç»ç»æï¼å®ä»¬ä½¿å¾ç¨æ·å¯ä»¥è¿è¡ç¨åºã管çæ件并使ç¨ç³»ç»ãé¨åå±æ¬¡ç»æå¦å¾1-1æ示ã
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiclRnblN2XjlGcjAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL6FFRNJTSq5ENNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLygDNwETO1QTMyITOwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
ä¸ãlinuxå æ ¸
å æ ¸æ¯æä½ç³»ç»çæ ¸å¿ï¼å ·æå¾å¤æåºæ¬åè½ï¼å®è´è´£ç®¡çç³»ç»çè¿ç¨ãå åã设å¤é©±å¨ç¨åºãæ件åç½ç»ç³»ç»ï¼å³å®çç³»ç»çæ§è½å稳å®æ§ã
Linux å æ ¸ç±å¦ä¸å é¨åç»æï¼å å管çãè¿ç¨ç®¡çã设å¤é©±å¨ç¨åºãæ件系ç»åç½ç»ç®¡ççãå¦å¾ï¼
ç³»ç»è°ç¨æ¥å£ï¼SCI å±æä¾äºæäºæºå¶æ§è¡ä»ç¨æ·ç©ºé´å°å æ ¸çå½æ°è°ç¨ãè¿ä¸ªæ¥å£ä¾èµäºä½ç³»ç»æï¼çè³å¨ç¸åçå¤çå¨å®¶æå ä¹æ¯å¦æ¤ãSCI å®é ä¸æ¯ä¸ä¸ªé常æç¨çå½æ°è°ç¨å¤è·¯å¤ç¨åå¤è·¯å解æå¡ãå¨ ./linux/kernel ä¸æ¨å¯ä»¥æ¾å° SCI çå®ç°ï¼å¹¶å¨ ./linux/arch ä¸æ¾å°ä¾èµäºä½ç³»ç»æçé¨åã
1ãå å管ç
对任ä½ä¸å°è®¡ç®æºèè¨ï¼å ¶å å以åå ¶å®èµæºé½æ¯æéçã为äºè®©æéçç©çå å满足åºç¨ç¨åºå¯¹å åç大éæ±éï¼Linux éç¨äºç§°ä¸ºâèæå åâçå å管çæ¹å¼ãLinux å°å ååå为容æå¤ççâå å页âï¼å¯¹äºå¤§é¨åä½ç³»ç»ææ¥è¯´é½æ¯ 4KBï¼ãLinux å æ¬äºç®¡çå¯ç¨å åçæ¹å¼ï¼ä»¥åç©çåèææ å°æ使ç¨ç硬件æºå¶ã
ä¸è¿å å管çè¦ç®¡ççå¯ä¸æ¢ 4KB ç¼å²åºãLinux æä¾äºå¯¹ 4KB ç¼å²åºçæ½è±¡ï¼ä¾å¦ slab åé å¨ãè¿ç§å å管ç模å¼ä½¿ç¨ 4KB ç¼å²åºä¸ºåºæ°ï¼ç¶åä»ä¸åé ç»æï¼å¹¶è·è¸ªå å页使ç¨æ åµï¼æ¯å¦åªäºå å页æ¯æ»¡çï¼åªäºé¡µé¢æ²¡æå®å ¨ä½¿ç¨ï¼åªäºé¡µé¢ä¸ºç©ºãè¿æ ·å°±å 许该模å¼æ ¹æ®ç³»ç»éè¦æ¥å¨æè°æ´å å使ç¨ã
为äºæ¯æå¤ä¸ªç¨æ·ä½¿ç¨å åï¼ææ¶ä¼åºç°å¯ç¨å å被æ¶èå çæ åµãç±äºè¿ä¸ªåå ï¼é¡µé¢å¯ä»¥ç§»åºå å并æ¾å ¥ç£çä¸ãè¿ä¸ªè¿ç¨ç§°ä¸ºäº¤æ¢ï¼å 为页é¢ä¼è¢«ä»å å交æ¢å°ç¡¬çä¸ãå å管ççæºä»£ç å¯ä»¥å¨ ./linux/mm ä¸æ¾å°ã
2ãè¿ç¨ç®¡ç
è¿ç¨å®é æ¯æç¹å®åºç¨ç¨åºçä¸ä¸ªè¿è¡å®ä½ãå¨ Linux ç³»ç»ä¸ï¼è½å¤åæ¶è¿è¡å¤ä¸ªè¿ç¨ï¼Linux éè¿å¨ççæ¶é´é´éå è½®æµè¿è¡è¿äºè¿ç¨èå®ç°âå¤ä»»å¡âãè¿ä¸ççæ¶é´é´é称为âæ¶é´çâï¼è®©è¿ç¨è½®æµè¿è¡çæ¹æ³ç§°ä¸ºâè¿ç¨è°åº¦â ï¼å®æè°åº¦çç¨åºç§°ä¸ºè°åº¦ç¨åºã
è¿ç¨è°åº¦æ§å¶è¿ç¨å¯¹CPUç访é®ãå½éè¦éæ©ä¸ä¸ä¸ªè¿ç¨è¿è¡æ¶ï¼ç±è°åº¦ç¨åºéæ©æå¼å¾è¿è¡çè¿ç¨ãå¯è¿è¡è¿ç¨å®é ä¸æ¯ä» çå¾ CPUèµæºçè¿ç¨ï¼å¦ææ个è¿ç¨å¨çå¾ å ¶å®èµæºï¼å该è¿ç¨æ¯ä¸å¯è¿è¡è¿ç¨ãLinux使ç¨äºæ¯è¾ç®åçåºäºä¼å 级çè¿ç¨è°åº¦ç®æ³éæ©æ°çè¿ç¨ã
éè¿å¤ä»»å¡æºå¶ï¼æ¯ä¸ªè¿ç¨å¯è®¤ä¸ºåªæèªå·±ç¬å 计ç®æºï¼ä»èç®åç¨åºçç¼åãæ¯ä¸ªè¿ç¨æèªå·±åç¬çå°å空é´ï¼å¹¶ä¸åªè½ç±è¿ä¸è¿ç¨è®¿é®ï¼è¿æ ·ï¼æä½ç³»ç»é¿å äºè¿ç¨ä¹é´çäºç¸å¹²æ°ä»¥åâåâç¨åºå¯¹ç³»ç»å¯è½é æçå±å®³ã 为äºå®ææç¹å®ä»»å¡ï¼ææ¶éè¦ç»¼å两个ç¨åºçåè½ï¼ä¾å¦ä¸ä¸ªç¨åºè¾åºææ¬ï¼èå¦ä¸ä¸ªç¨åºå¯¹ææ¬è¿è¡æåºã为æ¤ï¼æä½ç³»ç»è¿æä¾è¿ç¨é´çé讯æºå¶æ¥å¸®å©å®æè¿æ ·çä»»å¡ãLinux ä¸å¸¸è§çè¿ç¨é´é讯æºå¶æä¿¡å·ã管éãå ±äº«å åãä¿¡å·éåå¥æ¥åçã
å æ ¸éè¿ SCI æä¾äºä¸ä¸ªåºç¨ç¨åºç¼ç¨æ¥å£ï¼APIï¼æ¥å建ä¸ä¸ªæ°è¿ç¨ï¼forkãexec æ Portable Operating System Interface [POSâ ¨] å½æ°ï¼ï¼åæ¢è¿ç¨ï¼killãexitï¼ï¼å¹¶å¨å®ä»¬ä¹é´è¿è¡éä¿¡ååæ¥ï¼signal æè POSâ ¨ æºå¶ï¼ã
3ã æ件系ç»
å DOS çæä½ç³»ç»ä¸åï¼Linux æä½ç³»ç»ä¸åç¬çæ件系ç»å¹¶ä¸æ¯ç±é©±å¨å¨å·æ驱å¨å¨å称ï¼å¦ A: æ C: çï¼æ¥æ è¯çãç¸åï¼å UNIX æä½ç³»ç»ä¸æ ·ï¼Linux æä½ç³»ç»å°ç¬ç«çæ件系ç»ç»åæäºä¸ä¸ªå±æ¬¡åçæ å½¢ç»æï¼å¹¶ä¸ç±ä¸ä¸ªåç¬çå®ä½ä»£è¡¨è¿ä¸æ件系ç»ãLinux å°æ°çæ件系ç»éè¿ä¸ä¸ªç§°ä¸ºâæè£ âæâæä¸âçæä½å°å ¶æè£ å°æ个ç®å½ä¸ï¼ä»è让ä¸åçæ件系ç»ç»åæ为ä¸ä¸ªæ´ä½ãLinux æä½ç³»ç»çä¸ä¸ªéè¦ç¹ç¹æ¯å®æ¯æ许å¤ä¸åç±»åçæ件系ç»ãLinux ä¸ææ®é使ç¨çæ件系ç»æ¯ Ext2ï¼å®ä¹æ¯ Linux åçåé¿çæ件系ç»ãä½ Linux ä¹è½å¤æ¯æ FATãVFATãFAT32ãMINIX çä¸åç±»åçæ件系ç»ï¼ä»èå¯ä»¥æ¹ä¾¿å°åå ¶å®æä½ç³»ç»äº¤æ¢æ°æ®ãç±äº Linux æ¯æ许å¤ä¸åçæ件系ç»ï¼å¹¶ä¸å°å®ä»¬ç»ç»æäºä¸ä¸ªç»ä¸çèææ件系ç».
èææ件系ç»ï¼VirtualFileSystem,VFSï¼:éèäºåç§ç¡¬ä»¶çå ·ä½ç»èï¼ææ件系ç»æä½åä¸åæ件系ç»çå ·ä½å®ç°ç»èå离äºå¼æ¥ï¼ä¸ºææç设å¤æä¾äºç»ä¸çæ¥å£ï¼VFSæä¾äºå¤è¾¾æ°åç§ä¸åçæ件系ç»ãèææ件系ç»å¯ä»¥å为é»è¾æ件系ç»å设å¤é©±å¨ç¨åºãé»è¾æ件系ç»æLinuxææ¯æçæ件系ç»ï¼å¦ext2,fatçï¼è®¾å¤é©±å¨ç¨åºæ为æ¯ä¸ç§ç¡¬ä»¶æ§å¶å¨æç¼åç设å¤é©±å¨ç¨åºæ¨¡åã
èææ件系ç»ï¼VFSï¼æ¯ Linux å æ ¸ä¸é常æç¨çä¸ä¸ªæ¹é¢ï¼å 为å®ä¸ºæ件系ç»æä¾äºä¸ä¸ªéç¨çæ¥å£æ½è±¡ãVFS å¨ SCI åå æ ¸ææ¯æçæ件系ç»ä¹é´æä¾äºä¸ä¸ªäº¤æ¢å±ãå³VFS å¨ç¨æ·åæ件系ç»ä¹é´æä¾äºä¸ä¸ªäº¤æ¢å±ã
VFS å¨ç¨æ·åæ件系ç»ä¹é´æä¾äºä¸ä¸ªäº¤æ¢å±:
å¨ VFS ä¸é¢ï¼æ¯å¯¹è¯¸å¦ openãcloseãread å write ä¹ç±»çå½æ°çä¸ä¸ªéç¨ API æ½è±¡ãå¨ VFS ä¸é¢æ¯æ件系ç»æ½è±¡ï¼å®å®ä¹äºä¸å±å½æ°çå®ç°æ¹å¼ãå®ä»¬æ¯ç»å®æ件系ç»ï¼è¶ è¿ 50 个ï¼çæ件ãæ件系ç»çæºä»£ç å¯ä»¥å¨ ./linux/fs ä¸æ¾å°ã
æ件系ç»å±ä¹ä¸æ¯ç¼å²åºç¼åï¼å®ä¸ºæ件系ç»å±æä¾äºä¸ä¸ªéç¨å½æ°éï¼ä¸å ·ä½æ件系ç»æ å ³ï¼ãè¿ä¸ªç¼åå±éè¿å°æ°æ®ä¿çä¸æ®µæ¶é´ï¼æè éå³é¢å 读åæ°æ®ä»¥ä¾¿å¨éè¦æ¯å°±å¯ç¨ï¼ä¼åäºå¯¹ç©ç设å¤ç访é®ãç¼å²åºç¼åä¹ä¸æ¯è®¾å¤é©±å¨ç¨åºï¼å®å®ç°äºç¹å®ç©ç设å¤çæ¥å£ã
å æ¤ï¼ç¨æ·åè¿ç¨ä¸éè¦ç¥éæ件æå¨çæ件系ç»ç±»åï¼èåªéè¦è±¡ä½¿ç¨ Ext2 æ件系ç»ä¸çæ件ä¸æ ·ä½¿ç¨å®ä»¬ã
4ã设å¤é©±å¨ç¨åº
设å¤é©±å¨ç¨åºæ¯ Linux å æ ¸ç主è¦é¨åãåæä½ç³»ç»çå ¶å®é¨å类似ï¼è®¾å¤é©±å¨ç¨åºè¿è¡å¨é«ç¹æ级çå¤çå¨ç¯å¢ä¸ï¼ä»èå¯ä»¥ç´æ¥å¯¹ç¡¬ä»¶è¿è¡æä½ï¼ä½æ£å 为å¦æ¤ï¼ä»»ä½ä¸ä¸ªè®¾å¤é©±å¨ç¨åºçé误é½å¯è½å¯¼è´æä½ç³»ç»çå´©æºã设å¤é©±å¨ç¨åºå®é æ§å¶æä½ç³»ç»å硬件设å¤ä¹é´ç交äºã
设å¤é©±å¨ç¨åºæä¾ä¸ç»æä½ç³»ç»å¯ç解çæ½è±¡æ¥å£å®æåæä½ç³»ç»ä¹é´ç交äºï¼èä¸ç¡¬ä»¶ç¸å ³çå ·ä½æä½ç»èç±è®¾å¤é©±å¨ç¨åºå®æãä¸è¬èè¨ï¼è®¾å¤é©±å¨ç¨åºå设å¤çæ§å¶è¯çæå ³ï¼ä¾å¦ï¼å¦æ计ç®æºç¡¬çæ¯ SCSI 硬çï¼åéè¦ä½¿ç¨ SCSI 驱å¨ç¨åºï¼èä¸æ¯ IDE 驱å¨ç¨åºã
5ãç½ç»æ¥å£ï¼NETï¼
æä¾äºå¯¹åç§ç½ç»æ åçååååç§ç½ç»ç¡¬ä»¶çæ¯æãç½ç»æ¥å£å¯å为ç½ç»åè®®åç½ç»é©±å¨ç¨åºãç½ç»åè®®é¨åè´è´£å®ç°æ¯ä¸ç§å¯è½çç½ç»ä¼ è¾åè®®ãä¼æå¨ç¥ï¼TCP/IP åè®®æ¯ Internet çæ ååè®®ï¼åæ¶ä¹æ¯äºå®ä¸çå·¥ä¸æ åã
Linux çç½ç»å®ç°æ¯æ BSD å¥æ¥åï¼æ¯æå ¨é¨çTCP/IPåè®®ãLinuxå æ ¸çç½ç»é¨åç±BSDå¥æ¥åãç½ç»åè®®å±åç½ç»è®¾å¤é©±å¨ç¨åºç»æãç½ç»è®¾å¤é©±å¨ç¨åºè´è´£ä¸ç¡¬ä»¶è®¾å¤é讯ï¼æ¯ä¸ç§å¯è½ç硬件设å¤é½æç¸åºç设å¤é©±å¨ç¨åºã
äºãlinux shell
shellæ¯ç³»ç»çç¨æ·çé¢ï¼æä¾äºç¨æ·ä¸å æ ¸è¿è¡äº¤äºæä½çä¸ç§æ¥å£ãå®æ¥æ¶ç¨æ·è¾å ¥çå½ä»¤å¹¶æå®éå ¥å æ ¸å»æ§è¡ï¼æ¯ä¸ä¸ªå½ä»¤è§£éå¨ãå¦å¤ï¼shellç¼ç¨è¯è¨å ·ææ®éç¼ç¨è¯è¨çå¾å¤ç¹ç¹ï¼ç¨è¿ç§ç¼ç¨è¯è¨ç¼åçshellç¨åºä¸å ¶ä»åºç¨ç¨åºå ·æåæ ·çææã
ç®å主è¦æä¸åçæ¬çshellã
1ãBourne Shellï¼æ¯è´å°å®éªå®¤å¼åçã
2ãBASHï¼æ¯GNUçBourne Again Shellï¼æ¯GNUæä½ç³»ç»ä¸é»è®¤çshell,大é¨ålinuxçåè¡å¥ä»¶ä½¿ç¨çé½æ¯è¿ç§shellã
3ãKorn Shellï¼æ¯å¯¹Bourne SHellçåå±ï¼å¨å¤§é¨åå 容ä¸ä¸Bourne Shellå ¼å®¹ã
4ãC Shellï¼æ¯SUNå ¬å¸ShellçBSDçæ¬ã
ä¸ãlinux æ件系ç»
æ件系ç»æ¯æ件åæ¾å¨ç£ççåå¨è®¾å¤ä¸çç»ç»æ¹æ³ãLinuxç³»ç»è½æ¯æå¤ç§ç®åæµè¡çæ件系ç»ï¼å¦EXT2ã EXT3ã FATã FAT32ã VFATåISO9660ã
3.1 æ件类å
Linuxä¸é¢çæ件类å主è¦æï¼
- æ®éæ件ï¼Cè¯è¨å 代ç ãSHELLèæ¬ãäºè¿å¶çå¯æ§è¡æ件çãå为纯ææ¬åäºè¿å¶ã
- ç®å½æ件ï¼ç®å½ï¼åå¨æ件çå¯ä¸å°æ¹ã
- é¾æ¥æ件ï¼æååä¸ä¸ªæ件æç®å½ççæ件ã
-
设å¤æ件ï¼ä¸ç³»ç»å¤è®¾ç¸å ³çï¼é常å¨/devä¸é¢ãå为å设å¤åå符设å¤ã
5ï¼ç®¡é(FIFO)æ件 : æä¾è¿ç¨å»ºéä¿¡çä¸ç§æ¹å¼
6ï¼å¥æ¥å(socket) æä»¶ï¼ è¯¥æ件类åä¸ç½ç»éä¿¡æå ³
å¯ä»¥éè¿ls âl, file, statå 个å½ä»¤æ¥æ¥çæ件çç±»åçç¸å ³ä¿¡æ¯ã
3.2 Linuxç®å½
æ件ç»ææ¯æ件åæ¾å¨ç£ççå贮设å¤ä¸çç»ç»æ¹æ³ã主è¦ä½ç°å¨å¯¹æ件åç®å½çç»ç»ä¸ã
ç®å½æä¾äºç®¡çæ件çä¸ä¸ªæ¹ä¾¿èææçéå¾ã
Linux使ç¨æ åçç®å½ç»æï¼å¨å®è£ çæ¶åï¼å®è£ ç¨åºå°±å·²ç»ä¸ºç¨æ·å建äºæ件系ç»åå®æ´èåºå®çç®å½ç»æå½¢å¼ï¼å¹¶æå®äºæ¯ä¸ªç®å½çä½ç¨åå ¶ä¸çæ件类åã
å®æ´çç®å½æ å¯åå为å°çé¨åï¼è¿äºå°é¨ååå¯ä»¥åç¬åæ¾å¨èªå·±çç£çæååºä¸ãè¿æ ·ï¼ç¸å¯¹ç¨³å®çé¨ååç»å¸¸ååçé¨åå¯åç¬åæ¾å¨ä¸åçååºä¸ï¼ä»èæ¹ä¾¿å¤ä»½æç³»ç»ç®¡çãç®å½æ ç主è¦é¨åæ rootã/usrã/varã/home çï¼å¾2ï¼ ãè¿æ ·çå¸å±å¯æ¹ä¾¿å¨ Linux 计ç®æºä¹é´å ±äº«æ件系ç»çæäºé¨åã
Linuxéç¨çæ¯æ åç»æãæä¸å±æ¯æ ¹ç®å½ï¼å ¶ä»çææç®å½é½æ¯ä»æ ¹ç®å½åºåèçæçã
微软çDOSåwindowsä¹æ¯éç¨æ åç»æï¼ä½æ¯å¨DOSå windowsä¸è¿æ ·çæ åç»æçæ ¹æ¯ç£çååºçç符ï¼æå 个ååºå°±æå 个æ åç»æï¼ä»ä»¬ä¹é´çå ³ç³»æ¯å¹¶åçãæ顶é¨çæ¯ä¸åçç£çï¼ååºï¼ï¼å¦ï¼Cï¼Dï¼Eï¼Fçã
ä½æ¯å¨linuxä¸ï¼æ 论æä½ç³»ç»ç®¡çå 个ç£çååºï¼è¿æ ·çç®å½æ åªæä¸ä¸ªãä»ç»æä¸è®²ï¼å个ç£çååºä¸çæ åç®å½ä¸ä¸å®æ¯å¹¶åçã
3.3 Linuxç£çååº
ä¸ã主ååºï¼æ©å±ååºåé»è¾ååºï¼
linuxååºä¸åäºwindows,硬çå硬çååºå¨Linuxé½è¡¨ç¤ºä¸ºè®¾å¤.
硬çååºä¸å ±æä¸ç§ï¼ä¸»ååºï¼æ©å±ååºåé»è¾ååºã
硬ççååºä¸»è¦å为主ååº(Primary Partion)åæ©å±ååº(Extension Partion)两ç§ï¼ä¸»ååºåæ©å±ååºçæ°ç®ä¹åä¸è½å¤§äºå个ã
主ååº(Primary Partion)ï¼å¯ä»¥é©¬ä¸è¢«ä½¿ç¨ä½ä¸è½åååºã
æ©å±ååº(Extension Partion)ï¼å¿ é¡»åè¿è¡ååºåæè½ä½¿ç¨ï¼ä¹å°±æ¯è¯´å®å¿ é¡»è¿è¦è¿è¡äºæ¬¡ååºã
é»è¾ååºï¼(Logical Partion)ï¼ï¼ç±æ©å±ååºå»ºç«èµ·æ¥çååºãé»è¾ååºæ²¡ææ°éä¸éå¶ã
æ©å±ååºåªä¸è¿æ¯é»è¾ååºçâ容å¨âï¼å®é ä¸åªæ主ååºåé»è¾ååºè¿è¡æ°æ®åå¨ã
åãLinuxä¸ç¡¬çååºçæ è¯
硬çååºçæ è¯ä¸è¬ä½¿ç¨/dev/hd[a-z]Xæè /dev/sd[a-z]Xæ¥æ è¯ï¼å ¶ä¸[a-z]代表硬çå·ï¼X代表硬çå çååºå·ã
æ´å硬çååºçåå·æ è¯:Linuxä¸ç¨hdaãhdbãsdaãsdb çæ¥æ è¯ä¸åç硬ç;
å ¶ä¸ï¼
IDEæ¥å£ç¡¬çï¼è¡¨ç¤ºä¸º/dev/hda1ã/dev/hdb â¦ï¼
SCSI æ¥å£ç硬çãSATAæ¥å£ç硬ç表示为/dev/sdaã/dev/sdb ⦠⦠ï¼
硬çå çååºï¼å¦æXçå¼æ¯1å°4,表示硬çç主ååºï¼å å«æ©å±ååºï¼ï¼é»è¾ååºä»æ¯ä»5å¼å§çï¼æ¯å¦/dev/hda5è¯å®æ¯é»è¾ååºäºï¼
ä¾å¦ï¼
ç¨hda1ãhda2ã hda5ãhda6 æ¥æ è¯ä¸åçååºãå ¶ä¸ï¼åæ¯a 代表第ä¸å硬çï¼b代表第äºå硬çï¼ä¾æ¬¡ç±»æ¨ãèæ°å1 代表ä¸å硬çç第ä¸ä¸ªååºã2 代表第äºä¸ªååºï¼ä¾æ¬¡ç±»æ¨ã1 å°4 对åºçæ¯ä¸»ååº(Primary Partition)ææ©å±ååº(Extension Partition)ãä»5å¼å§ï¼å¯¹åºçé½æ¯ç¡¬ççé»è¾ååº(Logical Partition)ãä¸å硬çå³ä½¿åªæä¸ä¸ªä¸»ååºï¼é»è¾ååºä¹æ¯ä»5å¼å§ç¼å·çï¼è¿ç¹åºç¹å«æ³¨æã
æ»ç»ï¼ä¸ä¸ªç¡¬çååºé¦å è¦å¤§ç¡®è®¤å¨åªä¸ªç¡¬çï¼ç¶åå确认å®æå¨ç¡¬çå çåªä¸ªååºã
对äº/dev/hda 类似ç表示æ¹æ³ï¼ä¹å¹¶ä¸å¯çå§ï¼æ们å¨Linuxéè¿fdisk -l å°±å¯ä»¥æ¥å°ç¡¬çæ¯/dev/hdaè¿æ¯/dev/hdbï¼
[[email protected] ~]# fdisk -l
ç£ç /dev/vdaï¼53.7 GB, 53687091200 åèï¼104857600 个æåº
Units = æåº of 1 * 512 = 512 bytes
æåºå¤§å°(é»è¾/ç©ç)ï¼512 åè / 512 åè
I/O 大å°(æå°/æä½³)ï¼512 åè / 512 åè
ç£çæ ç¾ç±»åï¼dos
ç£çæ è¯ç¬¦ï¼0x0009ac89
è®¾å¤ Boot Start End Blocks Id System
/dev/vda1 * 2048 104857566 52427759+ 83 Linux
[[email protected] ~]# df -l
æä»¶ç³»ç» 1K-å å·²ç¨ å¯ç¨ å·²ç¨% æè½½ç¹
devtmpfs 930184 0 930184 0% /dev
tmpfs 941096 24 941072 1% /dev/shm
tmpfs 941096 708 940388 1% /run
tmpfs 941096 0 941096 0% /sys/fs/cgroup
/dev/vda1 51473868 5428464 43848160 12% /
tmpfs 188220 0 188220 0% /run/user/0
overlay 51473868 5428464 43848160 12% /var/lib/docker/overlay2/16cc0798021d6f7e9d9f5852e52afdf9635051d23ce19319cbe7bfa2d62a9338/merged
overlay 51473868 5428464 43848160 12% /var/lib/docker/overlay2/4ac5f58505c035c1f4036fefa46e46f59ae2f0655eff879b857886d02433cac5/merged
Linuxä¸ç£çååºåç®å½çå ³ç³»å¦ä¸ï¼
â ä»»ä½ä¸ä¸ªååºé½å¿ é¡»æè½½å°æ个ç®å½ä¸ã
â ç®å½æ¯é»è¾ä¸çåºåãååºæ¯ç©çä¸çåºåã
â ç£çLinuxååºé½å¿ é¡»æè½½å°ç®å½æ ä¸çæä¸ªå ·ä½çç®å½ä¸æè½è¿è¡è¯»åæä½ã
â æ ¹ç®å½æ¯ææLinuxçæ件åç®å½æå¨çå°æ¹ï¼éè¦æè½½ä¸ä¸ä¸ªç£çååºã
3.4 linux主è¦ç®å½çåç¨ã
/bin äºè¿å¶å¯æ§è¡å½ä»¤ ãã
/dev 设å¤ç¹æ®æ件
/etc ç³»ç»ç®¡çåé
ç½®æ件
/etc/rc.d å¯å¨çé
ç½®æ件åèæ¬
/home ç¨æ·ä¸»ç®å½çåºç¹ï¼æ¯å¦ç¨æ·userç主ç®å½å°±æ¯/home/userï¼å¯ä»¥ç¨~user表示
/lib æ åç¨åºè®¾è®¡åºï¼åå«å¨æé¾æ¥å
±äº«åºï¼ä½ç¨ç±»ä¼¼windowséç.dllæ件 ãã
/sbin ç³»ç»ç®¡çå½ä»¤ï¼è¿éåæ¾çæ¯ç³»ç»ç®¡çå使ç¨ç管çç¨åº
/tmp å
¬ç¨ç临æ¶æ件åå¨ç¹ ãã
/root ç³»ç»ç®¡çåç主ç®å½ï¼åµåµï¼ç¹æé¶çº§ï¼ ãã
/mnt ç³»ç»æä¾è¿ä¸ªç®å½æ¯è®©ç¨æ·ä¸´æ¶æè½½å
¶ä»çæ件系ç»ã
/lost+found è¿ä¸ªç®å½å¹³æ¶æ¯ç©ºçï¼ç³»ç»éæ£å¸¸å
³æºèçä¸âæ 家å¯å½âçæ件ï¼windowsä¸å«ä»ä¹.chkï¼å°±å¨è¿é ãã
/proc èæçç®å½ï¼æ¯ç³»ç»å
åçæ å°ãå¯ç´æ¥è®¿é®è¿ä¸ªç®å½æ¥è·åç³»ç»ä¿¡æ¯ã ãã
/var æäºå¤§æ件ç溢åºåºï¼æ¯æ¹è¯´åç§æå¡çæ¥å¿æ件 ãã
/usr æåºå¤§çç®å½ï¼è¦ç¨å°çåºç¨ç¨åºåæ件å ä¹é½å¨è¿ä¸ªç®å½ãå
¶ä¸å
å«ï¼ ãã
/usr/X11R6 åæ¾X windowçç®å½ ãã
/usr/bin ä¼å¤çåºç¨ç¨åº ãã
/usr/sbin è¶
级ç¨æ·çä¸äºç®¡çç¨åº ãã
/usr/doc linuxææ¡£ ãã
/usr/include linuxä¸å¼ååç¼è¯åºç¨ç¨åºæéè¦ç头æ件 ãã
/usr/lib 常ç¨çå¨æé¾æ¥åºå软件å
çé
ç½®æ件 ãã
/usr/man 帮å©ææ¡£ ãã
/usr/src æºä»£ç ï¼linuxå
æ ¸çæºä»£ç å°±æ¾å¨/usr/src/linuxé ãã
/usr/local/bin æ¬å°å¢å çå½ä»¤ ãã
/usr/local/lib æ¬å°å¢å çåº
3.5 linuxæ件系ç»
æ件系ç»ææ件åå¨çç©ç空é´ï¼linuxç³»ç»ä¸æ¯ä¸ªååºé½æ¯ä¸ä¸ªæ件系ç»ï¼é½æèªå·±çç®å½å±æ¬¡ç»æãlinuxä¼å°è¿äºåå±ä¸åååºçãåç¬çæ件系ç»æä¸å®çæ¹å¼å½¢æä¸ä¸ªç³»ç»çæ»çç®å½å±æ¬¡ç»æãä¸ä¸ªæä½ç³»ç»çè¿è¡ç¦»ä¸å¼å¯¹æ件çæä½ï¼å æ¤å¿ ç¶è¦æ¥æ并维æ¤èªå·±çæ件系ç»ã
1ãæ件系ç»ç±»åï¼
ext2 ï¼ æ©ælinuxä¸å¸¸ç¨çæ件系ç»
ext3 ï¼ ext2çå级çï¼å¸¦æ¥å¿åè½
RAMFS ï¼ å
åæ件系ç»ï¼é度å¾å¿«
NFS ï¼ ç½ç»æ件系ç»ï¼ç±SUNåæï¼ä¸»è¦ç¨äºè¿ç¨æ件å
񄧮
MS-DOS ï¼ MS-DOSæ件系ç»
VFAT ï¼ Windows 95/98 æä½ç³»ç»éç¨çæ件系ç»
FAT ï¼ Windows XP æä½ç³»ç»éç¨çæ件系ç»
NTFSï¼ Windows NT/XP æä½ç³»ç»éç¨çæ件系ç»
HPFS ï¼ OS/2 æä½ç³»ç»éç¨çæ件系ç»
PROC : èæçè¿ç¨æ件系ç»
ISO9660 ï¼ å¤§é¨åå
çæéç¨çæ件系ç»
ufsSun : OS æéç¨çæ件系ç»
NCPFS ï¼ Novell æå¡å¨æéç¨çæ件系ç»
SMBFS ï¼ Samba çå
±äº«æ件系ç»
XFS ï¼ ç±SGIå¼åçå
è¿çæ¥å¿æ件系ç»ï¼æ¯æè¶
大容éæ件
JFS ï¼IBMçAIX使ç¨çæ¥å¿æ件系ç»
ReiserFS : åºäºå¹³è¡¡æ ç»æçæ件系ç»
udf: å¯æ¦åçæ°æ®å
çæ件系ç»
2ãæ件系ç»ç¹æ§ï¼
ç£çååºå®æ¯åè¿éè¦è¿è¡æ ¼å¼å(format)ï¼ä¹åæä½ç³»ç»æè½å¤ä½¿ç¨è¿ä¸ªååºãæ ¼å¼åçç®çæ¯è½ä½¿æä½ç³»ç»å¯ä»¥ä½¿ç¨çæ件系ç»æ ¼å¼ï¼å³æ们ä¸é¢æå°æ件系ç»ç±»åï¼.
æ¯ç§æä½ç³»ç»è½å¤ä½¿ç¨çæ件系ç»å¹¶ä¸ç¸å. å¦windows 98 以åç微软æä½ç³»ç»ä¸»è¦å©ç¨çæ件系ç»æ¯ FAT (æ FAT16)ï¼windows 2000 以åççæ¬ææè°ç NTFS æ件系ç»ï¼è³äº Linux çæ£ç»æ件系ç»å为 Ext2 (Linux second extended file system, ext2fs)è¿ä¸ä¸ªãæ¤å¤ï¼å¨é»è®¤çæ åµä¸ï¼windows æä½ç³»ç»æ¯ä¸ä¼è®¤è¯ Linux ç Ext2 çã
ä¼ ç»çç£çä¸æ件系ç»ä¹åºç¨ä¸ï¼ä¸ä¸ªååºå°±æ¯åªè½å¤è¢«æ ¼å¼åæ为ä¸ä¸ªæ件系ç»ï¼æ以æ们å¯ä»¥è¯´ä¸ä¸ª filesystem å°±æ¯ä¸ä¸ª partitionãä½æ¯ç±äºæ°ææ¯çå©ç¨ï¼ä¾å¦æ们常å¬å°çLVMä¸è½¯ä»¶ç£çéµå(software raid)ï¼ è¿äºææ¯å¯ä»¥å°ä¸ä¸ªååºæ ¼å¼å为å¤ä¸ªæ件系ç»(ä¾å¦LVM)ï¼ä¹è½å¤å°å¤ä¸ªååºåæä¸ä¸ªæ件系ç»(LVM, RAID)ï¼æ以说ï¼ç®åæ们å¨æ ¼å¼åæ¶å·²ç»ä¸å说æé对 partition æ¥æ ¼å¼åäºï¼ é常æ们å¯ä»¥ç§°å¼ä¸ä¸ªå¯è¢«æè½½çæ°æ®ä¸ºä¸ä¸ªæ件系ç»èä¸æ¯ä¸ä¸ªååºåï¼
é£ä¹æ件系ç»æ¯å¦ä½è¿è¡çå¢ï¼è¿ä¸æä½ç³»ç»çæ件æ°æ®æå ³ãè¾æ°çæä½ç³»ç»çæ件æ°æ®é¤äºæ件å®é å 容å¤ï¼ é常å«æé常å¤çå±æ§ï¼ä¾å¦ Linux æä½ç³»ç»çæ件æé(rwx)ä¸æ件å±æ§(æ¥æè ã群ç»ãæ¶é´åæ°ç)ã æ件系ç»é常ä¼å°è¿ä¸¤é¨ä»½çæ°æ®åå«åæ¾å¨ä¸åçåºåï¼æéä¸å±æ§æ¾ç½®å° inode ä¸ï¼è³äºå®é æ°æ®åæ¾ç½®å° data block åºåä¸ãå¦å¤ï¼è¿æä¸ä¸ªè¶ 级åºå (superblock) ä¼è®°å½æ´ä¸ªæ件系ç»çæ´ä½ä¿¡æ¯ï¼å æ¬ inode ä¸ block çæ»éã使ç¨éãå©ä½éçã
对äºä¸ä¸ªç£çååºæ¥è¯´ï¼å¨è¢«æå®ä¸ºç¸åºçæ件系ç»åï¼æ´ä¸ªååºè¢«å为 1024ï¼2048 å 4096 åè大å°çåãæ ¹æ®å使ç¨çä¸åï¼å¯å为ï¼
1ãè¶ çº§å(Superblock):
è¿æ¯æ´ä¸ªæ件系ç»ç第ä¸å空é´ãå æ¬æ´ä¸ªæ件系ç»çåºæ¬ä¿¡æ¯ï¼å¦å大å°ï¼inode/blockçæ»éã使ç¨éãå©ä½éï¼æåç©ºé´ inode åæ°æ®åçæéçç¸å ³ä¿¡æ¯ã
2ãinodeå(æ件索å¼èç¹) :
æ件系ç»ç´¢å¼,è®°å½æ件çå±æ§ãå®æ¯æ件系ç»çæåºæ¬åå ï¼æ¯æ件系ç»è¿æ¥ä»»ä½åç®å½ãä»»ä½æ件çæ¡¥æ¢ãæ¯ä¸ªåç®å½åæ件åªæå¯ä¸çä¸ä¸ª inode åãå®å å«äºæ件系ç»ä¸æ件çåºæ¬å±æ§(æ件çé¿åº¦ãå建åä¿®æ¹æ¶é´ãæéãæå±å ³ç³»)ãåæ¾æ°æ®çä½ç½®çç¸å ³ä¿¡æ¯. å¨ Linux ä¸å¯ä»¥éè¿ âls -liâ å½ä»¤æ¥çæ件ç inode ä¿¡æ¯ã硬è¿æ¥åæºæä»¶å ·æç¸åç inode ã
3ãæ°æ®å(Block) :
å®é è®°å½æ件çå 容ï¼è¥æ件太大æ¶ï¼ä¼å ç¨å¤ä¸ª blockã为äºæé«ç®å½è®¿é®æçï¼Linux è¿æä¾äºè¡¨è¾¾è·¯å¾ä¸ inode 对åºå ³ç³»ç dentry ç»æãå®æè¿°äºè·¯å¾ä¿¡æ¯å¹¶è¿æ¥å°èç¹ inodeï¼å®å æ¬åç§ç®å½ä¿¡æ¯ï¼è¿æåäº inode åè¶ çº§åã
å°±åä¸æ¬ä¹¦æå°é¢ãç®å½åæ£æä¸æ ·ãå¨æ件系ç»ä¸ï¼è¶ 级åå°±ç¸å½äºå°é¢ï¼ä»å°é¢å¯ä»¥å¾ç¥è¿æ¬ä¹¦çåºæ¬ä¿¡æ¯ï¼inode åç¸å½äºç®å½ï¼ä»ç®å½å¯ä»¥å¾ç¥åç« èå 容çä½ç½®ï¼èæ°æ®ååç¸å½äºä¹¦çæ£æï¼è®°å½çå ·ä½å 容ã
Linuxæ£ç»çæ件系ç»(å¦ext2ã3ç)å°ç¡¬çååºæ¶ä¼åååºè¶ 级åãinode Tableåºåådata blockæ°æ®åºåãä¸ä¸ªæ件ç±ä¸ä¸ªè¶ 级åãinodeåæ°æ®åºååç»æãInodeå å«æ件çå±æ§(å¦è¯»åå±æ§ãownerçï¼ä»¥åæåæ°æ®åçæé)ï¼æ°æ®åºåååæ¯æ件å 容ãå½æ¥çæ个æ件æ¶ï¼ä¼å ä»inode tableä¸æ¥åºæ件å±æ§åæ°æ®åæ¾ç¹ï¼åä»æ°æ®åä¸è¯»åæ°æ®ã
æä»¬å° inode ä¸ block åºåç¨å¾è§£æ¥è¯´æä¸ä¸ï¼å¦ä¸å¾æ示ï¼æ件系ç»å æ ¼å¼ååº inode ä¸ block çåºåï¼å设æä¸ä¸ªæ件çå±æ§ä¸æéæ°æ®æ¯æ¾ç½®å° inode 4 å·(ä¸å¾è¾å°æ¹æ ¼å )ï¼èè¿ä¸ª inode è®°å½äºæ件æ°æ®çå®é æ¾ç½®ç¹ä¸º 2, 7, 13, 15 è¿å个 block å·ç ï¼æ¤æ¶æ们çæä½ç³»ç»å°±è½å¤æ®æ¤æ¥æåç£ççé 读顺åºï¼å¯ä»¥ä¸å£æ°å°å个 block å 容读åºæ¥ï¼é£ä¹æ°æ®ç读åå°±å¦åä¸å¾ä¸çç®å¤´ææå®çæ¨¡æ ·äºã
âââââââââââââââââ å¾ inode/block æ°æ®åå示æå¾ âââââââââââââââââ
è¿ç§æ°æ®ååçæ¹æ³æ们称为索å¼å¼æ件系ç»(indexed allocation)ãé£æ没æå ¶ä»çæ¯ç¨æ件系ç»å¯ä»¥æ¯è¾ä¸ä¸åï¼æçï¼é£å°±æ¯æ们æ¯ç¨çéªç(éªå)ï¼éªç使ç¨çæ件系ç»ä¸è¬ä¸º FAT æ ¼å¼ãFAT è¿ç§æ ¼å¼çæ件系ç»å¹¶æ²¡æ inode åå¨ï¼æ以 FAT 没æåæ³å°è¿ä¸ªæ件çææ block å¨ä¸å¼å§å°±è¯»ååºæ¥ãæ¯ä¸ª block å·ç é½è®°å½å¨åä¸ä¸ª block å½ä¸ï¼ å ¶è¯»åæ¹å¼æç¹åä¸å¾æ示:
ââââââââââââââââââ å¾ãFATæ件系ç»æ°æ®åå示æå¾ âââââââââââââââââ
ä¸å¾ä¸æ们å设æ件çæ°æ®ä¾åºåå ¥1->7->4->15å·è¿å个 block å·ç ä¸ï¼ ä½è¿ä¸ªæ件系ç»æ²¡æåæ³ä¸å£æ°å°±ç¥éå个 block çå·ç ï¼ä»å¾è¦ä¸ä¸ªä¸ä¸ªçå° block 读åºåï¼æä¼ç¥éä¸ä¸ä¸ª block å¨ä½å¤ãå¦æåä¸ä¸ªæ件æ°æ®åå ¥ç block åæ£ç太è¿å害æ¶ï¼åæ们çç£ç读å头å°æ æ³å¨ç£ç转ä¸å就读å°ææçæ°æ®ï¼ å æ¤ç£çå°±ä¼å¤è½¬å¥½å åæè½å®æ´ç读åå°è¿ä¸ªæ件çå 容ï¼
常常ä¼å¬å°æè°çâç¢çæ´çâå§ï¼ éè¦ç¢çæ´ççåå å°±æ¯æ件åå ¥ç block 太è¿äºç¦»æ£äºï¼æ¤æ¶æ件读åçæè½å°ä¼åçå¾å·®æè´ã è¿ä¸ªæ¶åå¯ä»¥éè¿ç¢çæ´çå°åä¸ä¸ªæ件æå±ç blocks æ±æ´å¨ä¸èµ·ï¼è¿æ ·æ°æ®ç读åä¼æ¯è¾å®¹æåï¼ æ³å½ç¶å°ï¼FAT çæ件系ç»éè¦ç»å¸¸çç¢çæ´çä¸ä¸ï¼é£ä¹ Ext2 æ¯å¦éè¦ç£çéæ´å¢ï¼
ç±äº Ext2 æ¯ç´¢å¼å¼æ件系ç»ï¼åºæ¬ä¸ä¸å¤ªéè¦å¸¸å¸¸è¿è¡ç¢çæ´ççãä½æ¯å¦ææ件系ç»ä½¿ç¨å¤ªä¹ ï¼ å¸¸å¸¸å é¤/ç¼è¾/æ°å¢æ件æ¶ï¼é£ä¹è¿æ¯å¯è½ä¼é ææ件æ°æ®å¤ªè¿äºç¦»æ£çé®é¢ï¼æ¤æ¶æ许ä¼éè¦è¿è¡éæ´ä¸ä¸çãä¸è¿ï¼èå®è¯´ï¼é¸å¥åæ¯æ²¡æå¨ Linux æä½ç³»ç»ä¸é¢è¿è¡è¿ Ext2/Ext3 æ件系ç»çç¢çæ´ç说ï¼ä¼¼ä¹ä¸å¤ªéè¦å¦ï¼_
å¯ä»¥ç¨lnå½ä»¤å¯¹ä¸ä¸ªå·²ç»åå¨çæ件å建ç«ä¸ä¸ªæ°çè¿æ¥ï¼èä¸å¤å¶æ件çå 容ãè¿æ¥æ软è¿æ¥å硬è¿æ¥ä¹åï¼è½¯è¿æ¥åå«ç¬¦å·è¿æ¥ãå®ä»¬åèªçç¹ç¹æ¯ï¼
硬è¿æ¥ï¼åæ件ååè¿æ¥æ件åé½æåç¸åçç©çå°åãç®å½ä¸è½æ硬è¿æ¥ï¼ç¡¬è¿æ¥ä¸è½è·¨è¶æ件系ç»ï¼ä¸è½è·¨è¶ä¸åçååºï¼æ件å¨ç£çä¸åªæä¸ä¸ªæ·è´ï¼èç硬ç空é´ï¼
ç±äºå é¤æ件è¦å¨åä¸ä¸ªç´¢å¼èç¹å±äºå¯ä¸çè¿æ¥æ¶æè½æåï¼å æ¤å¯ä»¥é²æ¢ä¸å¿ è¦ç误å é¤ã
符å·è¿æ¥ï¼ç¨ln -så½ä»¤å»ºç«æ件ç符å·è¿æ¥ç¬¦å·è¿æ¥æ¯linuxç¹æ®æ件çä¸ç§ï¼ä½ä¸ºä¸ä¸ªæ件ï¼å®çæ°æ®æ¯å®æè¿æ¥çæ件çè·¯å¾åã类似windowsä¸çå¿«æ·æ¹å¼ã
å¯ä»¥å é¤åæçæ件èä¿åè¿æ¥æ件ï¼æ²¡æé²æ¢è¯¯å é¤åè½ã
è¿ä¸æ®µççå 容è¿äºæ½è±¡ï¼åæ¯èç¹åæ¯æ°ç»çï¼æå·²ç»å°½ééä¿åéä¿äºï¼åä¸å¥½å ä¾åä½æ¼ç¤ºã大家å¦æè¿æ¯äºéé¾éçè¯ï¼æä¹æ²¡æä»ä¹åæ³äºï¼åªæå è®°ä½ï¼æ¥åå¨å®é åºç¨ä¸æ ¢æ ¢ä½ä¼ãç解äºãè¿ä¹æ¯æå¦ä¹ çä¸ä¸ªæ¹æ³å§ã
3.6 æ件系ç»å¨å æ ¸ä¸ç表示
å æ ¸æ°æ®ç»æ
Linuxå æ ¸çVFSåç³»ç»å¯ä»¥å¾ç¤ºå¦ä¸ï¼
æ件ä¸IO: æ¯ä¸ªè¿ç¨å¨PCBï¼Process Control Blockï¼ä¸é½ä¿åçä¸ä»½æ件æ述符表ï¼æ件æ述符就æ¯è¿ä¸ªè¡¨çç´¢å¼ï¼æ¯ä¸ªè¡¨é¡¹é½æä¸ä¸ªæåå·²æå¼æ件çæéï¼ç°å¨æ们æç¡®ä¸ä¸ï¼å·²æå¼çæ件å¨å æ ¸ä¸ç¨fileç»æä½è¡¨ç¤ºï¼æ件æ述符表ä¸çæéæåfileç»æä½ã
å¨fileç»æä½ä¸ç»´æ¤File Status Flagï¼fileç»æä½çæåf_flagsï¼åå½å读åä½ç½®ï¼fileç»æä½çæåf_posï¼ãå¨ä¸å¾ä¸ï¼è¿ç¨1åè¿ç¨2é½æå¼åä¸æ件ï¼ä½æ¯å¯¹åºä¸åçfileç»æä½ï¼å æ¤å¯ä»¥æä¸åçFile Status Flagå读åä½ç½®ãfileç»æä½ä¸æ¯è¾éè¦çæåè¿æf_countï¼è¡¨ç¤ºå¼ç¨è®¡æ°ï¼Reference Countï¼ï¼åé¢æ们ä¼è®²å°ï¼dupãforkçç³»ç»è°ç¨ä¼å¯¼è´å¤ä¸ªæ件æ述符æååä¸ä¸ªfileç»æä½ï¼ä¾å¦æfd1åfd2é½å¼ç¨åä¸ä¸ªfileç»æä½ï¼é£ä¹å®çå¼ç¨è®¡æ°å°±æ¯2ï¼å½close(fd1)æ¶å¹¶ä¸ä¼éæ¾fileç»æä½ï¼èåªæ¯æå¼ç¨è®¡æ°åå°1ï¼å¦æåclose(fd2)ï¼å¼ç¨è®¡æ°å°±ä¼åå°0åæ¶éæ¾fileç»æä½ï¼è¿æççå ³éäºæ件ã
æ¯ä¸ªfileç»æä½é½æåä¸ä¸ªfile_operationsç»æä½ï¼è¿ä¸ªç»æä½çæåé½æ¯å½æ°æéï¼æåå®ç°åç§æ件æä½çå æ ¸å½æ°ãæ¯å¦å¨ç¨æ·ç¨åºä¸readä¸ä¸ªæ件æ述符ï¼readéè¿ç³»ç»è°ç¨è¿å ¥å æ ¸ï¼ç¶åæ¾å°è¿ä¸ªæ件æ述符ææåçfileç»æä½ï¼æ¾å°fileç»æä½ææåçfile_operationsç»æä½ï¼è°ç¨å®çreadæåææåçå æ ¸å½æ°ä»¥å®æç¨æ·è¯·æ±ãå¨ç¨æ·ç¨åºä¸è°ç¨lseekãreadãwriteãioctlãopençå½æ°ï¼æç»é½ç±å æ ¸è°ç¨file_operationsçåæåææåçå æ ¸å½æ°å®æç¨æ·è¯·æ±ã
file_operationsç»æä½ä¸çreleaseæåç¨äºå®æç¨æ·ç¨åºçclose请æ±ï¼ä¹æ以å«releaseèä¸å«closeæ¯å 为å®ä¸ä¸å®ççå ³éæ件ï¼èæ¯åå°å¼ç¨è®¡æ°ï¼åªæå¼ç¨è®¡æ°åå°0æå ³éæ件ã对äºåä¸ä¸ªæ件系ç»ä¸æå¼ç常è§æ件æ¥è¯´ï¼readãwriteçæ件æä½çæ¥éª¤åæ¹æ³åºè¯¥æ¯ä¸æ ·çï¼è°ç¨çå½æ°åºè¯¥æ¯ç¸åçï¼æ以å¾ä¸çä¸ä¸ªæå¼æ件çfileç»æä½æååä¸ä¸ªfile_operationsç»æä½ãå¦ææå¼ä¸ä¸ªå符设å¤æ件ï¼é£ä¹å®çreadãwriteæä½è¯å®å常è§æ件ä¸ä¸æ ·ï¼ä¸æ¯è¯»åç£ççæ°æ®åèæ¯è¯»å硬件设å¤ï¼æ以fileç»æä½åºè¯¥æåä¸åçfile_operationsç»æä½ï¼å ¶ä¸çåç§æ件æä½å½æ°ç±è¯¥è®¾å¤ç驱å¨ç¨åºå®ç°ã
æ¯ä¸ªfileç»æä½é½æä¸ä¸ªæådentryç»æä½çæéï¼âdentryâæ¯directory entryï¼ç®å½é¡¹ï¼ç缩åãæä»¬ä¼ ç»openãstatçå½æ°çåæ°çæ¯ä¸ä¸ªè·¯å¾ï¼ä¾å¦/home/akaedu/aï¼éè¦æ ¹æ®è·¯å¾æ¾å°æ件çinodeã为äºåå°è¯»ç次æ°ï¼å æ ¸ç¼åäºç®å½çæ ç¶ç»æï¼ç§°ä¸ºdentry cacheï¼å ¶ä¸æ¯ä¸ªèç¹æ¯ä¸ä¸ªdentryç»æä½ï¼åªè¦æ²¿çè·¯å¾åé¨åçdentryæç´¢å³å¯ï¼ä»æ ¹ç®å½/æ¾å°homeç®å½ï¼ç¶åæ¾å°akaeduç®å½ï¼ç¶åæ¾å°æ件aãdentry cacheåªä¿åæè¿è®¿é®è¿çç®å½é¡¹ï¼å¦æè¦æ¾çç®å½é¡¹å¨cacheä¸æ²¡æï¼å°±è¦ä»ç£ç读å°å åä¸ã
æ¯ä¸ªdentryç»æä½é½æä¸ä¸ªæéæåinodeç»æä½ãinodeç»æä½ä¿åçä»ç£çinode读ä¸æ¥çä¿¡æ¯ãå¨ä¸å¾çä¾åä¸ï¼æ两个dentryï¼åå«è¡¨ç¤º/home/akaedu/aå/home/akaedu/bï¼å®ä»¬é½æååä¸ä¸ªinodeï¼è¯´æè¿ä¸¤ä¸ªæ件äºä¸ºç¡¬é¾æ¥ãinodeç»æä½ä¸ä¿åçä»ç£çååºçinode读ä¸æ¥ä¿¡æ¯ï¼ä¾å¦ææè ãæ件大å°ãæ件类ååæéä½çãæ¯ä¸ªinodeç»æä½é½æä¸ä¸ªæåinode_operationsç»æä½çæéï¼åè ä¹æ¯ä¸ç»å½æ°æéæåä¸äºå®ææ件ç®å½æä½çå æ ¸å½æ°ã
åfile_operationsä¸åï¼inode_operationsææåçä¸æ¯é对æä¸ä¸ªæ件è¿è¡æä½çå½æ°ï¼èæ¯å½±åæ件åç®å½å¸å±çå½æ°ï¼ä¾å¦æ·»å å é¤æ件åç®å½ãè·è¸ªç¬¦å·é¾æ¥ççï¼å±äºåä¸æ件系ç»çåinodeç»æä½å¯ä»¥æååä¸ä¸ªinode_operationsç»æä½ã
inodeç»æä½æä¸ä¸ªæåsuper_blockç»æä½çæéãsuper_blockç»æä½ä¿åçä»ç£çååºçè¶ çº§å读ä¸æ¥çä¿¡æ¯ï¼ä¾å¦æ件系ç»ç±»åãå大å°çãsuper_blockç»æä½çs_rootæåæ¯ä¸ä¸ªæådentryçæéï¼è¡¨ç¤ºè¿ä¸ªæ件系ç»çæ ¹ç®å½è¢«mountå°åªéï¼å¨ä¸å¾çä¾åä¸è¿ä¸ªååºè¢«mountå°/homeç®å½ä¸ã
fileãdentryãinodeãsuper_blockè¿å 个ç»æä½ç»æäºVFSçæ ¸å¿æ¦å¿µã对äºext2æ件系ç»æ¥è¯´ï¼å¨ç£çåå¨å¸å±ä¸ä¹æinodeåè¶ çº§åçæ¦å¿µï¼æ以å¾å®¹æåVFSä¸çæ¦å¿µå»ºç«å¯¹åºå ³ç³»ãèå¦å¤ä¸äºæ件系ç»æ ¼å¼æ¥èªéUNIXç³»ç»ï¼ä¾å¦WindowsçFAT32ãNTFSï¼ï¼å¯è½æ²¡æinodeæè¶ çº§åè¿æ ·çæ¦å¿µï¼ä½ä¸ºäºè½mountå°Linuxç³»ç»ï¼ä¹åªå¥½å¨é©±å¨ç¨åºä¸ç¡¬åä¸ä¸ï¼å¨Linuxä¸çFAT32åNTFSååºä¼åç°æéä½æ¯éçï¼æææ件é½æ¯rwxrwxrwxï¼å 为å®ä»¬æ¬æ¥å°±æ²¡æinodeåæéä½çæ¦å¿µï¼è¿æ¯ç¡¬ååºæ¥çã
3.7 æè½½æ件系ç»
linuxç³»ç»ä¸æ¯ä¸ªååºé½æ¯ä¸ä¸ªæ件系ç»ï¼é½æèªå·±çç®å½å±æ¬¡ç»æãlinuxä¼å°è¿äºåå±ä¸åååºçãåç¬çæ件系ç»æä¸å®çæ¹å¼å½¢æä¸ä¸ªç³»ç»çæ»çç®å½å±æ¬¡ç»æãè¿éæ说çâæä¸å®æ¹å¼âå°±æ¯æçæè½½ã
å°ä¸ä¸ªæ件系ç»ç顶å±ç®å½æå°å¦ä¸ä¸ªæ件系ç»çåç®å½ä¸ï¼ä½¿å®ä»¬æ为ä¸ä¸ªæ´ä½ï¼ç§°ä¸ºæè½½ãæ该åç®å½ç§°ä¸ºæè½½ç¹.
å°ä¸ä¸ªæ件系ç»ç顶å±ç®å½æå°å¦ä¸ä¸ªæ件系ç»çåç®å½ä¸ï¼ä½¿å®ä»¬æ为ä¸ä¸ªæ´ä½ï¼ç§°ä¸ºæè½½ãæ该åç®å½ç§°ä¸ºæè½½ç¹.
ä¾å¦è¦è¯»å硬çä¸çä¸ä¸ªæ ¼å¼å好çååºãå çæ软件ç设å¤æ¶ï¼å¿ é¡»å æè¿äºè®¾å¤å¯¹åºå°æ个ç®å½ä¸ï¼èè¿ä¸ªç®å½å°±ç§°ä¸ºâæè½½ç¹ï¼mount pointï¼âï¼è¿æ ·æå¯ä»¥è¯»åè¿äºè®¾å¤ãæè½½åå°ç©çååºç»èå±è½æï¼ç¨æ·åªæç»ä¸çé»è¾æ¦å¿µãææçä¸è¥¿é½æ¯æ件ã
注æï¼
1ãæè½½ç¹å¿ é¡»æ¯ä¸ä¸ªç®å½ã
2ãä¸ä¸ªååºæè½½å¨ä¸ä¸ªå·²åå¨çç®å½ä¸ï¼è¿ä¸ªç®å½å¯ä»¥ä¸ä¸ºç©ºï¼ä½æè½½åè¿ä¸ªç®å½ä¸ä»¥åçå 容å°ä¸å¯ç¨ã
对äºå ¶ä»æä½ç³»ç»å»ºç«çæ件系ç»çæè½½ä¹æ¯è¿æ ·ãä½æ¯éè¦ç解çæ¯ï¼å çã软çãå ¶ä»æä½ç³»ç»ä½¿ç¨çæ件系ç»çæ ¼å¼ä¸linux使ç¨çæ件系ç»æ ¼å¼æ¯ä¸ä¸æ ·çãå çæ¯ISO9660ï¼è½¯çæ¯fat16æext2ï¼windows NTæ¯fat16ãNTFSï¼windows98æ¯fat16ãfat32ï¼windows2000åwindowsXPæ¯fat16ãfat32ã NTFSãæè½½åè¦äºè§£linuxæ¯å¦æ¯ææè¦æè½½çæ件系ç»æ ¼å¼ã
æè½½æ¶ä½¿ç¨mountå½ä»¤ï¼å ¶æ ¼å¼ï¼mount [-åæ°] [设å¤å称] [æè½½ç¹]
å ¶ä¸å¸¸ç¨çåæ°æ
-t æå®è®¾å¤çæ件系ç»ç±»åï¼ä»ä¹æå°çæ件类åï¼
-o æå®æè½½æ件系ç»æ¶çé项ãæäºä¹å¯ç¨å¨/etc/fstabä¸ã常ç¨çæ
codepage=XXX 代ç 页
iocharset=XXX å符é ro 以åªè¯»æ¹å¼æè½½ rw 以读åæ¹å¼æè½½ nouser 使ä¸è¬ç¨æ·æ æ³æè½½ user å¯ä»¥è®©ä¸è¬ç¨æ·æ载设å¤
ä¾å¦ï¼
1ãæè½½windowsçæ件系ç»ï¼
1ï¼é¦å æ们使ç¨sudo fdisk -læ¥çæè½½ç设å¤ï¼ä¾å¦æä¸é¢æï¼/dev/hda5
2ï¼mkdirå建ä¸ä¸ªç®å½ï¼è¿éçç®å½æ¯ä½ä¸ºæå¨ç®å½ï¼å°±æ¯ä½ è¦æEçæå°è¿ä¸ªç®å½ä¸ï¼mk /mnt/winc
3ï¼windowsålinux使ç¨çä¸æ¯ä¸ä¸ªæ件系ç»ï¼ä¸è¬æ åµä¸linuxä¸æè½½windowsæ件系ç»ï¼æ以è¦ä½ æå¨mountï¼
mount -t vfat /dev/hda5 /mnt/winc ï¼ -t vfatæåºè¿éçæ件系ç»fat32ï¼
ç°å¨å°±å¯ä»¥è¿å ¥/mnt/wincçç®å½è¯»åè¿äºæ件äºã
2ãæè½½å çï¼# mk /mnt/cdrom
3ãèææºå ±äº«æ件夹ï¼ä¾å¦å¨VirtualBoxä¸ï¼ä¸»æºæ¯Windowsï¼Ubuntuæ¯Guestãå ±åä¸æ¥ï¼
1). é¦å è¦å®è£ èæçµèå·¥å ·å ï¼å¨VirtualBoxçèåééæ©â设å¤â->âå®è£ èæçµèå·¥å ·å âï¼ä½ ä¼åç°å¨Ubuntuæ¡é¢ä¸å¤åºä¸ä¸ªå çå¾æ ï¼è¿å¼ å çé»è®¤è¢«èªå¨å è½½å°äºæ件夹/media/cdom0ï¼èä¸/cdromèªå¨æåè¿ä¸ªæ件夹ãé»è®¤è®¾ç½®ä¸æ件管çå¨ä¼èªå¨æå¼è¿å¼ å çï¼å¯ä»¥çå°éé¢æ个âVBoxLinuxAdditions.runâæ件ãæå¼ä¸ä¸ªå½ä»¤è¡ç»ç«¯ï¼ä¾æ¬¡è¾å ¥âcd /cdromâåâsudo sh ./VBoxLinuxAdditions.runâï¼ä¸å«åå¼å·ï¼å¼å§å®è£ å·¥å ·å ãå®è£ å®æ¯ï¼ä¼ç¨è±ææ示è¦éå¯Ubuntuï¼å»ºè®®ç«å»éå¯ãéå¯åï¼æ¯è¾ææ¾çååæ¯é¼ æ æ¯å ±äº«æ¨¡å¼ï¼å¹¶ä¸åªè´´æ¿ä¹åWindowså ±äº«äºãå¦ææè¿äºååï¼è¯´æèæçµèå·¥å ·å å·²ç»è£ æåã
2). ä¸ä¸æ¥è®¾ç½®å ±äº«æ件夹ã
å¨å ±äº«æ件夹设置çªå£ä¸ï¼åå»å³ä¾§çâæ·»å ä¸ä¸ªå ±äº«æ件夹âï¼è·¯å¾éæ©ä½ æ³è¦å ±äº«çWindowsæ件夹ï¼å ±äº«åä»»åä¸ä¸ªèªå·±å欢çï¼æ¯å¦âmyshareâï¼é项read-onlyæ¯ææ¯å¦åªå 许ubuntu读è¿ä¸ªæ件夹ï¼è¯·æ ¹æ®éè¦éæ©è¿ä¸ªé项ã
3). å¨ubuntuä¸æè½½è¿ä¸ªå ±äº«æ件夹:sudo mount -t vboxsf myshare /media/share
å ¶ä¸âmyshareâæ¯ä¹ååçå ±äº«æ件夹çååï¼â/media/shareâæ¯è¦æè½½å°çç®æ æ件.
3.7.1 èªå¨æè½½windowsååº
æ¯æ¬¡å¼æºè®¿é®windowsååºé½è¦è¿è¡mountå½ä»¤æ¾ç¶å¤ªç¦çï¼ä¸ºä»ä¹è®¿é®å ¶ä»çlinuxååºä¸ç¨ä½¿ç¨mountå½ä»¤å¢ï¼
å ¶å®ï¼æ¯æ¬¡å¼æºæ¶ï¼linuxèªå¨å°éè¦æè½½çlinuxååºæè½½ä¸äºãé£ä¹æ们æ¯ä¸æ¯å¯ä»¥è®¾å®è®©linuxå¨å¯å¨çæ¶åä¹æè½½æ们å¸ææè½½çååºï¼å¦windowsååºï¼ä»¥å®ç°æ件系ç»çèªå¨æè½½å¢ï¼
è¿æ¯å®å ¨å¯ä»¥çãå¨/etcç®å½ä¸æ个fstabæ件ï¼å®éé¢ååºäºlinuxå¼æºæ¶èªå¨æè½½çæ件系ç»çå表ãæç/etc/fstabæ件å¦ä¸ï¼
ã/dev/hda2 / ext3 defaults 1 1 ãã
ã/dev/hda1 /boot ext3 defaults 1 2 ãã
ãnone /dev/pts devpts gid=5,mode=620 0 0 ãã
ãnone /proc proc defaults 0 0 ãã
ãnone /dev/shm tmpfs defaults 0 0 ãã
ã/dev/hda3 swap swap defaults 0 0 ãã
ã/dev/cdrom /mnt/cdrom iso9660 noauto,codepage=936,iocharset=gb2312 0 0 ãã
ã/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0 ãã
ã/dev/hdb1 /mnt/winc vfat defaults,codepage=936,iocharset=cp936 0 0 ãã
ã/dev/hda5 /mnt/wind vfat defaults,codepage=936,iocharset=cp936 0 0
å¨/etc/fstabæ件éï¼ç¬¬ä¸åæ¯æè½½çæ件系ç»ç设å¤åï¼ç¬¬äºåæ¯æè½½ç¹ï¼ç¬¬ä¸åæ¯æè½½çæ件系ç»ç±»åï¼ç¬¬ååæ¯æè½½çé项ï¼é项é´ç¨éå·åéã第äºå åä¸ç¥éæ¯ä»ä¹ææï¼è¿æé«ææç¹ã
å¨æå两è¡æ¯ææ工添å çwindowsä¸çCï¼Dçï¼å äºcodepage=936åiocharset=cp936åæ°ä»¥æ¯æä¸ææ件åãåæ°defaultså®é ä¸å å«äºä¸ç»é»è®¤åæ°ï¼
rw 以å¯è¯»å模å¼æè½½
suid å¼å¯ç¨æ·IDå群ç»ID设置ä½
dev å¯è§£è¯»æ件系ç»ä¸çå符æåºå设å¤
exec å¯æ§è¡äºè¿å¶æ件
auto èªå¨æè½½
nouser 使ä¸è¬ç¨æ·æ æ³æè½½
async 以éåæ¥æ¹å¼æ§è¡æ件系ç»çè¾å ¥è¾åºæä½
大家å¯ä»¥çå°å¨è¿ä¸ªå表éï¼å 驱å软驱æ¯ä¸èªå¨æè½½çï¼åæ°è®¾ç½®ä¸ºnoautoãï¼å¦æä½ éè¦è®¾æèªå¨æè½½ï¼ä½ è¦ç¡®ä¿æ¯æ¬¡å¼æºæ¶ä½ çå 驱å软驱éé½è¦æçï¼åµåµã)
3.8 .软è¿æ¥ã硬é¾æ¥
å¯ä»¥ç¨lnå½ä»¤å¯¹ä¸ä¸ªå·²ç»åå¨çæ件å建ç«ä¸ä¸ªæ°çè¿æ¥ï¼èä¸å¤å¶æ件çå 容ãè¿æ¥æ软è¿æ¥å硬è¿æ¥ä¹åï¼è½¯è¿æ¥åå«ç¬¦å·è¿æ¥ãå®ä»¬åèªçç¹ç¹æ¯ï¼
硬è¿æ¥ï¼æ¯ç»æ件ä¸ä¸ªå¯æ¬ï¼åæ件ååè¿æ¥æ件åé½æåç¸åçç©çå°åãç®å½ä¸è½æ硬è¿æ¥ï¼ç¡¬è¿æ¥ä¸è½è·¨è¶æ件系ç»ï¼ä¸è½è·¨è¶ä¸åçååºï¼æ件å¨ç£çä¸åªæä¸ä¸ªæ·è´ï¼èç硬ç空é´ï¼
ä¿®æ¹å ¶ä¸ä¸ä¸ªï¼ä¸å ¶è¿æ¥çæ件åæ¶è¢«ä¿®æ¹ãå¦æå é¤å ¶ä¸ä»»æä¸ä¸ªå ¶ä½çæ件å°ä¸åå½±åã
ç±äºå é¤æ件è¦å¨åä¸ä¸ªç´¢å¼èç¹å±äºå¯ä¸çè¿æ¥æ¶æè½æåï¼å æ¤å¯ä»¥é²æ¢ä¸å¿ è¦ç误å é¤ã
符å·è¿æ¥ï¼è½¯è¿æ¥ï¼ï¼ç¨ln -så½ä»¤å»ºç«æ件ç符å·è¿æ¥ç¬¦å·è¿æ¥æ¯linuxç¹æ®æ件çä¸ç§ï¼ä½ä¸ºä¸ä¸ªæ件ï¼å®çæ°æ®æ¯å®æè¿æ¥çæ件çè·¯å¾åã类似windowsä¸çå¿«æ·æ¹å¼ã
å½ç¶å é¤è¿ä¸ªè¿æ¥ï¼ä¹ä¸ä¼å½±åå°æºæ件ï¼ä½å¯¹è¿æ¥æ件ç使ç¨ãå¼ç¨é½æ¯ç´æ¥è°ç¨æºæ件çã
å ·ä½å ³ç³»å¯ä»¥çä¸å¾ï¼
ä»å¾ä¸å¯ä»¥çåºç¡¬é¾æ¥å软é¾æ¥çåºå«ï¼
1ï¼ç¡¬é¾æ¥åæ件åæ°æ件çinodeç¼å·ä¸è´ãè软é¾æ¥ä¸ä¸æ ·ã
2ï¼å¯¹åæ件å é¤ï¼ä¼å¯¼è´è½¯é¾æ¥ä¸å¯ç¨ï¼è硬é¾æ¥ä¸åå½±åã
3ï¼å¯¹åæ件çä¿®æ¹ï¼è½¯ã硬é¾æ¥æ件å 容ä¹ä¸æ ·çä¿®æ¹ï¼å 为é½æ¯æååä¸ä¸ªæ件å 容çã
3.9.æ件ç®å½ç®¡çå½ä»¤
ç£çåæä»¶ç©ºé´ ï¼fdisk df du
æ件ç®å½ä¸ç®¡çï¼cd pwd mkdir rmdir ls cp rm mv
æ¥çæ件å 容 catãtacãmoreãlessãhead ãtail
æ件ç®å½ä¸æé ï¼chmod chown chgrp umask
æ件æ¥æ¾ï¼whichãwhereisãlocateãfindãfind
4ãlinux åºç¨
æ åçLinuxç³»ç»ä¸è¬é½æä¸å¥é½æ称为åºç¨ç¨åºçç¨åºéï¼å®å æ¬ææ¬ç¼è¾å¨ãç¼ç¨è¯è¨ãX Windowãåå ¬å¥ä»¶ãInternetå·¥å ·åæ°æ®åºçã
5ãlinuxå æ ¸åæ°ä¼å
å æ ¸åæ°æ¯ç¨æ·åç³»ç»å æ ¸ä¹é´äº¤äºçä¸ä¸ªæ¥å£ï¼éè¿è¿ä¸ªæ¥å£ï¼ç¨æ·å¯ä»¥å¨ç³»ç»è¿è¡çåæ¶å¨ææ´æ°å æ ¸é ç½®ï¼èè¿äºå æ ¸åæ°æ¯éè¿Linux Procæ件系ç»åå¨çãå æ¤ï¼å¯ä»¥éè¿è°æ´Procæ件系ç»è¾¾å°ä¼åLinuxæ§è½çç®çã
æ¥èªï¼çå®çå½å®¿-CSDNå客