2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Diperlukan kolaborasi antar proses. Misalnya, seluruh tingkatan manajemen di suatu sekolah saling berhubungan dan tidak dapat dikelola secara vertikal. Justru karena proses perlu berkolaborasi. Prasyarat untuk kolaborasi adalah proses perlu berkomunikasi. Beberapa data siap untuk diberitahukan, beberapa data hanya berupa data yang dikirimkan, dan beberapa lagi adalah data yang terkait dengan kontrol.
Fakta: Proses bersifat independen, proses = struktur data kernel, kode dan data proses
Tujuan dari proses komunikasi:
Biaya komunikasi antar proses mungkin sedikit lebih tinggi: proses bersifat independen, dan sumber daya apa pun yang dibuka oleh satu proses tidak terlihat oleh proses lain. Ketika kita berbicara tentang proses induk-anak sebelumnya, data dari proses induk diwarisi oleh proses anak. Ini bukan milik komunikasi. Ini bisa diwariskan tetapi tidak selalu diwariskan. Ada perbedaan antara kemampuan untuk mengirimkan informasi dan selalu mampu menyampaikan informasi.
Premis komunikasi antar-proses: pertama-tama biarkan proses yang berbeda melihat sumber daya (sistem operasi) yang sama ("sepotong memori"). Kedua proses tersebut bersifat independen. Untuk mencapai komunikasi diperlukan suatu alat yaitu sistem operasi yang memungkinkan kedua proses tersebut memiliki memori yang sama. Alasan mengapa sistem operasi melakukan hal ini ditentukan oleh pengguna.
Cara memberitahu sistem operasi untuk membuat sumber daya:
Pipeline pada dasarnya adalah file tingkat memori yang tidak perlu dipindahkan ke disk.
Pertama, proses induk membuka file dua kali dalam mode baca dan tulis. Alasan membuka file dua kali adalah untuk mendapatkan dua objek file struct, sehingga ada dua pointer baca dan tulis untuk suatu file, sehingga operasi baca dan tulis. gunakan petunjuk independen. Dengan cara ini, membaca dan menulis tidak akan saling mempengaruhi.Penunjuk baca-tulis mencatat posisi baca atau tulis file saat ini, astruct file
Hanya ada satu penunjuk baca-tulis dalam file. Saat menulis (atau membaca) ke file, penunjuk baca-tulis akan bergerak, dan kemudian membaca (menulis) lagi pada posisi semula dan tidak dapat membaca konten yang baru saja ditulis, jadi Anda perlu membuka file yang sama dua kali dengan cara yang berbeda. Kemudian buat proses anak. Proses anak akan mewarisi file yang dibuka di proses induk, yaitu mewarisi tabel deskriptor file dari proses induk. Pada saat ini, proses induk dan anak akan berbagi sumber daya file yang sama Proses dapat meneruskan deskriptor file No. 4 ke file tersebut. Saat menulis ke file, proses induk dapat membaca dari file melalui deskriptor file No. 3. Pada saat ini, proses induk dan anak mewujudkan transmisi data, yaitu komunikasi. . Proses induk dan anak melihat buffer memori yang sama, yang kami sebut file pipa di sini. Pipa hanya memungkinkan komunikasi satu arah karena kesederhanaannya.
Mengapa proses orangtua-anak mencetak data ke terminal monitor yang sama?
Karena proses anak yang sesuai akan mewarisi tabel deskriptor file yang sesuai dengan proses induk, dan kemudian menunjuk ke file yang sama, yang berarti bahwa proses induk akan mengetikkan file, dan proses anak juga akan mengetikkan file, dan hal yang sama akan ditulis dalam buffer, sistem operasi akan dipindahkan ke monitor yang sama.
Prosesnya akan membuka tiga input standar dan output standar secara default: 0, 1, 2... Bagaimana cara membuka 0, 1, 2 secara default?
Semua perintahnya adalahbash
proses anak, selamabash
Saat diaktifkan, semua proses anak diaktifkan secara default.
Mengapa proses anak ditutup secara aktif (0/1/2) tanpa mempengaruhi kelanjutan penggunaan file monitor oleh proses induk?
penghitungan referensi tingkat memori--
, ketika jumlah referensi tingkat memori berkurang menjadi 0, sumber daya file akan dilepaskan.
Proses induk-anak menutup deskriptor file yang tidak perlu, mengapa harus dibuka sebelumnya?
Untuk memungkinkan proses anak untuk mewarisi. Tidak perlu ditutup, namun disarankan ditutup untuk mencegah tulisan yang tidak disengaja.
Mengapa pipa berkomunikasi satu arah?
Metodenya sederhana, mengurangi biaya pengembangan, dan hanya memungkinkan komunikasi satu arah. File apa pun di-refresh ke dalam buffer, dan kemudian data di-refresh ke dalam file.
Pipa-pipa sederhana yang kita lihat dalam kehidupan semuanya bersifat satu arah, seperti pipa air, dengan satu pintu masuk dan satu pintu keluar, yang sesuai dengan karakteristik pipa.
bisa menggunakanpipe
Untuk membuat pipa tanpa nama, parameternya tidak memerlukan jalur file dan nama file
int pipe(int pipefd[2]);