Differences

This shows you the differences between two versions of the page.

Link to this comparison view

so2:laboratoare:lab08 [2018/04/18 00:22]
anda.nicolae [Funcția fill_super]
so2:laboratoare:lab08 [2018/04/18 00:39] (current)
anda.nicolae [Resurse utile]
Line 54: Line 54:
 Localizare: Localizare:
   * În cazul sistemelor de fișiere pentru discuri, superblocul are un corespondent în primul bloc al acestora (Filesystem Control Block).   * În cazul sistemelor de fișiere pentru discuri, superblocul are un corespondent în primul bloc al acestora (Filesystem Control Block).
-  * În **VFS**, toate superbloc-urile sistemelor de fișiere sunt reținute într-o listă de structuri [[http://lxr.free-electrons.com/​source/​include/​linux/​fs.h?v=4.9#L1338 | struct super_block]] și metodele în [[http://lxr.free-electrons.com/​source/​include/​linux/​fs.h?v=4.9#L1786 | struct super_operations ]]+  * În **VFS**, toate superbloc-urile sistemelor de fișiere sunt reținute într-o listă de structuri [[https://elixir.bootlin.com/​linux/​v4.15/​source/​include/​linux/​fs.h#​L1337 | struct super_block]] și metodele în [[https://elixir.bootlin.com/​linux/​v4.15/​source/​include/​linux/​fs.h#​L1803 | struct super_operations ]]
 ==== inode ==== ==== inode ====
  
Line 67: Line 67:
  
 <​note>​ <​note>​
-În general, inode-ul nu deține numele fișierului. Numele este reținut de entitatea [[http://lxr.free-electrons.com/​source/​include/​linux/​dcache.h?v=4.9#L83 | dentry]]. Astfel, un inode poate avea mai multe nume (hardlink-uri).+În general, inode-ul nu deține numele fișierului. Numele este reținut de entitatea [[https://elixir.bootlin.com/​linux/​v4.15/​source/​include/​linux/​dcache.h#​L90 | dentry]]. Astfel, un inode poate avea mai multe nume (hardlink-uri).
 </​note>​ </​note>​
  
 Localizare: Localizare:
-  * La fel ca și superblocul,​ inode-ul are un corespondent pe disc. inode-urile de pe disc sunt, în general, grupate într-o zonă specializată (zonă de inode-uri), separată de zona de blocuri de date; în unele sisteme de fișiere, structurile echivalente inode-urilor sunt răspândite în structura sistemului de fișiere ([[http://​lxr.free-electrons.com/​source/​fs/​fat/?​v=4.| FAT]]); +  * La fel ca și superblocul,​ inode-ul are un corespondent pe disc. inode-urile de pe disc sunt, în general, grupate într-o zonă specializată (zonă de inode-uri), separată de zona de blocuri de date; în unele sisteme de fișiere, structurile echivalente inode-urilor sunt răspândite în structura sistemului de fișiere ([[http://​lxr.free-electrons.com/​source/​fs/​fat/?​v=4.15 | FAT]]); 
-  * ca entitate **VFS**, inode-ul este reprezentat de structura [[http://lxr.free-electrons.com/​source/​include/​linux/​fs.h?v=4.9#L604 | struct inode]] și de operațiile cu aceasta definite în structura [[http://lxr.free-electrons.com/​source/​include/​linux/​fs.h?v=4.9#L1736| struct inode_operations]].+  * ca entitate **VFS**, inode-ul este reprezentat de structura [[https://elixir.bootlin.com/​linux/​v4.15/​source/​include/​linux/​fs.h#​L565 | struct inode]] și de operațiile cu aceasta definite în structura [[https://elixir.bootlin.com/​linux/​v4.15/​source/​include/​linux/​fs.h#​L1733| struct inode_operations]].
  
 Fiecare inode este în general identificat de un număr. Pe Linux, argumentul ''​-i''​ la comanda ''​ls''​ precizează numărului inode-ului asociat fișierului:​ Fiecare inode este în general identificat de un număr. Pe Linux, argumentul ''​-i''​ la comanda ''​ls''​ precizează numărului inode-ului asociat fișierului:​
Line 94: Line 94:
  
 Localizare: Localizare:
-  * Structura [[http://lxr.free-electrons.com/​source/​include/​linux/​fs.h?v=4.9#L880 | struct file]] reprezintă entitatea VFS asociată, iar structura [[http://lxr.free-electrons.com/​source/​include/​linux/​fs.h?v=4.9#L1696 | struct file_operations]] operațiile cu aceasta.+  * Structura [[https://elixir.bootlin.com/​linux/​v4.15/​source/​include/​linux/​fs.h#​L852 | struct file]] reprezintă entitatea VFS asociată, iar structura [[https://elixir.bootlin.com/​linux/​v4.15/​source/​include/​linux/​fs.h#​L1692 | struct file_operations]] operațiile cu aceasta.
  
 ==== dentry ==== ==== dentry ====
Line 108: Line 108:
  
   * dentry are un corespondent pe disc, dar corespondența nu este directă deoarece fiecare sistem de fișiere păstrează dentry-urile într-un mod specific   * dentry are un corespondent pe disc, dar corespondența nu este directă deoarece fiecare sistem de fișiere păstrează dentry-urile într-un mod specific
-  * în VFS, entitatea dentry este reprezentată de structura [[http://lxr.free-electrons.com/​source/​include/​linux/​dcache.h?v=4.9#L83 | struct dentry]] și de operațiile cu aceasta definite în structura [[http://lxr.free-electrons.com/​source/​include/​linux/​dcache.h?v=4.9#L129 | struct dentry_operations]].+  * în VFS, entitatea dentry este reprezentată de structura [[https://elixir.bootlin.com/​linux/​v4.15/​source/​include/​linux/​dcache.h#​L90 | struct dentry]] și de operațiile cu aceasta definite în structura [[hhttps://elixir.bootlin.com/​linux/​v4.15/​source/​include/​linux/​dcache.h#​L136 | struct dentry_operations]].
  
 ===== Înregistrarea și deînregistrarea sistemelor de fișiere ===== ===== Înregistrarea și deînregistrarea sistemelor de fișiere =====
Line 182: Line 182:
   * [[https://​elixir.bootlin.com/​linux/​v4.15/​source/​include/​linux/​fs.h#​L2152 | mount_pseudo]],​ o funcție ajutătoare pentru pseudo-sistemele de fișiere (''​sockfs'',​ ''​pipefs'',​ în general sisteme de fișiere care nu pot fi montate)   * [[https://​elixir.bootlin.com/​linux/​v4.15/​source/​include/​linux/​fs.h#​L2152 | mount_pseudo]],​ o funcție ajutătoare pentru pseudo-sistemele de fișiere (''​sockfs'',​ ''​pipefs'',​ în general sisteme de fișiere care nu pot fi montate)
  
-Aceste funcții primesc ca parametru un pointer spre o funcție [[http://lxr.free-electrons.com/​source/​security/​inode.c?v=4.9#L28 | fill_super]] care va fi apelată după inițializarea superblocului pentru terminarea inițializării acestuia de către driver. Un exemplu de o astfel de funcție găsiți în [[#​functia_fill_super |secțiunea fill_super]].+Aceste funcții primesc ca parametru un pointer spre o funcție [[https://elixir.bootlin.com/​linux/​v4.15/​source/​security/​inode.c#​L42 | fill_super]] care va fi apelată după inițializarea superblocului pentru terminarea inițializării acestuia de către driver. Un exemplu de o astfel de funcție găsiți în [[#​functia_fill_super |secțiunea fill_super]].
  
 La demontare nucleul apelează [[https://​elixir.bootlin.com/​linux/​v4.15/​source/​include/​linux/​fs.h#​L2081 | kill_sb]], care face operații de tip cleanup și apelează una din funcțiile: La demontare nucleul apelează [[https://​elixir.bootlin.com/​linux/​v4.15/​source/​include/​linux/​fs.h#​L2081 | kill_sb]], care face operații de tip cleanup și apelează una din funcțiile:
Line 372: Line 372:
   - [[http://​lxr.free-electrons.com/​source/​Documentation/​filesystems/​vfs.txt|Documentation/​filesystems/​vfs.txt]]   - [[http://​lxr.free-electrons.com/​source/​Documentation/​filesystems/​vfs.txt|Documentation/​filesystems/​vfs.txt]]
   - [[http://​lxr.free-electrons.com/​source/​fs/​|Sursele sistemelor de fișiere]]   - [[http://​lxr.free-electrons.com/​source/​fs/​|Sursele sistemelor de fișiere]]
-    * [[http://​lxr.free-electrons.com/​source/​fs/​proc/?​v=4.| procfs]] (//Process File System//) - [[http://​lxr.free-electrons.com/​source/​fs/​proc/?​v=4.9|sursele sistemului de fișiere procfs]] și [[http://​lxr.free-electrons.com/​source/​Documentation/​filesystems/​proc.txt?​v=4.9|documentația]] +    * [[http://​lxr.free-electrons.com/​source/​fs/​proc/?​v=4.15 | procfs]] (//Process File System//) - [[http://​lxr.free-electrons.com/​source/​fs/​proc/?​v=4.15|sursele sistemului de fișiere procfs]] și [[http://​lxr.free-electrons.com/​source/​Documentation/​filesystems/​proc.txt?​v=4.15|documentația]] 
-    * [[http://​lxr.free-electrons.com/​source/​fs/​ramfs/?​v=4.| ramfs]] (//Random Access Memory Filing System//) - [[http://​lxr.free-electrons.com/​source/​fs/​ramfs/?​v=4.9|sursele sistemului de fișiere ramfs]] și [[http://​lxr.free-electrons.com/​source/​Documentation/​filesystems/​ramfs-rootfs-initramfs.txt?​v=4.9|documentația]] +    * [[http://​lxr.free-electrons.com/​source/​fs/​ramfs/?​v=4.15 | ramfs]] (//Random Access Memory Filing System//) - [[http://​lxr.free-electrons.com/​source/​fs/​ramfs/?​v=4.15|sursele sistemului de fișiere ramfs]] și [[http://​lxr.free-electrons.com/​source/​Documentation/​filesystems/​ramfs-rootfs-initramfs.txt?​v=4.15|documentația]] 
-    * [[http://​en.wikipedia.org/​wiki/​Romfs|romfs]] (//​Read-Only Memory File System//) - [[http://​lxr.free-electrons.com/​source/​fs/​romfs/?​v=4.9|sursele sistemului de fișiere romfs]] și [[http://​lxr.free-electrons.com/​source/​Documentation/​filesystems/​romfs.txt?​v=4.9|documentația]] +    * [[http://​en.wikipedia.org/​wiki/​Romfs|romfs]] (//​Read-Only Memory File System//) - [[http://​lxr.free-electrons.com/​source/​fs/​romfs/?​v=4.15|sursele sistemului de fișiere romfs]] și [[http://​lxr.free-electrons.com/​source/​Documentation/​filesystems/​romfs.txt?​v=4.15|documentația]] 
-    * [[http://​lxr.free-electrons.com/​source/​fs/​minix/?​v=4.| minix]] - [[http://​lxr.free-electrons.com/​source/​fs/​minix/?​v=4.9|sursele sistemului de fișiere minix]] și informații:​ [[http://​www.minix3.org/​index.html|Minix Homepage]], Operating Systems Design and Implementation,​ Third Edition - Chapter 5. File Systems +    * [[http://​lxr.free-electrons.com/​source/​fs/​minix/?​v=4.15 | minix]] - [[http://​lxr.free-electrons.com/​source/​fs/​minix/?​v=4.15|sursele sistemului de fișiere minix]] și informații:​ [[http://​www.minix3.org/​index.html|Minix Homepage]], Operating Systems Design and Implementation,​ Third Edition - Chapter 5. File Systems 
-    * [[http://​en.wikipedia.org/​wiki/​Boot_File_System|bfs]] (//UnixWare Boot FileSystem//​)- [[http://​lxr.free-electrons.com/​source/​fs/​bfs/?​v=4.9|sursele sistemului de fișiere bfs]], [[http://​lxr.free-electrons.com/​source/​Documentation/​filesystems/​bfs.txt|documentația]] și informații:​ [[http://​www.nondot.org/​sabre/​os/​files/​FileSystems/​bfs-structure.html|The BFS filesystem structure]],​ [[http://​tldp.org/​LDP/​lki/​lki-3.html#​ss3.7|Linux Kernel 2.4 Internals - 3.7. Example Disk Filesystem: BFS]]+    * [[http://​en.wikipedia.org/​wiki/​Boot_File_System|bfs]] (//UnixWare Boot FileSystem//​)- [[http://​lxr.free-electrons.com/​source/​fs/​bfs/?​v=4.15|sursele sistemului de fișiere bfs]], [[http://​lxr.free-electrons.com/​source/​Documentation/​filesystems/​bfs.txt|documentația]] și informații:​ [[http://​www.nondot.org/​sabre/​os/​files/​FileSystems/​bfs-structure.html|The BFS filesystem structure]],​ [[http://​tldp.org/​LDP/​lki/​lki-3.html#​ss3.7|Linux Kernel 2.4 Internals - 3.7. Example Disk Filesystem: BFS]]
  
so2/laboratoare/lab08.1524000132.txt.gz · Last modified: 2018/04/18 00:22 by anda.nicolae
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0