Sabs UTDocs
Msim4201

MSIM4201 - Modul 3

Ringkasan materi Proses dan Thread untuk persiapan UAS MSIM4201

Proses

Proses adalah program yang sedang dieksekusi atau dijalankan oleh komputer. Ini lebih dari sekadar kode-kode; proses juga mencakup stack (variabel lokal, parameter fungsi), data section (variabel global), serta informasi aktivitas (nilai program counter dan register prosesor).

Evolusi dan Penciptaan Proses

Pada awalnya, komputer hanya bisa menjalankan satu program. Kini, komputer modern dapat menjalankan beberapa program secara cepat bergantian (pseudoparallelism) atau bersamaan (jika memiliki multi-prosesor), yang membutuhkan pengelolaan kompleks terhadap urutan, sumber daya, dan prioritas.

Ada empat kondisi yang dapat memicu penciptaan proses:

  1. Inisialisasi sistem: Saat sistem operasi dinyalakan, proses foreground (interaksi pengguna) dan background (berjalan di "belakang layar") dibuat.
  2. Proses sedang berjalan mengeksekusi perintah untuk menciptakan proses baru: Misalnya melalui system call.
  3. Inisiasi batch job: Pekerjaan yang banyak dijadikan satu rangkaian dan dieksekusi bersamaan.
  4. Permintaan pengguna untuk menciptakan proses baru: Misalnya saat pengguna menjalankan aplikasi.

Pengakhiran Proses

Sebuah proses akan berakhir jika memenuhi salah satu kondisi berikut:

  1. Normal exit (voluntary): Proses selesai dengan sukses.
  2. Error exit (voluntary): Proses berhenti karena error yang ditangani oleh program.
  3. Fatal error (involuntary): Proses berhenti secara paksa karena kesalahan tak terduga (contoh: pembagian dengan nol, akses memori terlarang).
  4. Killed by another process (involuntary): Proses dihentikan oleh proses lain.

Keadaan Proses (Process State)

Keadaan proses berubah mulai dari terbentuk hingga diakhsiri. Berikut lima keadaan yang mungkin:

  1. New: Proses sedang dibuat.
  2. Running: Proses sedang dieksekusi oleh prosesor.
  3. Ready: Proses siap dieksekusi dan menunggu alokasi CPU.
  4. Waiting/Blocked: Proses menunggu suatu kejadian (misal: respon I/O) atau sumber daya tersedia.
  5. Terminated/Exit: Proses selesai dieksekusi.

Sebuah proses baru pertama kali masuk ke keadaan Ready, lalu ke Running saat dieksekusi. Jika ada interupsi atau jatah waktu habis, kembali ke Ready. Jika menunggu I/O atau kejadian lain, masuk ke Waiting/Blocked, dan kembali ke Ready setelah ditangani.

Process Control Block (PCB)

Process Control Block (PCB) adalah struktur data yang menyimpan semua informasi terkait sebuah proses. PCB bersifat unik untuk setiap proses dan dihapus setelah proses selesai.

Informasi yang tersimpan dalam PCB meliputi:

  1. Process state: Keadaan proses saat ini (new, ready, waiting, dll.).
  2. Program counter: Alamat instruksi selanjutnya yang akan dieksekusi.
  3. CPU register: Isi register CPU (akumulator, stack pointers, dll.) untuk melanjutkan eksekusi setelah interupsi.
  4. Informasi penjadwalan CPU: Prioritas proses, pointer antrian penjadwalan, parameter penjadwalan.
  5. Informasi manajemen memori: Nilai dasar dan batas register, page tables, atau segment tables.
  6. Informasi accounting: Jumlah penggunaan CPU, waktu real-time, batasan waktu.
  7. Informasi status I/O: Alat I/O yang dialokasikan, daftar file yang dibuka.

Context Switching

Context switch adalah proses pemindahan CPU dari satu proses ke proses lain. Ini melibatkan penyimpanan konteks proses lama ke PCB-nya dan memuat konteks proses baru dari PCB-nya. Selama context switch, sistem tidak melakukan eksekusi produktif (overhead).

Komunikasi Antar Proses dan Keserempakan

Komunikasi Antar Proses (IPC)

Proses dapat bersifat:

  • Independen: Tidak saling mempengaruhi.
  • Terkait (Cooperating): Saling mempengaruhi atau berbagi sumber daya.

Keuntungan proses terkait:

  1. Berbagi informasi: Akses bersama ke data yang sama.
  2. Mempercepat komputasi: Membagi pekerjaan menjadi bagian-bagian paralel.
  3. Modularitas: Sistem tersusun dalam modul-modul yang fleksibel.
  4. Kenyamanan: Pengguna dapat melakukan banyak hal secara bersamaan (multitasking).

Metode komunikasi antar proses:

  1. Shared memory: Proses berbagi variabel di area memori bersama.
  2. Message passing: Proses bertukar pesan melalui system call yang disediakan OS.

Keserempakan (Concurrency)

Keserempakan berarti proses-proses berjalan pada selang waktu tertentu sehingga terlihat berjalan bersamaan. Pada sistem dengan satu prosesor, ini disebut pseudoparallelism atau ilusi keserempakan, karena CPU beralih sangat cepat antara proses. Sistem ini disebut multi-tugas (multitasking computer).

Implementasi keserempakan:

  1. Multiprogramming: Memecah program menjadi beberapa proses, dieksekusi bergantian oleh satu prosesor.
  2. Multiprocessing: Pemrosesan paralel dengan lebih dari satu prosesor.

Tantangan Keserempakan

Beberapa kesulitan dalam mengimplementasikan keserempakan:

  • Berbagi sumber daya: Sumber daya terbatas dan perlu penjadwalan akses.
  • Deadlock: Kondisi di mana dua proses atau lebih saling menunggu sumber daya yang dipegang proses lain sehingga tidak ada yang bisa melanjutkan.
    • Kondisi Coffman: Empat syarat terjadinya deadlock adalah mutual exclusion, hold and wait, non-preemption, dan circular wait.
    • Pencegahan: Meniadakan salah satu kondisi Coffman.
  • Starvation: Kondisi di mana suatu proses tidak pernah mendapatkan sumber daya. Bisa disebabkan oleh deadlock atau penjadwalan prioritas yang buruk.
    • Solusi: Aging, yaitu menaikkan prioritas proses rendah secara bertahap.
  • Permasalahan makan malam para filsuf (Dining Philosophers Problem): Sebuah ilustrasi klasik tentang masalah sinkronisasi deadlock dan starvation dalam berbagi sumber daya.

Thread

Thread adalah unit dasar penggunaan CPU, sering disebut sebagai "mini proses" atau proses di dalam proses. Satu proses dapat memiliki banyak thread. Sebuah thread memiliki ID thread, program counter, set register, dan stack sendiri. Namun, thread berbagi bagian data, kode, dan sumber daya sistem operasi lainnya dengan thread lain dalam proses yang sama.

Jenis Proses Berdasarkan Thread

  • Heavyweight/single-thread process: Proses dengan satu aliran kendali (satu thread).
  • Lightweight/multithreaded process: Proses dengan lebih dari satu aliran kendali (lebih dari satu thread), memungkinkan eksekusi paralel pekerjaan.

Keuntungan Multithreading

  1. Sistem Lebih Responsif: Aplikasi tetap responsif bahkan saat ada blocking karena ada thread lain yang berjalan.
  2. Eksekusi Proses Lebih Cepat: Thread dapat dieksekusi secara paralel pada CPU multi-core atau pseudoparalel pada single-core.
  3. Konsumsi Sumber Daya Lebih Rendah (Ekonomis): Thread berbagi sumber daya proses yang sama (kode, memori).
  4. Komunikasi dan Berbagi Sumber Daya Sederhana: Komunikasi antar thread lebih mudah karena mereka berbagi address space.
  5. Skalabilitas dalam Penerapan Sistem Paralel: Aplikasi dapat menggunakan multithreading pada sistem multi-CPU untuk memecah data dan tugas.

Model-model Multithreading

Dukungan thread ada pada tingkat pengguna (user thread) dan tingkat kernel (kernel thread). Model pemetaan user thread ke kernel thread:

  1. Many-to-One: Beberapa user thread dipetakan ke satu kernel thread.

    Kerugian: Seluruh proses terhenti jika ada blocking system call. Tidak cocok untuk sistem multi-core.

  2. One-to-One: Setiap user thread dipetakan ke satu kernel thread.

    Keuntungan: Mengatasi masalah blocking dan dapat dijalankan paralel di multi-core. Kerugian: Penciptaan kernel thread untuk setiap user thread bisa menjadi beban performa. Diterapkan di Linux dan Windows.

  3. Many-to-Many: Sejumlah user thread dipetakan ke jumlah kernel thread yang sama atau lebih sedikit.

    Keuntungan: Developer bebas membuat thread sebanyak mungkin, kernel dapat berjalan paralel, blocking pada satu thread tidak menghentikan yang lain.

  4. Two Level (variasi Many-to-Many): Mirip many-to-many tetapi juga memungkinkan satu user thread berpasangan dengan satu kernel thread (seperti one-to-one).

Thread Library dan Implicit Threading

  • Thread Library: Kumpulan API untuk membuat dan mengatur thread. Implementasinya bisa di ruang pengguna (tanpa dukungan kernel) atau tingkat kernel (dengan system call).
  • Contoh Thread Library: POSIX pthreads (UNIX/Linux), Windows threads (Windows), Java thread API (Java).
  • Implicit Threading: Pembuatan dan pengaturan thread ditransfer ke run-time library dan compiler.
    • Thread Pool: Beberapa thread dibuat di awal dan menunggu permintaan eksekusi.
    • OpenMP: API untuk pemrograman paralel di C, C++, FORTRAN.
    • Grand Central Dispatch (GCD): Teknologi Apple untuk identifikasi kode paralel.

Permasalahan pada Multithreading

  1. Thread Cancellation: Mengakhiri thread sebelum selesai.
    • Asynchronous cancellation: Mengakhiri thread target secara langsung (bisa meninggalkan sumber daya belum dilepaskan).
    • Deferred cancellation: Thread target secara berkala memeriksa apakah harus diakhiri dan melepaskan sumber daya terlebih dahulu.
  2. Penanganan Sinyal: Sinyal (misal: dari error) harus ditangani. Pertanyaan muncul: ke thread mana sinyal harus dikirimkan dalam proses multi-thread?
  3. Thread-Local Storage (TLS): Salinan data tertentu yang dibutuhkan setiap thread, berbeda dengan variabel lokal karena bersifat global untuk thread tersebut.
  4. Aktivasi Penjadwal (Scheduler Activation): Mekanisme komunikasi antara kernel dan thread library (terutama untuk model many-to-many dan two level) menggunakan upcall untuk menginformasikan event.

Poin Penting

  • Proses adalah program yang sedang dieksekusi, memiliki lima keadaan: New, Ready, Running, Waiting/Blocked, Terminated/Exit.
  • Process Control Block (PCB) adalah struktur data yang menyimpan informasi krusial tentang sebuah proses.
  • Context switching adalah perpindahan alokasi CPU antar proses dengan menyimpan/memuat konteks dari PCB.
  • Keserempakan (Concurrency) memungkinkan banyak proses berjalan berselang-seling (pseudoparallelism) atau bersamaan (true parallelism).
  • Deadlock terjadi ketika proses saling menunggu sumber daya. Kondisi Coffman adalah syarat terjadinya deadlock.
  • Starvation adalah kondisi proses tidak pernah mendapatkan sumber daya; dapat diatasi dengan aging.
  • Thread adalah unit dasar penggunaan CPU dalam sebuah proses, berbagi sumber daya proses namun memiliki stack, PC, dan register sendiri.
  • Multithreading membuat sistem lebih responsif, eksekusi lebih cepat, konsumsi sumber daya lebih ekonomis, dan komunikasi antar bagian program lebih sederhana.
  • Ada tiga model pemetaan user thread ke kernel thread: many-to-one, one-to-one, dan many-to-many.
  • Tantangan dalam multithreading termasuk thread cancellation, penanganan sinyal, thread-local storage (TLS), dan scheduler activation.

Tes Formatif 1 — Kegiatan Belajar 1

Tes Formatif 1Kegiatan Belajar 1

1.Definisi proses adalah ...

2.Perbedaan antara program dan proses adalah ...

3.Berikut yang bukan merupakan kejadian utama yang menyebabkan terciptanya sebuah proses adalah ...

4.Terdapat empat jenis kondisi yang memungkinkan terjadi ketika proses diakhiri, salah satunya adalah ...

5.Mengeksekusi instruksi ilegal, merujuk pada alamat memori yang tidak ada, dan pembagian dengan nol merupakan contoh-contoh berhentinya proses yang disebabkan oleh ...

6.Keadaan proses menunggu event terjadi atau menunggu sumber daya yang dibutuhkan tersedia (contoh respons dari I/O) untuk melanjutkan eksekusi disebut dengan ...

7.Hal yang dapat menyebabkan proses berada pada keadaan ready adalah ...

8.Ketika proses yang sudah tercipta tidak sedang dieksekusi, proses berada pada sebuah antrian. Keadaan proses yang memungkinkan berada dalam sebuah antrian adalah ...

9.Definisi dari Process Control Block adalah ...

10.Pada Process Control Block (PCB) terdapat bagian yang digunakan untuk menyimpan data alamat dari instruksi selanjutnya yang dieksekusi pada sebuah proses. Bagian tersebut adalah ...

11.Program Counter adalah bagian dari Process Control Block yang berfungsi untuk menyimpan informasi ...

12.Sebuah proses disebut sebagai proses independen jika proses ...

13.Selain proses independen, terdapat juga proses yang saling terkait atau disebut cooperating process. Sebuah proses disebut sebagai cooperating process jika proses ...

14.Pengertian dari istilah context switching adalah ...

15.Terdapat dua jenis penjadwalan proses, yaitu jangka pendek dan jangka panjang. Pengertian penjadwalan jangka pendek adalah ...

16.Dua bagian pada Process Control Block yang informasinya paling penting perannya untuk melakukan context switching ketika terjadinya interupsi pada sebuah proses adalah ...

17.Terdapat dua buah metode atau skema yang dapat digunakan untuk melakukan komunikasi antar proses, yaitu ...

18.Komunikasi antar proses yang dilakukan dengan pemakaian variabel bersama dinamakan metode ...

19.Komunikasi antar proses yang tidak membutuhkan berbagi address space adalah metode ...

20.Ketika hendak menggunakan model shared memory untuk komunikasi antar proses, pihak yang bertanggung jawab menyediakan mekanisme komunikasi antar proses adalah ...

0/20 soal dijawab

Tes Formatif 2 — Kegiatan Belajar 2

Tes Formatif 2Kegiatan Belajar 2

1.Istilah thread dalam Sistem Operasi adalah ...

2.Hubungan antara proses dan thread adalah ...

3.Terdapat dual macam proses menurut jumlah kendali thread-nya, yaitu kelas berat (heavyweight) dan kelas ringan (lightweight). Definisi heavyweight process adalah proses ...

4.Keuntungan sebuah lightweight process adalah ...

5.Berikut ini yang bukan merupakan keuntungan diterapkannya konsep multithreading adalah lebih ...

6.Pengertian user-level thread adalah thread yang ...

7.Sistem operasi berikut yang tidak menerapkan thread secara asli/bawaan adalah ...

8.Berikut yang bukan merupakan model hubungan user-level thread ke kernel thread adalah ...

9.Many-to-one adalah salah satu dari tiga model multi-threading yang ada. Pemetaan user-level thread ke kernel thread yang dilakukan pada model many-to-one adalah ...

10.Sebuah variasi dari model many-to-many yang masih memetakan beberapa user-level thread pada kernel thread dengan jumlah yang sama atau lebih sedikit, namun juga memungkinkan memasangkan satu user-level thread ke satu kernel thread yang disebut dengan model ...

11.Model pemetaan many-to-one mempunyai permasalahan diantaranya adalah ...

12.Kekurangan dari pemetaan user-level thread ke kernel thread model one-to-one adalah ...

13.Sistem operasi Windows, Linux, Solaris generasi 9 dan setelahnya, menggunakan model yang sama untuk pemetaan user ke kernel thread, yaitu model ...

14.Pengertian thread library adalah ...

15.Sebuah thread library yang digunakan oleh sistem berbasis UNIX (seperti Linux, MacOS, dan Solaris) dan mengacu pada standar IEEE 1003.1c adalah ...

16.Salah satu permasalahan yang harus diperhatikan dalam memprogram dengan multithread adalah pembatalan thread atau yang disebut juga dengan thread cancellation. Dua skenario dibatalkannya thread adalah ...

17.Pembatalan thread yang dilakukan dengan pengecekan thread target apakah perlu di hentikan atau tidak disebut ...

18.Fungsi yang digunakan oleh Windows API untuk menciptakan thread adalah ...

19.Grand Central Dispatch adalah teknologi untuk melakukan implicit threading yang dimiliki oleh ...

20.Penciptaan sejumlah thread ketika sebuah sistem dimulai kemudian mengumpulkannya di suatu tempat menunggu adanya kegiatan yang membutuhkan thread tersebut disebut dengan ...

0/20 soal dijawab

On this page