TIPS: Rangkuman ini hanya sebagai pemahaman secara umum. Pastikan Anda juga membaca BMP (Buku Materi Pokok) versi cetak atau digital di Ruang Baca Virtual (RBV) untuk pemahaman lebih mendalam.
DILARANG: Memperjualbelikan seluruh konten atau latihan soal yang terdapat di portal ini. Pelanggaran akan dikenakan sanksi sesuai ketentuan yang berlaku.
Modul 3: Proses dan Thread
Kegiatan Belajar 1: Proses
A. Definisi Proses
Proses didefinisikan sebagai program yang sedang dieksekusi, bagian dari program yang sedang berjalan, atau entitas yang dapat dijalankan oleh prosesor.
Perbedaan Program dan Proses: Program adalah entitas pasif (disimpan di disk), sedangkan proses adalah entitas aktif (saat program dijalankan).
Komponen: Proses berisi kode, stack (data sementara), dan data section (variabel global).
Pseudoparallelism: Pada sistem multiprogram, CPU beralih antar proses dengan cepat menciptakan ilusi eksekusi paralel.
Penciptaan Proses:
Terjadi karena empat event utama:
Inisialisasi sistem: Menciptakan proses foreground dan background.
Perintah dari proses lain: Menggunakan system call untuk membuat proses baru.
Inisiasi batch job: Bagian dari rangkaian pekerjaan pada mainframe.
Permintaan pengguna: Pengguna menjalankan program tertentu.
Pengakhiran Proses:
Proses berakhir pada kondisi:
Normal exit (voluntary): Tugas selesai dengan sukses.
Error exit (voluntary): Berhenti melalui penanganan error.
Fatal error (involuntary): Berhenti paksa karena kesalahan kritis (contoh: pembagian dengan nol).
Killed by another process (involuntary): Dihentikan oleh proses lain.
B. Keadaan Proses (Process State)
Sebuah proses memiliki lima kemungkinan keadaan:
New: Proses sedang dibuat.
Running: Proses sedang dieksekusi prosesor.
Ready: Proses siap dan menunggu giliran CPU.
Waiting/Blocked: Proses menunggu event (misal: I/O selesai).
Terminated/Exit: Proses selesai dieksekusi.
Transisi Keadaan:
New → Ready: Masuk ke antrian siap.
Ready → Running:Scheduler memilih proses.
Running → Ready: Terjadi interupsi (misal: waktu habis).
Running → Waiting: Memerlukan I/O.
Waiting → Ready: I/O selesai.
Running → Terminated: Selesai eksekusi.
C. Process Control Block (PCB)
PCB adalah struktur data yang merepresentasikan setiap proses dan menyimpan informasi pengelolaannya, meliputi:
Process state
Program counter (alamat instruksi berikutnya)
CPU registers
Informasi penjadwalan CPU (prioritas)
Informasi manajemen memori
Informasi accounting (penggunaan CPU)
Informasi status I/O
Context Switch:
Mekanisme memindahkan CPU dari satu proses ke proses lain. Ini melibatkan penyimpanan context proses lama ke PCB dan memuat context proses baru. Waktu yang digunakan dianggap sebagai overhead.
D. Komunikasi Antar Proses
Proses dapat bersifat independen atau terkait (cooperating). Keuntungan proses yang saling terkait:
Berbagi informasi: Akses bersama ke data yang sama.
Mempercepat komputasi: Eksekusi paralel sub-tugas.
Modularitas: Sistem tersusun dalam modul.
Kenyamanan: Mengerjakan banyak tugas bersamaan.
E. Keserempakan (Concurrency)
Concurrency adalah kemampuan sistem menjalankan beberapa proses seolah-olah bersamaan.
Multiprogramming: Ilusi keserempakan pada satu prosesor.
Multiprocessing: Eksekusi paralel nyata pada banyak prosesor.
Masalah dalam Keserempakan:
Mutual Exclusion: Jaminan hanya satu proses mengakses sumber daya bersama pada satu waktu.
Deadlock: Dua/lebih proses saling menunggu sumber daya.
Starvation: Proses tidak pernah mendapat sumber daya karena kalah prioritas.
Dining Philosophers Problem: Ilustrasi klasik masalah sinkronisasi.
Kegiatan Belajar 2: Thread
A. Threads
Thread (mini proses/lightweight process) adalah unit dasar penggunaan CPU.
Karakteristik: Memiliki ID, program counter, register, dan stack sendiri, namun berbagi kode, data, dan sumber daya dengan thread lain dalam satu proses.
Keuntungan Multithreading:
Responsif: Aplikasi tetap berjalan meski satu bagian sibuk.
Cepat: Eksekusi paralel pada multi-core.
Ekonomis: Berbagi sumber daya (lebih hemat daripada buat proses baru).
Komunikasi Sederhana: Lewat data bersama.
Skalabilitas: Cocok untuk multiprosesor.
B. Model-Model Multithreading
Tiga model pemetaan user thread ke kernel thread:
Many-to-One: Banyak user thread ke satu kernel thread (kurang efisien di multi-core).
One-to-One: Setiap user thread punya satu kernel thread (Paralelisme penuh, dipakai Linux & Windows).
Many-to-Many: Banyak user thread ke jumlah kernel thread yang lebih sedikit/sama (Fleksibel).
C. Thread Library dan Implicit Threading
Thread Library: API untuk manajemen thread (contoh: Pthreads, Windows threads, Java threads).