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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «АрхитСктура ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы UNIX (Π›ΠŸ)Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 29

Автор Π‘Π°Ρ… ΠœΠΎΡ€ΠΈΡ Π”ΠΆ.

*3. Рассмотрим Ρ€Π°Π±ΠΎΡ‚Ρƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° namei ΠΏΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡŽ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡƒΡ‚ΠΈ поиска Π² ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ индСкса. Π’ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ всСго просмотра ядро провСряСт соотвСтствиС Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ индСкса индСксу ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°. ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ процСсс ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ (unlink) ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³? Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ядро ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ дСйствия? Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ‹ вСрнСмся ΠΊ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅.

*4. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ структуру ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, ΠΏΠΎΠ²Ρ‹ΡˆΠ°ΡŽΡ‰ΡƒΡŽ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ поиска ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² Π±Π΅Π· использования Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ просмотра. РассмотритС Π΄Π²Π° способа: Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ n-Π°Ρ€Π½Ρ‹Π΅ Π΄Π΅Ρ€Π΅Π²ΡŒΡ.

*5. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сокращСния количСства просмотров ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π² поисках ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ часто употрСбляСмых ΠΈΠΌΠ΅Π½.

*6. Π’ идСальном случаС Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ свободных индСксов с Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ, мСньшими, Ρ‡Π΅ΠΌ Π½ΠΎΠΌΠ΅Ρ€ Β«Π·Π°ΠΏΠΎΠΌΠ½Π΅Π½Π½ΠΎΠ³ΠΎΒ» индСкса, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ ialloc. Как случаСтся, Ρ‡Ρ‚ΠΎ это ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π±Ρ‹Π²Π°Π΅Ρ‚ Π»ΠΎΠΆΠ½Ρ‹ΠΌ?

7.Β Π‘ΡƒΠΏΠ΅Ρ€Π±Π»ΠΎΠΊ являСтся дисковым Π±Π»ΠΎΠΊΠΎΠΌ ΠΈ содСрТит ΠΊΡ€ΠΎΠΌΠ΅ списка свободных Π±Π»ΠΎΠΊΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ список свободных Π±Π»ΠΎΠΊΠΎΠ² Π² супСрблокС Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ большС Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² свободных Π±Π»ΠΎΠΊΠΎΠ², Ρ‡Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ дисковом Π±Π»ΠΎΠΊΠ΅ Π² связанном спискС свободных дисковых Π±Π»ΠΎΠΊΠΎΠ². КакоС число Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² свободных Π±Π»ΠΎΠΊΠΎΠ² Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ для хранСния Π² ΠΎΠ΄Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ ΠΈΠ· связанного списка?

ГЛАВА 5. Π‘Π˜Π‘Π’Π•ΠœΠΠ«Π• ΠžΠŸΠ•Π ΠΠ¦Π˜Π˜ Π”Π›Π― Π ΠΠ‘ΠžΠ’Π« Π‘ Π€ΠΠ™Π›ΠžΠ’ΠžΠ™ Π‘Π˜Π‘Π’Π•ΠœΠžΠ™

Π’ послСднСй Π³Π»Π°Π²Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»ΠΈΡΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ структуры Π΄Π°Π½Π½Ρ‹Ρ… для Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ. Π’ этой Π³Π»Π°Π²Π΅ Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ ΠΎ систСмных функциях для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой с использованиСм понятий, Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅. Π Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ систСмныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ open, read, write, lseek ΠΈ close, Π·Π°Ρ‚Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ создания Π½ΠΎΠ²Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², Π° ΠΈΠΌΠ΅Π½Π½ΠΎ, creat ΠΈ mknod, ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с индСксом ΠΈΠ»ΠΈ для пСрСдвиТСния ΠΏΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС: chdir, chroot, chown, stat ΠΈ fstat. Π˜ΡΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ слоТныС систСмныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: pipe ΠΈ dup ΠΈΠΌΠ΅ΡŽΡ‚ Π²Π°ΠΆΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠ°Π½Π°Π»ΠΎΠ² Π² shell'Π΅; mount ΠΈ umount Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‚ Π²ΠΈΠ΄ΠΈΠΌΠΎΠ΅ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π΄Π΅Ρ€Π΅Π²ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм; link ΠΈ unlink ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ структуру Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. Π—Π°Ρ‚Π΅ΠΌ даСтся прСдставлСниС ΠΎΠ± абстракциях, связанных с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой, Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм, ΠΏΠΎΠ΄Ρ‡ΠΈΠ½ΡΡŽΡ‰ΠΈΡ…ΡΡ стандартным интСрфСйсам. Π’ послСднСм Ρ€Π°Π·Π΄Π΅Π»Π΅ Π³Π»Π°Π²Ρ‹ Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ ΠΎ сопровоТдСнии Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. Π“Π»Π°Π²Π° Π·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ с трСмя структурами Π΄Π°Π½Π½Ρ‹Ρ… ядра: Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ каТдая запись связана с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Π² систСмС Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… дСскрипторов Ρ„Π°ΠΉΠ»ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ каТдая запись связана с Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΌ дСскриптором, извСстным процСссу, ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ монтирования, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ содСрТится информация ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ дСскрипторы Ρ„Π°ΠΉΠ»Π° Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ namei ΠΠ°Π·Π½Π°Ρ‡Π°ΡŽΡ‚ индСксы Π Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ Ρ„Π°ΠΉΠ»Π° Π’Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Π Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ со структурой Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π΅Ρ€Π΅Π²ΡŒΡΠΌΠΈ
open creat dup pipe close open stat creat link chdir chroot chown chmod unlink mknod mount umount creat mknod link unlink chown chmod stat read write lseek mount umount chdir chown
Алгоритмы Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой Π½Π° Π½ΠΈΠΆΠ½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅
namei iget iput bmap ialloc ifree alloc free bmap
Алгоритмы Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±ΡƒΡ„Π΅Ρ€Π°ΠΌΠΈ
getblk brelse bread breada bwrite

Рисунок 5.1. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой ΠΈ ΠΈΡ… связь с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ

На РисункС 5.1 ΠΏΠΎΠΊΠ°Π·Π°Π½Π° взаимосвязь ΠΌΠ΅ΠΆΠ΄Ρƒ систСмными функциями ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ, описанными Ρ€Π°Π½Π΅Π΅. БистСмныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° нСсколько ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ, хотя Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅, Ρ‡Π΅ΠΌ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ:

β€’ БистСмныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ дСскрипторы Ρ„Π°ΠΉΠ»ΠΎΠ² для использования Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ систСмными функциями;

β€’ БистСмныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ namei для Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡƒΡ‚ΠΈ поиска;

β€’ БистСмныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°Π·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ индСкс с использованиСм Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ialloc ΠΈ ifree;

β€’ БистСмныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Ρ„Π°ΠΉΠ»Π°;

β€’ БистСмныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ процСссу ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ… с использованиСм Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² alloc, free ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² выдСлСния Π±ΡƒΡ„Π΅Ρ€Π°;

β€’ БистСмныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ структуру Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы;

β€’ БистСмныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ процСссу ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ собствСнноС прСдставлСниС ΠΎ структурС Π΄Π΅Ρ€Π΅Π²Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы.

5.1 OPEN

Π’Ρ‹Π·ΠΎΠ² систСмной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ open (ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ»)Β β€” это ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ шаг, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ процСсс, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π² Ρ„Π°ΠΉΠ»Π΅. Бинтаксис Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ open:

fdΒ = open(pathname, flags, modes);

Π³Π΄Π΅ pathname β€” имя Ρ„Π°ΠΉΠ»Π°, flags ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π΅ΠΆΠΈΠΌ открытия (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для чтСния ΠΈΠ»ΠΈ записи), Π° modes содСрТит ΠΏΡ€Π°Π²Π° доступа ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Π² случаС, Ссли Ρ„Π°ΠΉΠ» создаСтся. БистСмная функция open Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ†Π΅Π»ΠΎΠ΅ число [14], ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌΠΎΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ дСскриптором Ρ„Π°ΠΉΠ»Π°. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅, запись, ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ чтСния-записи, воспроизвСдСниС дСскриптора Ρ„Π°ΠΉΠ»Π°, установка ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ статуса Ρ„Π°ΠΉΠ»Π° ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ дСскриптора Ρ„Π°ΠΉΠ»Π°, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ систСмной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ open.

Π―Π΄Ρ€ΠΎ просматриваСт Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму Π² поисках Ρ„Π°ΠΉΠ»Π° ΠΏΠΎ Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ namei (см. Рисунок 5.2). Оно провСряСт ΠΏΡ€Π°Π²Π° Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ копию индСкса Ρ„Π°ΠΉΠ»Π° Π² памяти, ΠΈ выдСляСт ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ запись Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ². Π—Π°ΠΏΠΈΡΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ² содСрТит ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° индСкс ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΏΠΎΠ»Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ хранится смСщСниС Π² Π±Π°ΠΉΡ‚Π°Ρ… ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° Ρ„Π°ΠΉΠ»Π° Π΄ΠΎ мСста, ΠΎΡ‚ΠΊΡƒΠ΄Π° прСдполагаСтся Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ чтСния ΠΈΠ»ΠΈ записи. Π―Π΄Ρ€ΠΎ сбрасываСт это смСщСниС Π² 0 Π²ΠΎ врСмя открытия Ρ„Π°ΠΉΠ»Π°, имСя Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ исходная опСрация чтСния ΠΈΠ»ΠΈ записи ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ с Π½Π°Ρ‡Π°Π»Π° Ρ„Π°ΠΉΠ»Π°. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, процСсс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ записи Π² ΠΊΠΎΠ½Π΅Ρ†, Π² этом случаС ядро устанавливаСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ смСщСния, Ρ€Π°Π²Π½ΠΎΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ Ρ„Π°ΠΉΠ»Π°. Π―Π΄Ρ€ΠΎ выдСляСт запись Π² Π»ΠΈΡ‡Π½ΠΎΠΉ (Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ) Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π² адрСсном пространствС Π·Π°Π΄Π°Ρ‡ΠΈ, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ процСссу (Ρ‚Π°Π±Π»ΠΈΡ†Π° эта называСтся Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… дСскрипторов Ρ„Π°ΠΉΠ»ΠΎΠ²), ΠΈ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° эту запись. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ выступаСт дСскриптор Ρ„Π°ΠΉΠ»Π°, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. Π—Π°ΠΏΠΈΡΡŒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° запись Π² глобальной Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ².

Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ open

входная информация:

 имя Ρ„Π°ΠΉΠ»Π°

Β Ρ€Π΅ΠΆΠΈΠΌ открытия

Β ΠΏΡ€Π°Π²Π° доступа (ΠΏΡ€ΠΈ создании Ρ„Π°ΠΉΠ»Π°)

выходная информация: дСскриптор Ρ„Π°ΠΉΠ»Π°