Definisi dari Proses, Thread,Mutual Exclution, Race Condition,Sinkronisasi, Deadlock, Starvation,Monitor, dan Semaphore!

Monday, April 19, 2010

Secara informal, proses adalah program dalam eksekusi. Suatu proses adalah lebih dari kode program, dimana kadang kala dikenal sebagai bagian tulisan. Proses juga termasuk aktivitas yang sedang terjadi, sebagaimana digambarkan oleh nilai pada program counter dan isi dari daftar prosesor/ processor’s register. Suatu proses umumnya juga termasuk process stack, yang berisikan data temporer (seperti parameter metoda, address yang kembali, dan variabel lokal) dan sebuah data section, yang berisikan variabel global.

Thread adalah sebuah alur kontrol dari sebuah proses. Suatu proses yang multithreaded mengandung beberapa perbedaan alur kontrol dengan ruang alamat yang sama. Keuntungan dari multithreaded meliputi peningkatan respon dari user, pembagian sumber daya proses, ekonomis, dan kemampuan untuk mengambil keuntungan dari arsitektur multiprosesor. User level thread adalah thread yang tampak oleh programmer dan tidak diketahui oleh kernel. User level thread secara tipikal dikelola oleh sebuah library thread di ruang user. Kernel level thread didukung dan dikelola oleh kernel sistem operasi. Secara umum, user level thread lebih cepat dalam pembuatan dan pengelolaan dari pada kernel thread. Ada tiga perbedaan tipe dari model yang berhubungan dengan user dan kernel thread:
  • Model many to one: memetakan beberapa user level thread hanya ke satu buah kernel thread.
  • Model one to one: memetakan setiap user thread ke dalam satu kernel thread.
  • Model many to many: mengizinkan pengembang untuk membuat user thread sebanyak mungkin, konkurensi tidak dapat tercapai karena hanya satu thread yang dapat dijadualkan oleh kernel dalam satu waktu.

Mutual Exclusion: Hardware Support


Seperti yang telah kita ketahui bahwa, sinkronisasi haruslah mutual exclusive, atau dengan kata lain, harus ada satu atau sekelompok instruksi yang tidak dapat diberhentikan pada waktu eksekusi (sifat mutual exclusive). Jadi, solusi untuk sinkronisasi dengan cara pendekatan hardware lebih menekankan kepada usaha-usaha untuk membuat suatu atau sekelompok instruksi menjadi mutual exclusive.

Pendekatan dari sisi Hardware dapat dibagi menjadi dua:
  1. Processor Synchronous.
  2. Memory Synchronous.

Processor Synchronous

Central Processing Unit, CPU, mempunyai suatu mekanisme yang dinamakan interrupt. Di dalam sistim operasi, mekanisme ini digunakan secara intensif, atau dengan kata lain, banyak konsep-konsep sistim operasi yang menggunakan mekanisme ini. Sebagai contoh : system call, process scheduling, dsb.

Berbicara mengenai sinkronisasi berarti kita mengasumsikan bahwa akan ada 2 atau lebih proses yang sedang berjalan di komputer secara concurrent, atau dengan kata lain konsep time-shared sudah diimplementasikan di sistim operasi.

Prinsip Konkurensi (Principles of Concurrency)

Konkurensi adalah proses interleaving pada waktunya untuk memberikan tampilan eksekusi simultan. Oleh karena itu berbeda dari paralelisme, yang menawarkan asli eksekusi simultan. Namun masalah dan kesulitan yang diajukan oleh dua tumpang tindih untuk sebagian besar:
  • Sumber daya global sulit berbagi dengan aman.
  • Alokasi optimal dari sumber daya sangat sulit.
  • Menemukan kesalahan pemrograman bisa sulit, karena konteks di mana kesalahan terjadi tidak selalu bisa direproduksi dengan mudah.
Paralelisme juga memperkenalkan prosesor isu yang berbeda dapat berjalan pada berbagai kecepatan, tapi sekali lagi masalah ini tercermin dalam konkurensi karena berbeda proses penyelesaian pada tingkat yang berbeda.

Sebuah Contoh Sederhana

Masalah mendasar dalam proses konkurensi adalah campur dengan masing-masing lainnya ketika mengakses sumber daya global bersama. Hal ini dapat diilustrasikan dengan mengherankan contoh sederhana:

chin = getchar();
chout = chin;
putchar(chout);

Bayangkan dua proses P1 dan P2 kedua melaksanakan kode ini di "sama" waktu, dengan interleaving berikut karena multi-programming.
  1. P1 memasuki kode ini, tapi terganggu setelah membaca karakter x ke dagu.
  2. P2 memasuki kode ini, dan berjalan ke penyelesaian, membaca dan menampilkan karakter y.
  3. P1 dilanjutkan, tapi dagu y sekarang berisi karakter, sehingga P1 menampilkan karakter yang salah.
Inti dari masalah adalah variabel dagu bersama global. P1 set dagu, tapi ini tulis kemudian hilang selama pelaksanaan P2. Solusi umum adalah untuk memungkinkan hanya satu proses pada suatu waktu untuk memasukkan kode yang mengakses chin : kode tersebut sering disebut critical section. Ketika satu proses berada di dalam bagian kode yang kritis, proses-proses lain harus dicegah masuk dalam bagian. Persyaratan ini dikenal sebagai saling pengecualian.

Praktikum Algoritma Pemrograman

Monday, April 12, 2010

Bagi para praktikan Prak. Algoritma khususnya kelas B dapat men-download materi praktikum di bawah ini:

  1. PA_1 (Struktur Program Pascal)
  2. PA_2 (Penyeleseian Kondisi)
  3. PA_3 (Pengulangan (Looping))
  4. PA_4 (Prosedur dan Fungsi)
  5. PA_5 (Larik(Array))
  6. PA_6 (Record)
Untuk Modul Praktikum Algoritma dapat di download disini:
Modul Praktikum Algoritma 2010

Untuk Soal MidTes dapat di download disini:
MidTes Prak. Algoritma