Кіріспе

Каталогқа кіру (каталогтық файлдық жүйеде) файлға атауды байланыстыратын гиперсілтеме термині. Компьютерлік жүйеде, қатты сілтеме – каталогқа кіру (каталогтық файлдық жүйеде) файлға атауды байланыстыратын жазба. Осылайша, әрбір файлда кем дегенде бір қатты сілтеме болуы тиіс. Файлға қосымша қатты сілтемелер жасау сол файлдың мазмұнына қосымша жолдар арқылы қол жеткізуді қамтамасыз етеді (яғни, әртүрлі атаулармен немесе әртүрлі каталогтарда). Бұл синонимдік эффектіге алып келеді: процесс файлды кез келген жолмен ашып, оның мазмұнын өзгерте алады. Керісінше, файлға жасалған жұмсақ сілтеме немесе «қысқа жол» – деректерге тікелей сілтеме емес, қатты сілтемеге немесе басқа жұмсақ сілтемеге жасалған сілтеме. Көптеген жүйелерде әрбір каталог – файл атауларының тізімін қамтитын арнайы файл болып табылады, басқа деректерді емес. Сондықтан каталогтарға бірнеше қатты сілтемелер жасау мүмкін, бұл ағаш тәрізді тармақталған құрылымның орнына дөңгелек каталог құрылымын құруы мүмкін. Осы себепті кейбір файлдық жүйелер каталогтарға қатты сілтемелер жасауға тыйым салады. Linux, Android, macOS және Windows NT сияқты POSIX стандартына сәйкес келетін операциялық жүйелер файлдық жүйеге байланысты бір файлға бірнеше қатты сілтемелерді қолдайды. Мысалы, NTFS және ReFS қатты сілтемелерді қолдайды, ал FAT қолдамайды.

Операция

"LINK A. TXT" және "LINK B. TXT" деп аталатын екі қатты сілтеме бір физикалық деректерге нұсқасын тікелей көрсетеді. Мәтін редакторы "LINK A. TXT" ашып, оны өңдеп, сақтайды. Редактор (немесе кез келген басқа бағдарлама) "LINK B. TXT" ашқанда, "LINK A. TXT" -ге енгізілген өзгерістерді көреді, себебі екі файлдың атауы да бір дерекке сілтеме жасайды. Пайдаланушы үшін бұл бір файлдың бірнеше атауындай болады. Кез келген атауды өңдеу "барлық" файлдарды өңдейді, ал "кәдімгі" атауды жою, соңғысынан басқа, файлды сақтап қалады. Бірақ, GNU Emacs сияқты кейбір редакторлар қатты сілтеме ұғымын бұзады. Файлды өңдеу үшін ашқанда, мысалы, "LINK B. TXT", Emacs "LINK B. TXT" атауын "LINK B. TXT~" деп өзгертеді, "LINK B. TXT~" жүктейді және өңделген мазмұнды жаңа "LINK B. TXT" файлына сақтайды. Содан кейін "LINK A. TXT" және "LINK B. TXT" енді бір дерекпен байланысты болмайды. (Бұл әрекетті emacs айнымалысы арқылы резервтік көшірме жасау арқылы өзгертуге болады.) Физикалық деректерге кез келген мөлшерде қатты сілтемелер жасауға болады. Деректерге қол жеткізу үшін пайдаланушыға бар сілтемелердің кез келгенінің атауын көрсету жеткілікті, ал операциялық жүйе деректің нақты орналасқан жерін анықтайды. Егер пайдаланушы қатты сілтемелердің бірін жойса да, деректер басқа сілтемелер арқылы қолжетімді болады. Пайдаланушы барлық сілтемелерді жойғаннан кейін, егер файл ашылмаған болса, операциялық жүйе файл бұрын орналасқан дискідегі орынды босатады.

Анықтамалық санау

Қатты сілтемелерді қолдайтын көптеген файлдық жүйелер сілтемелерді санауды пайдаланады. Жүйе әрбір логикалық дерек бөлімімен бірге сол дерекке жасалған барлық қатаң сілтемелердің жалпы санын көрсететін бүтін сандық мәнді сақтайды. Жаңа сілтеме жасалғанда бұл мән бірге артады. Сілтеме жойылғанда мән бірге кемиді. Егер санау нөлге жетсе, операциялық жүйе логикалық дерек бөлімін босатады. (Опералық жүйе дереу босатпауы мүмкін, мысалы, ашық файл дескрипторлары болса, немесе өнімділікті арттыру үшін, сондай-ақ файлды қайта қалпына келтіру командасын іске асыру үшін.) Бұл файлдық жүйенің берілген сақтау кеңістігін пайдалануды қадағалаудың қарапайым тәсілі, себебі нөлдік мәндер бос кеңістікті, нөлдік емес мәндер пайдаланылған кеңістікті көрсетеді. Бұл мәнді сақтау арқылы ешқандай жерге бағытталмайтын қатаң сілтемелердің пайда болмайтыны кепілдік беріледі. Дерек бөлімі және оған байланысты inode бір қатаң сілтеме (директория сілтемесі) оған көрсеткенше немесе кез келген процесс оған байланысты файлды ашық ұстағанша сақталады. POSIX стандартына сәйкес операциялық жүйелерде файл немесе каталогтың сілтеме саны stat немесе fstat жүйелік шақырулары арқылы struct stat құрылымының st_nlink өрісінде қайтарылады.

Шектеулер

Файл жүйесіндегі циклдарды болдырмау және "" файлының (бастапқы каталогтың) интерпретациясын тұрақты ұстау үшін операциялық жүйелер әдетте каталогтарға қатты сілтемелер жасауға жол бермейді. UNIX System V оларға рұқсат берді, бірақ мұндай сілтемелерді жасауға тек супер пайдаланушының құқығы болды. Mac OS X v10.5 (Leopard) және одан кейінгі нұсқалары Time Machine резервтік көшірме механизмі үшін ғана каталогтардағы қатты сілтемелерді пайдаланады. Қатты сілтемелерді тек бір томдағы файлдарға, яғни бір файл жүйесінің ішінде ғана жасауға болады. (Әртүрлі томдар әртүрлі файл жүйелеріне ие болуы мүмкін. Мақсатты томның файл жүйесі қатты сілтемелермен үйлесімді екендігіне кепілдік жоқ.) Бір файлға жасалатын қатты сілтемелердің максималды саны санаушының мөлшерімен шектеледі. Unix сияқты жүйелерде санаушы 32 биттік машиналарда 4,294,967,295, ал 64 биттік машиналарда 18,446,744,073,709,551,615-ке тең. Кейбір файл жүйелерінде қатты сілтемелердің саны дискідегі форматтарына байланысты қатаңрақ шектеледі. Мысалы, Linux 3.11 нұсқасынан бастап ext4 файл жүйесі файлға жасалатын қатты сілтемелердің санын 65,000-ға дейін шектейді. Windows NTFS томдарындағы файлға 1024 қатты сілтемеден аспауын талап етеді. Linux Weekly News басылымында Нил Браун қатты сілтемелерді күтімі жоғары деп сынға алды, себебі олар каталог ағаштарын, соның ішінде архивтерді және дискіні пайдалану құралдарын басқаратын бағдарламалардың дизайнын қиындатады. Бұл бағдарламалар бірнеше рет сілтемеленген файлдарды қайталаудан сақтауы керек. Браун Белл Лабораториясының Plan 9 жобасы, Unix-тің мұрагері, қатты сілтемелер тұжырымдамасын қамтымайтынын атап өтті.