Fayl — operatsion tizim tomonidan nomlangan birlik sifatida saqlanadigan ma’lumotlar ketma-ketligidir. Matn, rasm, dastur kodi, audio yoki bajariladigan buyruqlar diskda fayl ko‘rinishida joylashishi mumkin. Fayl tizimi uning mazmunini baytlar sifatida saqlaydi, fayl nomi, hajmi, vaqti va ruxsatlari kabi tavsiflarni esa metadata sifatida boshqaradi.
Mazmun va format
Faylning asosiy mazmuni baytlardan iborat. Ushbu baytlarni qanday talqin qilish formatga bog‘liq. UTF-8 kodlangan matn faylida baytlar belgilarni ifodalaydi, PNG faylida esa sarlavha, siqilgan piksel ma’lumoti va nazorat bloklari mavjud. Operatsion tizim odatda kengaytmaga qarab mazmunni o‘zgartirmaydi; .txt yoki .png ko‘proq dastur va foydalanuvchiga formatni bildiradi.
Ba’zi formatlar boshidagi maxsus baytlar orqali aniqlanadi. Unix tizimlaridagi file yordamchi dasturi kengaytma bilan cheklanmay, shunday signatura va mazmun xususiyatlarini tekshiradi. Kengaytmani almashtirish faylni boshqa formatga konvertatsiya qilmaydi.
Metadata
Fayl tizimiga qarab metadata tarkibi farq qiladi, ammo odatda quyidagilar uchraydi:
- fayl turi va hajmi;
- egasi hamda guruh identifikatori;
- o‘qish, yozish va bajarish ruxsatlari;
- oxirgi o‘zgartirish va boshqa vaqt tamg‘alari;
- diskdagi bloklarga bog‘lanish;
- qo‘shimcha atribut yoki access control list.
Unixsimon tizimlarda katalog yozuvi nomni inode bilan bog‘laydi. Inode metadata va ma’lumot bloklariga havolalarni saqlaydi, lekin odatda fayl nomini saqlamaydi. Shu sababli hard linklar bitta inodega bir nechta nom berishi mumkin.
Fayl bilan ishlash
Dastur faylni ochganda operatsion tizim unga handle yoki file descriptor qaytaradi. Keyingi o‘qish va yozish shu identifikator orqali bajariladi. Joriy offset navbatdagi amal qaysi baytdan boshlanishini ko‘rsatadi. Amal tugagach descriptor yopiladi; aks holda jarayonning cheklangan descriptorlari sarflanishi mumkin.
Yozuv darhol fizik qurilmaga tushmasligi mumkin. Operatsion tizim page cache yordamida ma’lumotni xotirada ushlab, keyin diskka yozadi. Muhim ma’lumotda fsync kabi mexanizm kerakli qatlamga yozishni talab qiladi, ammo qurilma va fayl tizimi semantikasi ham hisobga olinadi.
Yo‘l va nom
Faylga absolute yoki relative path orqali murojaat qilinadi. Absolute path ildizdan, relative path esa joriy katalogdan boshlanadi. Nomlarda ruxsat etilgan belgilar fayl tizimiga bog‘liq; katta-kichik harfga sezgirlik ham Windows va Unix muhitlarida bir xil emas.
O‘chirish va tiklash
Faylni o‘chirish ko‘pincha katalogdagi nom bog‘lanishini olib tashlaydi. Jarayon faylni ochiq ushlab turgan bo‘lsa, Unix tizimida ma’lumot descriptor yopilguncha mavjud bo‘lishi mumkin. O‘chirish backup o‘rnini bosa olmaydi: qurilma buzilishi, tasodifiy o‘zgartirish va zararli dasturga qarshi alohida nusxa hamda tiklash jarayoni talab qilinadi.
Atomarlik va nom almashtirish
Ko‘plab dasturlar mavjud faylni joyida yozish o‘rniga, avval shu fayl tizimida vaqtinchalik fayl yaratadi, mazmunni to‘liq yozadi va keyin rename bilan nomini almashtiradi. Mos sharoitda nom almashtirish atomar bo‘lib, kuzatuvchi eski yoki yangi faylni ko‘radi, yarim yozilgan holatni emas. Bu usul diskka mutlaq saqlanish kafolati bermaydi: kerakli fayl va katalogni sinxronlashtirish semantikasi alohida hisobga olinadi. Bir fayl tizimidan boshqasiga ko‘chirish esa oddiy atomar rename bo‘lmasligi, nusxa olish va o‘chirish ketma-ketligiga aylanishi mumkin. Shu farq konfiguratsiya va ma’lumot fayllarini xavfsiz yangilashda muhim.
Bog‘liq tushunchalar
fayl tizimi, papka, inode, metadata, file descriptor, backup, permission