Ketika kita mengatakan bahwa suatu proses memiliki terminal pengontrol, apakah yang kita maksud adalah proses itu sendiri memiliki terminal pengontrol, atau apakah sesi milik proses yang memiliki terminal pengontrol?
Saya dulu berpikir bahwa sesilah yang memiliki terminal pengontrol, tetapi kemudian saya telah membaca yang berikut (dari sini) yang menyiratkan bahwa proseslah yang memiliki terminal pengontrol:
Salah satu atribut dari suatu proses adalah terminal pengontrolnya. Proses anak
yang dibuat dengan garpu mewarisi terminal pengontrol dari
proses induknya. Dengan cara ini, semua proses dalam sesi
mewarisi terminal pengontrol dari pemimpin sesi. Pemimpin sesi
yang memiliki kontrol terminal disebut proses
pengontrol terminal itu.
Jawaban yang Diterima:
Memang sesi yang memiliki terminal pengendali
Spesifikasi UNIX Tunggal menggambarkan hubungan dalam hal terminal pengontrol menjadi "terkait dengan sesi". Seperti yang ditentukan, terminal pengontrol memiliki hubungan 1:1 dengan sesi. Ada “paling banyak satu terminal pengontrol” yang terkait dengan sebuah sesi, dan “terminal pengontrol dikaitkan dengan tepat satu sesi”.
Desain dan Implementasi FreeBSD buku mendekati ini sedikit berbeda, tetapi mencapai tempat yang sama. Tidak mungkin proses yang berbagi sesi yang sama memiliki terminal pengontrol yang berbeda, juga tidak mungkin satu terminal menjadi terminal pengontrol beberapa sesi.
Secara internal di FreeBSD begitulah cara kerja struktur data. Struktur proses memiliki pointer ke pgrp
struktur yang mewakili grup proses tempat proses tersebut berada, yang pada gilirannya menunjuk ke session
struktur yang mewakili sesi milik grup proses, yang pada gilirannya menunjuk ke tty
struktur terminal pengontrol untuk sesi.
Secara internal di Linux, semuanya sedikit lebih kompleks. Setiap task_struct
memiliki satu set pointer ke pid
struktur untuk ID grup proses dan ID sesinya; dan memiliki pointer lain ke signal_struct
per-proses struktur yang pada gilirannya langsung menunjuk ke tty
struktur terminal pengontrol.
Bacaan lebih lanjut
- George V. Neville-Neil, Marshall Kirk McKusick, dan Robert N.M. Watson (2014-09-25). "Manajemen proses". Desain dan Implementasi Sistem Operasi FreeBSD . Addison-Wesley Profesional. ISBN 9780133761832.
- Donald Lewine (1991). “Terminal I/O”. Panduan Pemrogram POSIX . O'Reilly Media, Inc. ISBN 9780937175736.
- Daniel P. Bovet dan Marco Cesati (2005). “Proses”. Memahami Kernel Linux:Dari Port I/O ke Manajemen Proses . edisi ke-3. O'Reilly Media, Inc. ISBN 9780596554910.
- “Definisi”. Spesifikasi Basis Grup Terbuka . Edisi 7. 2016. IEEE 1003.1:2008.
- “Antarmuka Terminal Umum”. Spesifikasi Basis Grup Terbuka . Edisi 7. 2016. IEEE 1003.1:2008.