Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма UNIXΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 76

Автор АндрСй РобачСвский

Рис. 4.7. АрхитСктура Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ индСксныС дСскрипторы

Дисковый Ρ„Π°ΠΉΠ» ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с структуру Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ inode, Π³Π΄Π΅ хранятся основныС характСристики Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ обСспСчиваСтся доступ ΠΊ Π΅Π³ΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ. Одним ΠΈΠ· ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈΠ· этого ΠΏΡ€Π°Π²ΠΈΠ»Π° являСтся файловая систСма DOS, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ структуры Ρ„Π°ΠΉΠ»Π° ΠΈ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… сущСствСнно ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ принятых Π² UNIX. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ файловая систСма основана Π½Π° прСдставлСнии ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π° Π² Π²ΠΈΠ΄Π΅, сходном с Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ сСмантикой UNIX. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ являСтся vnode (ΠΎΡ‚ virtual inode β€” Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ индСксный дСскриптор).

ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ этот интСрфСйс Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² 1984 Π³ΠΎΠ΄Ρƒ Ρ„ΠΈΡ€ΠΌΠΎΠΉ Sun Microsystems для обСспСчСния Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠΉ ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΌΠΈ систСмами Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², Π² частности, с NFS ΠΈ ufs (FFS). БСгодня Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ файловая систСма являСтся стандартом Π² SVR4, хотя ряд Π΄Ρ€ΡƒΠ³ΠΈΡ… вСрсий UNIX Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, нСзависимая файловая систСма SCO UNIX).

ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ всСх Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² (Ρ„Π°ΠΉΠ»ΠΎΠ², Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ процСссов) прСдставлСны Π² памяти Π² Π²ΠΈΠ΄Π΅ in-core inode, Π² качСствС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ vnode. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… vnode ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π° для всСх Ρ„Π°ΠΉΠ»ΠΎΠ², нСзависимо ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, Π³Π΄Π΅ фактичСски располагаСтся Ρ„Π°ΠΉΠ». Π”Π°Π½Π½Ρ‹Π΅ vnode содСрТат ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹Π΅ характСристики Ρ„Π°ΠΉΠ»Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏ Ρ„Π°ΠΉΠ»Π°.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ поля vnode ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ‚Π°Π±Π». 4.1.


Π’Π°Π±Π»ΠΈΡ†Π° 4.1. Поля vnode

ПолС ОписаниС u_short vflag Π€Π»Π°Π³ΠΈ vnode u_short v_count Число ссылок Π½Π° vnode struct filock *v_filocks Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Ρ„Π°ΠΉΠ»Π° struct vfs *v_vfsmountedhere Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΡƒΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму, Ссли vnode являСтся Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ монтирования struct vfs *v_vfsp Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится Ρ„Π°ΠΉΠ» enum vtype v_type Π’ΠΈΠΏ vnode: ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» устройства, символичСская связь, сокСт caddr_t v_data Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΄Π°Π½Π½Ρ‹Π΅, относящиСся ΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС struct op ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ vnode

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ vnode содСрТит число ссылок v_count, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ увСличиваСтся ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ процСссом Ρ„Π°ΠΉΠ»Π° ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Π΅Π³ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ. Когда число ссылок становится Ρ€Π°Π²Π½Ρ‹ΠΌ Π½ΡƒΠ»ΡŽ, вызываСтся опСрация vn_inactive(), которая сообщаСт Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, Ρ‡Ρ‚ΠΎ Π½Π° vnode Π½ΠΈΠΊΡ‚ΠΎ большС Π½Π΅ ссылаСтся. ПослС этого файловая систСма ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ vnode (ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π΅ΠΌΡƒ inode) ΠΈΠ»ΠΈ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² кэш для дальнСйшСго использования.

ПолС v_vfsp ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму (структуру vfs, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ располоТСн Ρ„Π°ΠΉΠ», адрСсованный Π΄Π°Π½Π½Ρ‹ΠΌ vnode. Если vnode являСтся Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ монтирования, Ρ‚ΠΎ ΠΏΠΎΠ»Π΅ v_vfsmountednere ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΡƒΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму, "ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ" Π΄Π°Π½Π½Ρ‹ΠΉ vnode.

ПолС v_data ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π΄Π°Π½Π½Ρ‹Π΅, относящиСся ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. НапримСр, для дисковой Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ufs, v_data ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° запись Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ in-core inode.

Набор ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ vnode ΡƒΠΊΠ°Π·Π°Π½ ΠΏΠΎΠ»Π΅ΠΌ v_op. Π’ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования этот Π½Π°Π±ΠΎΡ€ прСдставляСт собой Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса vnode. Он являСтся своСго Ρ€ΠΎΠ΄Π° шлюзом ΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, позволяя ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΉ интСрфСйс Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ΠΈ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ спСцифичСскиС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм. НСкоторыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŽ ΠΏΠΎ систСмным Π²Ρ‹Π·ΠΎΠ²Π°ΠΌ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ‚Π°Π±Π». 4.2.


Π’Π°Π±Π»ΠΈΡ†Π° 4.2. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с vnode Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы

int (*vn_open)() ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ vnode. Если опСрация прСдусматриваСт созданиС ΠΊΠ»ΠΎΠ½Π° (Ρ€Π°Π·ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅), Ρ‚ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ vnode. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹ для ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² устройств. int (*vn_close)() Π—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ vnode. int (*vn_read)() Π§Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°, адрСсованного vnode. int (*vn_write)() Π—Π°ΠΏΠΈΡΡŒ Π² Ρ„Π°ΠΉΠ», адрСсованный vnode. int (*vn_ioctl)() Π—Π°Π΄Π°Π½ΠΈΠ΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. int (*vn_getaddr)() ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ vnode: Ρ‚ΠΈΠΏ vnode, ΠΏΡ€Π°Π²Π° доступа, Π²Π»Π°Π΄Π΅Π»Π΅Ρ†-ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Π²Π»Π°Π΄Π΅Π»Π΅Ρ†-Π³Ρ€ΡƒΠΏΠΏΠ°, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, Π½ΠΎΠΌΠ΅Ρ€ inode, число связСй, Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π°, ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±Π»ΠΎΠΊΠ° для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°, врСмя послСднСго доступа, врСмя послСднСй ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, врСмя послСднСй ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ vnode, число Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ². int (*vn_setaddr)() Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ vnode. ΠœΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ UID, GID, Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π° доступа ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. int (*vn_access)() ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²Π° доступа ΠΊ Ρ„Π°ΠΉΠ»Ρƒ, адрСсованному vnode. ΠŸΡ€ΠΈ этом производится ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ доступа Ρ„Π°ΠΉΠ»ΠΎΠ² UNIX ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, DOS). int (*vn_lookup)() ΠŸΡ€ΠΎΠΈΠ·Π²Π΅ΡΡ‚ΠΈ Ρ‚Ρ€Π°Π½ΡΠ»ΡΡ†ΠΈΡŽ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π΅ΠΌΡƒ vnode. int (*vn_create)() Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π΅ΠΌΡƒ vnode. int (*vn_remove)() Π£Π΄Π°Π»ΠΈΡ‚ΡŒ имя Ρ„Π°ΠΉΠ»Π° Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ vnode ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. int (*vn_link)() Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΆΠ΅ΡΡ‚ΠΊΡƒΡŽ связь ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ„Π°ΠΉΠ»Π° ΠΈ vnode. int (*vn_mkdir)() Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ vnode ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. int (*vn_rmdir)() Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³. int (*vn_readdir)() Π‘Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ записи ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, адрСсованного vnode. int (*vn_symlink)() Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ связь ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΎΠ²Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ„Π°ΠΉΠ»Π°, располоТСнном Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ vnode ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. int (*vn_readlink)() Π§Ρ‚Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° β€” символичСской связи. int (*vn_fsync)() Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ содСрТимоС Ρ„Π°ΠΉΠ»Π° β€” Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ всС ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. int (*vn_inactive)() Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ vnode, Ρ‚.ΠΊ. число ссылок Π½Π° vnode ΠΈΠ· Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы стало Ρ€Π°Π²Π½Ρ‹ΠΌ Π½ΡƒΠ»ΡŽ.

Π’Π·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ нСзависимыми дСскрипторами (vnode) ΠΈ зависимыми ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π° ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° рис. 4.8.

Рис. 4.8. ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы

ΠœΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒΡΡ Ρ€Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ файловая систСма Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ встроСна Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ иСрархичСскоС Π΄Π΅Ρ€Π΅Π²ΠΎ.

Волько послС этого ядро смоТСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ созданиС, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅, Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ запись Π² Ρ„Π°ΠΉΠ». Π­Ρ‚Π° опСрация встраивания ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ монтирования Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы.

КаТдая ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Π°Ρ файловая систСма прСдставлСна Π½Π° нСзависимом ΡƒΡ€ΠΎΠ²Π½Π΅ Π² Π²ΠΈΠ΄Π΅ структуры vfs, Π°Π½Π°Π»ΠΎΠ³Π΅ записи Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ монтирования дисковой Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ vfs всСх ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² Π²ΠΈΠ΄Π΅ односвязного списка, Π² совокупности обСспСчивая ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ для обслуТивания всСго иСрархичСского Π΄Π΅Ρ€Π΅Π²Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π½Π° протяТСнии Ρ€Π°Π±ΠΎΡ‚Ρ‹. ΠŸΠ΅Ρ€Π²ΠΎΠΉ записью списка всСгда являСтся корнСвая файловая систСма. Π’ дальнСйшСм, список vfs ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΡƒΡΡ‚ΠΎΡΠ²ΡˆΠΈΠΌΡΡ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠΌ β€” Ρ‚Π°Π±Π»ΠΈΡ†Π° монтирования. Поля структуры vfs ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ‚Π°Π±Π». 4.3.