konkurensi


Proses-proses  disebut  konkuren  apabila proses-proses  (lebih  dari  satu  proses)  berada pada  saat  yang  sama.  Karena  proses  tersebut bisa  saja  tidak  saling  bergantung  tetapi  saling berinteraksi.

Proses­proses yang berinteraksi memerlukan sinkronisasi agar terkendali dengan baik

Proses sebuah instruksi program

  • Pada masa awal perkembangan komputer, kode instruksi program dibaca dari suatu kartu plong, kemudian disalin ke memori utama dan akhirnya dieksekusi langsung oleh prosesor.
  • Dewasa ini instruksi program disimpan sebagai berkas pada media penyimpanan sekunder
  • Kode instruksi dapat dijalankan jika telah dibaca dan disalin ke ruang memori utama
  • Ruang memori juga digunakan untuk menyimpan informasi terkait dengan eksekusi instruksi program
  • Informasi yang dicatat : status proses, alamat kode instruksi di ruang memori dan sumberdaya komputer yang digunakan (misalnya data, berkas, piranti I/O)
  • Konsep Proses dalam OS menggambarkan eksekusi program dan pengelolaan informasi sumberdaya komputer yang dipergunakannya.

Multitasking dan Konkurensi

  • Awalnya proses-proses di jalankan secara sekuensial atau berturut-turut, suatu proses akan dieksekusi sampai selesai baru kemudian berpindah ke proses berikutnya. (batch processing)
  • Pada perkembangannya proses dapat dijalankan sebagai sebuah atau beberapa aktifitas yang berjalan bersamaan (concurency)
Perkembangan tersebut melahirkan konsep :
  • Multitasking (bersamaan, satu pemroses, aktifitas sama, penjadwalan)
  • Multiprocessing/paralel (bersamaan, beberapa pemroses, aktifitas berbeda)

sekuen

Konsekuensi konkurensi pada sistem multitasking

  • Proses tidak saling mempengaruhi

Membuka berkas .mp3 menggunakan media player dan berkas .doc menggunakan MS Word secara bersamaan

  • Proses saling mempengaruhi secara tidak langsung
Membuka berkas .doc pada MS Word dan Notepad secara bersamaan
  • Proses saling mempengaruhi secara langsung
Prinsip client server antara aplikasi dan server
Prinsip cilent server antara browser dan web server
Dapat berjalan pada komputer yang sama ataupun yang berbeda
  • Proses saling mempengaruhi

Terjadinya perebutan sumberdaya (SD) pada proses yang saling mempengaruhi baik secara langsung maupun tidak langsung menimbulkan masalah2 yang harus ditangani oleh OS :
  • Race Condition (Competition)
  • Akibat perebutan SD, status SD menjadi tidak valid dan tidak konsisten diakhir proses
  • critical resources adalah SD yang berada pada kondisi kompetisi dan critical section adalah bagian dari instruksi program yang melakukan proses tersebut.
  • Dapat diatasi dengan sinkronisasi seperti Mutual Exclusion (memastikan pada suatu waktu hanya satu proses yang menjalankan critical section)

Proses saling mempengaruhi

  • Deadlock
  • Kondisi ketika beberapa proses yang terlibat saling membutuhkan SD yang sedang digunakan oleh proses lain
  • Karena tidak ada satupun proses yang bersedia mengalah (melepaskan sumberdaya yang sedang digunakan) maka terjadilah kebuntuan
 deadlock
Deadlock4errorm10
Kemungkinan penyebab (menurut Coffman et al. (1971)
  1. Mutual Exclusion: satu proses satu sumber daya
  2. Hold and Wait: proses yang memegang sumber daya bisa meminta sumber daya lain
  3. No Preemption: sumber daya yang sedang digunakan  oleh suatu proses tidak bisa sembarangan diambil dari  proses tersebut, melainkan harus dilepaskan dengan sendirinya oleh proses.
  4. Circular Wait : setiap proses menunggu sumber daya dari proses berikutnya

MENCEGAH DEADLOCK
Mengatasi Mutual Exclusion  yaitu dengan cara

  1. tidak berbagi data  dengan proses lain  atau dengan kata lain menyediakan data sendiri
  2. Memegang dan menunggu yaitu menunggu sampai sumber   daya yang  akan digunakan tidak lagi digunakan oleh  proses lain Artinya proses dapat berlangsung jika semua sumber daya yang  diperlukan tidak digunakanoleh proses lain
  3. Dapat menyebabkan terjadinya “kelaparan” sebab ada proses yang tidak mendapat sumberdaya sehingga menunggu terlalu lama
Starvasion
  • Kondisi dimana satu proses atau lebih selalu kalah dalam kompetisi dalam mendapatkan SD yang diperlukan
  • Eksekusi selalu tertunda
  • Disebabkan oleh kebijakan alokasi SD yang tidak adil dari Sistem Operasi

Starvation

Definisi Threads

Thread, atau kadang-kadang disebut proses ringan (lightweight), adalah unit dasar dari utilisasi CPU. Di dalamnya terdapat ID thread, program counter, register, dan stack. Dan saling berbagi dengan thread lain dalam proses yang sama.

Sebuah program yang menjalankan eksekusi thread tunggal. Sebagai contoh, jika sebuah proses menjalankan sebuah program Word Processor, ada sebuah thread tunggal dari instruksi-instruksi yang sedang dilaksanakan.

Kontrol thread tunggal 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 eksekusi multithreads, agar dapat dapat secara terus menerus mengetik dalam karakter dan menjalankan pengecek ejaan didalam proses yang sama. Maka sistem operasi tersebut memungkinkan proses untuk menjalankan lebih dari satu tugas pada satu waktu.

Konsep Dasar

Secara informal, proses adalah program yang sedang dieksekusi. Ada dua jenis proses, proses berat (heavyweight) atau biasa dikenal dengan proses tradisional, dan proses ringan atau kadang disebut thread.
Thread saling berbagi bagian program, bagian data dan sumber daya sistem operasi dengan thread lain yang mengacu pada proses yang sama. Thread terdiri atas ID thread, program counter, himpunan register, dan stack. Dengan banyak kontrol thread proses dapat melakukan lebih dari satu pekerjaan pada waktu yang sama.

Keuntungan

  1. Tanggap: Multithreading mengizinkan program untuk berjalan terus walau pun pada bagian program tersebut di block atau sedang dalam keadaan menjalankan operasi yang lama/ panjang. Sebagai contoh, multithread web browser dapat mengizinkan pengguna berinteraksi dengan suatu thread ketika suatu gambar sedang diload oleh thread yang lain.
  2. Pembagian sumber daya: Secara default, thread membagi memori dan sumber daya dari proses. Keuntungan dari pembagian kode adalah aplikasi mempunyai perbedaan aktifitas thread dengan alokasi memori yang sama.
  3. Ekonomis: Mengalokasikan memori dan sumber daya untuk membuat proses adalah sangat mahal. Alternatifnya, karena thread membagi sumber daya dari proses, ini lebih ekonomis untuk membuat threads.
  4. Pemberdayaan arsitektur multiprosesor: Keuntungann dari multithreading dapat ditingkatkan dengan arsitektur multiprosesor, dimana setiap thread dapat jalan secara parallel pada prosesor yang berbeda. Pada arsitektur prosesor tunggal, CPU biasanya berpindah-pindah antara setiap thread dengan cepat, sehingga terdapat ilusi paralelisme, tetapi pada kenyataannya hanya satu thread yang berjalan di setiap waktu.
User Threads
User & Kernel Thread

User thread didukung oleh kernel dan diimplementasikan oleh thread library ditingkat pengguna. Library mendukung untuk pembentukan thread, penjadualan, dan managemen yang tidak didukung oleh kernel.

Kernel Threads

Kernel thread didukung secara langsung oleh sistem operasi: pembentukan thread, penjadualan, dan managemen dilakukan oleh kernel dalam ruang kernel. Karena managemen thread telah dilakukan oleh sistem operasi, kernel thread biasanya lebih lambat untuk membuat dan mengelola daripada pengguna thread. Bagaimana pun, selama kernel mengelola thread, jika suatu thread di block tehadap sistem pemanggilan, kernel dapat menjadualkan thread yang lain dalam aplikasi untuk dieksekusi. Juga, di dalam lingkungan multiprosesor, kernel dapat menjadualkan thread dalam prosesor yang berbeda. Windows NT, Solaris, dan Digital UNIX adalah sistem operasi yang mendukung kernel thread.

Model Multithreading

Dalam sub bab sebelumnya telah dibahas pengertian dari thread, keuntungannya, tingkatan atau levelnya seperti pengguna dan kernel. Maka dalam sub-bab ini pembahasan akan dilanjutkan dengan jenis-jenis thread tersebut dan contohnya baik pada Solaris mau pun Java.
Sistem-sistem yang ada sekarang sudah banyak yang bisa mendukung untuk kedua pengguna dan kernel thread, sehingga model-model multithreading-nya pun menjadi beragam. Implementasi multithreading yang umum akan kita bahas ada tiga, yaitu model many-to-one, one-to-one, dan many-to-many.


Model Multithreading

Model Many to One

Model many-to-one ini memetakan beberapa tingkatan pengguna thread hanya ke satu buah kernel thread. Managemen proses thread dilakukan oleh (di ruang) pengguna, sehingga menjadi efisien, tetapi apabila sebuah thread melakukan sebuah pemblokingan terhadap sistem pemanggilan, maka seluruh proses akan berhenti (blocked). Kelemahan dari model ini adalah multihreads tidak dapat berjalan atau bekerja secara paralel di dalam multiprosesor dikarenakan hanya satu thread saja yang bisa mengakses kernel dalam suatu waktu.

Many To One 

  • Model One to One

Model one-to-one memetakan setiap thread pengguna ke dalam satu kernel thread. Hal ini membuat model one-to-one lebih sinkron daripada model many-to-one dengan mengizinkan thread lain untuk berjalan ketika suatu thread membuat pemblokingan terhadap sistem pemanggilan; hal ini juga mengizinkan multiple thread untuk berjalan secara parallel dalam multiprosesor. Kelemahan model ini adalah dalam pembuatan thread pengguna dibutuhkan pembuatan korespondensi thread pengguna. Karena dalam proses pembuatan kernel thread dapat mempengaruhi kinerja dari aplikasi maka kebanyakan dari implementasi model ini membatasi jumlah thread yang didukung oleh sistem. Model one-to-one diimplementasikan oleh Windows NT dan OS/2.

One to One

  • Model Many to Many

Beberapa tingkatan thread pengguna dapat menggunakan jumlah kernel thread yang lebih kecil atau sama dengan jumlah thread pengguna. Jumlah dari kernel thread dapat dispesifikasikan untuk beberapa aplikasi dan beberapa mesin (suatu aplikasi dapat dialokasikan lebih dari beberapa kernel thread dalam multiprosesor daripada dalam uniprosesor) dimana model many-to-one mengizinkan pengembang untuk membuat thread pengguna sebanyak mungkin, konkurensi tidak dapat tercapai karena hanya satu thread yang dapat dijadualkan oleh kernel dalam satu waktu. Model one-to-one mempunyai konkurensi yang lebih tinggi, tetapi pengembang harus hati-hati untuk tidak membuat terlalu banyak thread tanpa aplikasi dan dalam kasus tertentu mungkin jumlah thread yang dapat dibuat dibatasi.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s