²Ù×÷ϵͳ¿Î³ÌÉè¼Æʵʩ·½°¸ÊµÑéÖ¸µ¼Êé ÏÂÔر¾ÎÄ

¸öÈËÊÕ¼¯ÕûÀí ½ö¹©²Î¿¼Ñ§Ï°

²Ù×÷ϵͳ¿Î³ÌÉè¼ÆʵÑéÖ¸µ¼Êé

¿Î ³Ì ºÅ£º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