Proses Terikat CPU dan I/O: Jika prosesnya intensif dalam hal operasi CPU, maka
ini disebut proses terikat CPU. Demikian pula, jika prosesnya intensif dalam hal
operasi I/O maka disebut proses terikat I/O.
1.3. Process Control Block (PCB)
Process Control Block (PCB) dalam sistem operasi adalah struktur data yang
digunakan untuk menyimpan informasi penting tentang suatu proses yang sedang
berjalan di dalam sistem komputer. PCB adalah elemen kunci dalam manajemen dan
pengendalian proses, serta berperan dalam koordinasi proses-proses tersebut. Informasi
yang disimpan dalam PCB meliputi :
2.2. Schedulers
Schedulers adalah sebuah proses berpindah-pindah di antara berbagai
penjadualan antrian seumur hidupnya. Sistem operasi harus memilih dan memproses
antrian-antrian ini berdasarkan kategorinya dengan cara tertentu. Oleh karena itu, proses
seleksi ini harus dilakukan oleh scheduler yang tepat. Dalam konsep penjadwalan
sistem operasi, terdapat tiga jenis utama dari schedulers (penjadwal) yang digunakan
untuk mengatur urutan eksekusi proses :
1. Long-Term Scheduler (Penjadwal Jangka Panjang) : Schedulers ini bertanggung
jawab untuk memilih proses-proses yang akan dimasukkan ke dalam antrian siap
(ready queue). Ini adalah tugas jangka panjang yang dilakukan secara periodik.
Penjadwal jangka panjang mempertimbangkan faktor-faktor seperti tingkat beban
sistem dan sumber daya yang tersedia, dan memutuskan proses mana yang harus
dimasukkan ke dalam antrian siap. Keputusan ini memengaruhi pertumbuhan
populasi proses dalam sistem.
2. Short-Term Scheduler (Penjadwal Jangka Pendek) : Penjadwal jangka pendek,
juga dikenal sebagai CPU scheduler, adalah yang paling sering digunakan. Tugas
penjadwal jangka pendek adalah memilih proses dari antrian siap (ready queue)
untuk dieksekusi oleh CPU. Tujuannya adalah untuk mengoptimalkan pemanfaatan
CPU, memberikan respons yang cepat kepada pengguna, dan menjalankan proses
sesuai dengan kebijakan penjadwalan yang telah ditetapkan. Penjadwal jangka
pendek berjalan secara terus-menerus dan membuat keputusan dalam hitungan
milidetik.
3. Medium-Term Scheduler (Penjadwal Jangka Menengah) : Schedulers ini
berfokus pada manajemen memori fisik dan alokasi sumber daya. Mereka
bertanggung jawab untuk menentukan mana proses-proses yang harus dimuat ke
dalam memori fisik dan mana yang harus di-swapping ke penyimpanan sekunder.
Penjadwal jangka menengah membantu mengelola penggunaan memori dengan
menghapus proses-proses yang tidak aktif dari memori untuk memberikan tempat
bagi proses-proses lain yang akan dieksekusi. Ini juga dapat membantu mengatasi
masalah kekurangan memori fisik.
Dalam penggunaan praktis, seringkali "scheduler" merujuk khusus kepada
penjadwal jangka pendek yang beroperasi pada level yang paling terdekat dengan CPU.
Penjadwal jangka pendek adalah yang paling kritis karena pengaruhnya terhadap respons
sistem terhadap pengguna dan efisiensi penggunaan CPU. Karena itu, pemilihan proses
oleh penjadwal jangka pendek sering berdasarkan algoritma penjadwalan seperti Round
Robin, Shortest Job Next, atau algoritma-algoritma lainnya yang sesuai dengan
kebutuhan sistem operasi dan kebijakan yang diterapkan.
2.3. Context Switch
Context switch (pertukaran konteks) dalam konsep penjadwalan sistem operasi
adalah proses di mana sistem operasi menyimpan status dan informasi eksekusi proses
yang sedang berjalan saat ini, menghentikan proses eksekusi tersebut, dan memulai
eksekusi proses lain yang telah dipilih untuk eksekusi selanjutnya. Context switch
diperlukan ketika algoritma penjadwalan memutuskan bahwa proses lain harus
mengambil alih CPU setelah proses yang sedang berjalan selesai atau harus dihentikan
sementara. Proses peralihan konteks melibatkan beberapa langkah penting, termasuk :
1. Penyimpanan Konteks Proses Aktif : Informasi konteks dari proses yang
sedang berjalan saat ini disimpan. Ini mencakup nilai-nilai register CPU, instruksi
pointer, dan status lainnya yang diperlukan untuk menjalankan dan melanjutkan
proses eksekusi ini nanti.
2. Pemilihan Proses Selanjutnya : Algoritma penjadwalan (seperti Round
Robin, Shortest Job Next, dll.) digunakan untuk memilih proses selanjutnya yang
akan dieksekusi.
3. Pemulihan Konteks Proses Berikutnya : Informasi konteks dari proses yang telah
dipilih untuk eksekusi selanjutnya disiarkan dari penyimpanan. Ini mencakup nilai-
nilai register dan status yang diperlukan.
4. Perubahan Konteks (Context Switch) : CPU beralih dari eksekusi proses yang
sedang berjalan ke proses yang baru dipilih. Ini sebenarnya di mana informasi
konteks yang disimpan sebelumnya digunakan untuk mengembalikan keadaan proses
baru yang akan dieksekusi.
Context switch adalah operasi yang mahal dalam waktu dan sumber daya, karena
melibatkan banyak memori operasi dan perpindahan data. Oleh karena itu, algoritma
penjadwalan yang efisien dan optimal harus dirancang untuk meminimalkan peralihan
konteks frekuensi. Meskipun demikian, saklar konteks adalah bagian integral dari
pengendalian proses dalam sistem operasi dan diperlukan untuk menjaga keadilan dalam
alokasi CPU dan memberikan respons yang baik kepada pengguna.
3. OPERASI PADA PROSES
3.1. Pembuatan Proses
Operasi pembuatan proses (process creation) adalah proses di mana sistem
operasi menciptakan proses baru. Ini adalah salah satu operasi dasar dalam manajemen
proses dalam sistem operasi. Operasi pembuatan proses terjadi ketika pengguna atau
aplikasi meminta sistem operasi untuk menjalankan program baru atau ketika sistem
operasi memulai proses-proses sistemnya. Berikut adalah langkah-langkah umum dalam
operasi pembuatan proses :
1. Penciptaan Entitas Proses : Saat operasi pembuatan proses dimulai, sistem
operasi membuat struktur data yang disebut Process Control Block (PCB) untuk
merepresentasikan proses baru. PCB ini akan menyimpan informasi penting tentang
proses, seperti ID proses, konteks CPU awal, status awal, dan sumber daya yang
dialokasikan.
2. Alokasi Memori : Sistem operasi menentukan lokasi di memori fisik
di mana kode dan data program yang akan dieksekusi oleh proses tersebut akan
disimpan. Ini melibatkan alokasi ruang memori untuk program dan data, serta
pengaturan hak akses.
3. Inisialisasi Konteks : Konteks CPU awal untuk proses baru diatur. Ini
mencakup pengaturan nilai-nilai register CPU, pointer instruksi, dan kondisi awal
lainnya yang diperlukan untuk memulai eksekusi program.
4. Mulai Eksekusi : Setelah semua persiapan selesai, sistem operasi
memulai eksekusi program yang akan dieksekusi oleh proses. CPU diberikan kepada
proses tersebut untuk eksekusi.
5. Pengembalian Nilai Kembali : Setelah proses selesai atau berhenti, sistem
operasi akan mengumpulkan hasilnya dan mengembalikan nilai-nilai tersebut kepada
proses pemanggil atau aplikasi yang memulai proses tersebut.
Proses pembuatan proses dapat terjadi dalam beberapa konteks yang berbeda,
termasuk :
Permintaan Pengguna : Pengguna dapat meminta sistem operasi untuk
menjalankan program atau aplikasi baru. Misalnya, dengan mengklik ikon aplikasi
pada antarmuka pengguna grafis atau melalui baris perintah.
Operasi Sistem : Sistem operasi juga dapat menciptakan proses-
proses sistemnya sendiri, seperti proses penjadwalan, proses pemantauan, dan proses
manajemen sumber daya.
Forking (Pembuatan Salinan) : Beberapa sistem operasi, seperti UNIX,
memungkinkan proses untuk menciptakan proses baru dengan melakukan operasi
fork. Proses anak yang dihasilkan adalah salinan dari proses induk, dan mereka dapat
berkomunikasi satu sama lain.
Operasi pembuatan proses adalah elemen kunci dalam manajemen proses dalam
sistem operasi. Ini memungkinkan sistem operasi untuk menjalankan banyak tugas
secara bersamaan, mengoptimalkan penggunaan sumber daya, dan memisahkan tugas-
tugas yang berbeda dalam entitas proses yang terisolasi.
5. THREADS
Dalam sistem operasi, thread adalah unit eksekusi terkecil yang dapat berbagi sumber
daya dan memori dalam sebuah proses. Thread merupakan cara untuk menjalankan tugas-
tugas secara konkuren atau paralel di dalam satu proses. Mereka dapat berjalan dalam
konteks proses yang sama, berbagi memori dan sumber daya dengan thread-thread lain
dalam proses yang sama. Thread lebih ringan daripada proses tradisional (heavyweight
processes), karena mereka memiliki overhead yang lebih rendah dalam hal penggunaan
sumber daya.
1. Thread vs Proses :
Proses adalah lingkungan eksekusi yang independen, sedangkan thread adalah
unit eksekusi yang lebih kecil di dalam proses.
Thread dalam satu proses berbagi memori dan sumber daya, sedangkan proses
memiliki sumber daya yang terpisah dan tidak dapat berbagi data secara
langsung.
2. Jenis-Jenis Threads :
Terdapat dua jenis utama dari thread : user-level thread (ULT) dan kernel-level
thread (KLT).
User-level thread diatur dan dikelola oleh aplikasi atau perpustakaan perangkat
lunak di lapisan pengguna, sedangkan kernel-level thread diatur oleh sistem
operasi.
3. Manfaat Threads :
Threads memungkinkan proses untuk melakukan tugas konkuren yang dapat
meningkatkan efisiensi dan responsifitas program.
Threads sangat berguna dalam aplikasi dengan tugas-tugas yang dapat dieksekusi
secara paralel, seperti pemrosesan data, tugas-tugas jaringan, dan pemrograman
berbasis peristiwa.
4. Sinkronisasi :
Karena thread berbagi memori, pengaturan sinkronisasi diperlukan untuk
menghindari masalah akses bersamaan ke data. Hal ini mencakup penggunaan
semafor, mutex (kunci), dan variabel kondisi.
5. Keuntungan :
Threads lebih efisien dalam hal penggunaan sumber daya daripada proses karena
overhead yang lebih rendah.
Membuat dan menghentikan thread lebih cepat daripada menciptakan dan
menghentikan proses.
Threads memungkinkan aplikasi untuk memanfaatkan multi-core dan multi-
processor sistem dengan lebih baik.
6. Kelemahan :
Threads dalam satu proses dapat saling mempengaruhi dan menyebabkan
masalah kesalahan (bugs) yang sulit di identifikasi dan diperbaiki.
Sinkronisasi antar-thread dapat kompleks dan memerlukan perhatian ekstra.
7. Thread dalam Bahasa Pemrograman :
Bahasa pemrograman seperti Java, C++, dan Python memiliki dukungan untuk
thread dan menyediakan perpustakaan untuk mengelola thread.
Pustaka standar POSIX Threads (threads) adalah pilihan umum untuk mengelola
thread dalam bahasa C.
Thread terdiri dari ID thread, program counter, himpunan register dan stack. Thread
dapat melakukan lebih dari satu pekerjaan pada waktu yang sama (multithreading). Thread
bekerja sama dengan thread lain dalam penggunaan bagian kode, bagian data, dan resource.
Dengan penggunaan thread CPU dapat secara ekstensif di antara per thread tanpa
menggunakan manajemen memori. Thread adalah cara yang efisien untuk mencapai
konkurensi dan paralelisme dalam aplikasi, tetapi juga memerlukan manajemen yang cermat
untuk menghindari masalah sinkronisasi dan deadlock. Thread sangat berguna dalam
pengembangan aplikasi yang membutuhkan tugas-tugas konkuren untuk mencapai kinerja
atau responsifitas yang optimal.
6. KOMUNIKASI ANTAR PROSES
Komunikasi antar proses (Inter-Process Communication atau IPC) dalam sistem
operasi adalah mekanisme yang memungkinkan proses yang berjalan secara terpisah untuk
saling berbagi data, berkomunikasi, dan berkoordinasi. IPC penting dalam situasi di mana
proses-proses perlu bekerjasama, berbagi informasi, atau saling berinteraksi untuk mencapai
tugas tertentu. Proses komunikasi dengan proses lain tanpa menggunakan variabel yang
dishare. Fasilitas IPC terdiri dari dua operasi:
Send (pesan), ukuran pesan bisa berbeda-beda atau tetap
Receive (pesan)
Dalam komunikasi antar proses ada dua jenis, yaitu pertama Komunikasi Langsung
(Direct Communication) merupakan bentuk komunikasi langsung ke proses lain. Lalu
kedua Komunikasi Tak Langsung (Indirect Communication) penerimaan pesan dilakukan
melalui mailbox (port). Mailbox memiliki identitas unik dan dua buah proses dapat saling
berkomunikasi hanya jika mereka sharing mailbox. Komunikasi antar proses adalah aspek
penting dalam pengembangan aplikasi terdistribusi dan paralel, serta dalam sistem yang
memerlukan kerjasama antar proses untuk mencapai tujuan tertentu.
7. BUFFERING
Buffering dalam sistem operasi adalah proses penyimpanan sementara (temporary
storage) data di dalam suatu buffer atau cache sebelum data tersebut dipindahkan atau
diakses oleh komponen yang membutuhkannya, seperti perangkat keras (misalnya, disk atau
jaringan) atau proses pemrosesan. Tujuan utama buffering adalah meningkatkan efisiensi
komunikasi atau akses data dengan mengurangi latensi dan meningkatkan throughput.
Terdapat dua cara dalam buffering, yaitu single buffering dan double buffering.