سیستم و ساختار فایل
کارایی سیستم فایل
فایل ساختمند ، یک ساختار دادهای ( ساده یا پیچیده ) ذخیره شده در حافظه خارجی است . اگر تمام اطلاعات در حافظه اصلی ذخیره شود، دستیابی به دادهها طبعاً خیلی سریع میشود . ولی عملاً استفاده از سلسله مراتب حافظهها اجتناب ناپذیر است زمان دستیابی به حافظه اصلی حدود 100000 بار سریعتر از زمان دستیابی به دیسک است . بنابراین از عوامل بسیار موثر در بهبود کارایی سیستم فایل ، زمان دستیابی به دادهها است . اما عوامل دیگری هم وجود دارند، هر چند نهایتاً زمان دستیابی به داده و دفعات دستیابی لازم برای بدست آوردن داده مرود نظر و انجام عملیات روی داده ، تعیین کننده کارایی سیستم است . عوامل مهمتر موثر در کارایی سیستم فایل عبارتند از :
سلسله مراتب حافظهها
پارامترهای ظرفیتی و زمان رسانه(بویژه دیسک )
اندازه بلاک و تکنیک بلاک بندی
لوکالیتی رکوردهای فایل
چگونگی بافرینگ و اندازه و تعداد بافرها
تکنیکها و طرح های بکار رفته در ایجاد و مدیریت فایلها در خود سیستم فایل
تکنیکهای کاهش زمان استوانهجویی و زمان درنگ دورانی
تکنیکهای تسریع پردازش فایل
سیستم فایل کاراتر (مثلا LFS) )
ساختار فایل کاراتر
بافر و بافرینگ
بافر ناحیه است واسط در عملیات ورودی و خروجی و در این ناحیه اقلا یک رکورد ( در حالت فایل بلاک بندی نشده ) و یا اقلا یک بلاک در حالت فایل بلاک بندی شده جای داده میشود و اساسا برای ایجاد هماهنگی بین عملیات پردازنده ورودی/ خروجی و واحد پردازش مرکزی در شرایطی تسریع این عملیات به کار میرود.
در سیستم فایل , بافر معمولا از منطقهای از حافظه اصلی به برنامه فایل پرداز تخصیص داده میشود که به آن منطقه بافر میگویند (و گاه از حافظه نهان استفاده میشود.)
بافرها به سه روش ساخته میشود.
با ایجاد ناحیهای از حافظ در برنامه و با اجرای یک ماکرو که محتوای بافر را با فایلهای تحت پردازش مرتبط میکند(در این حالت برنامهساز خود را ایجاد میکند)
یا اجرای یک ماکرو, که از سیستم در خواست ایجاد بافر میکند.
خود سیستم عامل وقتی که فایل باز میشود , اقدام به ایجاد (ها) میکند و پس از بسته شدن فایل , بافر(ها) را باز پس میگیرد.
چگونگی دستیابی برنامه به محتوای بافر
برنامه به دو صورت میتواند به محتوای بافر دستیابی داشته باشد:
روش موسوم به اسلوب انتقالی
روش موسوم به اسلوب مکان نمایی یا مکان گیری (یا اسلوب تعویض)
در روش اول , رکود از بافر ورودی به ناحیه کاری برنامه انتقال داده میشو و یا از ناحیه کاری به بافر خروجی عمل بلاک بنید و بلاک گشایی توسط سیستم انجام میشود و برنامه به بافر دستیابی ندارد و بافر خاص خود را دارد .(همان ناحیه کاری کاربر)
در این حالت, یک فرمان کانال برای هریک از بافرها وجود دارد و عملیات ورودی /خروجی نمیتوانند هر دو از یک بافر انجام پذیرد و روشن است که کاربر نیاز به ناحیه کاری خاصی دارد . در روش دوم, سیستم مکان بافر حاوی رکورد نظر کاربر را به نحوی به برنامه فایل پرداز مینمایاند, مثلاً از طریق گذاشتن آدرس آن در یک ثبات قرار دادی یا در ناحیه ای تعریف شده توسط برنامه در واقع کاربر از همان بافر به عنوان ناحیه کاری استفاده میکند و عمل بلاک بندی و بلاک گشایی را خون برنام انجام میدهد.
توجه داریم که بکارگیری دو اسلوب انتقالی و مکان نمایی , در هر یک از دو عمل ورودی یا خروجی , یا هر دو امکان پذیر است.
انواع بافرینگ
از نظر تعداد بافرهایی که به عملیات ورودی / خروجی برنامه فایل پرداز تخصیص میدیابد , انواع زیر وجود دارد:
بافرینگ ساده
بافرینگ مضاعف
بافرینگ چند گانه
-----------------------------------------------------------
بافرینگ ساده
در این بافرینگ ,یک بافر در اختیار برنامه فایل پرداز قرار داده میشود . در بافرینگ ساده طبعاً زمان انتظار واحد پردازش مرکزی و اجرای برنامه افزایش مییابد در اثنایی که بافر پر میشود , واحد پردازش مرکزی حالت عاطل دارد . در محیط چند برنامهای میتوان از زمان برای برنامههای دیگر استفاده کرد. میبینیم که در این حالت امکان همروندی عملیات CPU و عملیات پردازشگر ورودی/ خروجی وجود ندارد . البته در اسلوب مکان نمایی , در اسلوب انتقالی چون برنامه بافر خاص خود را دارد و در صورتیکه فایل بلاک بنید نشده باشد, این همروندی تا حدی امکان پذیر است . ضمن اینکه این موضع به نوع رسانه نیز بستگی دارد
بافرینگ مضاعف
با دو بافر , میتوان در اثناء خواندن یک بلاک و انتقال ا، به یک بافر , محتوای بافر دیگر را که پر است , پردازش کرد .
در پردازش فایلها به طور پی در پی و انواع (یعنی تعداد زیادی بلاک خوانده میشوند . ) حتما لازم است دو بافر در اختیار داشته باشیم , و گر نه عملیات نه سریع خواهد بود و نه کارا. الگوریتم کار
بدیهی است زمانی را که واحد پردازش مرکزی برای پردازش محتوای یک بار, مصرف میکند باید کمتر از زمانی باشد که پردازنده ورودی خروجی و کنترل کننده دیسک برای انتقال بلاک به یک بافر لازم دارند
سیستم فایل از دیدگاه ذخیره و بازیابی اطلاعات
تقریباً در تمام کاربردها، استفاده از مفهوم سلسله مراتب حافظهها باری ذخیره سازی اطاعات مورد نیاز اجتناب ناپذیر است . راه رایج باری نگهداری اطلاعات ، ضبط آنها بر رسانه خارجی ، در واحدهایی موسوم به فایل است.
ایجاد و مدیریت فایلها با سیستم فایل است. سیستم فایل خند نرم افزاری است که از چند لایه تشکیل شده است
جزییات درونی و الگوریتمهای عملیاتی این واحد نرم افزاری از نظر برنامه ساز کاربردی نهان است و تنها بعض جنبهها بیرونی آن مورد توجه کاربرد است .
ابتدا به شرح برخی مفاهیم مقدماتی میپردازیم که پیوسته مباحث فایل مطرح میشوند این مفاهیم عبارتند از :
فیلد
رکورد
کلید رکورد
فایل
سیستم فایل
در سیستمهای جدید چندین لایه سخت افزاری و نرم افزاری وجود دارد تا سیستم بتواند با کارایی و انعطاف پذیری بیشتر به در خواست کاربر انتهای پاسخ دهد
هر لایه برای انجام وظایفش ، از لایه پایین تر استفاده میکند و به نوبه خود، خدماتی به لایه بالاتر ارائه میکند. به عنوان مثال ، لایه رویههای کتابخانهای ، دادههای ذخیره شده در فایلهای روی دیسک را در اختیار برنامه کاربردی قرار میدهد در عین حال که میتواند این فایلها را کاملاً از دید برنامه کاربردی (کاربردار )نهان بدارد به گونهای که برنامه کاربردی درگیر جنبههای ذخیره سازی داده نشود (دید کاملا منطقی ) لایه رویه کتابخانهای برای اجرای درخواست کاربر پایان ، خون رویههایی را در سیستم فایل فرا میخواند(مثلا رویههای و...)
سیستم فایل در خواست های لایه بالاتر را به فراخوانهایی به توابعی در سیستم عامل تبدیل میکند تا عملیات ورودی / خروجی فیزیکی انجام شود. سیستم عامل هم یک برنامه کانال را به اجرا در میآورد تا عملیات فیزیکی در محیط دیسک انجام شود.
سیستم فایل از دید کاربر
همانطور که گفته شد ، کاربر انتهایی ،بویژه نابرنامهساز ، در یک محیط کاملاً منطقی و در سطح مجازی عمل میکند و دید خاصی نسبت به سیستم فایل دارد که همان سیستم فایل مجازی است . در واقع کاربرد، این سیستم را نرم افزاری میشناسد که به او امکان میدهد تا فایل خود را ایجاد کند یا ببندد. به فایل خود دستیابی داشته باشد و رکوردها را جستجو کند و مشخص است که کاربر معمولاً درگیر عملیات درونی سیستم فایل نیست ، مگر اینکه خود طرح و تولید کننده این قبیل نرم افزار باشد.
فایل در محیط فیزیکی
فایل دارای تقسیمات در چند سطح است : فیلد ،رکورد ،بلاک ،باکت و... ما در این بحث با توجه به مفهوم اصلی بلاک ، چگونگی نشست فایل روی رسانه (و در این بحث : دیسک) را بررسی میکنیم. روشن است که سیستم فایل باید فضای لازم را به فایل تخصیص دهد . چگونگی نشست فایل در محیط فیزیکی به چگونگی تخصیص فضا به فایل بستگی دارد. در هر حال ، بلاکهای هر فایل باید در بلاکهایی از دیسک جای داده شوند.
فضای حافظه خارجی هم مثل حافظه اصلی ، در اساس به دو روش تخصیص داده میشود:
تخصص پیوسته
تخصیص ناپیوسته
با توجه به این دو نوع کلی تخصیص فضا، میتوان گفت که فایل هم بطور کلی به یکی از دو صورت زیر ذخیره میشود:
نشست پیوسته
نشست ناپیوسته
در زیر این دو نوع نشست رابررسی میکنیم:
نشست پیوسته
در این طرح نشست ،فایل در بلاکهای فیزیکی همجوار (پیوسته) روی دیسک ذخیره میشود.مثلاً در دیسک با بلاکهای فیزیکی 1k بایتی ، یکی 50k بایتی ،50بلاک بهم پیوسته را اشغال میکند.
این طرح نشست دو مزیت مهم دارد:
1-پیاده سازی آن ساده است . با داشتن آدرس اولین بلاک روی دیسک، میتوان به بقیه بلاکها هم دستیابی داشت.
2-کارایی سیستم بالا است زیرا کل فایل را میتوان طی یک عمل واحد از روی دیسک خواند.
اما این طرح معایب قابل توجهی هم دارد از جمله:
1-حداکثر اندازه باید در مرحله ایجاد فایل ، معلوم باشد .
2-بروز پدیده بندبند شدگی در فضای دیسک به یان معنا که جای جای فضای هرز پدید میآید که باید با تکنیک یکپارچه سازی یا فشرده سازی این پدیده را از بین برد .
نشست ناپیوسته
در این طرح نشست ، سیستم تعدادی بلاک ناهمجوار را به فایل تخصیص میدهد. برای پیاده سازی این طرح روشهایی وجود دارد که در زیر بررسی میکنیم.
ایجاد لیست پیوندی مجهز به جدول راهنما
در این روش ، جدولی در حافظه اصلی نگهداری میشود. برای هر بلاک فیزیکی (روی دیسک) یک مدخل در جدول وجود دارد. با مشخص کردن مدخل مربوط به اولین بلاک فایل ، شماره بلاک بعدی فایل در مدخل مربوط به بلاک قبل گذشته میشود.
در این روش ، دستیابی تصادفی سریعتر است (جدول راهنما در حافظه اصلی است).
در اینجا نیز ، با داشتن آدرس اولین بلاک ، میتوان به بلاکهای دیگر هم دستیابی داشت ( در سیستم MS-DOS از این روش استفاده میشود.)
عیب مهم این روش این است که تمام جدول باید در حافظه اصلی مقیم باشد . مثلاً برای دیسکی با 500000بلاک 1k بایتی (M500)، به جدولی با 500000 مدخل، هر یک حداقل 3 بایت نیاز است . در نتیجه خود جدول حداقل M5/1 حافظه اشغال میکد ( در MS-DOS با استفاده از بلاکهای بزرگ k32 بایتی در دیسکهای با ظرفیت بالا ، اندازه جدول کاهش مییابد.)
استفاده از تکنیک گره I) )
در این روش ، برای تعیین اینکه کدام بلاک فیزیکی روی دیسک مربوط به کدام بلاک از یک فایل است . برای هر فایل ، جدول کوچکی به نام I ایجاد میشود. در این جدول صفات خاصه فایل و آدرس بلاکهای فیزیکی فایل قرار دارد . اگر فایل کوچک باشد همین گره I کفایت میکند. اما برای فایلهای بزرگ ، در مدخلی از این گره ، آدرس بلاکی از دیسک قرار میگیرد که حاوی آدرس فیزیکی بلاکهای دیگر فایل است . اگر باز هم فایل بزرگتر باشد . مدخل دیگری ایجاد میشود و..(این روش در سیستم یونیکس استفاده شده است )
تخصیص فضای ناپیوسته البته مطلوبتر است ، زیرا علاوه بر مزایایی که دارد، معمولا یافتن یک فضای یکپارچه روی دیسک دشوار است ، حال آنکه یافتن فضای خالی کوچکتر، معمولا امکان پذیر است .
نشست فایل بطور ناپیوسته حتی ممکن است روی چند دیسک ( آرایهای از دیسکها) باشد، به بیان دیگر فایل روی چند نوع دیسک توزیع شده باشد به چنین فایلی ، فایل توزیع شده یا فایل چند پاره یا اوراق شده گفته میشود. البته تکنیک اوراق کردن در سطوح مختلف پیاده سازی میشود(سطح کاراکتر، رکورد ،بلاک و ..)مثلا در سطح کاراکتر ، بیتهایش را روی یک دیسک از یک آرایه هشت دیسکی پخش میکنند.
ملاحظاتی در تخصیص فضا به فایل
از مسائل مهمی که در هر سیستم فایل باید به آن بپردازد، تخصیص فضا به فایل است که دیدیم . در اینجا ملاحظاتی چند در این باره را مطرح میکنیم.
1. نکات مهم در تخصیص فضای ذخیره سازی به فایلها ، اندازه واحدی است که بر اساس آن تخصیص صورت میگیرد . منظور این است که آیا مثلا به واحد سکتور حافظه خارجی اختصاص داده شود، یا به واحد شیار ،یا به واحد خوشه و یا احیاناً به واحد استوانه
روشن است که تخصیص مثلا 93/2 شیار به یک فایل کار عبثی است زیرا7% از ظرفیت باقیمانده شیار سوم قابل تخصیص به هیچ فایل دیگر نیست .
---
2. نکته اساسی دیگر این است که آیا یک فایل روی واحدهای پیوسته و همجوار تخصیص ، ذخیره میشود؟ (هرچند به نظر میرسد که معمولاً چنین است ، ولی میتوان چنین نباشد ) اگر واحد تخصیص شیار باشد ، فایل روی شیارهای یک استوانه خواهد نشست و لذا قبل از تمام شدن شیارها یک استوانه ، نباید فایل را روی استوانه دیگر ذخیره کرد . اگر ذخیره سازی فایل روی شیارهای یک استوانه صورت نگیرد ، معنایش این است که فایل را میتوان روی شیارهایی از رسانه (بدون رعایت همجواری آنها ) ذخیره کرد و فضای اشغال شده توسط فایل ، حالت گسسته (برخلاف پیوسته ) خواهد داشت و مکان یابی رکوردهای فایل ، طبعا دشوارتر خواهد شد .
-3.نکته دیگر تفاوت دید برنامه فایل پرداز و سیستم فایل از فایل است . برنامه فایل پرداز ، در پردازش ترتیبی ، فایل را به صورت یک دنباله خطی از رکوردهای منطقی میبیند که با هم ، همجواری منطقی دارند ، حال آنکه از نظر سیستم فایل ، لزوما چنین نیست .
4.اگر فایل به طور پیوسته روی واحدهای تخصیص (سکتور ، شیار خوشه یا استوانه ) ذخیره شود، سیاست فایل ، برای مکان یابی یک رکورد ، کافیست آدرس آغازین فایل ، طول رکورد منطقی و طول رکورد فیزیکی را بداند (البته با داشتن آدرس نسبی رکورد نسبت به آغاز فایل)
5.اگر فایل به طور پیوست روی واحدهای تخصیص ذخیره نشود، یافتن مکان یک رکورد دلخواه، تنها با داشتن آدرس آغاز فایل امکان پذیری نیست و نیاز به ساختار دادهای خاصی است . مثلا یک جدول یا فایل شاخص ، این شاخصها باید به نحوی آدرس هر رکورد را به دست دهند.
6.وقتی که اندازه فایل از پیش مشخص باشد ،میتوان واحدهای پیوست دیسک را به آن تخصیص داد، حتی اگر تمامی دادههای فایل را در لود اولیه نداشته باشیم . اما اگر چنین نباشد ، این کار عملا ناممکن است . البته تخصیص واحدهای پیوسته ، به فایل انعطاف پذیری کمتری دارد زیرا از پیش باید ماکزیمم اندازه فایل را دانست . از طرف دیگر ، پیاده سازی چنین فایلی از پیچیدگی کمتری نیز برخوردار است . توجه داریم ، هم تخصیص پیوسته وهم تخصیص ناپیوسته را میتوان در ذخیره سازی فایلهای با ساختار ترتیبی و غیر ترتیبی (مثلا مستقیم) به کار برد.
7. برای تخصیص فضا به یک فایل ، سیستم فایل باید جدولی داشته باشد که در آن بتواند، وضعیت رسانه ذخیره سازی از نظر میزان فضاهای آزاد و اشغال و آدرس آنها را روی دیسک ، مشخص کند .
8. هرچه اندازه واحد تخصیص فضا به فایلها بزرگتر باشد ، میزان حافظه هرز روی دیسک بیشتر خواهد بود . وقتی که واحد تخصیص مثلا استوانه باشد ، با توجه به اندازه فایل ، این میزان بیشتر از حالتی خواهد بود که واحد تخصیص شیار باشد.
9.اگر اندازه پیش بینی شده برای فایل، کوچک باشد ، انتخاب واحد برگ تخصیص ،کارآ نخواهدبود.