Pendahuluan Proses

  • Proses adalah abstraksi tentang suatu program yang sedang dijalankan
  • Komponen proses
  1. program yang sedang dieksekusi
  2. data
  3. sumber daya (resource)
  4. status dari eksekusi
  • Semua komputer modern bisa melakukan beberapa pekerjaan dalam saat yang sama.
  • Dalam multiprogramming , CPU berpindah dari satu program ke program lain dalam waktu yang sangat singkat. Kenyataannya CPU hanya menjalankan satu program pada suatu saat.
  • paralelisme vs pseudoparalelisme

MODEL PROSES
  • Semua S/W dikelompokkan menjadi sejumlah proses sekuensial.
  • Menggunakan model pseudoparalelisme
  • Suatu prosesor tunggal dapat dibagi diantara beberapa proses menggunakan suatu algoritma penjadwalan.

HIRARKI PROSES
  • Ada cara untuk menghapus dan membentuk proses
  • Pada UNIX , proses dibentuk dengan (system call) FORK
  • Proses utama dan subproses yang dipanggil dapat berjalan secara paralel
  • Pada MS-DOS, system call me-load suatu file biner tertentu ke memori dan mengeksekusinya sebagai subproses.
  • Proses utama dan subproses tidak dapat berjalan secara paralel

KEADAAN PROSES
Proses butuh berinteraksi dengan proses lain dan perlu diketahui kondisi dari proses lainnya itu.
Ada 3 keadaan proses :
1. Running
  • Kondisi dimana suatu proses sedang menggunakan CPU pada saat tersebut
2. Ready
  • Kondisi dimana proses sebenarnya runable, namun berhenti sementara karena CPU sedang digunakan proses lain
3. Blocked
  • Kondisi dimana proses belum dapat dijalankan karena menunggu kelengkapan proses eksternal

Transisi Proses
1. Running menjadi blocked
transisi ini terjadi karena ditemukan proses tidak dapat dilanjutkan karena ada sesuatu yang terjadi
2. Running menjadi ready
terjadi karena penjadwal proses memutuskan bahwa suatu proses terlalu lama menggunakan CPU
3. Ready menjadi running
terjadi jika semua proses telah mendapatkan bagiannya menggunakan CPU dan saatnya proses dalam kondisi ready untuk menggunakan CPU
4. Blocked menjadi ready
terjadi jika kelengkapan eksternal yang ditunggu proses sudah terpenuhi

IMPLEMENTASI PROSES
  • OS menggunakan tabel proses, satu entry per proses
  • Tabel proses berisi :
  1. informasi tentang status proses
  2. program counter
  3. stack pointer
  4. alokasi memori
  5. status-status file yang sedang dibuka
  6. informasi akunting dan penjadwalan
  7. segala sesuatu yang perlu disimpan pada saat berpindah dari kondisi running ke ready
  • Isi tabel proses secara umum umum memuat manajemen proses, menajemen memori, manajemen file.

INTERPROSES COMMUNICATION (IPC)
  • Proses bisa berkomunikasi dengan proses lain dengan menggunakan primitif interproses communication (IPC).
  • Primitif ini digunakan untuk mencegah dua proses / lebih mengakses bagian memori yang sama pada saat bersamaan (critical section).

RACE CONDITION
  • Proses-proses yang bekerja bersama sering harus berbagi (storage) dimana masing-masing proses dapat mambaca dan menulis shared data pada waktu yang sama.
  • Terjadi kondisi race (balapan) untuk mengakses satu lokasi yang sama dan hasil akhir tergantung pada proses yang berjalan tepat waktu
  • contoh :
  1. print spooler (spooler directory) , print daemon

Menghindari race condition

  • Hindarkan proses membaca, menulis shared data pada saat yang sama

Mutual Exclusion (Mutex)
  • Jika satu proses sedang melakukan sesuatu, maka proses lain dicegah untuk tidak bisa melakukan proses yang sama terhadap data yang sama.

CRITICAL SECTION
  • Bagian dari program dimana shared memori diakses.
Ada 4 kondisi untuk mendapatkan pemecahan yang baik bagi race condition
  1. Tidak ada dua proses secara simultan berada pada critical-sectionnya.
  2. Kecepatan dan banyaknya CPU tidak diperhatikan
  3. Tidak ada proses yang sedang running diluar critical section dapat memblock proses lain.
  4. Tidak ada proses yang terus-menerus menunggu untuk masuk pada critical sectionnya.

Cara mencapai mutual exclusion (Mutual Exclusion dengan busy waiting)
1. Disabling Interrupt (Menon-aktifkan)
  • Interrupt non aktif setelah memasuki critical section
  • Bisa lagi di interupsi sesaat sebelum meninggalkan critical section
  • Kurang bijaksana
  • Bagaimana kalau lupa mengaktifkan lagi
  • berguna pada saat-saat tertentu untuk Kernal, tetapi untuk user kurang tepat

Cara mencapai mutual exclusion (Mutual Exclusion dengan busy waiting)
2. Mengunci (lock) variabel
  • Jika akan masuk ke critical section maka variabel akan ditest : Jika 0 berarti tidak ada proses dalam critical section dan jika 1 berarti ada
  • Resiko sama saja dengan teknik interrupt

Cara mencapai mutual exclusion (Mutual Exclusion dengan busy waiting)
3. Strict Alternation (Fig 2-7 hal 36)

4. Solusi Peterson
  • Kombinasi antara variabel turn dan lock variabel

5. Instruksi TSL (Test and Set Lock)
  • Butuh sedikit bantuan dari H/W
  • Banyak pada prosesor ganda
  • TSL membaca isi dari memory word ke dalam suatu register dan memberi nilai bukan nol pada alamat memori. Operasi pembacaan dan store ini dijamin tak terbagi, tidak ada prosesor lain dapat mengakses kata tersebut sampai instruksi selesai.
  • CPU mengeksekusi instruksi TSL mengunci bus untuk melarang CPU lain mengakses memori sampai proses ini selesai.
  • Penyelesaian dengan solusi Peterson dan TSL keduanya benar tetapi memboroskan waktu CPU dengan harus memenuhi busy waiting.

Ada berbagai macam primitif IPC yang diantaranya :
  • semaphore
  • monitors
  • event counters
  • message passing

Secara teoritis semuanya ini equivalent yang masing-masingnya dapat diimplementasikan untuk yang lain. Semaphore dan message passing secara luas banyak digunakan.

Masalah Klasik dalam S.O

The Dinning Philosophers Problem

0 komentar:

Posting Komentar

Selamat Datang © 2008 Template by:
SkinCorner