Apa itu Context Switch?

Context switch adalah sebuah operasi yang dilakukan oleh unit pemrosesan pusat (CPU) ketika berpindah antara proses atau thread sambil memastikan bahwa proses-proses tersebut tidak saling bertabrakan. Context switching yang efektif memungkinkan sistem untuk mendukung lingkungan multitasking.

Setiap kali CPU melakukan perpindahan, sistem sementara menghentikan tugas yang sedang berjalan, menyimpan statusnya (konteks) ke dalam process control block (PCB), lalu menjalankan tugas berikutnya dalam antrean. Jika tugas tersebut sudah pernah dimulai sebelumnya, CPU akan mengambil kembali statusnya agar dapat melanjutkan eksekusi dari titik terakhir. Operasi ini terus berulang saat CPU berputar di antara proses-proses dalam antrean.

Kemampuan context switching untuk berpindah dengan cepat antar tugas adalah fitur utama sistem operasi multitasking (OS) seperti Windows, Linux, atau macOS. Context switching memungkinkan beberapa proses berbagi satu CPU, sehingga seolah-olah CPU menjalankan beberapa proses secara bersamaan. Hal inilah yang memungkinkan pengguna berpindah dengan mulus di antara aplikasi-aplikasi yang terbuka di desktop mereka.

Bagaimana Cara Kerja Context Switch?

Setiap kali CPU beralih ke proses yang berbeda, ia menyimpan data status ke PCB yang telah ditetapkan untuk proses tersebut. Data yang disimpan dapat bervariasi antara sistem, tetapi umumnya mencakup pointer, program counter, register, dan informasi lain yang terkait dengan proses.

Process Control Block (PCB) adalah sebuah struktur data yang dibuat untuk setiap proses. Selain data status, PCB juga menyimpan status eksekusi proses, nomor proses, serta informasi manajemen memori.

Context switching umumnya terjadi karena salah satu dari tiga pemicu berikut:

  • Operasi multitasking. Context switching terjadi ketika satu proses memberikan giliran kepada proses lain untuk dieksekusi. Dalam beberapa kasus, ini terjadi karena sebuah proses hanya mendapatkan alokasi waktu CPU tertentu. Namun, context switching juga dapat terjadi jika suatu proses harus menyerahkan CPU kepada proses dengan prioritas lebih tinggi, atau jika proses itu sendiri secara sukarela menyerahkan CPU, misalnya saat menunggu operasi input/output.
  • Interrupt. Context switching dapat terjadi akibat adanya interupsi sistem dari perangkat keras atau perangkat lunak. Misalnya, sebuah keyboard dapat mengeluarkan interupsi saat pengguna menekan tombol, atau sebuah aplikasi dapat meminta interupsi saat membutuhkan masukan dari pengguna. Sistem operasi biasanya memiliki interrupt handler untuk memproses dan memprioritaskan permintaan ini.
  • Peralihan user/kernel. Dalam beberapa kasus, context switching terjadi ketika sistem operasi beralih antara mode pengguna (user mode) dan kernel mode. Misalnya, sebuah proses mungkin perlu beralih ke kernel mode untuk mengakses sumber daya sistem, yang dapat memerlukan context switch untuk menyesuaikan tingkat hak akses yang berbeda.

Ketika CPU menghadapi salah satu pemicu ini, ia akan menjalankan serangkaian langkah yang mengatur eksekusi proses. Ilustrasi berikut memberikan gambaran umum tentang bagaimana context switching dapat terjadi antara dua proses. Pendekatan pasti terhadap context switching bergantung pada sistem operasi dan variabel lainnya. Namun, secara konseptual, sebagian besar sistem mengikuti pola yang serupa.

Ilustrasi ini menunjukkan bagaimana CPU bergantian antara Proses 1 dan Proses 2, beralih antara status eksekusi dan status idle. Berikut adalah urutan dasar peristiwa saat berpindah antar proses:

  1. CPU menjalankan Proses 1.
  2. Sebuah peristiwa pemicu terjadi, seperti interupsi atau sistem call.
  3. Sistem menghentikan sementara Proses 1 dan menyimpan statusnya ke PCB 1.
  4. Sistem memilih Proses 2 dari antrean dan memuat statusnya dari PCB 2.
  5. CPU menjalankan Proses 2, melanjutkan dari titik terakhir (jika proses sudah pernah berjalan sebelumnya).
  6. Ketika peristiwa pemicu berikutnya terjadi, sistem menghentikan sementara Proses 2 dan menyimpan statusnya ke PCB 2.
  7. Status Proses 1 dimuat kembali, dan CPU menjalankannya kembali dari titik terakhir. Proses 2 tetap dalam keadaan idle hingga dipanggil lagi.

Semakin banyak jumlah proses yang aktif, semakin kompleks operasi ini, terutama karena proses terus dimulai dan dihentikan. Meskipun demikian, CPU tetap hanya dapat mengeksekusi satu proses dalam satu waktu, berapa pun jumlah proses dalam antrean. Context switching juga memerlukan waktu karena sistem harus menyimpan dan mengambil data status untuk setiap transisi. Semakin sering terjadi switching, semakin banyak waktu yang dibutuhkan untuk beralih bolak-balik. Jika overhead terlalu besar, performa sistem dapat menurun.

Context switching dapat dilakukan sepenuhnya dalam perangkat keras, meskipun pendekatan ini umumnya terbatas pada CPU lama seperti seri x86 awal. Saat ini, context switching berbasis perangkat lunak dan biasanya ditangani di dalam kernel, yang lebih cepat dan efisien dibandingkan dengan context switching berbasis perangkat keras. Sistem modern dapat melakukan ratusan context switch per detik. Meskipun komputer tampak menjalankan beberapa tugas secara paralel, sebenarnya CPU hanya bergantian antara operasi dengan kecepatan sangat tinggi.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *