lectura (2) y escritura (2) funciona tanto en el descriptor de socket como en el descriptor de archivo. En caso de descriptor de archivo, tabla de descriptor de archivo de usuario-> tabla de archivos y finalmente a la tabla de inode donde comprueba el tipo de archivo (archivo/char/bloque normal) y lee en consecuencia. En el caso del archivo char spl, obtiene los punteros de función basados en el número principal del archivo desde el interruptor de dispositivo char y llama a las rutinas de lectura/escritura apropiadas registradas para el dispositivo. De manera similar, se requiere una rutina de lectura/escritura para el archivo especial de bloques obteniendo los punteros de función del interruptor del dispositivo de bloques.descriptor de socket vs descriptor de archivo
Podrías decirme qué sucede cuando se lee/escribe en el descriptor de socket. Si la lectura/escritura funciona en el descriptor de socket, ¿no podemos usar open en lugar de socket para obtener el descriptor?
no se puede saber exactamente ** ** lo que sucede (intente buscar en el código fuente del núcleo si realmente quiere saber), pero esencialmente se pasará la solicitud al controlador TCP, que pasará más abajo en la pila de red hasta que llegue al controlador de la tarjeta de interfaz de red. Si desea saber qué hace cada capa de la pila de red en términos generales, busque el * modelo OSI *. En cuanto a 'abrir' vs' socket': toman diferentes argumentos, ya que la información que debe especificarse es diferente dependiendo de si desea abrir un archivo o un socket. – David
Quiero saber cuál es la estructura de datos asignada al socket de llamada(), qué información está almacenada en la tabla de inode, cómo llega a las rutinas del controlador de la tarjeta de interfaz de red al llamar a lectura/escritura –
Nota leer/escribir envuelve la llamada del sistema. La mayor parte del trabajo se realiza en el espacio del kernel. que es una especie de abstracción, o "virtualización": simplemente tome el archivo de bloque, el socket u otras muchas cosas, como "archivo". un archivo tiene operaciones como leer, escribir, abrir, etc. Pero la implementación real de leer un socket o leer un archivo de disco está definida en kernel. Incluso puede definir la "escritura" para leer del archivo si lo necesita. – tristan