Mengenal Context Switching Pada Process Dan Thread

Post image

Suatu hari, saya memiliki beberapa tugas yang harus di selesaikan. Diantaranya memperpanjang sim dan membayar pajak. Saya tau kedua hal tersebut akan memakan waktu cukup lama karena harus mengantri.

Namun sialnya saat saya mengantri untuk membayar pajak, antriannya begitu panjang. Jadi setelah mengambil nomor antrian, saya berinisiatif untuk memperpanjang sim terlebih dahulu. Beruntungnya kedua tempat tersebut berdekatan dan antrian memperpanjang sim tidak begitu ramai.

Setelah urusan perpanjang sim selesai, saya melanjutkan untuk membayar pajak.

CPU dapat melakukan hal yang sama dengan yang saya lakukan. Melakukan banyak (sekali) tugas dan memilih mana yang lebih baik dijalankan terlebih dahulu karna terdapat proses blocking. Hal ini kita sebut dengan context switching.


Apa Itu Context Switching?

Context switching adalah teknik yang digunakan sistem operasi untuk mengalihkan suatu process/thread dari satu keadaan ke keadaan lain untuk menjalankan fungsinya dengan menggunakan CPU dalam sistem.

Context switching terjadi karena beberapa hal:

Multitasking

Dalam environment multitasking, apabila terdapat beberapa proses yang memerlukan CPU, maka context switching dapat terjadi. Hal yang paling umum terjadi adalah karna panggilan sistem (syscall), sehingga satu proses harus dialihkan dari CPU agar proses lain dapat berjalan. Hal ini dapat dipicu karena proses tersebut tidak berjalan, seperti menunggu I/O atau menunggu operasi singkronisasi selesai.

Interrupt Handling

Interrupt Hander adalah proses yang berjalan ketika interupsi dihasilkan oleh perangkat keras atau perangkat lunak. Contohnya apabila kita memiliki proses membaca dari disk, maka hardware akan mengirimkan sinyal interupsi untuk menjalankan context switching.

Penanganan interupsi disebut juga Interrupt Service Routine (ISR). ISR menangani permintaan dan mengirimkannya ke CPU. Ketika ISR selesai, proses sebelumnya akan dilanjutkan.

Context Switching

User and Kernel Mode Switching

Saat sistem bertransisi antara mode pengguna dengan mode kernel.

User and Kernel Mode Switching

Process Switching

Process switching merupakan salah satu tipe dari context switching, dimana akan mengubah dari satu proses ke proses lain. Process akan menyimpan seluruh informasinya pada Process control block (PCB). PCB akan otomatis dibuat ketika process tersebut dibuat, dan beberapa data PCB berubah ketika keadaan process berubah.

Beberapa data pada PCB:

Process Control Block

  • Process ID: ID dari process yang berjalan
  • State: Status process (berjalan, menunggu, siap, dihentikan, dll)
  • CPU Register dan Program Counter: Program counter menyimpan alamat intruksi selanjutnya yang akan dieksekusi untuk proses tersebut.
  • CPU Scheduling information: Informasi prioritas dan penunjuk ke antrian penjadwalan
  • Memory management information: Contohnya tabel halaman atau tabel segmen
  • Accounting information: User dan kernel CPU yang digunakan, account number, limit, dll
  • I/O Status information: Alokasi devices, file yang dibuka, dll

Process Switching

Ketika context switching terjadi, misalnya terdapat dua proses P0 dan P1. Keduanya memiliki PCB-nya sendiri. Pada awalnya PCB yang aktif adalah P0.

Ketika P0 mengubah statusnya, sistem operasi akan menyimpan status saat ini di PCB0 dan memuat ulang PCB1.

PCB1 berisi snapshot yang diambil dari P1 saat berhenti sebelumnya. Kemudian pada saat PCB1 mengubah kembali statusnya, sistem operasi menyimpan snapshot saat ini di PCB1 dan memuat ulang PCB0.

Butuh beberapa waktu untuk memuat ulang dan menyimpan PCB di memori. Jadi pada saat itu proses P0 dan P1 harus menunggu dalam mode diam.


Thread Switching

Thread switching merupakan tipe context switching, dimana virtual processor beralih menjalankan satu thread ke thread lainnya dalam satu proses. Thread switching sangat efisien dan jauh lebih ringan karena hanya melibatkan pengalihan identitas dan sumber daya seperti program counter, registers dan stack pointers.

Karena hanya melibatkan beberapa hal tersebut saja, thread switching lebih efisien apabila dibandingkan dengan process switching.

Thread Switching

Mirip seperti process, thread menyimpan informasinya pada thread control block (TCB). Beberapa data pada TCB:

  • Thread ID: Identitas unik dari setiap thread ketika dibuat.
  • Thread States: Status dari thread yang berubah saat thread berada dalam sistem.
  • CPU Information: Berisi semua yang perlu diketahui OS seperti progress thread dan data yang digunakan. CPU Information terdiri dari program counter dan registers.
  • Thread Priority: Menentukan prioritas thread dari thread lain yang membantu scheduler thread untuk menentukan thread mana yang harus dipilih berikutnya dari ready queue.
  • Pointer: Menunjukan proses mana yang membuat thread tersebut maupun thread mana yang dibuat dari thread tersebut.

Thread Control Block

Perbedaan Context Switching pada Process dan Thread

  • Thread context switching terjadi ketika CPU menyimpan status saat ini dan beralih ke thread lain di proses yang sama. Sedangkan process context switching terjadi ketika penjadwalan sistem operasi menyimpan status saat ini dari satu proses ke proses lain.
  • Thread context switching tidak melibatkan pengalihan alamat memori. Semua alamat memori disimpan oleh processor. Sedangkan process context switching melibatkan pergantian alamat memori.
  • Thread context switching melibatkan pergantian register dan stack pointer, ini tidak memakan banyak cost sehingga lebih efisien. Sedangkan process context switching lebih banyak cost karena mengubah alamat memori.
comments powered by Disqus

You May Also Like