Virtual File System(مخفف VFS) یک ساب سیستم مهم در Keel لینوکس هست که لایه بین filesystem و برنامه های user-space رو تشکیل میده. و درواقع همه filesystem ها، با تکیه بر VFS می تونن شناسایی بشن و تبادل اطلاعات کنن... همین مسئله، برنامه های user-space رو قادر کرده تا توسط دستورات موجود در VFS برای خواندن و نوشتن در filesystem های گوناگون اقدام کنن:
![[تصویر: vfs.gif]](http://bayanbox.ir/view/2594336172025076206/vfs.gif)
نکته: در حالت معمول، زمانی که سیستم در حال بوت شدن هست، بیشتر filesystem ها init میشن و خودشون رو توسط VFS ثبت می کنن. بعضی از این filesystem ها بصورت built-in در داخل Keel تعبیه شدن و بعضی دیگر بصورت Loadable Keel Module... البته این filesystem های LKM فقط زمانی Load میشن که سیستم بهشون نیاز داشته باشن... مثلا وقتی که دیسک FAT به داخل دستگاه میره و mount میشه.
امروزه به لطف VFS،اfilesystem های جدید و device های مختلف براحتی می تونن راهشونو در لینوکس پیدا کنن; و برنامه ها هم نیازی به نوشته و کامپایل شدن مجدد ندارن... به این صورت که طرف Abstraction layer در VFS، توسط تعریف اینترفیس های اولیه و ساختمانهای داده ای کار می کنه که همه filesystem ها و برنامه ها ازش پیروی می کنن و طرف filesystem هم توسط تعریف رفتار و عملکرد استانداردش، با Abstraction layer در VFS ارتباط برقرار میکنه.
بنابراین از اونجایی که همه filesystem ها قادرن با فایل و دایرکتوری کار کنن، عملیات حذف، ساخت و جابه جایی انجام بدن و حتی خروجی و ورودیشون رو با VFS منطبق بدن، میشه گفت همه filesystem های disk-based یکی هستن!
نکته: در Keel هیچ چیزی نیازی نداره تا از زیر و بم filesystem ها مطلع باشه، بغیر از VFS و خود filesystem.
مثال C استاندارد:
کد:
write(int fileHandler, void *buff, int len)
![[تصویر: c-write.png]](http://bayanbox.ir/view/6155548104017027773/c-write.png)
کد:
Robert Love: People often miss this, or even deny it, but there are many examples of object-oriented programming in the Keel. Although the Keel developers may shun C++ and other explicitly object-oriented languages, thinking in terms of objects is often useful. The VFS is a good example of how to do clean and efficient OOP in C, which is a language that lacks any OOP constructs.
در انتها لازمه بگم دو ساختمان استاندارد دیگری هم وجود دارن که Keel از اونها برای مدیریت داده های مربوط به filesystem ها استفاده میکنه... ولی خارج از بحث VFS هستن پس ما کاری باهاشون نداریم.
مراجع:
https://keel.org/doc/Documentation/
http://tldp.org/LDP/tlk/tlk-toc.html
Linux Keel Development
http://lxr.free-electrons.com/source/Doc...ms/vfs.txt
دکتر مصطفی چمران: می گویند تقوا از تخصص لازمتر است، آنرا می پذیرم، اما می گویم: آنکس که تخصص ندارد و کاری را می پذیرد، بی تقواست.
php مرکز کد های سایت...ما را در سایت php مرکز کد های سایت دنبال میکنید
برچسب: مقدمه ای بر مهندسی پزشکی,مقدمه ای برای کارورزی,مقدمه ای برای انشا,مقدمه ای بر نظریه های یادگیری,مقدمه ای برای کارورزی 2,مقدمه ای برای پروژه امار,مقدمه ای بر جهان بینی اسلامی,مقدمه ای بر استانداردهای حسابداری,مقدمه ای بر , اسلامی,مقدمه ای برجهان بینی اسلامی (2), نویسنده: استخدام کار بازدید: 138