Типове файлове - Разбиране на UNIX системите
Повечето файлови системи поддържат седем типа файлове:
байт-ориентирани (символни) устройства файлове;
блоково ориентирани (блокови) файлове на устройства;
именувани тръби (FIFO);
Някои системи не поддържат файлови типове като сокети или именувани канали.
Обикновени файлове
Редовният файл е просто поредица от байтове. UNIX не налага ограничения върху структурата си. Текстови документи, изпълними програми, библиотеки с функции и други се съхраняват в обикновени файлове. Те могат да бъдат достъпни както последователно, така и директно.
Каталози
Директорията съдържа именувани връзки към други файлове. Той се създава с командатаmkdir и се премахва (ако е празен) с командатаrmdir. Директориите, които съдържат файлове, могат да бъдат изтрити с командатаrm-r.
Името на файла се съхранява в родителската директория, а не в самия файл. Един файл може да бъде препратен от множество директории едновременно и дори от множество записи в една и съща директория и всички връзки могат да имат различни имена. Това създава илюзията, че файлът е в различни директории едновременно.
Връзки от този вид обикновено се наричат "твърди" връзки, за да се разграничат от символните ("меки") връзки, които са описани по-долу. Твърдите връзки се създават с командатаln и се премахват с командатаrm.
Синтаксисът на командатаln е лесензапомнете, защото повтаря работата на командатаcp. Екип
създава копие на файлoldfile с имеnewfile. По същия начин екипът
създава нова връзкаnewfile към файлoldfile.
Важно е да разберете, че твърдите връзки не са отделен тип файл. Просто файловата система ви позволява да създавате връзки към един и същи файл в различни директории. Файловите атрибути, като разрешения и ID на собственика, са общи за всички връзки.
Файлове на устройства, специфични за байтове и блокове
Файловете на устройството позволяват на UNIX програмите да взаимодействат с хардуера и периферните устройства на системата. Когато конфигурирате ядрото, тези модули са свързани към него, които знаят как да взаимодействат с всяко от наличните устройства *. Специална програма, наречена драйвер на устройство, отговаря за цялата работа по управлението на конкретно устройство.
Драйверите на устройства формират стандартен комуникационен интерфейс, който изглежда като нормален файл за потребителя. Когато ядрото получи заявка за специфичен за байт или блок файл на устройство, то просто предава заявката на съответния драйвер. Важно е да се прави разлика между файлове на устройства и драйвери на устройства. Самите файлове не са драйвери. Можете да ги разглеждате като шлюзове, през които се изпращат заявки до драйвера.
Байт-ориентираните файлове на устройството позволяват на свързаните с тях драйвери да извършват собствено I/O буфериране. Файловете на устройства, специфични за блокове, се обработват от драйвери, които извършват I/O на големи парчета (блокове) и оставят задачите за буфериране на ядрото. Определени видове хардуер, като например твърди дисковедискове и магнитни ленти, могат да бъдат представени от файлове от всякакъв тип.
В системата може да има няколко устройства от един и същи тип. Следователно файловете на устройството се характеризират с две числа: главни и второстепенни. Основният номер на устройството казва на ядрото на кой драйвер принадлежи файлът, а второстепенният номер казва на драйвера до кое физическо устройство да има достъп. Например основно устройство номер 6 на Linux показва драйвер за паралелен порт. Първият паралелен порт (/dev/lp0 ) ще има голям номер 6 и вторичен номер 0.
Някои драйвери използват второстепенния номер на устройството по нестандартен начин. Например драйверите на лентовото устройство често разчитат на него, когато избират плътност на запис и дали да превъртят лентата назад след затваряне на файл на устройството. В някои системи "терминалният драйвер" (който всъщност управлява всички серийни устройства) използва второстепенни номера на устройства, за да разграничи модемите, използвани за повикване на отдалечени системи от модемите, които получават съобщения.
Сокети
Сокетите капсулират връзките между процесите, позволявайки им да комуникират, без да бъдат повлияни от други процеси. UNIX поддържа няколко вида сокети, повечето от които изискват работа в мрежа. UNIX сокетите са локални за конкретен компютър. Те са достъпни чрез обект на файлова система, а не през мрежов порт.
Въпреки че други процеси разпознават сокет файловете като записи в директория, процесите, които не участват във връзката, не могат да четат или пишат в тези файлове. Сокетите работят със системата за печат, X Window System иsyslog система.
Сокетите се създават чрез системното извикванеsocket. Когато връзката е затворена от двете страни, сокетът може да бъде премахнат с помощта на командатаrm или системното извикванеunlink.
Наименувани канали
Подобно на сокетите, наименуваните канали позволяват на два процеса, работещи на една и съща машина, да комуникират. Наименуваните канали се създават с командатаmknod и се премахват с командатаrm.
Символни връзки
Символните връзки се създават с командатаln-s и се премахват с командатаrm. Тъй като съдържат произволно име на път, те могат да сочат към файлове, съхранявани в други файлови системи, и дори към несъществуващи файлове. Понякога множество символни връзки образуват цикъл.