Π’ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈ систСми Π²ΠΎ Linux: Π·ΠΎΡˆΡ‚ΠΎ сС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ ΠΈ ΠΊΠ°ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π°Ρ‚? Π”Π΅Π» 1

Π—Π΄Ρ€Π°Π²ΠΎ Π½Π° ситС! ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΡƒΠ²Π°ΠΌΠ΅ Π΄Π° лансирамС Π½ΠΎΠ²ΠΈ прСноси Π½Π° курсСвитС ΡˆΡ‚ΠΎ вСќС Π³ΠΈ сакатС, Π° сСга Π±Ρ€Π·Π°ΠΌΠ΅ Π΄Π° објавимС Π΄Π΅ΠΊΠ° Π·Π°ΠΏΠΎΡ‡Π½ΡƒΠ²Π°ΠΌΠ΅ Π½ΠΎΠ² сСт Π½Π° курсСви β€žΠΠ΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ Π½Π° Π›ΠΈΠ½ΡƒΠΊΡβ€œ, кој ќС стартува Π½Π° ΠΊΡ€Π°Ρ˜ΠΎΡ‚ Π½Π° Π°ΠΏΡ€ΠΈΠ». Нова ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ќС Π±ΠΈΠ΄Π΅ посвСтСна Π½Π° овој настан. Π‘ΠΎ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΠΎΡ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΡ˜Π°Π» ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ˜ ΠΎΠ²Π΄Π΅.

Π’ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈΡ‚Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈ систСми Π΄Π΅Π»ΡƒΠ²Π°Π°Ρ‚ ΠΊΠ°ΠΊΠΎ Π΅Π΄Π΅Π½ Π²ΠΈΠ΄ ΠΌΠ°Π³ΠΈΡ‡Π½Π° Π°ΠΏΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡ˜Π° ΡˆΡ‚ΠΎ ѝ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π½Π° Ρ„ΠΈΠ»ΠΎΠ·ΠΎΡ„ΠΈΡ˜Π°Ρ‚Π° Π½Π° Linux Π΄Π° ΠΊΠ°ΠΆΠ΅ Π΄Π΅ΠΊΠ° β€žΡΓ¨ Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°β€œ.

Π’ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈ систСми Π²ΠΎ Linux: Π·ΠΎΡˆΡ‚ΠΎ сС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ ΠΈ ΠΊΠ°ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π°Ρ‚? Π”Π΅Π» 1

Π¨Ρ‚ΠΎ Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π΅Π½ систСм? Π’Ρ€Π· основа Π½Π° Π·Π±ΠΎΡ€ΠΎΠ²ΠΈΡ‚Π΅ Π½Π° Ρ€Π°Π½ΠΈΠΎΡ‚ соработник ΠΈ Π°Π²Ρ‚ΠΎΡ€ Π½Π° Линукс Π ΠΎΠ±Π΅Ρ€Ρ‚ Π›Π°Π², β€žΠ”Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈΠΎΡ‚ систСм Π΅ хиСрархиско ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ собрани спорСд ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½Π° ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°β€œ. Π‘Π΅ΠΏΠ°ΠΊ, ΠΎΠ²Π°Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π° ΠΏΠΎΠ΄Π΅Π΄Π½Π°ΠΊΠ²ΠΎ Π΄ΠΎΠ±Ρ€ΠΎ сС однСсува Π½Π° VFAT (Π’Π°Π±Π΅Π»Π° Π·Π° распрСдСлба Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ), Git ΠΈ ΠšΠ°ΡΠ°Π½Π΄Ρ€Π° (NoSQL Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ). Π—Π½Π°Ρ‡ΠΈ, ΡˆΡ‚ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ Π³ΠΎ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° Ρ‚Π°ΠΊΠ²ΠΎΡ‚ΠΎ Π½Π΅ΡˆΡ‚ΠΎ ΠΊΠ°ΠΊΠΎ β€žΠ΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π΅Π½ ΡΠΈΡΡ‚Π΅ΠΌβ€œ?

Основи Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π΅Π½ систСм

Линукс ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ ΠΈΠΌΠ° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ΠΈ Π±Π°Ρ€Π°ΡšΠ° Π·Π° Π΅Π½Ρ‚ΠΈΡ‚Π΅Ρ‚ ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС смСта Π·Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π΅Π½ систСм. ΠœΠΎΡ€Π° Π΄Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ open(), read() ΠΈ write() Π·Π° ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Π½ΠΈ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ ΠΊΠΎΠΈ ΠΈΠΌΠ°Π°Ρ‚ имиња. Од ΠΎΠ±Ρ˜Π΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½Π° Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°ΡšΠ΅, ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ‡ΠΊΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π΅Π½ систСм ΠΊΠ°ΠΊΠΎ апстрактСн ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ ΠΈ ΠΎΠ²ΠΈΠ΅ Ρ‚Ρ€ΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сС смСтаат Π·Π° β€žΠ²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈβ€œ ΠΈ Π½Π΅ΠΌΠ°Π°Ρ‚ спСцифична Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°. Π‘ΠΏΠΎΡ€Π΅Π΄ Ρ‚ΠΎΠ°, стандардната ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π΅Π½ систСм сС Π½Π°Ρ€Π΅ΠΊΡƒΠ²Π° Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π΅Π½ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π΅Π½ систСм (VFS).

Π’ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈ систСми Π²ΠΎ Linux: Π·ΠΎΡˆΡ‚ΠΎ сС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ ΠΈ ΠΊΠ°ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π°Ρ‚? Π”Π΅Π» 1

Ако ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΠΎΡ‚Π²ΠΎΡ€ΠΈΠΌΠ΅, Ρ‡ΠΈΡ‚Π°ΠΌΠ΅ ΠΈ ΠΏΠΈΡˆΡƒΠ²Π°ΠΌΠ΅ Π½Π° Π΅Π½Ρ‚ΠΈΡ‚Π΅Ρ‚, Ρ‚ΠΎΠ³Π°Ρˆ Ρ‚ΠΎΡ˜ Π΅Π½Ρ‚ΠΈΡ‚Π΅Ρ‚ сС смСта Π·Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠ΅ ΠΎΠ΄ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΡ‚ Π²ΠΎ ΠΊΠΎΠ½Π·ΠΎΠ»Π°Ρ‚Π° ΠΏΠΎΠ³ΠΎΡ€Π΅.
Π€Π΅Π½ΠΎΠΌΠ΅Π½ΠΎΡ‚ VFS само Π³ΠΎ истакнува ΠΎΠΏΡΠ΅Ρ€Π²ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π²ΠΎΠΎΠ±ΠΈΡ‡Π°Π΅Π½ΠΎ Π·Π° систСмитС слични Π½Π° Unix Π΄Π΅ΠΊΠ° β€žΡΓ¨ Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°β€œ. РазмислСтС ΠΊΠΎΠ»ΠΊΡƒ Π΅ Ρ‡ΡƒΠ΄Π½ΠΎ ΡˆΡ‚ΠΎ Ρ‚ΠΎΡ˜ ΠΌΠ°Π» ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ³ΠΎΡ€Π΅ со /dev/console ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π° ΠΊΠ°ΠΊΠΎ Π²ΡΡƒΡˆΠ½ΠΎΡΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΊΠΎΠ½Π·ΠΎΠ»Π°Ρ‚Π°. Π‘Π»ΠΈΠΊΠ°Ρ‚Π° ΠΏΡ€ΠΈΠΊΠ°ΠΆΡƒΠ²Π° ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Π° Bash сСсија. Π˜ΡΠΏΡ€Π°ΡœΠ°ΡšΠ΅Ρ‚ΠΎ Π½ΠΈΠ·Π° Π΄ΠΎ ΠΊΠΎΠ½Π·ΠΎΠ»Π°Ρ‚Π° (ΡƒΡ€Π΅Π΄ Π·Π° Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½Π° ΠΊΠΎΠ½Π·ΠΎΠ»Π°) Π³ΠΎ ΠΏΡ€ΠΈΠΊΠ°ΠΆΡƒΠ²Π° Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π΅Π½ Π΅ΠΊΡ€Π°Π½. VFS ΠΈΠΌΠ° Π΄Ρ€ΡƒΠ³ΠΈ, ΡƒΡˆΡ‚Π΅ ΠΏΠΎΡ‡ΡƒΠ΄Π½ΠΈ ΡΠ²ΠΎΡ˜ΡΡ‚Π²Π°. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° ΠΏΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°Ρ‚Π΅ ΠΏΠΎ Π½Π΅Π³ΠΎ.

БистСмитС ΡˆΡ‚ΠΎ Π½ΠΈ сС ΠΏΠΎΠ·Π½Π°Ρ‚ΠΈ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС ext4, NFS ΠΈ /proc ΠΈΠΌΠ°Π°Ρ‚ Ρ‚Ρ€ΠΈ Π²Π°ΠΆΠ½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΎ структурата Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ C Π½Π°Ρ€Π΅Ρ‡Π΅Π½ΠΈ file_operations. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ, ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈ систСми ја ΠΏΡ€ΠΎΡˆΠΈΡ€ΡƒΠ²Π°Π°Ρ‚ ΠΈ ΠΎΡ‚Ρ„Ρ€Π»Π°Π°Ρ‚ функционалноста Π½Π° VFS Π½Π° ΠΏΠΎΠ·Π½Π°Ρ‚ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ Π½Π°Ρ‡ΠΈΠ½. Како ΡˆΡ‚ΠΎ Π·Π°Π±Π΅Π»Π΅ΠΆΡƒΠ²Π° Π ΠΎΠ±Π΅Ρ€Ρ‚ Π›Π°Π², Π°ΠΏΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° VFS ΠΈΠΌ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π½Π° корисницитС Π½Π° Линукс лСсно Π΄Π° ΠΊΠΎΠΏΠΈΡ€Π°Π°Ρ‚ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ Π΄ΠΎ ΠΈΠ»ΠΈ ΠΎΠ΄ Ρ‚Ρ€Π΅Ρ‚ΠΈ Π»ΠΈΡ†Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΈ систСми ΠΈΠ»ΠΈ апстрактни Π΅Π½Ρ‚ΠΈΡ‚Π΅Ρ‚ΠΈ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС Ρ†Π΅Π²ΠΊΠΈΡ‚Π΅ Π±Π΅Π· Π΄Π° сС Π³Ρ€ΠΈΠΆΠ°Ρ‚ Π·Π° Π½ΠΈΠ²Π½ΠΈΠΎΡ‚ Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ΅Π½ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. На корисничката страна (кориснички простор), ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ систСмски ΠΏΠΎΠ²ΠΈΠΊ, процСсот ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΊΠΎΠΏΠΈΡ€Π° ΠΎΠ΄ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° Π²ΠΎ структури Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΡ‚ read() Π΅Π΄Π΅Π½ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π΅Π½ систСм ΠΈ ΠΏΠΎΡ‚ΠΎΠ° користСтС Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΡ‚ write () Π΄Ρ€ΡƒΠ³ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π΅Π½ систСм Π·Π° ΠΈΠ·Π»Π΅Π· Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ.

Π’ΠΎ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ сС Π½Π°ΠΎΡ“Π°Π°Ρ‚ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΠΈ Π·Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠΎΠΈ ΠΏΡ€ΠΈΠΏΠ°Ρ“Π°Π°Ρ‚ Π½Π° основнитС Ρ‚ΠΈΠΏΠΎΠ²ΠΈ VFS fs/*.c ΠΈΠ·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ, Π΄ΠΎΠ΄Π΅ΠΊΠ° ΠΏΠΎΠ΄Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΈΡ‚Π΅ fs/ содрТи спСцифични Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈ систСми. ΠˆΠ°Π΄Ρ€ΠΎΡ‚ΠΎ содрТи ΠΈ Π΅Π½Ρ‚ΠΈΡ‚Π΅Ρ‚ΠΈ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС cgroups, /dev ΠΈ tmpfs, ΠΊΠΎΠΈ сС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ Π·Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° процСсот Π½Π° подигањС ΠΈ Π·Π°Ρ‚ΠΎΠ° сС Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ Π²ΠΎ ΠΏΠΎΠ΄Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ init/. Π’Π΅ ΠΌΠΎΠ»ΠΈΠΌΠ΅ ΠΈΠΌΠ°Ρ˜Ρ‚Π΅ Π²ΠΎ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Π΄Π΅ΠΊΠ° cgroups, /dev ΠΈ tmpfs Π½Π΅ Π³ΠΈ Π½Π°Ρ€Π΅ΠΊΡƒΠ²Π°Ρ˜Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ β€žΠ³ΠΎΠ»Π΅ΠΌΠΈ Ρ‚Ρ€ΠΈβ€œ. file_operations, Π½ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Ρ‡ΠΈΡ‚Π°Ρ˜Ρ‚Π΅ ΠΈ ΠΏΠΈΡˆΡƒΠ²Π°Ρ˜Ρ‚Π΅ Π²ΠΎ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π°.
Π”ΠΈΡ˜Π°Π³Ρ€Π°ΠΌΠΎΡ‚ ΠΏΠΎΠ΄ΠΎΠ»Ρƒ ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π° ΠΊΠ°ΠΊΠΎ корисничкиот простор пристапува Π΄ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ Ρ‚ΠΈΠΏΠΎΠ²ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈ систСми ΠΊΠΎΠΈ Π²ΠΎΠΎΠ±ΠΈΡ‡Π°Π΅Π½ΠΎ сС ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π°Ρ‚ Π½Π° систСмитС Линукс. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС pipes, dmesg ΠΈ POSIX clocks, ΠΊΠΎΠΈ исто Ρ‚Π°ΠΊΠ° ја спровСдуваат структурата file_operations, достапно ΠΏΡ€Π΅ΠΊΡƒ VFS ΡΠ»ΠΎΡ˜ΠΎΡ‚.

Π’ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈ систСми Π²ΠΎ Linux: Π·ΠΎΡˆΡ‚ΠΎ сС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ ΠΈ ΠΊΠ°ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π°Ρ‚? Π”Π΅Π» 1

VFS Π΅ β€žΡΠ»ΠΎΡ˜ Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°β€œ ΠΏΠΎΠΌΠ΅Ρ“Ρƒ систСмски ΠΏΠΎΠ²ΠΈΡ†ΠΈ ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ΠΈ file_operationsΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС ext4 ΠΈ procfs. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ file_operations ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΡ†ΠΈΡ€Π° со Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΡƒΡ€Π΅Π΄ΠΎΡ‚ ΠΈΠ»ΠΈ со ΡƒΡ€Π΅Π΄ΠΈ Π·Π° пристап Π΄ΠΎ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°. tmpfs, devtmpfs ΠΈ cgroups Π½Π΅ користСтС file_operations, Π½ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ пристап Π΄ΠΎ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π°.
ΠŸΠΎΡΡ‚ΠΎΠ΅ΡšΠ΅Ρ‚ΠΎ Π½Π° VFS ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° моТност Π·Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚, бидСјќи основнитС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ ΠΏΠΎΠ²Ρ€Π·Π°Π½ΠΈ со Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈΡ‚Π΅ систСми Π½Π΅ ΠΌΠΎΡ€Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π΄Π° сС ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π°Ρ‚ ΠΎΠ΄ сСкој Ρ‚ΠΈΠΏ Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π΅Π½ систСм. ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½Π°Ρ‚Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚ Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ користСна ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° ΠΌΠ΅Ρ“Ρƒ софтвСрскитС ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈ! ΠœΠ΅Ρ“ΡƒΡ‚ΠΎΠ°, Π°ΠΊΠΎ ΠΊΠΎΠ΄ΠΎΡ‚ Π·Π° ΠΏΠΎΠ²Π΅ΡœΠ΅ΠΊΡ€Π°Ρ‚Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° содрТи сСриозни Π³Ρ€Π΅ΡˆΠΊΠΈ, ΠΎΠ΄ Π½ΠΈΠ² страдаат ситС ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΈ Π³ΠΈ наслСдуваат Π²ΠΎΠΎΠ±ΠΈΡ‡Π°Π΅Π½ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ.

/tmp: ЕдноставСн совСт

ЕдноставСн Π½Π°Ρ‡ΠΈΠ½ Π΄Π° сС ΠΎΡ‚ΠΊΡ€ΠΈΠ΅ Π΄Π΅ΠΊΠ° VFS сС присутни Π½Π° систСмот Π΅ Π΄Π° сС внСсС mount | grep -v sd | grep -v :/, кој ќС Π³ΠΈ ΠΏΡ€ΠΈΠΊΠ°ΠΆΠ΅ ситС ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½ΠΈ (mounted) Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈ систСми ΠΊΠΎΠΈ Π½Π΅ сС Ρ€Π΅Π·ΠΈΠ΄Π΅Π½Ρ‚Π½ΠΈ Π½Π° дискот ΠΈ Π½Π΅ сС NFS, ΡˆΡ‚ΠΎ Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π° ΠΏΠΎΠ²Π΅ΡœΠ΅Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ΠΈ. Π•Π΄Π΅Π½ ΠΎΠ΄ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΡ‚Π΅ ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°ΡšΠ° (mounts) VFS нСсомнСно ќС Π±ΠΈΠ΄Π΅ /tmp, Π½Π΅Π»ΠΈ?

Π’ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈ систСми Π²ΠΎ Linux: Π·ΠΎΡˆΡ‚ΠΎ сС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ ΠΈ ΠΊΠ°ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π°Ρ‚? Π”Π΅Π» 1

Π‘ΠΈΡ‚Π΅ Π³ΠΎ Π·Π½Π°Π°Ρ‚ Ρ‚ΠΎΠ° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ / tmp Π½Π° Ρ„ΠΈΠ·ΠΈΡ‡ΠΊΠΈ ΠΌΠ΅Π΄ΠΈΡƒΠΌΠΈ - Π»ΡƒΠ΄ΠΎ! Π˜Π·Π²ΠΎΡ€.

Π—ΠΎΡˆΡ‚ΠΎ Π½Π΅ Π΅ ΠΏΡ€Π΅ΠΏΠΎΡ€Π°Ρ‡Π»ΠΈΠ²ΠΎ Π΄Π° сС складира /tmp Π½Π° Ρ„ΠΈΠ·ΠΈΡ‡ΠΊΠΈ ΠΌΠ΅Π΄ΠΈΡƒΠΌΠΈ? Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ Π²ΠΎ /tmp сС ΠΏΡ€ΠΈΠ²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΡƒΡ€Π΅Π΄ΠΈΡ‚Π΅ Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ сС ΠΏΠΎΠ±Π°Π²Π½ΠΈ ΠΎΠ΄ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ сС ΠΊΡ€Π΅ΠΈΡ€Π°Π°Ρ‚ tmpfs. ОсвСн Ρ‚ΠΎΠ°, Ρ„ΠΈΠ·ΠΈΡ‡ΠΊΠΈΡ‚Π΅ ΠΌΠ΅Π΄ΠΈΡƒΠΌΠΈ сС ΠΏΠΎΠΏΠΎΠ΄Π»ΠΎΠΆΠ½ΠΈ Π½Π° абСњС ΠΈ кинСњС ΠΊΠΎΠ³Π° сС ΠΏΡ€Π΅ΠΏΠΈΡˆΠ°Π½ΠΈ ΠΎΡ‚ΠΊΠΎΠ»ΠΊΡƒ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π°. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ Π²ΠΎ /tmp ΠΌΠΎΠΆΠ΅ Π΄Π° содрТат чувствитСлни ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ Π½ΠΈΠ²Π½ΠΎΡ‚ΠΎ ΠΈΡΡ‡Π΅Π·Π½ΡƒΠ²Π°ΡšΠ΅ ΠΏΡ€ΠΈ сСкоС Ρ€Π΅ΡΡ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΡšΠ΅ Π΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Π»Π½Π° карактСристика.

Π—Π° ΠΆΠ°Π», Π½Π΅ΠΊΠΎΠΈ скрипти Π·Π° ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π° Π½Π° Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π° Π½Π° Linux стандардно создаваат /tmp Π½Π° ΡƒΡ€Π΅Π΄ΠΎΡ‚ Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅. НС ΠΎΡ‡Π°Ρ˜ΡƒΠ²Π°Ρ˜Ρ‚Π΅ Π°ΠΊΠΎ Ρ‚ΠΎΠ° сС случи ΠΈ со Π²Π°ΡˆΠΈΠΎΡ‚ систСм. Π‘Π»Π΅Π΄Π΅Ρ‚Π΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ Сдноставни упатства со Архива Π’ΠΈΠΊΠΈΠ·Π° Π΄Π° Π³ΠΎ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΎΠ²Π° ΠΈ Π·Π°ΠΏΠΎΠΌΠ½Π΅Ρ‚Π΅ Π΄Π΅ΠΊΠ° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° Π΅ Π½Π°ΠΌΠ΅Π½Π΅Ρ‚Π° Π·Π° tmpfs станува нСдостапСн Π·Π° Π΄Ρ€ΡƒΠ³ΠΈ Ρ†Π΅Π»ΠΈ. Π‘ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ Π·Π±ΠΎΡ€ΠΎΠ²ΠΈ, систСм со ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΈ tmpfs ΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ Π²ΠΎ Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ја искористи Ρ†Π΅Π»Π°Ρ‚Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π° ΠΈ Π΄Π° сС ΡΡ€ΡƒΡˆΠΈ. Π”Ρ€ΡƒΠ³Π° Π½Π°Π²Π΅ΡΡ‚ΡƒΠ²Π°ΡšΠ΅: Π΄ΠΎΠ΄Π΅ΠΊΠ° ΡƒΡ€Π΅Π΄ΡƒΠ²Π°Ρ‚Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° /etc/fstab, Π·Π°ΠΏΠΎΠΌΠ½Π΅Ρ‚Π΅ Π΄Π΅ΠΊΠ° ΠΌΠΎΡ€Π° Π΄Π° Π·Π°Π²Ρ€ΡˆΠΈ со Π½ΠΎΠ²Π° линија, ΠΈΠ½Π°ΠΊΡƒ Π²Π°ΡˆΠΈΠΎΡ‚ систСм Π½Π΅ΠΌΠ° Π΄Π° сС ΠΏΠΎΠ΄ΠΈΠ³Π½Π΅.

/proc ΠΈ /sys

ΠŸΠΎΠΊΡ€Π°Ρ˜ /tmpVFS (Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈ систСми) ΠΊΠΎΠΈ ΠΈΠΌ сС Π½Π°Ρ˜ΠΏΠΎΠ·Π½Π°Ρ‚ΠΈ Π½Π° корисницитС Π½Π° Линукс сС /proc ΠΈ /sys. (/dev сС Π½Π°ΠΎΡ“Π° Π²ΠΎ Π·Π°Π΅Π΄Π½ΠΈΡ‡ΠΊΠ° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π° ΠΈ Π½Π΅ΠΌΠ° file_operations). Π—ΠΎΡˆΡ‚ΠΎ ΠΎΠ²ΠΈΠ΅ Π΄Π²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ? АјдС Π΄Π° Π³ΠΎ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΎΠ²Π° ΠΏΡ€Π°ΡˆΠ°ΡšΠ΅.

procfs создава слика ΠΎΠ΄ ΡΠΎΡΡ‚ΠΎΡ˜Π±Π°Ρ‚Π° Π½Π° ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ ΠΈ процСситС Π·Π° ΠΊΠΎΠΈ Ρ‚ΠΎΡ˜ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° userspace. Π’ΠΎ /proc ΠˆΠ°Π΄Ρ€ΠΎΡ‚ΠΎ Π΄Π°Π²Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π·Π° Ρ‚ΠΎΠ° ΠΊΠ°ΠΊΠ²ΠΈ ΠΊΠ°ΠΏΠ°Ρ†ΠΈΡ‚Π΅Ρ‚ΠΈ ΠΈΠΌΠ°, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ, Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π° ΠΈ распорСдувач. ОсвСн Ρ‚ΠΎΠ°, /proc/sys – Ρ‚ΡƒΠΊΠ° сС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ со помош Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° sysctl, достапно Π·Π° userspace. Бтатусот ΠΈ статистиката Π½Π° ΠΏΠΎΠ΅Π΄ΠΈΠ½Π΅Ρ‡Π½ΠΈΡ‚Π΅ процСси сС ΠΏΡ€ΠΈΠΊΠ°ΠΆΠ°Π½ΠΈ Π²ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΈ /proc/.

Π’ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈ систСми Π²ΠΎ Linux: Π·ΠΎΡˆΡ‚ΠΎ сС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ ΠΈ ΠΊΠ°ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π°Ρ‚? Π”Π΅Π» 1

Π’ΡƒΠΊΠ° /proc/meminfo Π΅ ΠΏΡ€Π°Π·Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° која сСпак содрТи Π²Ρ€Π΅Π΄Π½ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

ΠžΠ΄Π½Π΅ΡΡƒΠ²Π°ΡšΠ΅ /proc Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π°Π°Ρ‚ ΠΊΠΎΠ»ΠΊΡƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈ систСми Π½Π° VFS диск ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π°Ρ‚. Од Π΅Π΄Π½Π° страна, /proc/meminfo содрТи ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΊΠΎΠΈ ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° сС Π²ΠΈΠ΄Π°Ρ‚ со ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° free. Од Π΄Ρ€ΡƒΠ³Π° страна, ΠΏΡ€Π°Π·Π½ΠΎ Π΅! Како сС случува ΠΎΠ²Π°? Π‘ΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° потсСтува Π½Π° ΠΏΠΎΠ·Π½Π°Ρ‚Π°Ρ‚Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π° со наслов β€žΠ”Π°Π»ΠΈ мСсСчината постои ΠΊΠΎΠ³Π° никој Π½Π΅ ја Π³Π»Π΅Π΄Π°? РСалност ΠΈ ΠΊΠ²Π°Π½Ρ‚Π½Π° Ρ‚Π΅ΠΎΡ€ΠΈΡ˜Π°β€œ, напишана ΠΎΠ΄ профСсорот ΠΏΠΎ Ρ„ΠΈΠ·ΠΈΠΊΠ° Π½Π° Π£Π½ΠΈΠ²Π΅Ρ€Π·ΠΈΡ‚Π΅Ρ‚ΠΎΡ‚ ΠšΠΎΡ€Π½Π΅Π», Π”Π΅Ρ˜Π²ΠΈΠ΄ ΠœΠ΅Ρ€ΠΌΠΈΠ½ Π²ΠΎ 1985 Π³ΠΎΠ΄ΠΈΠ½Π°. Π€Π°ΠΊΡ‚ Π΅ Π΄Π΅ΠΊΠ° ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ собира статистика Π·Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π° ΠΊΠΎΠ³Π° ΠΈΠΌΠ° Π±Π°Ρ€Π°ΡšΠ΅ /proc, ΠΈ Π²ΡΡƒΡˆΠ½ΠΎΡΡ‚ Π²ΠΎ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ /proc Π½Π΅ΠΌΠ° Π½ΠΈΡˆΡ‚ΠΎ ΠΊΠΎΠ³Π° никој Π½Π΅ Π³Π»Π΅Π΄Π° Ρ‚Π°ΠΌΡƒ. Како ΡˆΡ‚ΠΎ Ρ€Π΅ΠΊΠΎΠ² ΠœΠ΅Ρ€ΠΌΠΈΠ½, β€žΠ€ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»Π½Π°Ρ‚Π° ΠΊΠ²Π°Π½Ρ‚Π½Π° Π΄ΠΎΠΊΡ‚Ρ€ΠΈΠ½Π° Π²Π΅Π»ΠΈ Π΄Π΅ΠΊΠ° ΠΌΠ΅Ρ€Π΅ΡšΠ΅Ρ‚ΠΎ Π³Π΅Π½Π΅Ρ€Π°Π»Π½ΠΎ Π½Π΅ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π° вСќС постоСчка врСдност Π½Π° ΠΈΠΌΠΎΡ‚ΠΎΡ‚ ΡˆΡ‚ΠΎ сС ΠΌΠ΅Ρ€ΠΈβ€œ. (И размислСтС Π·Π° ΠΏΡ€Π°ΡˆΠ°ΡšΠ΅Ρ‚ΠΎ Π·Π° мСсСчината ΠΊΠ°ΠΊΠΎ домашна Π·Π°Π΄Π°Ρ‡Π°!)
ΠžΡ‡ΠΈΠ³Π»Π΅Π΄Π½Π° ΠΏΡ€Π°Π·Π½ΠΈΠ½Π° procfs ΠΈΠΌΠ° смисла бидСјќи ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈΡ‚Π΅ Ρ‚Π°ΠΌΡƒ сС Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΈ. ΠœΠ°Π»ΠΊΡƒ ΠΏΠΎΠΈΠ½Π°ΠΊΠ²Π° ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡ˜Π° со sysfs. АјдС Π΄Π° спорСдимС ΠΊΠΎΠ»ΠΊΡƒ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ ΠΎΠ΄ Π±Π°Ρ€Π΅ΠΌ Π΅Π΄Π΅Π½ Π±Π°Ρ˜Ρ‚ ΠΈΠΌΠ° /proc ΠΈ /sys.

Π’ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈ систСми Π²ΠΎ Linux: Π·ΠΎΡˆΡ‚ΠΎ сС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ ΠΈ ΠΊΠ°ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π°Ρ‚? Π”Π΅Π» 1

Procfs ΠΈΠΌΠ° Π΅Π΄Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°, ΠΈΠΌΠ΅Π½ΠΎ ΠΈΠ·Π²Π΅Π·Π΅Π½Π°Ρ‚Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚, ΡˆΡ‚ΠΎ Π΅ исклучок бидСјќи Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° само Сднаш ΠΏΠΎ подигањС. Од Π΄Ρ€ΡƒΠ³Π° страна, Π²ΠΎ /sys ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³Ρƒ ΠΏΠΎΠ³ΠΎΠ»Π΅ΠΌΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ, ΠΎΠ΄ ΠΊΠΎΠΈ ΠΌΠ½ΠΎΠ³Ρƒ Π·Π°Ρ„Π°ΡœΠ°Π°Ρ‚ Ρ†Π΅Π»Π° страница ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°. ΠžΠ±ΠΈΡ‡Π½ΠΎ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ sysfs содрТат Ρ‚ΠΎΡ‡Π½ΠΎ Π΅Π΄Π΅Π½ Π±Ρ€ΠΎΡ˜ ΠΈΠ»ΠΈ Π½ΠΈΠ·Π°, Π·Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΠ΄ Ρ‚Π°Π±Π΅Π»ΠΈΡ‚Π΅ со ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π΄ΠΎΠ±ΠΈΠ΅Π½ΠΈ со Ρ‡ΠΈΡ‚Π°ΡšΠ΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ ΠΊΠ°ΠΊΠΎ Π½Π° ΠΏΡ€ /proc/meminfo.

Ρ†Π΅Π» sysfs – ΠžΠ±Π΅Π·Π±Π΅Π΄Π΅Ρ‚Π΅ Ρ‡ΠΈΡ‚Π»ΠΈΠ²ΠΈ ΠΈ Π·Π°ΠΏΠΈΡˆΡƒΠ²Π°Ρ‡ΠΊΠΈ ΡΠ²ΠΎΡ˜ΡΡ‚Π²Π° Π½Π° ΠΎΠ½Π° ΡˆΡ‚ΠΎ Π³ΠΎ Π½Π°Ρ€Π΅ΠΊΡƒΠ²Π° ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ Β«kobjectsΒ» Π²ΠΎ корисничкиот простор. ЕдинствСната Ρ†Π΅Π» kobjects Π΅ Π±Ρ€ΠΎΠ΅ΡšΠ΅ Π½Π° Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈ: ΠΊΠΎΠ³Π° послСдната Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†Π° Π·Π° ΠΊΠΎΠ±Ρ˜Π΅ΠΊΡ‚ Π΅ ΠΈΠ·Π±Ρ€ΠΈΡˆΠ°Π½Π°, систСмот ќС Π³ΠΈ Π²Ρ€Π°Ρ‚ΠΈ рСсурситС ΠΏΠΎΠ²Ρ€Π·Π°Π½ΠΈ со Π½Π΅Π³ΠΎ. Π‘Π΅ΠΏΠ°ΠΊ, /sys Π³ΠΎ сочинува Π½Π°Ρ˜Π³ΠΎΠ»Π΅ΠΌΠΈΠΎΡ‚ Π΄Π΅Π» ΠΎΠ΄ ΠΏΠΎΠ·Π½Π°Ρ‚ΠΈΡ‚Π΅ β€žΡΡ‚Π°Π±ΠΈΠ»Π΅Π½ ABI Π·Π° кориснички ΠΏΡ€ΠΎΡΡ‚ΠΎΡ€β€œ Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ, ΠΊΠΎΠ΅ никој никогаш Π½Π΅ ΠΌΠΎΠΆΠ΅, ΠΏΠΎΠ΄ Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ околности, "ΠΏΠ°ΡƒΠ·Π°". Ова Π½Π΅ Π·Π½Π°Ρ‡ΠΈ Π΄Π΅ΠΊΠ° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ Π²ΠΎ sysfs сС статични, ΡˆΡ‚ΠΎ Π±ΠΈ Π±ΠΈΠ»ΠΎ Π²ΠΎ спротивност со Π±Ρ€ΠΎΠ΅ΡšΠ΅Ρ‚ΠΎ Π½Π° Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈ Π½Π° нСстабилни ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ.
Π‘Ρ‚Π°Π±ΠΈΠ»Π½ΠΎΡ‚ΠΎ ABI Π½Π° ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ Π³ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΡƒΠ²Π° ΠΎΠ½Π° ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС појави Π²ΠΎ /sys, намСсто ΠΎΠ½Π° ΡˆΡ‚ΠΎ Π΅ Π²ΡΡƒΡˆΠ½ΠΎΡΡ‚ присутно Π²ΠΎ Ρ‚ΠΎΡ˜ ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ‚. ΠΠ°Π²Π΅Π΄ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈ Π·Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ Π²ΠΎ sysfs ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° ΡƒΠ²ΠΈΠ΄ Π²ΠΎ Ρ‚ΠΎΠ° ΠΊΠ°ΠΊΠΎ сС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π°Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π½Π° ΡƒΡ€Π΅Π΄ΠΈΡ‚Π΅, ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅, Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈΡ‚Π΅ систСми ΠΈΡ‚Π½. ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° ΠΈΠ»ΠΈ Ρ‡ΠΈΡ‚Π°. ДонСсувамС Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ Π·Π°ΠΊΠ»ΡƒΡ‡ΠΎΠΊ Π΄Π΅ΠΊΠ° procfs Π΅ исто Ρ‚Π°ΠΊΠ° Π΄Π΅Π» ΠΎΠ΄ стабилното ABI Π½Π° ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚, ΠΈΠ°ΠΊΠΎ Ρ‚ΠΎΠ° Π½Π΅ Π΅ Сксплицитно Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ Π²ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°.

Π’ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈ систСми Π²ΠΎ Linux: Π·ΠΎΡˆΡ‚ΠΎ сС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ ΠΈ ΠΊΠ°ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π°Ρ‚? Π”Π΅Π» 1

Π”Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ Π²ΠΎ sysfs ΠΎΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π΅Π΄Π½ΠΎ спСцифично ΡΠ²ΠΎΡ˜ΡΡ‚Π²ΠΎ Π·Π° сСкој Π΅Π½Ρ‚ΠΈΡ‚Π΅Ρ‚ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ Ρ‡ΠΈΡ‚Π»ΠΈΠ²ΠΎ, Π·Π°ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ ΠΈΠ»ΠΈ ΠΈ Π΄Π²Π΅Ρ‚Π΅. β€ž0β€œ Π²ΠΎ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π° Π΄Π΅ΠΊΠ° SSD-Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС отстрани.

Π’Ρ‚ΠΎΡ€ΠΈΠΎΡ‚ Π΄Π΅Π» ΠΎΠ΄ ΠΏΡ€Π΅Π²ΠΎΠ΄ΠΎΡ‚ ќС Π³ΠΎ Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌΠ΅ со Ρ‚ΠΎΠ° ΠΊΠ°ΠΊΠΎ Π΄Π° сС слСди VFS ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π³ΠΈ Π°Π»Π°Ρ‚ΠΊΠΈΡ‚Π΅ eBPF ΠΈ bcc, Π° сСга Π³ΠΈ Ρ‡Π΅ΠΊΠ°ΠΌΠ΅ Π²Π°ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈ ΠΈ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ Π²Π΅ ΠΏΠΎΠΊΠ°Π½ΡƒΠ²Π°ΠΌΠ΅ Π΄Π° ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ Π²Π΅Π±ΠΈΠ½Π°Ρ€, ΡˆΡ‚ΠΎ ќС Π³ΠΎ ΠΎΠ΄Ρ€ΠΆΠΈ Π½Π°ΡˆΠΈΠΎΡ‚ наставник Π½Π° 9 Π°ΠΏΡ€ΠΈΠ» - Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ ДроздСтски.

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€