2.46k likes | 2.72k Views
ساختار فایل ها (ذخیره و بازیابی اطلاعات) تهیه کننده : جعفر پورامینی منبع: سیستم و ساختار فایل مولف: زولیک تعداد واحد:3 www.darage1web.gigfa.com. فصل اول. آشنایی با طراحی و مشخصات ساختار فایل ها. هدف کتاب.
E N D
ساختار فایل ها (ذخیره و بازیابی اطلاعات)تهیه کننده : جعفر پورامینی منبع: سیستم و ساختار فایل مولف: زولیکتعداد واحد:3www.darage1web.gigfa.com
فصل اول آشنایی با طراحی و مشخصات ساختار فایل ها
هدف کتاب • یافتن راههایی برای به حداقل رساندن دستیابی به دیسک، برای فایل هایی است که اندازه و محتویات آنها تغییر می کند. • ساختار فایل ترکیبی از نحوه نمایش داده ها در فایل ها و عملیات لازم برای دستیابی به داده ها است • در حالت ایده آل، کسب اطلاعات مورد نظر با یک دسترسی • در صورتی که امکان پذیر نیست با حداقل دسترسی • به حداکثر رساندن احتمال وجود اطلاعات مورد نظر در حافظه
عوامل موثر در طراحی ساختار فایل • شرایط خاص دیسک ها این الزام را به وجود می آورد که ساختارهای ویژه ای برای ذخیره و بازیابی داده در آنها توسعه دهیم تا در حد امکان مشکل های کار با دیسک را کاهش دهیم • زمان دستیابی نسبتا کم دیسک ها • ظرفیت بالای آنها • حفظ اطلاعات پس از قطع جریان برق
تاریخچه مختصری درباره طراحی ساختار فایل • دستیابی ترتیبی (فایل ها بر روی نوار) (مرتبه زمانی n) • درخت دودویی AVL (مرتبه زمانی log d) • درخت B • درخت B+:ترکیب درخت B و لیست پیوندی • دستیابی مستقیم
کیت ابزار مفهومی: مواد ساختار فایل • ابزارهایی که برای حل مشکلات مشابه بکار گرفته می شوند • بافرها، بلوکها و باکتها: کاهش تعداد دستیابی به دیسک
فصل دوم عملیات مهم پردازش فایل
فایلهای فیزیکی و منطقی فایلها همان مجموعه ای از بایت ها هستند که در یک دیسک به صورت فیزیکی در کنار یکدیگر قرار گرفته اند. از دیدگاه برنامه کاربردی ، فایل تعریف دیگری دارد . استفاده از فایلهای منطقی به برنامه این امکان را می دهد تا اعمال اجرا شده روی یک فایل را توصیف کند؛ بدون اینکه بداند چه فایل فیزیکی را مورد استفاده قرار می دهد. سپس میتوان برنامه را برای پردازش هر یک از چند فایل متفاوت که دارای ساختاری یکسان هستند به کار برد.
باز کردن فایل ها معرفی تابع OPEN FD=OPEN(FILENAME,FLAGS[,PMODE]) • FD:توصیف کننده فایل. • FILENAME:یک رشته کاراکتری حاوی نام فایل فیزیکی. • FLAGS:عملکرد تابع OPEN را کنترل کرده وتععیین می کند که فایل موجود را برای خواندن یا نوشتن باز می کند یا خیر. • PMODE:حالت محافظت فایل را بر می گرداند.
بستن فایل ها • هنگامی که برنامه ای به صورت عادی پایان می یابد، فایل ها معمولا به طور خودکار بسته می شوند. • در نتیجه اجرای یک دستور بستن در داخل برنامه فقط برای محافظت آن در برابر اتلاف داده ها در صورت توقف برنامه و آزاد کردن نام فایل های منطقی برای استفاده مجدد می باشد.
خواندن و نوشتن READ(SOURCE_FILE,DESTINATION_ADDR,SIZE) WRITE(DESTINATION_FILE,SOURCE_ADDR,SIZE) • DESTINATION: نام فایل مقصد • SOURCE: نام فایل منبع • SIZE: تعداد بایتهایی که باید خوانده یا نوشته شود
پیگرد: عمل انتقال مستقیم به یک موقعیت معین در فایل را پیگرد می گویند. SEEK(SOURCE_FILE,OFFSET) SOURCE_FILE:نام فایل منطقی که در آن جستجو صورت می گیرد OFFSET:میزان حرکت اشاره گر فایل را مشخص می کند
پیگرد با جریان های C POS=FSEEK(FILE,BYTE_OFFSET,ORIGIN) POS: یک مقدار صحیح بزرگ که توسط FSEEK بر گردانده می شود که برابر با موقعیت فعلی اشاره گر است. FILE: توصیف کننده فایلی که FSEEK باید در آن اعمال شود. BYTE_OFFSET: تعداد بایتهایی که باید از مبدا حرکت داده شود.
برنامه نمایش محتویات با استفاده از جریان #INCLUDE<STDIO.H> Main( ) { Char ch ; FILE *file ; Char filename [20] ; Printf (" enter the name of the file") ; //step 1 Gets (filename) ; //step 2 File = fopen (filename, "r") ; //step 3 While (fread(&ch, 1, 1, file) ! = 0) ; //step 4a Fwrite (&ch, 1, 1, student) ; //step 4b Fclose (file) ; //step 5 }
برنامه نمایش محتویات با استفاده از کلاسهای جریان ++ C: #include <fsream.h> main ( ) { char ch ; fstream file ; char file name [20] ; cout << "enter the name of the file: "; //step 1 cin >> filename; //step 2 file . open (filename,ios::in); //step 3 file . unsetf(ios::skipws); while (1) { file >> ch; //step 4a if (file.fail ()) break; cout << ch; //step 4b } file . close (); //step 5 }
ساختار فهرست ها در یونیکس چون هر نام فایل در سیستم یونیکس بخشی از سیستم فایلی است که با ریشه آغاز می شود هر فایل را می توان انحصارا با دادن نام مسیر آن شناسایی کرد. هنگامی که فرمانهایی برای سیستم یونیکس صادر می شود این کار در داخل فهرستی انجام می شود که فهرست جاری نامیده می شود.
نمونهای از فهرست ها در یونیکس BIN USR USR6 DEV BIN LIB ADDBCC KBD TAPE YACC MYDIR LIB CONSOLE LIBS.A LIBM.A ADDF DF
دستگاههای فیزیکی و فایل های منطقی • در یونیکس، فایل مجموعهای از بایتها است • در یونیکس چگونگی و محل ذخیره فایل ها مهم نیست • در یونیکس مهم نیست که فایل ها از کجا می آیند • در یونیکس شکل فیزیکی فایل مهم نیست زیرا نمای منطقی فایل در یونیکس یکی است.
فصل سوم حافظه جانبی و نرم افزار سیستم
تعريف حافظه • هر دستگاهي که بتوان اطلاعات را در آن ذخيره نموده به نحوي که کاربرد در هر لحظه بتواند به اطلاعات مورد نظرش دستيابي پيدا کند حافظه ناميده مي شود.
حافظه انواع دستگاه ها از نظر نوع دستیابی • دستیابی مستقیم (DASD): از طریق آدرس میتوان به طور مستقیم به اطلاعات دسترسی داشت. زمان دسترسی در این حالت برای تمام اطلاعات تقریبا برابر است، مانند هارد دیسکها • دستیابی سری: دستگاههایی که دستیابی ترتیبی را پشتیبانی میکنند. در این حالت برای خواندن یا نوشتن یک قطعه دادهی خاص، باید از تمام دادههای پیش از آن گذر کرد
دیسکها • دیسک های مغناطیسی در اشکال مختلف وجود دارند • دیسک های سخت ظرفیتی بالا با هزینه پایین به ازای هر بیت ارائه می دهند. • دیسک های فلاپی ارزان هستند ولی سرعت آنها کم است و داده های نسبتا کمی را نگهداری می کنند.
انواع حافظه هاي برون ماشيني از نظر تكنولوژي ساخت • چهار تكنولوژي وجود دارد: • تكنولوژي الكترومكانيك • الكترو مغناطيس • تكنولوژي الكترو اپتيك • تكنولوژي الكترومغنااپتيك
سازمان دیسک ها • یک دیسک گردان معمولا از چند صفحه تشکیل شده است، که هر صفحه دو سطح دارد • هر صفحه شامل تعدادی شیار (TRACK) است • اطلاعات در شیارهایدیسک نگهداری می شود • هر شیار غالبا به چند سکتور (SECTOR) تقسیم می شود • سکتور کوچکترین بخشی از دیسک است که قابل آدرس دهی است.
سازمان دیسک ها • شیارهایی که مستقیما در بالا و پایین یکدیگر قرار دارند یک سیلندر را تشکیل میدهند. • بودن حرکت بازو میتوان به همهی اطلاعات روی یک سیلندر دسترسی داشت • حرکت بازو، معمولا کندترین بخش خواندن اطلاعات از روی دیسک است.
جایگاه سیلندروهدهای خواندن ونوشتن
برآورد نیازهای سرعت و ظرفیت ها • ظرفیت شیار=تعداد سکتورها *طول هر سکتور بر حسب بایت • ظرفیت سیلندر=تعداد شیار ها در هر سیلندر*ظرفیت شیار • ظرفیت دیسک=تعداد سیلندرها*ظرفیت سیلندر
سازماندهی شیارها به وسیله سکتورها • سازماندهی بر اساس سکتور • سازماندهی بر اساس بلوکهای سازماندهی شده توسط کاربر
روش های سازمان دهی داده ها بر روی دیسک • بر اساس سکتور • بر اساس بلوک های تعریف شده توسط کار بر
سازمان دهی سکتور ها بر روی یک شیار • سکتور ها بخش های مجاور و با اندازه ثابت از یک شیار باشند(این روش راه خوبی برای در نظر گرفتن فایل به طور منطقی است اما راه خوبی برای نگه داشتن فیزیکی سکتور ها نیست.) • فاصله گذاری میان سکتورها(یعنی بین سکتور هایی که از نظر منطقی مجاورند چند سکتور فاصله می گذارند.)
کلاستر: • کلاستر عبارت از تعداد ثابتی از سکتور های پیوسته است • کلاستر های بزرگ تعداد زیادی از سکتور ها را بدون پیگرد می خوانند. • استفاده از کلاستر های بزرگ در هنگام پردازش ترتیبی فایل به کارایی بیشتر منجر می شود.
پراکندگی طول تمام سکتور های موجود در یک دیسک باید یکسان باشد اما همیشه این تناسب بر قرار نیست .دو شیوه برای مقابله با این روش وجود دارد: • نگهداری یک رکورد در هر سکتور. • قرار دادن رکورد ها به طور متوالی به طوری که بخشی از رکورد در یک سکتور و بخش دیگر آن در سکتور دیگر قرار گیرد.
سازمان دهی شیار ها به کمک بلوک • گاهی شیار ها به سکتور تقسیم نمی شوند بلکه به تعدادی از بلوک ها تقسیم می شوند. • همانند سکتور ها بلوکها را غالبا رکورد های فیزیکی می دانند. • سازمان دهی بلوکها مشکلات پوشایی سکتورها و پراکندگی را ندارد.
زمان دستیابی به دیسک دستیابی به دیسک را می توان به سه عمل فیزیکی متمایز تقسیم کرد: • زمان پیگرد • تاخیر چرخشی • زمان انتقال
تاخیر چرخشی زمان پیگرد
زمان پیگرد • زمان لازم برای انتقال بازوی دستیابی به سیلندر مناسب را زمان پیگرد می گویند
تاخیر چرخشی • زمان لازم برای چرخش دیسک تا سکتور مورد نظر زیر هد خواندن و نوشتن قرار گیرد.
زمان انتقال زمان انتقال از فرمول زیر بدست می آید: زمان انتقال=(تعداد بایت های انتقال یافته/تعداد بایت های روی شیار)*زمان چرخش
تنگنای دیسک راههای مقابله با تنگنای دیسک: • چند بر نامه ای (multiprogramming) • نوار بندی (striping) • موازی گرایی(parallelism)
سازمان دهی داده ها در نوار ها • چون دستیابی به نوار ها به صورت ترتیبی است برای تشخیص موقعیت داده ها نیازی به آدرس نیست
بيت توازن • بيت توازن بخشی از داده ها نيست. بلکه براي بررسي اعتبار داده ها به کار مي رود. اگر از توازن فرد استفاده شود اين بيت در کادرهاي فرد برابر 1 قرار داده مي شود. توازن روج نيز به همین صورت عمل مي کند. ولي در نوارها به ندرت از آن استفاده مي شود.
در نوار دو نوع بيت توازن وجود دارد: • بيت پاريتي عرضي يا کاراکتري • بيت پاريتي طولي • بيت پاريتي عرضي براي هرکاراکتر و بيت پاريتي طولي، براي تعدادي کاراکتر ايجاد مي شود.
نوار گردان ها اختلاف کارایی در میان نوار گردان ها را بر حسب سه کمیت می توان سنجید: • تراکم نوار • سرعت نوار • اندازه شکاف بین بلاک ها
براورد طول نوار مورد نیاز طول فیزیکی یک بلوک از داده ها=b طول شکاف بین بلا ک ها=g تعداد بلاک های داده ها=n
فصای لازم برای نگهداری فایل :s S=n*(b+g)
اندازه بلوک / تراکم نوار=b طول بلوک=b