¸öÈËÊÕ¼¯ÕûÀí ½ö¹©²Î¿¼Ñ§Ï°
²Ù×÷ϵͳ¿Î³ÌÉè¼ÆʵÑéÖ¸µ¼Êé
¿Î ³Ì ºÅ£º10110206
ÊÊÓÃרҵ£º¼ÆËã»ú¸÷רҵ
ÖÆ ¶¨ ÈË£º
½Ì ÑÐ ÊÒ£º¼ÆËã»ú¿ÆѧÓë¼¼Êõ½ÌÑÐÊÒ
¼ÆËã»ú¿ÆѧÓëÐÅÏ¢¹¤³ÌѧԺ
2007Äê5Ô²Ù×÷ϵͳ¿Î³ÌÉè¼Æ
¡¾Éè¼ÆÌâÄ¿¡¿
Linux¶þ¼¶ÎļþϵͳÉè¼Æ
¡¾¿ª·¢ÓïÑÔ¼°ÊµÏÖƽ̨»òʵÑé»·¾³¡¿
1 / 20
¸öÈËÊÕ¼¯ÕûÀí ½ö¹©²Î¿¼Ñ§Ï°
C++/VC++
¡¾Éè¼ÆÄ¿µØ¡¿
£¨1£©±¾ÊµÑéµØÄ¿µØÊÇͨ¹ýÒ»¸ö¼òµ¥¶àÓû§ÎļþϵͳµØÉè¼Æ£¬¼ÓÉîÀí½âÎļþϵͳµØÄÚ²¿¹¦ÄܺÍÄÚ²¿ÊµÏÖ.
£¨2£©½áºÏÊý¾Ý½á¹¹¡¢³ÌÐòÉè¼Æ¡¢¼ÆËã»úÔÀíµÈ¿Î³ÌµØ֪ʶ£¬Éè¼ÆÒ»¸ö¶þ¼¶Îļþϵͳ£¬½øÒ»²½Àí½â²Ù×÷ϵͳ.
£¨3£©Í¨¹ý·Ö¶Ôʵ¼ÊÎÊÌâµØ·ÖÎö¡¢Éè¼Æ¡¢±à³ÌʵÏÖ£¬Ìá¸ßѧÉúʵ¼ÊÓ¦Óᢱà³ÌµØÄÜÁ¦
¡¾Éè¼ÆÒªÇó¡¿
Àí½âLinuxµØÎļþϵͳµØ×éÖ¯£»ÕÆÎÕ³£ÓõØÊý¾Ý½á¹¹£»ÏµÍ³²ÉÓÃÁ½¼¶Ä¿Â¼£¬ÆäÖеÚÒ»¼¶¶ÔÓ¦ÓÚÓû§Õ˺ţ¬µÚ¶þ¼¶¶ÔÓ¦ÓÚÓû§ÕʺÅϵØÎļþ;ʹÓÃÎļþÀ´Ä£ÄâÍâ´æ£¬½øÐÐÊý¾Ý½á¹¹Éè¼ÆºÍ²Ù×÷Ëã·¨µØÉè¼Æ£¬ÊµÏÖÒ»¸öÎļþϵͳ²¢ÊµÏÖ»ù±¾µØÎļþ²Ù×÷£¨ÎªÁ˼ò±ãÎļþϵͳ£¬²»¿¼ÂÇÎļþ¹²Ïí£¬Îļþϵͳ°²È«ÒÔ¼°¹ÜµÀÎļþÓëÉ豸ÎļþµÈÌØÊâÄÚÈÝ£©.ÒªÇó£ºb5E2RGbCAP 1¡¢ ¶Ô³ÌÐòµØÿһ²¿·ÖÒªÓÐÏêϸµØÉè¼Æ·ÖÎö˵Ã÷ 2¡¢ ³ÌÐòÖ´ÐеØÿ¸ö²½ÖèÒªÓоßÌåµØÌáʾÄÚÈÝ»òÊä³ö 3¡¢ Ô´´úÂë¸ñʽ¹æ·¶£¬×¢ÊͲ»ÉÙÓÚÈý·ÖÖ®Ò»
4¡¢ Éè¼ÆºÏÊʵزâÊÔÓÃÀý£¬¶ÔµÃµ½µØÔËÐнá¹ûÒªÓзÖÎö£¬ 5¡¢ Éè¼ÆÖÐÓöµ½µØÎÊÌ⣬Éè¼ÆµØÐĵÃÌå»á
6¡¢ Ìá½»ÍêÕû³ÌÐò´úÂë¡¢¿Î³ÌÉè¼Æ±¨¸æ¼°Ïà¹ØÎĵµ
¡¾Éè¼ÆÔÀí¡¿
Ò»£®Íâ´æ¹ÜÀí
ÎļþϵͳÊÇÒ»¸öº¬ÓдóÁ¿µØÎļþ¼°ÆäÊôÐÔ£¬¶ÔÎļþ½øÐвÙ×÷¡¢¹ÜÀíµØÈí¼þ£¬ÒÔ¼°ÏòÓû§ÌṩʹÓÃÎļþµØ½Ó¿ÚµØÒ»¸ö¼¯ºÏ.ÔÚÂß¼ÉÏËüµØ²ã´Î½á¹¹ÊÇÕâÑùµØ£ºp1EanqFDPw Îļþϵͳ½Ó¿Ú ¶Ô¶ÔÏóµØ²Ù×÷ºÍ¹ÜÀíµØÈí¼þ¼¯ºÏ Âß¼Îļþϵͳ »ù±¾I/O¹ÜÀí³ÌÐò£¨Îļþ×é֯ģ¿é£© »ù±¾Îļþϵͳ£¨ÎïÀíI/O²ã£© I/O¿ØÖƲ㣨É豸Çý¶¯³ÌÐò£© ¶ÔÏó¼°ÆäÊôÐÔ˵Ã÷
×÷Ϊ²úÆ·µØ²Ù×÷ϵͳÓи÷×ÔµØÎļþϵͳ.±ÈÈçMSµØWINDOWSϵÁÐʹÓõØÊÇFAT16¡¢FAT32»òNTFSµØÎļþϵͳ¡¢LINUXʹÓõØÊÇEXT2¡¢EXT3ÎļþϵͳµÈµÈ.DXDiTa9E3d ¶þ£®linuxµØEXT2Îļþϵͳ
linuxʹÓÃÒ»¸ö½ÐÐéÄâÎļþϵͳµØ¼¼Êõ´Ó¶ø¿ÉÒÔÖ§³Ö¶à´ï¼¸Ê®Öֵز»Í¬Îļþϵͳ£¬¶øEXT2ÊÇlinux×Ô¼ºµØÎļþϵͳ.ËüÓм¸¸öÖØÒªµØÊý¾Ý½á¹¹£¬Ò»¸öÊdz¬¼¶¿é£¬ÓÃÀ´ÃèÊöĿ¼ºÍÎļþÔÚ´ÅÅÌÉϵØÎïÀíλÖá¢Îļþ´óСºÍ½á¹¹µÈÐÅÏ¢.inodeÒ²ÊÇÒ»¸öÖØÒªµØÊý¾Ý½á¹¹.ÎļþϵͳÖеØÿ¸öĿ¼ºÍÎļþ¾ùÓÉÒ»¸öinodeÃèÊö.Ëü°üº¬£ºÎļþģʽ£¨ÀàÐͺʹæȡȨÏÞ£©¡¢Êý¾Ý¿é
2 / 20
¸öÈËÊÕ¼¯ÕûÀí ½ö¹©²Î¿¼Ñ§Ï°
λÖõÈÐÅÏ¢.Èç¹ûÏ£ÍûÏêϸѧϰEXT2Îļþϵͳ¿ÉÒԲο´linuxÄں˴úÂëinclude/linux/ext2_fs.h¡¢include/linux/ext2_fs_sb.hµÈÎļþ.RTCrpUDGiT Ò»¸öÎļþϵͳ³ýÁËÖØÒªµØÊý¾Ý½á¹¹Ö®Í⣬»¹±ØÐëΪÓû§ÌṩÓÐЧµØ½Ó¿Ú²Ù×÷.±ÈÈçEXT2ÌṩµØOPEN/CLOSE½Ó¿Ú²Ù×÷.5PCzVD7HxA Èý£®ÓÃÄÚ´æÀ´Ä£ÄâÍâ´æ
ÕæÕýµØÎļþϵͳ¶ÔÍâ´æ½øÐйÜÀí£¬Éæ¼°µ½Ðí¶àÓ²¼þ¡¢É豸¹ÜÀí·½ÃæµØµ×²ã¼¼Êõ£¬Ò»·½ÃæÕâЩ¼¼Êõ²»ÊôÓÚ²Ù×÷ϵͳºËÐÄÄÚÈÝ£¬Ò»·½Ãæ¹ý¶àµØÄÚÈݲ»ÃâÔì³ÉʵÑéÕ߹˴Ëʧ±Ë£¬ËùÒÔÕâÀïÍƼöÒ»ÖÖʹÓÃÄÚ´æÀ´Ä£ÄâÍâ´æµØ·½Ê½£¬¿ÉÒÔÌø¹ýÕâЩӲ¼þ¼¼Êõ¶øÖ±½Ó°Ñ¾«Á¦·ÅÔÚÊý¾Ý½á¹¹Éè¼ÆºÍ²Ù×÷Ëã·¨Éè¼ÆÉÏÃæ.jLBHrnAILg ¼Ù¶¨pInodeÊÇÒ»¸öÖ¸Ïòinode½á¹¹µØÖ¸Õ룬¶øÇÒËüÒѾ·ÅÈëµØÐèÒª·ÅÈëµØÊýÖµÁË£¬ÏÖÔÚÐèÒª½«ÆäдÈëµ½Ìض¨Î»ÖÃ.¿ÉÓÃÈçÏ´úÂ룺xHAQX74J0X ¡¡
fd=fopen(¡°filesystem¡±,¡±w+b¡±)£» //fdÊÇFILEÖ¸ÕëÀàÐÍ£¬w±ãÊÇд·½
ʽ£¬b±íʾ¶þ½øÖÆLDAYtRyKfE fseek(fd,specific_area,SEEK_SET)£»// fdÊÇÎļþÖ¸Õ룻specific_areaΪÕûÐΣ¬
Zzz6ZB2Ltk // ΪÐèÒªÈëpInodeµØλÖÃ
fwrite(pInode,1,sizeof(inode),fd)£» // дÈëpInodeÐÅÏ¢
¡¾Éè¼ÆÄÚÈÝ¡¿ Ò»¡¢ÈÎÎñ
ΪLinuxϵͳÉè¼ÆÒ»¸ö¼òµ¥µØ¶þ¼¶Îļþϵͳ.ÒªÇó×öµ½ÒÔϼ¸µã£º 1.¿ÉÒÔʵÏÖÏÂÁм¸ÌõÃüÁ loginÓû§µÇ¼
dir ÁÐĿ¼ create´´½¨Îļþ
delete ɾ³ýÎļþ open ´ò¿ªÎļþ close ¹Ø±ÕÎļþ read ¶ÁÎļþ write дÎļþ cd ½ø³öĿ¼
2£®ÁÐĿ¼ʱҪÁгöÎļþÃû£¬ÎïÀíµØÖ·£¬±£»¤ÂëºÍÎļþ³¤¶È 3£®Ô´Îļþ¿ÉÒÔ½øÐжÁд±£»¤ ¶þ¡¢³ÌÐòÉè¼Æ 1. Éè¼Æ˼Ïë
±¾Îļþϵͳ²ÉÓÃÁ½¼¶Ä¿Â¼£¬ÆäÖеÚÒ»¼¶¶ÔÓ¦ÓÚÓû§Õ˺ţ¬µÚ¶þ¼¶¶ÔÓ¦ÓÚÓû§ÕʺÅϵØÎļþ.ÁíÍ⣬ΪÁ˼ò±ãÎļþϵͳδ¿¼ÂÇÎļþ¹²Ïí£¬Îļþϵͳ°²È«ÒÔ¼°¹ÜµÀÎļþÓëÉ豸ÎļþµÈÌØÊâÄÚÈÝ.dvzfvkwMI1 Ê×ÏÈӦȷ¶¨ÎļþϵͳµØÊý¾Ý½á¹¹£ºÖ÷Ŀ¼¡¢×ÓĿ¼¼°»î¶¯ÎļþµÈ.Ö÷Ŀ¼ºÍ×ÓĿ¼¶¼ÒÔÎļþµØÐÎʽ´æ·ÅÓÚ´ÅÅÌ£¬ÕâÑù±ãÓÚ²éÕÒºÍÐÞ¸Ä.rqyn14ZNXI 3 / 20
¸öÈËÊÕ¼¯ÕûÀí ½ö¹©²Î¿¼Ñ§Ï°
Óû§´´½¨µØÎļþ£¬¿ÉÒÔ±àºÅ´æ´¢ÓÚ´ÅÅÌÉÏ.È磺file0,file1,file2¡²¢ÒÔ±àºÅ×÷ΪÎïÀíµØÖ·£¬ÔÚĿ¼ÖнøÐеǼÇ.EmxvxOtOco 2. Ö÷ÒªÊý¾Ý½á¹¹ºÍ²¿·Ö´úÂë
²Î¿¼³ÌÐò¼ûÏ£¨±¾³ÌÐòÐèÒªÔÚc:Ͻ¨Ò»¸öÃûΪosfileµØĿ¼¼°Ò»¸öÃûΪfileµØ×ÓĿ¼£©£º
#include\#include\#include\#include\
#define MAXNAME 25 /*the largest length of mfdname,ufdname,filename*/SixE2yXPq5 #define MAXCHILD 50 /*the largest child*/
#define MAX (MAXCHILD*MAXCHILD) /*the size of fpaddrno*/6ewMyirQFL
typedefstruct/*the structure of OSFILE*/
{int fpaddr; /*file physical address*/kavU42VRUs int flength; /*file length*/
int fmode; /*file mode:0-Read Only;1-Write Only;2-Read and Write(default);*/y6v3ALoS89 char fname[MAXNAME]; /*file name*/ } OSFILE;
typedefstruct/*the structure of OSUFD*/
{char ufdname[MAXNAME]; /*ufd name*/
OSFILE ufdfile[MAXCHILD]; /*ufd own file*/ }OSUFD;
typedefstruct/*the structure of OSUFD'LOGIN*/
{char ufdname[MAXNAME]; /*ufd name*/ char ufdpword[8]; /*ufd password*/ } OSUFD_LOGIN;
typedefstruct/*file open mode*/
{int ifopen; /*ifopen:0-close,1-open*/
int openmode; /*0-read only,1-write only,2-read and write,3-initial*/M2ub6vSTnP }OSUFD_OPENMODE;
OSUFD *ufd[MAXCHILD]; /*ufd and ufd own files*/ OSUFD_LOGIN ufd_lp;
int ucount=0; /*the count of mfd's ufds*/
int fcount[MAXCHILD]; /*the count of ufd's files*/0YujCfmUCw int loginsuc=0; /*whether login successfully*/
char username[MAXNAME]; /*record login user's name22*/eUts8ZQVRd 4 / 20