Anda di halaman 1dari 10

KONSEP PROSES DAN THREAD Diky Aryandi Jurusan Sistem Komputer Fakultas Ilmu Komputer Universitas Sriwijaya e-mail:

d_keyraptor@yahoo.com Abstrak Sebuah proses adalah program dalam eksekusi. Sebagai suatu proses mengeksekusi, program berubah kedudukan. Kedudukan dari sebuah proses didefinisikan oleh aktivitas saat ini proses itu. Setiap proses mungkin berada di salah satu kedudukan berikut: baru, siap, berjalan, menunggu, atau dihentikan. Setiap proses direpresentasikan dalam sistem operasi dengan proses pengendalian blok (PCB){[2]. Thread diartikan sebagai sekumpulan perintah yang dapat dieksekusi secara bersamaan dengan thread lainnya, dengan cara time slice (ketika satu CPU melakukan perpindahan antara satu thread ke thread lainnya) atau multiprocess (ketika threadthread tersebut di eksekusi oleh CPU yang berbeda dalam satu sistem)[1]. Kata kunci: proses, thread, multithread, user level, kernel, register, penjadwalan. Pendahuluan Sebuah proses adalah program dalam eksekusi. Sebagai suatu proses mengeksekusi, program berubah kedudukan. Kedudukan dari sebuah proses didefinisikan oleh aktivitas saat ini proses itu. Setiap proses mungkin berada di salah satu kedudukan berikut: baru, siap, berjalan, menunggu, atau dihentikan. Setiap proses direpresentasikan dalam sistem operasi dengan proses pengendalian blok (PCB){[1]. Thread terdiri atas dua, yaitu single thread dan multithread. Single thread hanya dapat menjalankan suatu program saja, tetapi multithread dapat menjalankan beberapa program dalam waktu yang bersamaan. Didalam sistem operasi pun menggunakan register, yaitu sebagian memori dari mikroprosesor yang dapat diakses dengan kecepatan yang sangat tinggi. Dalam melakukan pekerjaannya, mikroprosesor selalu menggunakan register-register sebagai perantaranya, jadi register dapat diibaratkan sebagai kaki dan tangannya mikroprosesor[2]. Pembahasan 1. Terangkan dengan singkat, pasangan konsep berikut ini. Terangkan pula perbedaan atau/dan persamaan pasangan konsep tersebut: a. Multithread Model: One to One vs. Many to Many. b. Scheduling Process: Short Term vs. Long Term. c. Scheduling Algorithm: FCFS (First Come First Serve) vs. SJF (Shortest Job First). d. Preemptive Shortest Job First vs. Non-preemptive Shortest Job First.

Jawab: a. Multithread Model: One to One One-to-One model memetakan setiap user thread ke kernel thread. Ia menyediakan lebih banyak concurrency dibandingkan Many-to-One model. Keuntungannya sama dengan keuntungan kernel thread. Kelemahannya model ini adalah setiap pembuatan user thread membutuhkan pembuatan kernel thread. Karena pembuatan thread dapat menurunkan performa dari sebuah aplikasi maka implementasi dari model ini membatasi jumlah thread yang dibatasi oleh sistem. Contoh sistem operasi yang mendukung One-to-One model adalah Windows NT dan OS/2[1].

Multithread Model: Many to Many Many-to-many model multiplexes banyak user-level thread ke kernel thread yang jumlahnya lebih kecil atau sama banyaknya dengan user-level thread. Jumlah kernel thread dapat spesifik untuk sebagian aplikasi atau sebagian mesin. Many-to-One model mengizinkan developer untuk membuat user thread sebanyak yang ia mau tetapi concurrency tidak dapat diperoleh karena hanya satu thread yang dapat dijadual oleh kernel pada suatu waktu. One-to-One menghasilkan concurrency yang lebih tetapi developer harus hati-hati untuk tidak menciptakan terlalu banyak thread dalam suatu aplikasi (dalam beberapa hal, developer hanya dapat membuat thread dalam jumlah yang terbatas). Many-to-Many model tidak menderita kelemahan dari 2 model di atas. Developer dapat membuat user thread sebanyak yang diperlukan, dan kernel thread yang bersangkutan dapat bejalan secara pararel pada multiprocessor. Dan juga ketika suatu thread menjalankan blocking system call maka kernel dapat menjadualkan thread lain untuk melakukan eksekusi. Contoh sistem operasi yang mendukung model ini adalah Solaris, IRIX, dan Digital UNIX[1].

b. Scheduling Process: Short Term Short-term Scheduler (CPU scheduler), memilih proses-proses yang siap untuk dieksekusi, dan mengakolakasikan CPU ke salah satu dari proses-proses tersebut[1]. Scheduling Process: Long Term Longterm-Scheduler (job scheduler), menentukan proses-proses akan dibawa ke dalam memori untuk di proses[1]. c. Scheduling Algorithm: FCFS (First Come First Serve) Algoritma ini merupakan algoritma penjadwalan yang paling sederhana yang digunakan CPU. Dengan menggunakan algoritma ini setiap proses yang berada pada status ready dimasukkan kedalam FIFO queue atau antrian dengan prinsip first in first out, sesuai dengan waktu kedatangannya. Proses yang tiba terlebih dahulu yang akan dieksekusi[3]. Scheduling Algorithm: SJF (Shortest Job First) Pada algoritma ini setiap proses yang ada di ready queue akan dieksekusi berdasarkan burst time terkecil. Hal ini mengakibatkan waiting time yang pendek untuk setiap proses dan karena hal tersebut maka waiting time rataratanya juga menjadi pendek, sehingga dapat dikatakan bahwa algoritma ini adalah algoritma yang optimal[3]. d. Preemptive Shortest Job First Jika ada proses yang sedang dieksekusi oleh CPU dan terdapat proses di ready queue dengan burst time yang lebih kecil daripada proses yang sedang

dieksekusi tersebut, maka proses yang sedang dieksekusi oleh CPU akan digantikan oleh proses yang berada di ready queue tersebut. Preemptive SJF sering disebut juga Shortest-Remaining- Time-First scheduling[3]. Non-preemptive Shortest Job First CPU tidak memperbolehkan proses yang ada di ready queue untuk menggeser proses yang sedang dieksekusi oleh CPU meskipun proses yang baru tersebut mempunyai burst time yang lebih kecil[3]. 2. Tunjukkan dua contoh pemrograman dari multithreading yang dapat meningkatkan sebuah solusi thread tunggal. Jawab: a. PC atau laptop yang digunakan sehari-hari, kita dapat menjalankan beberapa program secara bersaamaan, seperti memutar music player sambil mengetik dengan menggunakan program office word[1]. b. Web browser yang dapat menerima data dan mengelolah gambar dan text secara bersamaan[1]. 3. Tunjukkan dua contoh pemrograman dari multithreading yang tidak dapat meningkatkan sebuah solusi thread tunggal. Jawab: Program 1 class CobaThread2 implements Runnable { public void run() { for(int ii = 0; ii<4; ii++) { System.out.println("Ini CobaThread2"); Test.istirohat(7); } } } public class Test { public static void main (String[] args) { Thread t1 = new CobaThread1(); Thread t2 = new Thread (new CobaThread2()); t1.start(); t2.start();

} public static void istirohat(int tunda) { try { Thread.sleep(tunda*100); } catch(InterruptedException e) {} }

for (int ii = 0; ii<8; ii++) { System.out.println("Thread UTAMA"); istirohat(5); }

Program 2 class CobaThread3 implements Runnable { public void run() { while (true) { System.out.println("saya thread CobaThread3"); if (Thread.currentThread.isInterrupted()) //cek status break; } } } 4. Sebutkan dua perbedaan antara user level thread dan kernel thread. Saat kondisi bagaimana salah satu dari thread tersebut lebih baik? Jawab: User thread didukung di atas kernel dan diimplementasi oleh thread library pada user level. Library menyediakan fasilitas untuk pembuatan thread, penjadualan thread, dan managemen thread tanpa dukungan dari kernel. Karena kernel tidak menyadari user-level thread maka semua pembuatan dan penjadualan thread dilakukan di user space tanpa intervensi dari kernel. Oleh karena itu, user-level thread biasanya cepat untuk dibuat dan diatur.

Kernel thread didukung langsung oleh sistem operasi. Pembuatan, penjadualan, dan managemen thread dilakukan oleh kernel pada kernel space. Karena pengaturan thread dilakukan oleh sistem operasi maka pembuatan dan pengaturan kernel thread lebih lambat dibandingkan user thread. Jadi, Kernel threat harus multithread untuk memaksimalkan user threat[2]. 5. Jelaskan tindakan yang diambil oleh sebuah kernel saat context switch antara kernel level thread. Jawab: Secara umum, system operasi harus menyimpan sebuah kedudukan dari sebuah proses yang sedang berlangsung dan mengembalikan kedudukan dari penjadwalan proses untuk melanjutkan ke proses selanjutnya. Menyimpan kedudukan sebuah proses biasanya termasuk nilai-nilai dari seluruh register CPU yang ditambahkan ke dalam alokasi memory. Context-switch juga banyak melakukan operasi arsitek tertentu, termasuk pembilasan data dan perintah cache[2]. 6. Sumber daya apa sajakah yang digunakan ketika sebuah thread dibuat? Apa yang membedakannya dengan pembentukan sebuah proses. Jawab: thread berbagi memori dan sumber daya dengan thread lain yang dimiliki oleh proses yang sama. Keuntungan dari berbagi kode adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama. Sumber daya tersebut antara lain Multiprocessing merupakan penggunaan dua atau lebih CPU dalam sebuah sistem komputer. Multitasking merupakan metode untuk menjalankan lebih dari satu proses dimana terjadi pembagian sumberdaya seperti CPU. Multithreading adalah cara pengeksekusian yang mengizinkan beberapa thread terjadi dalam sebuah proses, saling berbagi sumber daya tetapi dapat dijalankan secara independen[2]. 7. Tunjukkan tindakan yang diambil oleh sebuah thread library saat context switch antara user level thread. Jawab: Thread library menyediakan fasilitas untuk pembuatan thread, penjadualan thread, dan managemen thread tanpa dukungan dari kernel. Jadi, pembuatan dan penjadwalan thread dilakukan di user space tanpa intervensi dari kernel[1].

8. Definisikan perbedaan antara penjadwalan secara preemptive dan nonpreemptive! Jawab: Pada penjadwalan secara preemptive (dihalangi), suatu task dapat disela oleh task lain yang lebih penting dan kemudian waktu dapat menggunakan prosesor lagi (resumed). Pada umumnya jika dimungkinkan suatu task yang kritis harus diizinkan untuk menyela task lain yang kurang kritis agar dapat melewati batas waktu (deadline). Suatu task disebut dihalangi (preemptive) jika task tersebut dapat disela oleh permintaan prosesor dari task yang berprioritas lebih tinggi. Pada jadwal dihalangi (preemptive) akan dijamin pemrosesan task task secara periodik dan diperoleh jadwal yang layak, serta priority inversion dapat diminimalkan. Priority inversion adalah situasi dimana eksekusi task yang berprioritas tinggi ditunda oleh task berprioritas rendah. Pada penjadwalan secara nonpreemptive (tanpa-dihalangi), sekali suatu task diemulai, task tersebut harus dieksekusi (run) sampai selesai atau sampai task diblokir karena menunggu/memerlukan sumber daya (resource). Suatu task disebut tanpa-dihalangi (non preemptive) jika task tersebut memperoleh jatah prosesor, diproses dan tidak dapat disela sampai task berakhir atau memerlukan sumberdaya. Pada jadwal tanpa-dihalangi (non-preemptive), dalam kebanyakan kasus, waktu kedatangan, waktu pemrosesan dan batas waktu (deadline) adalah sembarang serta tidak diketahui oleh penjadwal sampai task tiba, tujuan algoritma tanpa-dihalangi(non preemptive) adalah memaksimalkan adanya jaminan kepastian pemrosesan, bisa saja tidak ditemukan jadwal yang layak (feasible)[4]. 9. Jelaskan mengapa penjadwalan strict nonpreemptive tidak seperti yang digunakan di sebuah komputer pusat. Jawab: Karena pada saat Proses digunakan diberi jatah waktu oleh pemroses, maka pemroses tidak dapat diambil alih oleh proses lain sampai proses itu selesai, sedangkan komputer pusat dalam pengeksekusian proses dimulai dengan CPU Burst, setelah itu diikuti oleh I/O burst, lalu CPU Burst lagi lalu I/O Burst lagi begitu seterusnya dan dilakukan secara bergiliran sampai CPU Burst terakhir, proses akan berakhir dengan permintaan sistem untuk mengakhiri pengeksekusian dari pada melalui I/O Burst lagi[3]. 10. Jelaskan tentang register dan macam-macam register, serta beri contoh. Jawab: Register merupakan sebagian memori dari mikroprosesor yang dapat diakses dengan kecepatan yang sangat tinggi. Dalam melakukan pekerjaannya, mikroprosesor selalu menggunakan register-register sebagai perantaranya, jadi

register dapat diibaratkan sebagai kaki dan tangannya mikroprosesor. Ada 5 jenis register, yaitu: a. Segment Register - Code Segment Code segment digunakan untuk menunjukkan tempat dari segmen yang sedang aktif, sedangkan register Stack Segment menunjukkan letak dari segmen yang digunakan oleh stack. Data Segment Data segment biasanya digunakan untuk menunjukkan tempat segmen dimana data-data pada program disimpan. Extra Segment Extra segment tidak mempunyai suatu tugas khusus. Register ini biasanya digunakan untuk menunjukkan suatu alamat di memory.

b. Pointer dan Index Register - Register SP (Stack Pointer) yang berpasangan dengan register SS (SS:SP) digunakan untuk mununjukkan alamat dari stack. - Register BP (Base Pointer) yang berpasangan dengan register SS (SS:BP) mencatat suatu alamat di memory tempat data. - Register SI (Source Index) dan register DI (Destination Index) biasanya digunakan pada operasi string dengan mengakses secara langsung pada alamat di memory yang ditunjukkan oleh kedua register ini. c. General Purpose Register - Register AX, secara khusus digunakan pada operasi aritmatika terutama dalam operasi pembagian dan pengurangan. - Register BX, biasanya digunakan untuk menunjukkan suatu alamat offset dari suatu segmen. - Register CX, digunakan secara khusus pada operasi looping dimana register ini menentukan berapa banyaknya looping yang akan terjadi. - Register DX, digunakan untuk menampung sisa hasil pembagian 16 bit.

d. Index Pointer Register Register IP berpasangan dengan CS (CS:IP) menunjukkan alamat di memory tempat dari intruksi (perintah) selanjutnya yang akan dieksekusi. e. Flags Register Sesuai dengan namanya Flags (Bendera) register ini menunjukkan kondisi dari suatu keadaan (ya atau tidak ). Karena setiap keadaan dapat digunakan 1 bit saja, maka sesuai dengan jumlah bitnya, Flags register ini mampu memcatat sampai 16 keadaan. Macam-macam flag register, yaitu:

OF (OverFlow Flag), bit ini akan bernilai 1 jika terjadi OverFlow pada operasi aritmatika. SF (Sign Flag), bit ini akan bernilai 1 jika digunakan bilangan bertanda. ZF (Zero Flag), bit ini akan bernilai 1 jika hasil operasi menghasilkan nol. CF (Carry Flag), bit akan bernilai 1 jika terjadi borrow pada operasi pengurangan atau carry pada penjumlahan. PF (Parity Flag), digunakan untuk menunjukkan paritas bilangan. Bit ini akan bernilai 1 bila bilangan yang dihasilkan merupakan bilangan genap. DF (Direction Flag), digunakan pada operasi string untuk menunjukkan arah proses. IF (Interrupt Enable Flag), CPU akan mengabaikan interupsi yang terjadi jika bit ini 0. TF (Trap Flag) digunakan terutama untuk Debugging, dengan operasi step by step. AF (Auxiliary Flag) digunakan oleh operasi BCD, seperti pada perintah AAA. NT (Nested Task) digunakan pada prosesor 80286 dan 80386 untuk menjaga jalannya interupsi yang terjadi secara beruntun. IOPL (I/O Protection Level), flag ini terdiri atas 2 bit dan digunakan pada prosesor 80286 dan 80386 untuk mode proteksi. Pada prosesor 80286 dan 80386 keatas terdapat beberapa tambahan pada flags register, yaitu: PE (Protection Enable), digunakan untuk mengaktifkan mode proteksi. Flag ini akan bernilai 1 pada mode proteksi dan 0 pada mode real. MP MMonitor Coprosesor), digunakan bersama flag TS untuk menangani terjadinya intruksi WAIT. EM (Emulate Coprosesor), flag ini digunakan untuk mensimulasikan coprosesor 80287 atau 80387. TS (Task Switched), flag ini tersedia pada 80286 keatas. ET (Extension Type), flag ini digunakan untuk menentukan jenis coprosesor 80287 atau 80387. RF (Resume Flag), register ini hanya terdapat pada prosesor 80386 keatas. VF (Virtual 8086 Mode), bila flag ini bernilai 1 pada saat mode proteksi, mikroprosesor akan memungkinkan dijalankannya aplikasi mode real pada mode proteksi. Register ini hanya terdapat pada 80386 keatas[4].

Contoh register:

Kesimpulan Sebuah proses adalah program dalam eksekusi thread tunggal. Kontrol thread tunggal ini hanya memungkinkan proses untuk menjalankan satu tugas pada satu waktu. Jadi, thread di kembangkan untuk melakukan beberapa perintah dalam waktu yang bersamaan yang disebut dengan multithread. Thread merupakan unit dasar dari penggunaan CPU, yang terdiri dari thread_ID, program counter, register set, dan stack. Sebuah thread berbagi code section, data section, dan sumber daya sistem operasi dengan Thread lain yang dimiliki oleh proses yang sama. Thread juga sering disebut lightweight process. Sebuah proses tradisional atau heavyweight process mempunyai thread tunggal yang berfungsi sebagai pengendali. Didalam sistem operasi pun menggunakan register, yaitu sebagian memori dari mikroprosesor yang dapat diakses dengan kecepatan yang sangat tinggi. Dalam melakukan pekerjaannya, mikroprosesor selalu menggunakan register-register sebagai perantaranya, jadi register dapat diibaratkan sebagai kaki dan tangannya mikroprosesor. Daftar Pustaka [1] Stallings ,William (2001), Operating Systems -- Fourth Edition, Prentice Hall [2] Silberschantz ,Abraham and Galvin ,Peter Baer and Gagne,Greg. 2005. Operating System Concepts. Seventh Edition. John Wiley & Son [3] Sridadi, Bambang. 2010. Sistem Waktu Nyata (Real-time System). Informatika. Bandung [4] Naghibzadeh, Muhammad. 2005. Operating System Concepts and echniques. Amerika

Anda mungkin juga menyukai