Anda di halaman 1dari 5

What is the difference between a process and a

thread?
Berikut ini analogi yang saya gunakan dalam Pengembangan Kernel Linux. Proses adalah abstraksi dari
program yang berjalan: Gambar biner, memori virtual, berbagai sumber daya kernel, konteks keamanan
terkait, dan sebagainya. Thread adalah unit eksekusi dalam suatu proses: Prosesor tervirtualisasi, stack,
dan status program. Dengan kata lain, proses menjalankan binari dan utas adalah unit terkecil dari
penjadwalan eksekusi yang dapat dijadwal oleh penjadwal proses sistem operasi.

Suatu proses mengandung satu atau lebih utas. Dalam proses single-threaded, proses tersebut berisi
satu utas. Anda dapat mengatakan utas adalah prosesnya — ada satu hal yang terjadi. Dalam proses
multithreaded, proses tersebut berisi lebih dari satu utas — ada lebih dari satu hal yang terjadi.

Dua abstraksi tervirtualisasi utama dalam sistem operasi modern adalah memori tervirtualisasi dan
prosesor tervirtualisasi. Keduanya mampu ilusi untuk menjalankan proses yang mereka sendiri konsumsi
sumber daya mesin. Memori yang tervirtualisasi memberikan proses tampilan unik dari memori yang
secara mulus memetakan kembali ke RAM fisik atau penyimpanan di-disk (ruang swap). Sebuah
prosesor yang tervirtualisasi memungkinkan proses bertindak seolah-olah mereka sendiri berjalan pada
sebuah prosesor, padahal sebenarnya banyak proses yang multitasking di banyak prosesor.

Memori virtual dikaitkan dengan proses dan bukan utas. Dengan demikian, utas berbagi satu ruang
alamat memori. Sebaliknya, prosesor virtual yang berbeda dikaitkan dengan setiap utas. Setiap utas
adalah entitas independen yang dapat dijadwalkan.

Apa gunanya? Kami jelas membutuhkan proses. Tetapi mengapa memperkenalkan konsep terpisah dari
utas dan memungkinkan proses multithread? Ada empat manfaat utama untuk multithreading:
1. Pemrograman abstraksi. Membagi pekerjaan dan menugaskan masing-masing divisi ke unit eksekusi
(utas) adalah pendekatan alami untuk banyak masalah. Pola pemrograman yang memanfaatkan
pendekatan ini meliputi reaktor, pola per sambungan, dan pola kumpulan benang. Namun, beberapa
orang melihat utas sebagai anti-pola. Alan Cox yang tak ada bandingannya menyimpulkan dengan baik
dengan kutipan, "utas untuk orang-orang yang tidak bisa memprogram mesin negara."

2. Paralelisme. Pada mesin dengan banyak prosesor, utas menyediakan cara yang efisien untuk
mencapai paralelisme sejati. Karena setiap utas menerima prosesor tervirtualasinya sendiri dan
merupakan entitas yang dapat dijadwalkan secara independen, beberapa utas dapat berjalan pada
beberapa prosesor pada saat yang sama, meningkatkan throughput sistem. Sejauh utas digunakan untuk
mencapai paralelisme — yaitu, tidak ada utas lain selain prosesor — "utas untuk orang yang tidak dapat
memprogram mesin negara" tidak berlaku.

3. Memblokir I / O. Tanpa utas, memblokir I / O menghentikan seluruh proses. Ini dapat merusak
throughput dan latensi. Dalam proses multithreaded, masing-masing utas dapat memblokir, menunggu
di I / O, sementara utas lainnya maju. Asynchronous & non-blocking I / O adalah solusi alternatif untuk
utas untuk masalah ini.

4. Penghematan memori. Utas menyediakan cara yang efisien untuk berbagi memori namun
menggunakan beberapa unit eksekusi. Dengan cara ini mereka merupakan alternatif untuk berbagai
proses.
Biaya manfaat threading ini adalah meningkatnya kompleksitas dalam bentuk kebutuhan untuk
mengelola konkurensi melalui mekanisme seperti mutex dan variabel kondisi. Mengingat tren yang
berkembang terhadap prosesor yang menggunakan banyak core dan sistem yang menggunakan banyak
prosesor, threading hanya akan menjadi alat yang lebih penting dalam pemrograman sistem.
What’s the Diff: Programs,
Processes, and Threads
Apa Diff: Program, Proses, dan Utas

Seberapa sering Anda mendengar istilah threading dalam kaitannya dengan program komputer, tetapi
Anda tidak yakin apa artinya itu? Bagaimana dengan proses? Anda mungkin memahami bahwa utas
terkait erat dengan program dan proses, tetapi jika Anda bukan jurusan ilmu komputer, mungkin itu
sejauh pemahaman Anda.

Mengetahui apa arti istilah-istilah ini sangat penting jika Anda seorang programmer, tetapi pemahaman
mereka juga dapat bermanfaat bagi pengguna komputer rata-rata. Mampu melihat dan memahami
Activity Monitor pada Macintosh, Task Manager pada Windows, atau Top on Linux dapat membantu
Anda memecahkan masalah program mana yang menyebabkan masalah pada komputer Anda, atau
apakah Anda mungkin perlu menginstal lebih banyak memori untuk membuat sistem Anda berjalan
lebih baik.

Mari kita luangkan waktu beberapa menit untuk mempelajari dunia program komputer dan memilah
apa arti istilah-istilah ini. Kami akan menyederhanakan dan menggeneralisasi beberapa ide, tetapi
konsep umum yang kami bahas harus membantu memperjelas perbedaan antara istilah-istilah tersebut.

1. Program

Pertama-tama, Anda mungkin menyadari bahwa suatu program adalah kode yang disimpan di
komputer Anda yang dimaksudkan untuk memenuhi tugas tertentu. Ada banyak jenis program,
termasuk program yang membantu fungsi komputer Anda dan merupakan bagian dari sistem
operasi, dan program lain yang memenuhi tugas tertentu. Program khusus tugas ini juga dikenal
sebagai "aplikasi," dan dapat mencakup program seperti pengolah kata, penelusuran web, atau
mengirim email pesan ke komputer lain.

Program biasanya disimpan pada disk atau dalam memori non-volatile dalam bentuk yang dapat
dijalankan oleh komputer Anda. Sebelum itu, mereka dibuat menggunakan bahasa pemrograman
seperti C, Lisp, Pascal, atau banyak lainnya menggunakan instruksi yang melibatkan logika,
manipulasi data dan perangkat, perulangan, dan interaksi pengguna. Hasil akhirnya adalah file teks
kode yang dikompilasi ke dalam bentuk biner (1 dan 0) untuk dijalankan di komputer. Jenis program
lain disebut "ditafsirkan," dan alih-alih dikompilasi terlebih dahulu untuk dijalankan, ditafsirkan
menjadi kode yang dapat dieksekusi pada saat dijalankan. Beberapa bahasa pemrograman yang
umum ditafsirkan, adalah Python, PHP, JavaScript, dan Ruby.
Hasil akhirnya adalah sama, namun, ketika sebuah program dijalankan, ia dimuat ke dalam
memori dalam bentuk biner. CPU komputer (Central Processing Unit) hanya memahami instruksi
biner, jadi itu bentuk program yang diperlukan saat dijalankan.

Biner adalah bahasa asli komputer karena sirkuit listrik pada tingkat dasarnya memiliki
dua keadaan, hidup atau mati, diwakili oleh satu atau nol. Dalam sistem penomoran yang umum kita
gunakan setiap hari, basis 10, setiap posisi digit bisa apa saja dari 0 hingga 9. Dalam basis 2 (atau
biner), setiap posisi adalah 0 atau 1. (Dalam posting blog di masa depan kita mungkin mencakup
komputasi kuantum, yang melampaui konsep komputasi hanya 1 dan 0.)

Decimal—Base 10 Binary—Base 2
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001

2. Bagaimana Proses Bekerja

Program telah dimuat ke dalam memori komputer dalam bentuk biner. Sekarang apa?

Program pelaksana membutuhkan lebih dari sekadar kode biner yang memberi tahu komputer apa
yang harus dilakukan. Program ini membutuhkan memori dan berbagai sumber daya sistem operasi
untuk dapat berjalan. "Proses" adalah apa yang kami sebut program yang telah dimuat ke dalam
memori bersama dengan semua sumber daya yang diperlukan untuk beroperasi. "Sistem operasi"
adalah otak di balik mengalokasikan semua sumber daya ini, dan datang dalam berbagai rasa seperti
macOS, iOS, Microsoft Windows, Linux, dan Android. OS menangani tugas mengelola sumber daya yang
diperlukan untuk mengubah program Anda menjadi proses yang berjalan.

Beberapa sumber daya penting yang dibutuhkan setiap proses adalah register, program counter,
dan stack. "Register" adalah tempat penyimpanan data yang merupakan bagian dari prosesor komputer
(CPU). Register dapat menyimpan instruksi, alamat penyimpanan, atau jenis data lain yang dibutuhkan
oleh proses. "Penghitung program," juga disebut "penunjuk instruksi," melacak di mana komputer
berada dalam urutan programnya. "Tumpukan" adalah struktur data yang menyimpan informasi tentang
subrutin aktif dari program komputer dan digunakan sebagai ruang awal untuk proses tersebut. Ini
dibedakan dari memori yang dialokasikan secara dinamis untuk proses yang dikenal sebagai
"tumpukan."

Anda mungkin juga menyukai