API файлдық жүйесі - File system API

A файлдық жүйе API болып табылады қолданбалы бағдарламалау интерфейсі ол арқылы утилиталар немесе қолданушылар бағдарламасы файлдық жүйенің қызметтерін сұрайды. Амалдық жүйе әртүрлі файлдық жүйелерге мөлдір түрде қол жеткізуге арналған абстракцияларды қамтамасыз ете алады.

Кейбір файлдық жүйенің API интерфейстері техникалық қызмет көрсету үшін интерфейстерді қамтуы мүмкін, мысалы, файлдық жүйені құру немесе инициализациялау, файлдық жүйенің тұтастығын тексеру және дефрагментация.

Әрбір операциялық жүйеде ол қолдайтын файлдық жүйелер үшін қажетті API-лер бар. Microsoft Windows үшін файлдық жүйенің API интерфейстері бар NTFS және бірнеше FAT файлдық жүйелер. Linux жүйелер үшін API-ді қамтуы мүмкін ext2, ext3, ReiserFS, және Btrfs бірнешеуін атау.

Тарих

Кейбір алғашқы операциялық жүйелер тек таспамен және дискімен жұмыс істей алды файлдық жүйелер. Бұл интерфейстердің ең қарапайымдарын:

  • Жазыңыз, оқыңыз және орналастырыңыз

Құрылғыны бөлу және бөлу сияқты көбірек үйлестіру мыналарды қосуды қажет етті:

  • Ашыңыз және жабыңыз

Файлдық жүйелер көбірек қызметтер көрсеткендіктен, көптеген интерфейстер анықталды:

  • Метадеректерді басқару
  • Файлдық жүйеге қызмет көрсету

Файлдық жүйенің қосымша түрлері, иерархия құрылымы және қолдау көрсетілетін медиа көбейген сайын, қосымша функцияларға бірнеше мамандандырылған функциялар қажет болды:

Бірнеше қолданушы жүйелері үшін келесі API талап етіледі:

  • Бөлісу
  • Кіруді шектеу
  • Шифрлау

API шолу

Жазыңыз, оқыңыз және орналастырыңыз

Пайдаланушы деректерін файлдық жүйеге жазу қолданушы бағдарламасында немесе жұмыс уақытының кітапханасында тікелей пайдалану үшін ұсынылады. Кейбір бағдарламалау тілдеріне арналған жұмыс уақытының кітапханасы типті түрлендіруді, пішімдеуді және блоктауды қамтамасыз етуі мүмкін. Кейбір файлдық жүйелер жазбаларды кілт бойынша сәйкестендіруді қамтамасыз етеді және бұрыннан бар жазбаны қайта жазуды қамтуы мүмкін. Бұл операция кейде деп аталады ҚОЙЫҢЫЗ немесе PUTX (егер жазба болса)

Кейде деп аталатын пайдаланушы деректерін оқу АЛ, бағытты (алға немесе артқа) немесе кілттік файлдық жүйе жағдайында белгілі бір кілтті қамтуы мүмкін. Жазу кезінде сияқты, жұмыс уақытының кітапханалары қолданушы бағдарламасына көмек көрсете алады.

Позицияға келесі жазбаның орнын реттеу кіреді. Бұған алға немесе артқа секіру, сондай-ақ файлдың басына немесе соңына орналастыру кіруі мүмкін.

Ашыңыз және жабыңыз

The ашық API объектідегі процестің бірінші операциясын шығарған кезде нақты түрде сұралуы немесе жасырын түрде қолданылуы мүмкін. Бұл алынбалы медианы орнатуға, басқа хостпен байланыс орнатуға және объектінің орналасқан жері мен қол жетімділігін тексеруге әкелуі мүмкін. Ол жүйенің құрылымын объектінің қолданыста екенін көрсету үшін жаңартады.

Файлдық жүйенің объектісіне рұқсат сұрауға қойылатын әдеттегі талаптарға мыналар жатады:

  1. Қол жеткізілетін нысан (файл, каталог, медиа және орналасу орны)
  2. Ашылғаннан кейін орындалатын операциялардың көзделген түрі (оқу, жаңарту, жою)

Қосымша ақпарат қажет болуы мүмкін, мысалы

  • пароль
  • ашу процесі объектіні пайдалану кезінде (бөлісу) басқа процестер бірдей объектіге қол жеткізе алатындығы туралы декларация. Бұл басқа процестің ниетіне байланысты болуы мүмкін. Керісінше, басқа процедураларға (басқа мақсаттарға қарамастан) объектіге басқа процестер кіре алмайтындығы туралы мәлімдеме.

Бұлар сұранысты файлдық жүйеге жіберуден басқа, процестегі модульдер арасындағы үйлестіруді қамтамасыз ете алатын бағдарламалау тілінің кітапханасы арқылы сұралады.

Ашық өңдеу кезінде бірдеңе дұрыс болмауы мүмкін деп күту керек.

  1. Нысан немесе ниет дұрыс көрсетілмеген болуы мүмкін (атауда қабылданбайтын сипат болуы мүмкін немесе ниет танылмайды).
  2. Процесске объектіге кіруге тыйым салынуы мүмкін (оған тек топ немесе белгілі бір қолданушы қол жеткізе алады).
  3. Файл жүйесі пайдаланушылар арасындағы әрекеттерді үйлестіру үшін қажет құрылымдарды құра немесе жаңарта алмауы мүмкін.
  4. Жаңа (немесе ауыстырылатын) нысан жағдайында тасымалдағышта сыйымдылық жеткіліксіз болуы мүмкін.

Бағдарламалау тіліне байланысты қосымша шарттарда осы шарттарды орындау үшін модульдер орнатылуы мүмкін. Кейбір кітапханалар кітапхана модулін файлдық жүйеге талдауға рұқсат береді, егер ашылған бағдарлама сәтсіздіктің салдарынан қандай да бір мағыналы әрекетті орындай алмаса. Мысалы, егер сәтсіздік қажетті кіріс файлын ашуда болып жатса, әрекет тек ақаулық туралы хабарлау және бағдарламаны тоқтату болуы мүмкін. Кейбір тілдер тек ақаулық түрін көрсететін кодты қайтарады әрқашан тексерілуі керек нені баяндау керектігін және әрі қарай жалғастыра алатынын шешетін бағдарлама бойынша.

Жабық алынбалы медианы бөлшектеуге немесе шығаруға, кітапхана мен файл жүйесінің құрылымын жаңартуға себеп болуы мүмкін, бұл объект пайдаланылмайды. Жақын сілтеме бойынша минималды сипаттама объектіге сілтеме жасайды. Сонымен қатар, кейбір файлдық жүйелер объектінің диспозициясын көрсете алады, ол объектіні тастау керек екенін және файлдық жүйенің бөлігі болмайтынын көрсетеді, ашық сияқты, бірдеңе дұрыс болмауы мүмкін деп күту керек.

  1. Нысанның сипаттамасы дұрыс болмауы мүмкін.
  2. Бұқаралық ақпарат құралдарында буферленген кез-келген деректерді сақтауға немесе объектінің сәтті жаңартылғанын көрсететін құрылымды шығаруға жеткілікті сыйымдылық болмауы мүмкін.
  3. Буферлік деректерді, аяқталу құрылымын жазу кезінде немесе объектіге қатысты метамәліметтерді жаңарту кезінде объект сақталатын медиада құрылғы қателігі орын алуы мүмкін (мысалы, соңғы кіру уақыты).
  4. Нысанды босату үшін спецификация объектіні қолданып жүрген басқа процестерге сәйкес келмеуі мүмкін.

Сәтсіздікті қарастыратын жағдайлар ашық мәселелерге ұқсас.

Метадеректерді басқару

Файлдағы мәліметтер туралы ақпарат метадеректер деп аталады.

Кейбір метамәліметтерді файлдық жүйе сақтайды, мысалы, соңғы модификация күні (және файлдық жүйеге байланысты басқа күндер), файлдың басталу орны, файлдың өлшемі және егер файлдық жүйенің резервтік көшірмесі болса файлдардың ағымдағы нұсқасын сақтады. Бұл элементтерді әдетте қолданушы бағдарламасы өзгерте алмайды.

Кейбір файлдық жүйелер қолдайтын қосымша мета-деректерге файлдың иесі, файлға жататын топ, сондай-ақ рұқсаттар және / немесе кіруді басқару кіруі мүмкін (яғни, әр түрлі пайдаланушылар мен топтардың қол жеткізуі және жаңартуы мүмкін) және файл каталог көрсетілген кезде әдетте көрінеді. Бұл элементтерді файл иесінің утилиталары өзгерте алады, оны иесі орындай алады.

Кейбір қосымшалар метадеректерді көбірек сақтайды. Кескіндер үшін метадеректер фотокамера моделін және фотосуретке түсіруге арналған параметрлерді қамтуы мүмкін. Аудио файлдар үшін мета-мәліметтерде альбом, жазбаны жазған орындаушы және файлдың белгілі бір көшірмесіне тән болуы мүмкін жазба туралы түсініктемелер болуы мүмкін (яғни бір жазбаның әр түрлі көшірмелері иесінің жаңартуы бойынша әр түрлі пікірлерге ие болуы мүмкін) файл). Құжаттарға тексерілген, мақұлданған және т.с.с. кіруі мүмкін.

Каталогтарды басқару

Файлдың атын өзгерту, файлды (немесе каталогты) бір каталогтан екіншісіне жылжыту және файлды жою - каталогтарды басқаруға арналған файлдық жүйемен қамтамасыз етілетін операциялардың мысалдары.

Әдетте каталогқа әр түрлі пайдаланушылар немесе пайдаланушылар топтары кіруге рұқсат беру немесе шектеу сияқты метадеректер операциялары қосылады.

Файлдық жүйеге қызмет көрсету

Файлдық жүйе каталогтар пайдаланылатындықтан, файлдар мен жазбалар қосылуы, жойылуы немесе өзгертілуі мүмкін. Әдетте бұл мәліметтер базасындағы құрылымдарда тиімсіздік туғызады. Бұқаралық ақпарат құралдарында шамадан тыс орын ауыстыруды тудыратын логикалық дәйекті блоктар сияқты нәрселер, ішінара пайдаланылатын бос құрылымдар да байланысты құрылымдарға кіреді. Аяқталмаған құрылымдар немесе басқа сәйкессіздіктер құрылғының немесе медианың қателіктерінен, қуаттылықтың жақында жоғалуын анықтау мен қуаттың нақты жоғалуы арасындағы уақыттың жеткіліксіздігі, жүйенің дұрыс өшпеуі немесе медианы алып тастау және өте сирек жағдайларда файлдық жүйені кодтау қателерінен туындауы мүмкін.

Осы құрылымдарды оңтайландыру немесе жөндеу үшін файлдық жүйеге мамандандырылған процедуралар енгізілген. Оларды пайдаланушы тікелей шақырмайды, бірақ файлдық жүйенің өзінде іске қосады. Құрылым деңгейлерінің, кірістірілген нысандар санының ішкі есептегіштерін табалдырықпен салыстыруға болады. Бұл пайдаланушының белгілі бір құрылымға қол жетімділігінің тоқтатылуына әкелуі мүмкін (әдетте пайдаланушының немесе пайдаланушының наразылығында) немесе басымдығы аз асинхронды тапсырмалар ретінде басталуы мүмкін немесе олар пайдаланушының белсенділігі төмен уақытқа қалдырылуы мүмкін. Кейде бұл жүйелерді менеджер шақырады немесе жоспарлайды немесе жағдайдағыдай дефрагментация.

Ядро деңгейіндегі API

API «ядро деңгейінде» болады, өйткені ядро ​​файлдық жүйені жасаушылар үшін интерфейстерді ғана емес, сонымен қатар файлдық жүйенің коды орналасқан кеңістікті қамтамасыз етеді.

Ол бұрынғы схемамен ерекшеленеді, өйткені ядро ​​өзі файлдық жүйенің драйверімен және керісінше сөйлесу үшін өзінің мүмкіндіктерін пайдаланады, керісінше файл жүйесінің орналасуын өңдейтін ядроға және файлдық жүйеге аппараттық құралға тікелей қол жеткізуге қарсы.

Бұл ең таза схема емес, ескі сызбаға сәйкес негізгі қайта жазудың қиындықтарын шешеді.

Модульдік ядролардың көмегімен кез-келген ядролық модуль сияқты файлдық жүйелерді, тіпті үшінші тараптарды қосуға болады. Модульдік емес ядролардың көмегімен ядро ​​жаңа файл жүйесінің кодымен қайта компиляциялануын талап етеді (және жабық көздердегі ядроларда бұл үшінші тарап файлдық жүйесін мүмкін емес етеді).

Unixes және Unix тәрізді сияқты жүйелер Linux осы модульдік схеманы қолданды.

Бұл схеманың вариациясы бар MS-DOS (Бұдан әрі DOS 4.0) және CD-ROM мен желілік файлдық жүйелерді қолдау үшін үйлесімді. Ескі схемадағыдай ядроға кодты енгізудің немесе ядроға негізделген схемадағыдай ядро ​​қондырғыларын пайдаланудың орнына, ол барлық қоңырауларды файлға түсіреді және оны ядроға баламалы функцияға бағыттау керек пе, жоқ па, соны анықтайды. нақты файлдық жүйенің драйверімен жұмыс істеу керек, ал файлдық жүйенің драйвері төменгі деңгейдің көмегімен дискінің мазмұнына «тікелей» қол жеткізеді BIOS функциялары.

Драйверге негізделген API

API «драйверге негізделген», бірақ ядро ​​мүмкіндіктер береді, бірақ файлдық жүйенің коды ядро ​​үшін мүлдем сыртқы болады (тіпті модульдік ядро ​​модулі ретінде де емес).

Бұл файлдық жүйенің коды мүлдем тәуелсіз болғандықтан, бұл таза схема, бұл файлдық жүйелерді жабық көздерден тұратын ядроларға және жүйеге файлдарды онлайн жүйеге қосуға немесе жоюға мүмкіндік береді.

Бұл схеманың мысалдары: Windows NT және OS / 2 тиісті ХҚЕС.

Аралас драйверге негізделген API

Бұл API-де барлық файлдық жүйелер ядроға негізделген API-дегі сияқты ядрода болады, бірақ оларды автоматты түрде басқа API, яғни драйверге негізделген, ОЖ ұстап алады.

Бұл схема қолданылған Windows 3.1 32 биттік FAT файл жүйесінің драйверін ұсыну үшін[дәйексөз қажет ] DOS FAT драйверін ядрода (MSDOS.SYS) толығымен, ал кейінірек Windows 9x сериясында айналып өткен (VFAT) қорғалған режим95, 98 және Мен VFAT үшін ISO9660 файлдық жүйенің драйвері (Joliet-пен бірге), желілік акциялар және үшінші тарап файлдық жүйелерінің драйверлері, сондай-ақ түпнұсқа DOS API-ге LFN API қосады (IFS драйверлері бұрыннан бар DOS файлының API-лерін ұстап қана қоймайды, бірақ сонымен қатар 32 биттік қорғалатын режим ішінен жаңаларын қосыңыз).

Алайда бұл API толығымен құжатталмаған, ал үшінші тараптар өздері «өзіңіз жасай аласыз» сценарийіне ядроларға негізделген API-лерден гөрі нашар деп тапты.

Пайдаланушы кеңістігі API

API орналасқан пайдаланушы кеңістігі файлдық жүйе ядролық құралдарды тікелей пайдаланбайды, бірақ жоғары деңгейлі операциялық жүйенің функцияларын қолданатын дискілерге қол жеткізіп, кітапхана Файлдық жүйеге қол жеткізу үшін бірқатар утилиталар қолданатыны.

Бұл диск кескіндерімен жұмыс істеу үшін пайдалы.

Артықшылығы - файлдық жүйені амалдық жүйелер арасында портативті етіп жасауға болады, өйткені ол қолданатын жоғары деңгейлі операциялық жүйенің функциялары ANSI C сияқты кең таралуы мүмкін, бірақ кемшілігі - API бір қолданбаны іске асыратын әрбір қосымшаға ғана тән.

Бұл схеманың мысалдары: hfsutils және adflib[тұрақты өлі сілтеме ].

Файлдық жүйенің API интерфейстері

Барлық файлдық жүйелерге (ең болмағанда дискілерге) ядро ​​ұсынатын эквивалентті функциялар қажет болғандықтан, файл жүйесінің кодын әр түрлі типте болса да, бір API-ден екіншісіне оңай көшіруге болады.

Мысалы, OS / 2 үшін ext2 драйвері - бұл Linux-тың VFS-тен OS / 2's IFS-ге және Linux-тің ext2 ядросына негізделген ораушы, ал OS / 2-ге арналған HFS драйвері - hfsutils-тің ОЖ-ға порты. 2 IFS. NTFS-ті Linux астында жұмыс жасау үшін Windows NT IFS драйверін қолданатын жоба да бар.

Сондай-ақ қараңыз

Әдебиеттер тізімі

Дереккөздер

  • O'Reilly - Windows NT File System Internals, әзірлеушілерге арналған нұсқаулық - Раджев Нагар - ISBN  1-56592-249-2
  • Microsoft Press - Windows NT файлдық жүйесінде - Хелен Кастер - ISBN  1-55615-660-X
  • Wiley - UNIX файлдық жүйелері: эволюция, жобалау және енгізу - Стив Д. Пейт ISBN  0-471-16483-6
  • Microsoft Press - Windows NT ішінде - Helen Custer - ISBN  1-55615-481-X

Сыртқы сілтемелер