2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Se requiere colaboración entre procesos. Por ejemplo, todos los niveles de gestión de una escuela están interconectados y no pueden gestionarse verticalmente. Es precisamente porque los procesos necesitan colaborar. El requisito previo para la colaboración es que los procesos deben comunicarse. Algunos datos están listos para ser notificados, algunos datos son simplemente datos transmitidos y otros son datos relacionados con el control.
Hecho: Los procesos son independientes, proceso = estructura de datos del núcleo, código y datos del proceso.
El propósito de la comunicación del proceso:
El costo de la comunicación entre procesos puede ser ligeramente mayor: los procesos son independientes y los recursos abiertos por un proceso no son visibles para otro proceso. Cuando hablamos antes del proceso padre-hijo, los datos del proceso padre fueron heredados por el proceso hijo. Esto no pertenece a la comunicación. Se puede heredar pero no siempre. Existe una diferencia entre poder transmitir información. y siempre poder transmitir información.
La premisa de la comunicación entre procesos: primero, permita que diferentes procesos vean el mismo recurso (sistema operativo) ("un trozo de memoria"). Los dos procesos son independientes. Para lograr la comunicación, se necesita una herramienta, concretamente el sistema operativo, que permita que los dos procesos tengan la misma memoria. La razón por la que el sistema operativo hace esto la determina el usuario.
Cómo decirle al sistema operativo que cree recursos:
Una canalización es esencialmente un archivo a nivel de memoria que no necesita vaciarse en el disco.
Primero, el proceso principal abre un archivo dos veces en modo de lectura y escritura. La razón para abrir el archivo dos veces es obtener dos objetos de archivo de estructura, de modo que haya dos punteros de lectura y escritura para un archivo, de modo que las operaciones de lectura y escritura. Utilice punteros independientes de esta manera, la lectura y la escritura no se afectarán entre sí.El puntero de lectura y escritura registra la posición de lectura o escritura del archivo actual, unstruct file
Solo hay un puntero de lectura y escritura en el archivo. Al escribir (o leer) en el archivo, el puntero de lectura y escritura se moverá y luego leerá (escribirá) nuevamente. En este momento, el puntero de lectura y escritura ya no existe. en la posición original y no puede leer el contenido que acaba de escribir, por lo que debe abrir el mismo archivo dos veces de diferentes maneras. Luego cree un proceso hijo. El proceso hijo heredará el archivo abierto en el proceso padre, es decir, heredará la tabla de descriptores de archivos del proceso padre. En este momento, los procesos padre e hijo compartirán el mismo recurso de archivo. El proceso puede pasar el descriptor de archivo No. 4 al archivo Al escribir en el archivo, el proceso principal puede leer el archivo a través del descriptor de archivo No. 3. En este momento, los procesos padre e hijo realizan la transmisión de datos, es decir, la comunicación. . Los procesos padre e hijo ven el mismo búfer de memoria, al que aquí llamamos archivo de canalización. Las tuberías solo permiten la comunicación unidireccional debido a su simplicidad.
¿Por qué los procesos padre-hijo imprimen datos en el mismo terminal de monitor?
Debido a que el proceso hijo correspondiente heredará la tabla de descriptores de archivos correspondiente al proceso padre y luego apuntará al mismo archivo, lo que significa que el proceso padre escribirá un archivo y el proceso hijo también escribirá un archivo, y el Lo mismo se escribirá en un búfer, el sistema operativo se descargará en el mismo monitor.
El proceso abrirá tres entradas y salidas estándar de forma predeterminada: 0, 1, 2... ¿Cómo abrir 0, 1, 2 de forma predeterminada?
Todos los comandos sonbash
proceso hijo, siempre y cuandobash
Cuando está activado, todos los procesos secundarios se activan de forma predeterminada.
¿Por qué el proceso hijo se cierra activamente (0/1/2) sin afectar el uso continuo del archivo de monitor por parte del proceso padre?
recuento de referencias a nivel de memoria--
, cuando el recuento de referencias a nivel de memoria disminuye a 0, se liberan los recursos del archivo.
El proceso padre-hijo cierra descriptores de archivos innecesarios, ¿por qué era necesario abrirlos antes?
Para permitir que el proceso hijo herede. No es necesario cerrarlo, pero se recomienda cerrarlo para evitar escrituras accidentales.
¿Por qué las tuberías tienen comunicación unidireccional?
El método es simple, reduce los costos de desarrollo y solo permite la comunicación unidireccional. Cualquier archivo se actualiza en el búfer y luego los datos se actualizan en el archivo.
Las tuberías simples que vemos en la vida son todas unidireccionales, como las tuberías de agua, con una entrada y una salida, lo que se ajusta a las características de las tuberías.
puedo usarpipe
Para crear una tubería sin nombre, los parámetros no requieren la ruta del archivo ni el nombre del archivo.
int pipe(int pipefd[2]);