Monday, April 9, 2012

Proses dan Thread Dalam OS

Apa si Proses dan Thread itu??? 
 
Proses dan Thread merupakan dua bagian yang saling berhubungan dan berkaitan. Suatu program yang sedang dieksekusi merupakan pengertian dari sutau proses. Proses membutuhkan sumber daya. Sistem operasi mengeksekusi proses dengan dua cara yaitu batch system yang mengeksekusi jobs dan time-shared system yang mengatur pengeksekusian program pengguna ( user) atau tasks. Proses berisikan stack yang menyimpan alamat register dan juga alamat dari sebuah instruksi yang berisikan data – data yang dibutuhkan untuk instruksi selanjutnya. Program Counter, register set serta stack merupakan bagian dari thread. Thread berbagi code section, data section dan juga sumber daya sistem operasi dengan thread lain yang dalam proses yang sama. Kelebihan thread antara lain responsif, berbagi sumberdaya, ekonomis serta utilitas arsitektur mikroprosessor.




Thread merupakan unit dasar dari penggunaan CPU (Central Processing Unit), 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 dalam proses yang sama. Multithread adalah sutau proses thread yang dapat mengerjakan lebih dari satu tugas pada satu satuan waktu.


Dua model multithread, One to One dan Many to Many. One to One model memetakan setiap user thread ke kernel thread, menyediakan lebih banyak concurrency. 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 system. Many to Many model developer dapat membuat user thread sebanyak yang diperlukan, dan kernel thread yang bersangkutan dapat bejalan secara pararel pada multiprocessor.

Pemrograman dari multithreading yang dapat meningkatkan sebuah solusi thread tunggal antara lain Dalam web browser yang multithreading, sebuah thread dapat melayani permintaan pengguna sementara thread lain berusaha menampilkan gambar. Dalam pembuatan sebuah proses banyak dibutuhkan pengalokasian memori dan sumber daya. Alternatifnya adalah dengan penggunaan thread, karena thread berbagi memori dan sumber daya proses yang memilikinya maka akan lebih ekonomis untuk membuat dan context switch thread. Akan susah untuk mengukur perbedaan waktu antara proses dan thread dalam hal pembuatan dan pengaturan, tetapi secara umum pembuatan dan pengaturan proses lebih lama dibandingkan thread. Pada Solaris, pembuatan proses lebih lama 30 kali dibandingkan pembuatan thread, dan context switch proses 5 kali lebih lama dibandingkan context switch thread.

Dua level thread, User Thread dan Kernel Thread. User thread didukung di atas penjadwalan jangka pendek (short term scheduler), mempunyai tugas untuk menjadwalkan alokasi pemroses di antara proses ready di memori utama. Penjadwalan dijalankan setiap terjadi di pengalihan proses untuk memilih proses berikut yang harus dijalankan. Penjadwalan jangka panjang (long term scheduler), Penjadwalan ini bekerja terhadap antrian batch dan memilih batch berikutnya yang harus dieksekusi.. batch biasanya adalah proses-proses dengan penggunaan sumber daya yang intensif, program ini berprioritas rendah, digunakan sebagai pengisi selama periode aktivitas job-job interaktif rendah.

Penjadwal CPU adalah basis dari multi programming sistem operasi. Dengan men-switch CPU diantara proses. Akibatnya sistem operasi bisa membuat komputer produktif. Penjadwal adalah fungsi dasar dari suatu sistem operasi. Hampir semua sumber komputer dijadual sebelum digunakan. CPU salah satu sumber dari komputer yang penting yang menjadi sentral dari sentral penjadual di sistem operasi. Jenis-jenis algoritma penjadwalan: Algoritma Nonpreemptive adalah Proses diberi jatah waktu oleh pemroses, maka pemroses tidak dapat diambil alih oleh proses lain sampai proses itu selesai. Dan Algoritma Preemptive, yaitu Proses diberi jatah waktu oleh pemroses, maka pemroses dapat diambil alih oleh proses lain, sehingga proses disela sebelum selesai dan harus dilanjutkan menunggu jatah waktu pemroses tiba kembali pada proses itu.
 
A.    FCFS(First Come First Served). 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.

B.  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 rata-ratanya juga menjadi pendek, sehingga dapat dikatakan bahwa algoritma ini adalah algoritma yang optimal.

C.  Shortest-Job First (SJF) Preemptive . 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. 

D.    Shortest-Job First (SJF) Non-preemptive . 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.


Status Proses
Sistem operasi mengeksekusi berbagai jenis program. Pada sistem batch program tersebut biasanya disebut dengan job, sedangkan pada sistem time sharing, program disebut dengan program user atau task.

Beberapa buku teks menggunakan istilah job atau proses.  Proses adalah program yang sedang dieksekusi. Eksekusi proses dilakukan secara berurutan. Dalam suatu proses terdapat program counter, stack dan daerah data. Meskipun tiap-tiap proses terdiri dari suatu kesatuan yang terpisah namun adakalanya proses-proses tersebut butuh untuk saling berinteraksi. Satu proses bisa dibangkitkan dari output proses lainnya sebagai input. Pada saat proses dieksekusi, akan terjadi perubahan status. Status proses didefiniskan sebagai bagian dari aktivitas proses yang sedang berlangsung saat itu.
Gambar 1. menunjukkan diagram status proses. Status proses terdiri dari :                     
       a)      New: proses sedang dibuat.
       b)      Running: proses sedang dieksekusi.
       c)      Waiting: proses sedang menunggu beberapa event yang akan terjadi (seperti menunggu untuk 
              menyelesaikan I/O atau menerima sinyal).
       d)     Ready: proses menunggu jatah waktu dari CPU untuk diproses.
       e)      Terminated: proses telah selesai dieksekusi
Gambar 1. Perubahan Status Proses
       

  

No comments:

Post a Comment