Pages

Minggu, 10 Mei 2015

Day 2

Process dan Thread

       Thread adalah sesuatu yang seperti benang, berada dalam sebuah proses dan memiliki kesamaan dengan proses.

             Property - property dasar thread adalah :
  • Punya thread id yang unik
  • Punya kumpulan / set dari register, stack pointer
  • Punya signal mask.
  • Bisa diberi priority
  • Punya return value.

             Thread dalam satu proses yang sama dapat berbagi :
  • Alamat memory yang sama
  • Instruksi proses yang sama
  • Data - data pada umumnya
  • Descriptors
  • Signal dan signal handlers
  • User dan group ID



         Dapar dilihat dari gambar diatas, dalam sebuah process bisa memiliki thread - thread tersendiri dan dari gambar diatas juga, muncul berbagai hubungan antara process dan thread yaitu :
  • Satu process memiliki satu thread (1 to 1)
  • Satu process namun memiliki banyak thread (Many to 1)
  • Satu thread dimiliki dalam 2 process berbeda (1 to Many)
  • dan Ada lebih dari satu process dan lebih dari satu thread (Many to N)
       Satu process yang memiliki banyak threading dapat disebut sebagai multithreading. Multithreading lebih efektif dan efisien dari pada konsep lama yaitu single threading. Multithreading merupakan process concurency dan dapat terjadi collision , deadlock , dan exhausted dalam prosesnya. Status eksekusi dari sebuah thread dapat dimulai dengan ready, running , dan termination. Thread itu merupakan lightprocess karena punya kesamaan dengan sebuah process.



Therad juga memiliki beberapa thread model yaitu :

     






- Per process item


-


-


Keuntungan dari penggunaan thread adalah :
  • Lebih butuh waktu yang relatif sedikit untuk membuat sebuah thread baru daripada membuat sebuah process baru.
  • Waktu yang dibutuhkan untuk terminate sebuah thread lebih kecil daripada waktu untuk terminate sebuah process.
  • Waktu yang digunakan untuk switch antar thread dalam satu process lebih kecil
  • Thread dapat berkomunikasi antar thread tanpa melibatkan kernel.

Penerapan Thread:

- User Space



Keuntungan : Tiap process punya algoritma scheduling sendiri - sendiri, dan performanya bagus.
Kerugian : Penerapan blocking system call, tidak ada thread lain yang bisa berjalan sampai ada
              thread lain yang menyerahkan resources (no interrput).

- Kernel Space







Keuntungan : Tidak perlu system baru non-blocking system call
Kerugian : Cost yang dibutuhkan untuk create dan destroy thread lebih mahal.

-



Merupakan implementasi thread dengan thread yang berada di kernel space dan user space.

       Ada juga sebuah thread yang dinamakan Pop Up Thread. Pop Up Thread adalah sebuah thread yang akan dibuat saat ada pesan muncul. contoh :



      Karena ada multithreading, perlu adanya scheduler dan dispatcher. Scheduler dan dispatcher adalah cara untuk melakukan thread scheduling. Ada juga metode atau Batch scheduling algorithm untuk melakukan thread scheduling. Dalam jalannya sebuah proses, ada dikenal dengan Process-bound dan I/O-bound. Process bound adalah behaviour sebuah proses karena cara kerja proses itu sendiri sementara I/O bound adalah behaviour karena proses input / output dalam proses itu sendiri (berkaitan dengan tukar menukar resources).


        Kriterian dalam sebuah scheduling adalah membuat cpu sesibuk mungkin (CPU utilization), banyaknya proses yang dapat dihasilkan per unit waktu (Throughput), waktu yang diperlukan untuk menyelesaikan sebuah process (Turnaround time), waktu yang diperlukan untuk wait dalam queue (Waiting time), dan waktu yang diperlukan saat request diterima sampai respons pertama kali (Response time).
        Melakukan scheduling berarti kita ingin agar proses yang sedang berjalan dapat berjalan dengan seoptimal mungkin. Berikut adalah kriteria untuk optimisasi dalam sebuah OS
  • Maximum CPU utilization
  • Maximum throughput
  • Minimum turn around time
  • Minimum waiting time
  • Minimum response time
 dan tujuan scheduling itu sebenarnya adalah :
  • All System
         Fairness, Policy enforcement, dan Balance
  • Batch System
         Throughput, Turnaround time, dan CPU utilization
  • Interactive system
         Response time, dan Proportionality
  • Real - Time system
         Meeting deadline , dan Predictable.
Dispatcher adalah : sebuah modul yang memberi control dari cpu ke proses yang dipilih oleh
                          Short-term scheduler.

Beberapa algoritma untuk scheduling:

-> Batch Scheduling Algorithm
          First come First serve


          Shortest Job First (Non-Preemptive)


          Shortest Job First (Preemptive)





          
-> Interactive Scheduling Algorithm

          Round - robin scheduling
          Priority scheduling
          Multiple queuers
          Shortest process next
          Guaranted scheduling
          Lottery scheduling
          Fair-share scheduling.

-> Real time scheduling
        

Concurrency

     

     Seperti gambar diatas, concurrency adalah sebuah kejadian saat ada dua atau lebih process yang diaktifkan atau diakses. Bisa ditemukan saat membukan banyak aplikasi saat bersamaan, contohnya , buka web browser, word editor, dan game secara berbarengan. Dalam proses concurrency dapat ditemukan komunikasi antar proses, sharing resources, sinkronisasi antar multiple proses, dan pengaturan alokasi processor.

     Jika 2 atau lebih proses berjalan bersamaan , maka dapat saja timbul permasalahan seperti :

Sharing resources global
Masalah management untuk alokasi resources
Eror dalam programing sulit untuk ditrack.

Konsern utama OS dalam permasalahan seperti ini adalah 
  • Tetap track proses - proses yang aktif
  • Mengalokasikan dan mendealokasikan resources contohnya
          Processor time (Clock)
          Memory
          Files
          I/O devices.
  • Melindungi data dan resources
  • Hasil dari proses harus independent terhadap kecepatan eksekusi proses konkurent yang lain.
Lebih spesifik permasalahan dalam concurrency adalah :
  • Deadlock
          Kejadian saat banyak proses terhenti karena saling menunggu untuk mengakses resources
  • Starvation
          Kejadian saat resources yang tersedia tidak mencukupi proses - proses yang aktif sehingga terjadi kelaparan bagi proses-prosesnya.
       Solusinya, dapat menggunakan Mutual exclusion yaitu hanya satu proses dalam satu satuan waktu yang boleh mengakses resources sehingga tidak terjadi rebutan dan proses lain baru boleh mengakses resources setelah kondisi proses sebelumnya terpenuhi. Mutual exclusion dapat dicapai dengan :
  • Menghilangkan interupsi (non-preemptive)
          sebuah proses tetap akan berjalan sampai proses tersebut selesai dengan tugasnya
  • Lock variable
          menggunakan variable lock (1 dan 0) sehingga proses lainnya akan antri.
  • Strict alternatioin
          perubahan giliran untuk masuk dalam critical region
  • Semaphore
          penggunaan variable untuk melakukan signaling sehingga proses yang sedang antri, akan menunggu signal untuk mulai akses resources setelah proses sebelumnya telah selesai mengakses resources.

Semaphore

       Sebuah nilai integer yang digunakan untuk signaling antara tiap proses. Hanya terdapat 3 proses dalam semaphore yaitu : initialize, decrement, dan increment. Decrement sebuah semaphore akan merujuk ke blocking a process sementara increment akan mengarah ke unblocking a process. Ada binary semaphore yaitu sebuah semaphore yang hanya terdiri dari 1 dan 0. Dari prinsip giliran atau menunggu antrian ini, muncul kasus Producer/Consumer Problem.
Seperti contoh :
  • Sleeping Barber problem

  • Dining Philosopher Problem


Solusi dari permasalahan diatas, dapat menggunakan MUTEX (Mutul Exclusion Lock) yaitu memakain thread seperti contoh dibawah :

solving sleeping barber problem




Monitor

      Adalah sebuah bentuk programming language yang menyediakan fungsi yang menyerupai fungsi yang disediakan semaphore namun lebih mudah untuk dikontrol. Monitor merupakan software modul yang terdiri dari satu atau lebih prosedur, contoh : inisialisasi sequence dan local data.

Message Passing

      Komunikasi antar proses - proses dapat menggunakan sintax send(dest,&message) dan untuk menerima pesannya menggunakan receive(source,&message).
      Issue - issue atau masalah yang bisa timbul dengan menggunakan message passing adalah :
  • Message yang berantakan
  • Message yang hilang
  • Kehilangan acknowledge sehingga pengiriman pesan putus
  • Tujuan tidak dapat dijangkau
  • Masalah authentication
  • Performance.
Binus & Sky Connectiva

Tidak ada komentar:

Posting Komentar