Податотечен систем

Податотечен систем (анг. 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 „депониски“ ленти, една на ден, плус доволно ленти за чување на целата „депонија“ која се прави еднаш месечно. Други покомплекси шеми користат помалку ленки кои исто така се користи. Автоматскиот метод кој користи повеќе дискови исто така се користи.
На пример, отсликувањето користи два дискови. Запишувањето оди на двата дискови, а читањето оди само на еден.

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

Според (Таненбаум и Вудхул 1999) пристапувањето до диск е многу поспоро отколку пристапувањето до меморијата. Читањето на некој мемориски збор обично зема неколку наносекунди. Читањето на некој блок од тврдиот диск може да земе 50 микросекунди, фактор за четири пати побавното читање е 32-битниот збор, но на ова мора да се додадат 10 до 20 милисекунди, кога тој ги прати и потоа го чека саканиот сектор да пристигне во рамките на читање на главата. Ако само еден единствен збор е потребен, пристапот до меморијата е 100,000 пати побрз, отколку пристапот до тврдиот диск. Како резултат на оваа разлика во времето за пристап, многу податотечни системи се дизајнирани да го намалат бројот на пристапи до тврдиот диск. Најчеста техника која се користи да се намали пристапот до дискот е блок кеш или бафер кеш (кеш доаѓа од францускиот збор cachet што значи да скриеш). Во овој контекст, кеш е колекција од блокови кои логички припаѓаат на дискот, но се чуваат во меморијата за подобри перформанси. Различни алоритми можат да се користат за управување со кешот, но еден од најчесто употребуваните е да се проверат сите барања за читање  за да се види дали потребниот блок е во кешот, ако е барањето за читање може да биде задоволено и без пристап до дискот. Ако блок не се во кешот, прво се чита во кешот, па потоа се копира каде е потребно. Следните барања за истиот блок можат да се задоволат од истиот кеш. Кога блокот треба да се вметне во полн кеш, некои блокови треба да бидат избришати и презапишани на дискот. Оваа ситуација е многу слична на страничењето и сите слични алгоритми за страничење. Една ведра разлика помеѓу страничењето и кеширањето е тоа што кеш референците се многу ретки, така што тоа е можно да ги задржи сите блокови во точна линија на заменлива единица со поврзани листи. За жал, ова е стапица.

Безбедност

Според (Таненбаум 1999) податотечните системи често содржат информации кој се многу вредни за своите корисници. Заштитата на оваа информација од неовластено користење е голема загриженост за сите податотечни системи.

Безбедносна околина

Според (Таненбаум и Вудхул 1999) термините „безбедност“ и „заштита“ често се користат наизменично. Сепак, тоа е често корисно за да се направи разлика помеѓу општите проблеми вклучени во тоа што си сигурен дека се „измислиците“ не се читаат или модифицираат од неовластени лица, кои вклучуваат технички, менаџерски и законски права на една страна, како и специфични механизми за оперативни системи кои се користат да се обезбеди сигурност од друга страна. За да избегне оваа забуна, ќе го користиме терминот „сигурност“ да се однесува за целиот проблем, и термиот „заштитен механизам“ да се однесува на одредени механизми на оперативни системи кои се користат за заштита на информациите во компјутерот.

Безбедноста има многу аспекти. Две од поважните се загуба на податоците и „натрапниците“.

Некои од вообичаените причини за загуба на податоците се:

	Дела на господ:
	Пожари
	Поплави
	Земјотреси
	Војни
	Немири
	Хардверски и софтверски грешки:
	Дефекти на обработувачот
	Нечитливи дискови или касети
	Телекомуникациски грешки
	Програмски грешки
	Човечки грешки:
	Неправилен внес на податоци
	Погрешно вметнати дискови или касети
	Изгубени дискови или касети
	Погрешно подигање на програма
	Или некои други грешки

Многу од овие може да се решат со одржување на бекап, по можност подалеку од оригиналните податоци. 
Многу поинтересен проблем е што да се прави со „натрапниците“. Овие доаѓаат во две варијанти. Пасивните натрапници само сакаат да читаат податотеки кои не се овластени за читање. Активните натрапници се многу помалициозни. Тие сакаат да направат неовласнети измени во податоците. При дизајнирање на систем кој ќе биде сигурен против натрапници, важно е да се има предвид видот на натрапникот.
Некои општи категории се:

1.	Обични „љубопитници“ од страна на не-технични корисници. Многу луѓе имаат терминали за временско споделување на системито или мрежни лични сметачи во нивните канцеларии, и човечката природа е она што е, некои од нив ќе ја прочитаат електронската пошта на други луѓе, и некои други податотеки ако не постои бариера на нивниот пат. Повеќето UNIX системи, на пример, стандардно имаат зададено сите податотеки да може јавно да се читаат.

2.	„Душкање“ од страна на натрапниците. Студенти, системски програмери, оператори и друг технички персонал често сметаат дека бидат личен предизвик за да се пробие безбедноста на локалните компјутерски системи. Тие често се висококвалификувани и се подготвени да посветат голем дел од времето за овој напор.

3.	Однапред утврдени обиди за да се заработаат пари. Некои банкарски програмери се обидуваат да пробијат во банкатскиот систем за да украдат од банката. Шемите се различни од менувањето на софтверот за да се намали кругот на интереси.

4.	Комерцијална или воена шпионажа. Шпионажата се однесува на сериозен и добро финансиран обид од страна на еден конкурент, или една странска земја за да се украдат програми, трговски тајни, патенти, технологија, маркетинг планови и така натаму. Често во овој обид се вклучуваат и прислушкувањето или дури и исправањето на антеви во режија на компјутер за да се соберат повеќе електромагнетни зрачења.

Друг аспект на безбедносен проблем е приватноста:  заштита на поединци од злоупотреба на информациите. Ова брзо се впишува во многу правни и морални прашања. Владата треба да ги собере досиејата за сите со цел да се фатат хакерите, каде Х е „благосостојба“ или „данок“ во зависност од вашата политика?

Заклучок
Видено од страна, податотечниот систем е колекција од податотеки и директориуми, плус операции во нив. Податотеките можат да се читаат и запишуваат, директориумите може да се создаваат и уништуваат, и податотеките може да се преместуваат од директориум во директориум. Повеќето модерни податотечни системи поддржуваат хиерархиски директоривен систем, во кој директориумите може да имаат бесконечни поддиректориуми. 
Видено одвнатре, податотечниот систем изгледа поинаку. Дизајнерите на податотечниот систем треба да се сконцентрираат како да се распредели чувањето на податоците, и како системот да ги чува патеките од кој блок доаѓа со која податотека. Сигурноста и перформансите на податотечниот систем се исто така важни прашања.

Сигурноста и заштитата се од витално за системските корисници и дизајнерите.

Исто така, проверката со и без лозинки за контрола на пристап за листи и способности, и матрица модел за размислување на заштита.

 Наводи 

 Литература 
 A. S. Tanenbaum (2001), Modern Operating systems 2nd edition, ISBN 978-0130313584
 A. S. Tanenbaum, A. S. Woodhull (1999), Operating Systems - Design and Implementation, ISBN 978-0136386773
 B. Fetaji, M. Fetaji (2011) Operating systems, Соuth East European University, ISBN 978-608-4503-48-4 , Tetovo, Macedonia  
 http://searchstorage.techtarget.com/definition/file-system
 W.Stallings (2009) Operating Systems 6th  edition, ISBN 9780136006329

Категорија:Податотеки