Apa perbedaan antara "pekerjaan" dan "proses"?
Apa perbedaan antara "pekerjaan" dan "proses"?
Jawaban:
Suatu proses adalah semua program yang sedang berjalan dengan ruang alamatnya sendiri.
Pekerjaan adalah konsep yang digunakan oleh shell - program apa pun yang Anda mulai secara interaktif yang tidak terlepas (yaitu, bukan daemon) adalah pekerjaan. Jika Anda menjalankan program interaktif, Anda dapat menekan CtrlZuntuk menangguhkannya. Kemudian Anda bisa memulainya kembali di latar depan (menggunakan fg
) atau di latar belakang (menggunakan bg
).
Saat program ditunda atau berjalan di latar belakang, Anda dapat memulai program lain - Anda akan menjalankan dua pekerjaan. Anda juga dapat memulai program berjalan di latar belakang dengan menambahkan sebuah "&" seperti ini: program &
. Program itu akan menjadi pekerjaan latar belakang. Untuk daftar semua pekerjaan yang Anda jalankan, Anda dapat menggunakan jobs
.
Untuk informasi lebih lanjut tentang pekerjaan, lihat bagian halaman bash man ini.
ls | sort
adalah pekerjaan, tetapi setiap perintah berjalan sebagai proses turunan dari proses subkulit yang berbeda. Ini adalah contoh pekerjaan yang terdiri dari beberapa proses. Bagaimana definisi Anda tentang suatu pekerjaan dapat menjelaskan bahwa suatu pekerjaan dapat terdiri dari beberapa proses?
UNIX memiliki konsep terpisah "proses", "kelompok proses", dan "sesi".
Setiap shell yang Anda dapatkan saat login menjadi pemimpin sesi baru dan grup prosesnya sendiri, dan mengatur grup proses kontrol terminal ke dirinya sendiri.
Shell membuat grup proses dalam sesi saat ini untuk setiap "pekerjaan" yang diluncurkannya, dan menempatkan setiap proses yang dimulai ke grup proses yang sesuai. Misalnya, ls | head
adalah saluran pipa dari dua proses, yang shell anggap sebagai pekerjaan tunggal, dan akan menjadi milik satu grup proses baru.
Suatu proses adalah (kumpulan) utas eksekusi dan konteks lainnya, seperti ruang alamat dan tabel deskriptor file. Suatu proses dapat memulai proses lain; proses-proses baru ini akan menjadi milik kelompok proses yang sama dengan induk kecuali jika tindakan lain diambil. Setiap proses mungkin juga memiliki "terminal pengontrol", yang dimulai dari yang sama dengan induknya.
Shell memiliki konsep pekerjaan "foreground" dan "latar belakang". Pekerjaan latar depan adalah grup proses dengan kontrol terminal, dan pekerjaan latar belakang adalah grup proses tanpa kontrol terminal.
Setiap terminal memiliki grup proses latar depan. Saat membawa pekerjaan ke latar depan, shell menetapkannya sebagai grup proses latar depan terminal; saat meletakkan pekerjaan ke latar belakang, shell menetapkan grup proses latar depan terminal ke grup proses lain atau dirinya sendiri.
Proses dapat membaca dari dan menulis ke terminal pengendali mereka jika mereka berada di grup proses latar depan. Kalau tidak, mereka menerima SIGTTIN
dan SIGTTOU
memberi sinyal pada upaya untuk membaca dan menulis masing-masing ke terminal. Secara default sinyal-sinyal ini menunda proses, meskipun sebagian besar shell menutupi SIGTTOU
sehingga pekerjaan latar belakang dapat menulis ke terminal tanpa gangguan.
Dalam komputasi, suatu Pekerjaan adalah unit kerja atau unit eksekusi (yang melakukan pekerjaan tersebut). Komponen pekerjaan (sebagai unit kerja) disebut tugas atau langkah (jika berurutan, seperti dalam aliran pekerjaan). Sebagai unit pelaksanaan, suatu pekerjaan dapat secara konkret diidentifikasi dengan satu proses tunggal, yang pada gilirannya dapat memiliki subproses (proses anak; proses yang sesuai dengan pekerjaan menjadi proses induk) yang melakukan tugas atau langkah yang terdiri dari pekerjaan pekerjaan; atau dengan kelompok proses; atau dengan referensi abstrak ke proses atau grup proses, seperti dalam kontrol pekerjaan Unix.
Definisi di atas sangat teknis tetapi mungkin op ingin klarifikasi lebih dari hari ke hari. Saya pikir pekerjaan adalah proses yang dijadwalkan. Ketika kita berurusan dengan proses secara umum tidak selalu ada gagasan tentang jadwal, tetapi ketika kita menggunakan kata "pekerjaan" kita selalu berarti bahwa itu dijadwalkan, atau berulang seperti lingkaran, itu seperti seorang pekerja.