Básicamente, los archivos y el proceso son las dos cosas fundamentales en cualquier sistema operativo.
No tengo conocimiento sobre las estructuras internas de datos del archivo del núcleo cuando se trata de Windows, pero básicamente:
En sistemas basados en IX, a saber. Linux / Unix / Mac OSX, el concepto de “nombres de archivo” es para los usuarios. El sistema operativo o el núcleo los reconoce por sus “INODOS”.
- Mi madre cree que rompí una computadora portátil. ¿Cómo puedo convencer a mi madre de que no rompí la computadora portátil?
- ¿Qué son las tarjetas gráficas en las computadoras?
- ¿Cómo saben las computadoras cómo interpretar BITS?
- ¿Es posible tener un 'servidor central' en casa y todos los demás dispositivos como 'clientes ligeros' a partir de 2016?
- ¿Vale la pena comprar una computadora portátil Full HD (1920 × 1080) en 15 '?
Hay un inodo para cada archivo, básicamente, una relación uno a uno. Un solo inodo no puede representar múltiples archivos y un archivo no tiene múltiples inodos.
Ahora, las estructuras de datos del núcleo, o simplemente, las cosas que el núcleo utiliza para proporcionarnos a los usuarios ingenuos SUBSISTEMA DE ARCHIVO eficiente:
- Tabla de Inode In-core (tiene metadatos de todos los archivos abiertos activamente)
- Tabla de archivos
- Tabla de descriptor de archivos de usuario
En las Estructuras de datos mencionadas anteriormente, solo el UFDT es por proceso. El resto de los 2 son de todo el sistema. Su funcionamiento no está dentro del alcance de esta pregunta. Pero te sugiero que leas eso. ¡Es simplemente increíble!
Ahora, responde a tu pregunta:
Cada vez que se abre un archivo, su inodo se lleva al IIT y el campo reference_count se establece en 1.
Si alguien abre ese archivo nuevamente, dado que el inodo ya está allí en el IIT, solo se incrementa el número de referencia, que ahora se convertirá en 2. Del mismo modo …
Sin embargo, el núcleo solo puede acceder a IIT, UFDT y FT. Por lo tanto, probablemente debería escribir un módulo de kernel e insertarlo en el kernel, que puede mantener un archivo con todos los nombres de archivo abiertos (nombres o puede decir, ruta). Esto solo es posible fácilmente con el kernel de Linux, tanto Windows como Mac son de código cerrado.
¡Buena suerte! Happy Coding 🙂
PD: mejor hablas con el C en C ++ 🙂 Y si no quieres usar todo esto, puedes configurar un cron para que el comando lsof se ejecute después de decir, cada 30/60 segundos. También puede formatear la salida de la manera que desee. 🙂 Linux + Unix + Mac OSX + Windows (ojalá cygwin o minGW sean compatibles con lsof: P)