Programming Freaks  | دورات ومقالات برمجيه

Please login or register.

Login with username, password and session length
Advanced search  

News:

Please Read our FAQ

Author Topic: File systems | انظمة الملفات  (Read 1147 times)

St0rM

  • [C programmer]
  • Administrator
  • Active Member
  • *****
  • Posts: 209
  • Why So serious ?
    • View Profile
    • WWW
    • Email
File systems | انظمة الملفات
« on: October 08, 2009, 10:31:15 AM »
مساء الخير
المقال النهرده هيتكلم عن ال file systems in linux انظمة الملفات بالعربي

مبدئيا لو قريت المقال الي فات الي بيتكلم عن شرح كيفية عمل الاقراص الصلبه هتفتكر نص انا قلت فيه
"الملفات بيتم تسجيلها علي القرص الصلب ك stream of bytes"
جميل جدا , بس اذا تم تسجيل الملفات ك stream of bytes منين هتقدر تعرف ان هو ده الملف المطلوب ؟ منين هتقدر تعرف اسم الملف او حتي تقدر تحدد اسم الملف او حتي تقدر تحذف الملف او تضيف ملف او تحرك ملف من مكان لمكان !
او حتي اذا هتقدر تضيف مجلدات او دلائل directories عشان تقدر ترتب الملفات ؟
في الحقيقه وذي مشرحت المقال الي فات , ان الهارد ديسك ملوش اي علاقه بالتقسيمات ديت , وان كل دوة ليه علاقه بال system , بس ال system في حد ذاته منين هيقدر يعرف كده ! اذا مكانش فيه وسيلة حتي انك تقدر تسجل ملفات او تعرف عناوينها او اسمائها الخ الخ ؟

هنا يجي موضوعنا النهرده File systems انظمة الملفات
تعريف مبدئي لل Filesystem , يعتبر كقاعدة بيانات , بتستخدم في تعديل , اضافة , حذف واسترجاع البيانات
لاحظ ان فيه عدة انواع من ال filesystems احنا حنتكلم في موضوعنا عن ال filesystem الي بيتعامل مع ال hard disk
من ضمن الانواع التانيه ال NFS = Network file system او ال  virtual file systems زي ال /proc file system
ال  file systems ولاحظ انا بقول systems اي انظمة. الي بتتعامل مع ال hard disks متنوعه وانت سمعت اكتر من اسم لاكتر من file system زي ال
fat , fat32 , ext2 , ext3 , ext4 , jfs , NTFS وهكذا
ايه الفرق؟
الفرق في طريقة التعامل مع "نظام الملفات" الي قمنا بتشبيهه بقاعدة بيانات , يعني تقدر تتخيل الاختلاف في انظمة الملفات وتعددها زي الاختلاف وتعدد قواعد البيانات المتاحه قدامك Mysql , Oracle... وهكذا


وايه طريقة ال File system في كده ؟
زي مقلنا وشرحنا طريقة عمل الاقراص الصلبه
وقلنا انها بتتقسم لم tracks وال tracks ل sectors الي موجوده فوق platters
يبقي وظيفة ال file system انه يعمل خريطه بال sectors الي متسجل فيها ال files "لاحظ اني بردد وبقول file files files ومجبتش سيرة ال directories ولا اي حاجه تانيه وهتعرف ليه"
ويحدد عد ال sectors الي موجود فيها ال files ويحدد الاماكن الي ممكن تضيف فيها بيانات وهكذا
يعني بمعني اصح بيحتفظ ب records بتنظم ال CHS عشان يقدر من خلالها انه يقوم بتوظيف القرص الصلب في خدمته والحصول علي الperformance المطلوب , الا وهو تنظيم الملفات

لاحظ انا قلت CHS وصراحه انا بكدب  :D بس حبيت افكرك , ولو انت صاحي هتعرف اني كنت بكدب , لان ال file systems بتتعامل بال physical blocks  جميل لحد كده ؟  ???
اه جميل بس انا برده بكدب :D صراحه انت المفروض تفقد الثقه فيا تمام لان حتي ال file system مش بيتعامل بال blocks الا internally وبيقدم map تانيه لل physical blocks اسمها ال file system blocks وديت بتكون عدد مضروب في power of 2 من ال physical blocks بس ليه ؟ لان ال hard disk مش بس بيتحتوي علي طريقة ال LBA بيحتوي علي طرق تانيه في ال addressing لل CHS  مش ده مجال ذكرها لانها مش هتفيدك كل هاردات ال SCSI بيتعتمد طريقة ال LBA في ال adressing , ولكن بما ان ال linux kernel هو وعشان ال file system تبعد عنها عن المواضيع ديت فرضت ال mapping الخاص بيها وعملت abstraction بين ال physical addressing وبين ال logical او ال file system addressing



ايه تاني يقدر ال File system انه يقدمهولي ؟
علاوه علي تنظيم الملفات , يقدر يقدملك معلومات عن الملفات
man stat ولاننا بنتكلم من منظور linux بحت

ال structure ديت بتحتوي علي ال metadata الي ممكن يقدمهالك ال linux kernel عن ملف ما

Code: [Select]
           struct stat {
               dev_t     st_dev;     /* ID of device containing file */
               ino_t     st_ino;     /* inode number */
               mode_t    st_mode;    /* protection */
               nlink_t   st_nlink;   /* number of hard links */
               uid_t     st_uid;     /* user ID of owner */
               gid_t     st_gid;     /* group ID of owner */
               dev_t     st_rdev;    /* device ID (if special file) */
               off_t     st_size;    /* total size, in bytes */
               blksize_t st_blksize; /* blocksize for file system I/O */
               blkcnt_t  st_blocks;  /* number of 512B blocks allocated */
               time_t    st_atime;   /* time of last access */
               time_t    st_mtime;   /* time of last modification */
               time_t    st_ctime;   /* time of last status change */
           };
حجم الملف , نوع الملف , عدد ال block size الي بيحتلها الملف , عدد ال 512KB بلوك الي تم حجزهم للملف " , اخر access للملف , اخر تعديل , حجم ال block الي بيتم تفضيله في استخدامه في عمليات ال Input/Output "وده موضوع هنتكلم عنه بالتفصيل في مقال تاني"
 وهكذا

يعني مش بس ترتيب وتنسيق للملفات , كمان تقديم معلومات مفيده عن الملفات وبتفيد في تقديمها بصورة احسن
وغير كده بيقدم معلومات مهمه جدا زي ال attributes , صاحب الملف مين , تصاريح الملف ايه , مين ليه قرائه مين ليه كتابه مين ليه تنفيذ
طبعا انا مش حشرح الكلام دوت وهفهمك انواع تصاريح الملفات لانك المفروض فاهمها انت جاي هنا عشان تشوف ايه الجديد ولكن للناس الي مش عارفها اهلا وسهلا بيكم واتفضلوا اقروا الموضوع دوت برده CLICK HERE



بعد معرفنا الكلام دوت هل نقدر نقدم تعريف تاني لل file system ?
ال File system هو قاعدة بيانات تحتوي علي معلومات عن الملف , وتقوم بفرض سياسات علي الملفات والحفاظ عليها من التلاعب , ووظيفة قاعدة البيانات هذه ان تقوم بتقديم نوع من التجريد abstraction للمستخدم حتي تقوم بابعادع عن التقنيات المعقده في استخدام الاقراص الصليه , تقوم بعمل خريطه للملفات الموجوده علي وحدة التخزين والسياسات الخاصه باستخدامها , هناك عدة انواع منها وتختلف في طريقة تعاملها مع الملفات



ليه مذكرناش ال directories ?
لان مفيش حاجه اسمها directories :D
سمعت عن حد بيقول قبل كده ان كل شيئ في لينكس ماهو الا ملف ؟ ياتري ايه السر في كده ؟ واذا لو كل حاجه ملف يبقي اللينكس بيعدم عدد كبير من ال file system تقدر تتطلع عليهم في /usr/src/linux/fs
ولو كلامي صحيح ومش بكدب عليك يبقي اذاي في حاجه اسمها cd whatever
او list للملفات الي موجوده بداخل ال directories ???
هجاوبك علي السؤال دوت في المقال التاني لان مقالنا النهرده بيتكلم عن انظمة الملفات بشكل بحت , ومش بيتكلم عن تطبيق اللينكس
لانظمة الملفات ديت , وهتعرف ليه انا علمت علي كلمة اسماء بالون الاحمر وهتفهم العلاقه بين ال physical blocks 
جهز نفسك لان المقال الجاي والي بعديه هيتكتبوا في وقت واحد وهيبقوا Heavy as hell :D
c ya guys
« Last Edit: October 08, 2009, 10:48:30 AM by St0rM »
Logged

Striky

  • Helping Freak
  • Administrator
  • Posting Freak
  • *****
  • Posts: 252
    • View Profile
    • WWW
    • Email
Re: File systems | انظمة الملفات
« Reply #1 on: October 08, 2009, 10:38:52 AM »
sweeeet
Logged

Life is just a chance to grow a soul. - A. Powell
Weblog: http://ahmedyoussef.wordpress.com/

DarkC0de

  • Just Joined
  • *
  • Posts: 1
    • View Profile
Re: File systems | انظمة الملفات
« Reply #2 on: March 31, 2010, 10:50:36 AM »
يديك العافية ياباشا

جاري المراجعه والفهم:)
Logged