• Tidak ada hasil yang ditemukan

Threads

Dalam dokumen Plus Studi Kasus Kernel Linux (Halaman 65-72)

2. Konsep Dasar Sistem Operasi

3.1. Konsep Proses

3.1.4. Threads

Model proses yang didiskusikan sejauh ini telah menunjukkan bahwa suatu proses adalah sebuah program yang menjalankan eksekusithreadtunggal. Sebagai contoh, jika sebuah proses menjalankan sebuah programWord Processor, ada sebuahthreadtunggal dari instruksi-instruksi yang sedang dilaksanakan.

Kontrolthreadtunggal ini hanya memungkinkan proses untuk menjalankan satu tugas pada satu waktu. Banyak sistem operasi modern telah memiliki konsep yang dikembangkan agar memungkinkan sebuah proses untuk memiliki eksekusimulti-threads, agar dapat secara terus menerus mengetik dan menjalankan pemeriksaan ejaan didalam proses yang sama, maka sistem operasi tersebut memungkinkan proses untuk menjalankan lebih dari satu tugas pada satu waktu. Pada Bagian 3.5,threadakan dibahas prosesmulti-threadedlebih lanjut.

3.2. Penjadualan Proses

Multiprogrammingbertujuan untuk memaksimalkan penggunaan CPU dengan cara mengatur alokasi waktu yang digunakan oleh CPU, sehingga proses berjalan sepanjang waktu dan memperkecil waktuidle. Untuk sistem yang bersifat prosesor tunggal (uniprosesor), hanya ada satu proses yang dapat berjalan setiap waktunya. Jika proses yang ada lebih dari satu, maka proses yang lain harus menunggu sampai CPU bebas dan siap untuk dijadualkan kembali.

3.2.1.Queue Scheduling

Ketika sebuah proses memasuki sistem, proses itu diletakkan di dalamjob queue. Pada antrian ini terdapat seluruh proses yang berada dalam sistem. Sedangkan proses yang berada pada memori utama, siap dan

menunggu untuk mengeksekusi disimpan dalam sebuah daftar yang bernamaready queue. Antrian ini biasanya disimpan sebagailinked list.Headerdariready queueberisipointeruntuk PCB pertama dan PCB terakhir pada list. Setiap PCB memilikipointer fieldyang menunjuk kepada PCB untuk proses selanjutnya dalamready queue. Sistem operasi juga memiliki antrian lain. Ketika sebuah proses dialokasikan ke CPU, proses tersebut berjalan sebentar lalu berhenti, di-interupsi, atau menunggu suatu hal tertentu, seperti selesainya suatu permintaan I/O. Dalam permintaan I/O, dapat saja yang diminta itu adalahtape drive, atau peralatan yang di-sharesecara bersama-sama, seperti disk. Karena ada banyak proses dalam sistem, disk dapat saja sibuk dengan permintaan I/O dari proses lainnya. Untuk itu proses tersebut mungkin harus menunggu disk tersebut. Daftar dari

proses-proses yang menunggu peralatan I/O tertentu disebut dengandevice queue. Tiap peralatan memiliki

Gambar 3-4.Device Queue

Sumber: http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi/img/4-4.png; per Desember 2003.

Penjadualan proses dapat direpresentasikan secara umum dalam bentuk diagram antrian, seperti yang ditunjukkan oleh Gambar 3-5. Setiap kotak segi empat menunjukkan sebuah antrian. Dua tipe antrian menunjukan antrian yang siap dan seperangkatdevice queues. Lingkaran menunjukkan sumber daya yang melayani antrian, dan tanda panah mengindikasikan alur dari proses-proses yang ada dalam sistem.

Gambar 3-5. Diagram Antrian

Sumber: http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi/img/4-5.png; per Desember 2003.

Sebuah proses baru pertama-tama diletakkan dalamready queue. Proses tersebut menunggu di dalamready

antrian sampai dia dipilih untuk eksekusi, atau dengan kata lain di-dispatched. Begitu proses tersebut dialokasikan ke CPU dan sedang berjalan, beberapa kemungkinan di bawah ini dapat terjadi:

• Proses tersebut mengeluarkan permintaan I/O, lalu ditempatkan dalam sebuah antrian I/O.

• Proses tersebut dapat membuat sub proses yang baru dan menunggu untuk di-terminasi.

• Proses tersebut dapat dikeluarkan secara paksa dari CPU, sebagai hasil dari suatu interupsi, dan diletakkan

kembali dalamready queue.

Pada dua kemungkinan pertama (proses meminta I/O atau membuat sub proses baru), proses berganti keadaan dariwaiting statemenjadiready state, lalu diletakkan kembali dalamready queue. Proses akan meneruskan siklus ini sampai dia di-terminasi, yaitu saat dimana proses tersebut dikeluarkan dari seluruh antrian yang ada dan memiliki PCB-nya sendiri dan seluruh sumber daya yang dia gunakan dialokasikan kembali.

3.2.2.Scheduler

memilih dan memproses antrian-antrian ini berdasarkan kategorinya dengan cara tertentu. Oleh karena itu, proses seleksi ini harus dilakukan oleh scheduler yang tepat.

Dalam sistembatch, seringkali proses yang diserahkan lebih banyak daripada yang dapat dilaksanakan dengan segera. Proses-proses ini disimpan pada suatumass-storage device(disk), dimana proses tersebut disimpan untuk eksekusi di lain waktu.Long-term scheduler, ataujob scheduler, memilih proses dari tempat ini dan mengisinya ke dalam memori. Sedangkanshort-term scheduler, atauCPU scheduler, hanya memilih proses yang sudah siap untuk melakukan eksekusi, dan mengalokasikan CPU untuk proses tersebut.

Hal yang cukup jelas untuk membedakan kedua jenisschedulerini adalah frekuensi dari eksekusinya.

Short-term schedulerharus memilih proses baru untuk CPU sesering mungkin. Sebuah proses dapat mengeksekusi hanya dalam beberapa milidetik sebelum menunggu permintaan I/O. Seringkali,short-term schedulermengeksekusi paling sedikit sekali setiap 100 milidetik. Karena durasi waktu yang pendek antara eksekusi-eksekusi tersebut,short-term schedulerseharusnya cepat. Jika memerlukan waktu 10 mili detik untuk menentukan suatu proses eksekusi selama 100 mili detik, maka 10/(100 + 10) = 9 persen dari CPU sedang digunakan (atau terbuang) hanya untuk pekerjaan penjadualan.

Long-term scheduler, pada sisi lain, mengeksekusi jauh lebih jarang. Mungkin ada beberapa menit waktu yang dibutuhkan untuk pembuatan proses baru dalam sistem.Long-term schedulermengontroldegree of

multiprogramming(jumlah proses dalam memori). Jikadegree of multiprogrammingstabil, maka tingkat rata-rata penciptaan proses harus sama dengan tingkat rata rata proses meninggalkan sistem. Maka dari itu

long-term schedulermungkin dipanggil hanya ketika suatu proses meninggalkan sistem. Karena interval yang lebih panjang antara eksekusi,long-term schedulerdapat menggunakan waktu yang lebih lama untuk

menentukan proses mana yang harus dipilih untuk dieksekusi.

Sangat penting bagilong-term schedulermembuat seleksi yang hati-hati. Secara umum, proses dapat dibedakan atas dua macam, yaitu proses I/O bound dan prosesCPU bound. ProsesI/O boundadalah proses yang lebih banyak menghabiskan waktunya untuk mengerjakan I/O dari pada melakukan komputasi. ProsesCPU-bound, di sisi lain, jarang melakukan permintaan I/O, dan menggunakan lebih banyak waktunya untuk melakukan

komputasi. Oleh karena itu,long-term schedulerharus memilih gabungan proses yang baik antara prosesI/O bounddanCPU bound. Jika seluruh proses adalahI/O bound,ready queueakan hampir selalu kosong, dan

short-term schedulerakan memiliki sedikit tugas. Jika seluruh proses adalahCPU bound,I/O waiting queue

akan hampir selalu kosong, peralatan akan tidak terpakai, dan sistem akan menjadi tidak seimbang. Sistem dengan kinerja yang terbaik akan memiliki kombinasi yang baik antara prosesCPU bounddanI/O bound. Pada sebagian sistem,long-term schedulerdapat jadi tidak ada atau kerjanya sangat minim. Sebagai contoh, sistemtime-sharingseperti UNIX sering kali tidak memilikilong-term scheduler. Stabilitas sistem-sistem seperti ini bergantung pada keterbatasan fisik (seperti jumlah terminal yang ada) atau pada penyesuaian sendiri secara alamiah oleh manusia sebagai pengguna. Jika kinerja menurun pada tingkat yang tidak dapat diterima, sebagian pengguna akan berhenti.

Sebagian sistem operasi, seperti sistemtime-sharing, dapat memperkenalkan sebuahschedulertambahan, yaitu

medium-term scheduler.Schedulerini digambarkan pada Gambar 3-6. Ide utama atau kunci darischedulerini terkadang akan menguntungkan untuk memindahkan proses dari memori (dan dari pengisian aktif dari CPU), dan akibatnyadegree of multiprogrammingakan berkurang. Di kemudian waktu, proses dapat dibawa kembali dalam memori dan eksekusinya dapat dilanjutkan pada keadaan dimana proses itu dipindahkan tadi. Skema ini disebutswapping. Proses di-swapped outdan di-swapped inolehschedulerini.Swappingmungkin diperlukan untuk meningkatkan mutu penggabungan proses, atau karena perubahan dalam kebutuhan memori yang mengakibatkan memori harus dibebaskan.Swappingdibahas dalam Bagian 5.2.1.

Gambar 3-6.Medium-term Scheduler

Sumber: http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi/img/4-6.png; per Desember 2003.

3.2.3.Context Switch

Mengganti CPU ke proses lain memerlukan penyimpanan keadaan dari proses lama dan mengambil keadaan dari proses yang baru. Hal ini dikenal dengan sebutancontext switch.Context switchsebuah proses direpresentasikan dalam PCB dari suatu proses; termasuk nilai dari CPU register, status proses (dapat dilihat pada Gambar 3-7) dan informasi managemen memori. Ketikacontext switchterjadi,kernelmenyimpan data dari proses lama ke dalam PCB nya dan mengambil data dari proses baru yang telah terjadual untuk berjalan. Waktucontext switch

adalah murnioverhead, karena sistem melakukan pekerjaan yang tidak begitu berarti selama melakukan pengalihan. Kecepatannya bervariasi dari mesin ke mesin, bergantung pada kecepatan memori, jumlah register yang harus di-copy, dan ada tidaknya instruksi khusus (seperti instruksi tunggal untuk mengisi atau menyimpan seluruh register). Tingkat kecepatan umumnya berkisar antara 1 sampai 1000 mikro detik.

Gambar 3-7.Context Switch

Sumber: http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi/img/4-3.png; per Desember 2003.

Waktucontext switchsangat begantung pada dukungan perangkat keras. Sebagai contoh, prosesor seperti UltraSPARC menyediakan beberapa set register. Sebuah prosescontext switchhanya memasukkan perubahan

pointerke set register yang ada saat itu. Tentu saja, jika proses aktif yang ada lebih banyak daripada proses yang ada pada set register, sistem menggunakan bantuan untuk meng-copy data register dari dan ke memori,

sebagaimana sebelumnya. Semakin kompleks suatu sistem operasi, semakin banyak pekerjaan yang harus dilakukan selamacontext switch. Dapat dilihat pada Bab 5, teknik managemen memori tingkat lanjut dapat mensyaratkan data tambahan untuk diganti dengan tiap data. Sebagai contoh, ruang alamat dari proses yang ada saat itu harus dijaga sebagai ruang alamat untuk proses yang akan dikerjakan berikutnya. Bagaimana ruang alamat dijaga, berapa banyak pekerjaan dibutuhkan untuk menjaganya, tergantung pada metode managemen memori dari sistem operasi. Akan kita lihat pada Bab 5,context switchterkadang dapat menyebabkanbottleneck, dan programmer menggunakan struktur baru (threads) untuk menghindarinya kapan pun memungkinkan.

3.3. Interaksi Proses

Proses yang dijalankan pada suatu sistem operasi dapat bekerja secara bersama-sama ataupun sendiri saja. Bagian sebelum ini telah menjelaskan mengenai konsep proses dan bagaimana penjadualan proses itu. Disini kita akan melihat bagaimana hubungan antara proses-proses itu.

Dalam dokumen Plus Studi Kasus Kernel Linux (Halaman 65-72)

Dokumen terkait