Податотечен систем (анг. File system) е системот на кој податотеките се именувани и каде што тие сместени логички за складирање и пронаоѓање. Според (Таненбаум 2001) DOS, Windows, OS/2 Macintosh и UNIX-заснован оперативен систем. Сите овие имаат податотечен систем во кој податотеките се сместени некаде во хиерархиската структура. Податотеката е сместена во папка (directory) или во подпапка на посакуваното место во хиерархиската структура.

Податотечниот систем наведува „договори“ за именување на податотеките. Овие „договори“ вклучуваат максимален број на знаци во името, кои може да се користат и во некои системи, колку долги можат да бидат наставките во името на податотеката. Податотечниот систем исто така вкучува и формат (тип) за утврдување на патеката на податотеката преку структурите на директориумот.

Понекогаш терминот се однесува на дел од оперативниот систем (ОС) или на додадените програми кои го помагаат податотечниот систем. Примери за такви додатоци на податотечниот систем вклучуваат Network File System (NFS) и Andrew file system (AFS). Во специјализиран јазик за чување, податотечниот систем е хардвер кој се користи за постојано складирање, софтвер апликација која го контролира хардверот и архитектура за хардверот и софтверот.

Податотечните системи се користат кај уреди за чување на податоци, како што се тврд диск, флопи диск, оптички дискови или флеш мемории, за одржување на физичките локации на компјутерските податотеки. Тие може да обезбедат пристап до податоците во податотечниот опслужувач преку симулирање на клиент за мрежен протокол (пример: NFS, SMB, 9P клиент, итн.), или тие можат да бидат виртуелни и постоечки само за пристап на виртуелни податоци. Ова се разликува од услугите на директориумот и регистрите.

Вметнување податотеки

Веројатно најважното прашање во вметнувањето на податотека за чување е следењето на кој диск блок оди и со која податотека. Различни методи се користат во различни оперативни системи.

Соседна распределба

Наједноставната шема на распределба е да се зачува секоја податотека како соседен блок од податоци на диск. Така на диск со 1К блокови, на 50К податотека ќе бидат распределени 50 последователни блокови. Според (Стајлингс 2009) оваа шема има две значителни предности. Прво, тоа е едноставно да се имплементира затоа што следењето на податотечните блокови каде тие се сведуваат на еден број, диск адресата од првот блок. Второ, перформансите се одлично затоа што цела податотека може да се чита од диск со една операција. За жал, „соседната распределба“ исто така има две подеднакво значајни недостатоци. Прво, тоа не е можно додека максимумот на големина на податотеката е позната во тоа време се создава податотеката. Без оваа информација, оперативниот систем не знае колку слободно место да резервира на дискот. Во системи каде податотеките мора да се запишат со една операција, може да се користи како голема предност. Вториот недостаток е фрагментацијата на дискот како резултат од оваа „политика“ на распределба. Просторот се губи, кој инаку би можел да се искористи.

Враќањето на дискот е многу скапо, иако може да се направи касно во ноќта кога системот е неактивен.

Поврзана список на распределба

(Стајлингс 2009) Вториот метод за складирање на податотеки е да се задржи секоја како поврзана список на диск блокови. Првиот збор од секој блок се користи како поинтер (покажувач) на следниот. Останатиот дел од блоковите за податоците. За разлика од соседната распределба, во оваа распределба, секој блок од дискот може да се користи како метод. Нема изгубено простор за диск фрагментацијата (Освен за внатрешната фрагментација во последниот блок). Исто така тоа е доволно за директориумот да влезе и само да ги чува диск адресите од првиот блок. Од друга страна пак, иако читањето на податотеката секвенцијално е јасна, случајниот пристап е неверојатно спор. Исто така, количината за складирање на податоци во блокови не е повеќе моќна, бидејќи покажувачот зазема неколку бајти.

Вметнување директориуми

Според (Таненбаум 2000) пред податотеката да биде прочитана, таа мора да биде отворена. Кога податотеката е отворена, оперативниот систем користи патеки зададени од корисникот за да го најде влезот до директориумот. Директориумот за влез обезбедува информации потребни за да се најде диск блокот. Во зависност од системот, овие информации може да биде на диск адресата на целот податотеката (соседна распределба), бројот на првиот блок (двете поврзани листи шеми), или бројот на и-јазол. Во сите случаи главната функција на директориумот од системот е карта од ASCII имиња на податотеки за потребните информации за да се најде податокот.

Тесно поврзани со ова прашање е и местото како што атрибутите треба да бидат сместени. Една очигледна можност е да се чуваат дирекно во директориумот за влез. Многу системи прават токму така. За системи кои корисат и-јазли, друга можност е да се чуваат атрбутите во и-јазли, отколку во директориумот за влез.

Директориуми во CP/M

Да почнеме со проучување на директориумите со еден едноставен пример, оној на CP/M (Golden and Pechura, 1986). Во овој систем, има само еден директориум, значи секој податотечен систем треба да направи да го погледне името на податотеката кој е баран во единствениот директориум. Кога се наоѓа влезот, исто така има броеви на диск блоковите, бидејќи тие се чуваат право во директориумот за влез како и сите атрибуди. Ако податотеката користи повеќе диск блокови којшто одговараат на еден влез, податотеката е распределена на дополнителни директориуми за влез.

Директориуми во MS-DOS

Сега да разгледаме некои премети од системи со хиерархиски директориуми. На слика 1 е прикажан MS-DOS директориумот за влез. Долг е 32 бити и содржи податотечно име, атрибути и број од првиот диск блок. Првиот диск блок број се користи како индекс.

Во MS-DOS, директориумите може да содржат и други директориуми, водени како хиерархиска податотека. Тоа е честа појава во MS-DOS дека различни програмски апликации секој старт создаваат директориум во root директориумот и ги сместуваат сите свои податотеки таму, за да не дојде до судир со различни апликации.

Директориуми во UNIX

Директориум структурата традиционално се користи во UNIX, многу е едноставна како што е покажано на слика 2. Секој влез содржи го содржи само името на податотеката и неговиот и-јазол број. Сите информации за типот, големината, сопственостна и диск блоковите се содржат во и-јазолот. Истиот UNIX систем има и различен распоред, но во сите случаи , директориумот за влез содржи само ASCII низа и и-јазол број. Кога податотеката е отворена, податотечниот систем мора да се земе името на податотеката која се испорачува и да се најдат диск блоковите. Да разгледаме како името на патеката /usr/ast/rnbux изгледа. Ќе користиме UNIX за пример, но алгоритмот е во основа ист за сите системски директориуми кои имаат хиерархиска структура. Прво податотечниот систем го наоѓа root директориумот. Во UNIX и-јазол се наоѓа на претходно утврдено место во дискот. Тогаш тоа е првата компонента од патеката usr, во root директориумот за да го најде бројот на и-јазолот од податотеката /usr. Наоѓањето на и-јазолот од неговиот број е јасна, бидејќи секој има фиксна локација на дискот. Од овој и-јазол, системот го наоѓа директориумот за /usr и гледа на следниот компонент. Кога ќе го најде влезот за ast, го има и-јазолот за директориумот /usr/ast. Од овој и-јазол може да се најде директориумот за себе и оди понатаму mbox. И-јазолот за оваа податотека е прочитан во меморијата и се чува таму додека податотеката не се затвори. Секој директориум има влез за . и за .. кои се ставаат кога директориумот е создаден. Влезот има и-јазол број за моменталниот директориум и влез за ..(следен директориум) има и-јазол број за главниот директориум.

Простор на дискот за управување

Податотеките обично се сместени на диск, па така управувањето со просторот на дискот е главна грижа на дизајнерите на податотечниот систем. Две главни стратегии се можни за чување на n бајт податотека: n последователни бајти од просторот на дискот се распределени или податотеката е поделена на голем бројот соседни блокови. Истиот баланс е присутен и во меморијата на системот за управување помеѓу сегментацијата и страничењето. Чувањето на податотека како соседна низа од бајти има очигледен проблем, ако податотеката расте, тогаш најверојатно ќе треба да се премест на диск. Истиот проблем го има и во сегментите во меморијата, движењето на еден сегмент во меморијата е релативно брза операција во споредба со движењето на една податотека од еден диск на друг диск. Заради оваа причина, речиси сите податотечни системи „сецкаат“ податотеки до фиксна големи на блокови кои не мора да се во непосредна близина.

Големина на блокови

Откако ќе се одлучи за чување на податотека со фиксна големина на блокови, се поставува прашањето колку голем треба да биде блокот. Со оглед на начинот како дисковите се огранизирани, секторот, патот и цилиндарот се очигледни кандидати за распределба. Во системот за страничење, големината на страната е исто така голем фаворит. Имајќи голема распределба на единиците, како што е цилиндарот, значи секоја податотека, дури и 1-бајт податотека, се врзува за целиот цилиндар. Студиите (Мулендер и Таненбаум 1984) покажаа дека средната големина на податотеката во UNIX изнесува околу 1К, па распределбата на 32К цилиндри за секоја податотека би бил „отпад“ 31/32 или 97% од вкупниот простор на дискот. Од друга страна, користењето на мали единици за распределување значи дека секоја податотека ќе содржи многу блокови. Читањето на секој блок нормално бара и вртежни одложувања, па читањето на податотека која се состои од многу мали блокови ќе биде бавно. Како пример да земеме диск со 32,768 бајти за патека, вртежно време од 16,67мсек и во просек бара време од 30мсек. Времето во милисекунди за читање на блок од k бајти е збирот од барања, вртежни одлагања и пренос: Т.е. 30+8,3+(k/32768)*16,67

Сигурносна копија

Дури и со јасна стратегија за справување со лоши сектори, важно е да се прави резерва на податотеките почесто. Податотечниот систем на флопи дискот може да му се направи бекап само со копирање на целиот флопи диск во еден празен флопи диск. Податотечниот систем за мали винчестер дискови може да му биде направено бекап со префрлање на целиот диск на магнетна лента. Моменталните технологии вклучуваат I5OM кертриџ ленти и 8G Exabyte или DAT касети. За големи винчестер дискови (пример 10GB) враќањето на цел диск на касета е мачно и одзема многу време. Една стратегија која е лесно да се спроведе, но троши половина од складирањето е да се обезбеди секој компјутер со два диска наместо со еден. Двата дискови се поделени на два дела: податоци и бекап. Секоја ноќ дел од податоци на дискот 0 се копирани на резервниот дел од диск 1. На овој начин, ако еден диск е целосно уништен, нема изгубени информации. Алтернативна за префрлање на целиот податотечен систем секој ден е да се направат поединечни „депонии“. Најпростиот облик на поединечен дампинг е m&e е комплетна депонија периодично, да речеме неделно или месечно, и да направиме дневна „депонија“ на само оние податотеки кои се изменети од последната целосна „депонија“. Подобра шема е да се „фрлат“ само они податотеки кои биле сменети, бедијќи тие биле последни „фрлени“.

За спречување на овој метод, листата за „депонијата“ за секоја податотека мора да се чува на дискот. Ако таа биде сменета бидејќи тоа последен пат било „фрлено“, се „фрла“ повторно и своето време на последна „депонија“ е заменето со моментално време. Ако се направи месечен циклус, овој метод секојдневно бара 31 „депониски“ ленти, една на ден, плус доволно ленти за чување на целата „депонија“ која се прави еднаш месечно. Други покомплекси шеми користат помалку ленки кои исто така се користи. Автоматскиот метод кој користи повеќе дискови исто така се користи. На пример, отсликувањето користи два дискови. Запишувањето оди на двата дискови, а читањето оди само на еден.

Перформанси на податотечниот систем