Anda di halaman 1dari 4

TUGAS

SISTEM OPERASI

Disusun untuk Memenuhi Matakuliah Sistem Operasi


Dibimbing oleh Bapak Khoirudin Asfani, S.Pd., M.Pd.

Disusun oleh:
Aurora Hanna Violetta/180533631583
S1 PTI 2018 / OFFERING A

UNIVERSITAS NEGERI MALANG


FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
SEPTEMBER 2019
Fungsi semafor

Fungsi Semafor digunakan untuk menangani masalah sinronisasi secara umum serta dua proses
atau lebih dapat bekerjasama dengan menggunakan penanda-penanda sederhana.

Fungsi buka (open)

- Setelah thread keluaar dari critical section-nya, thread tersebut menggunakan fungsi buka
untuk pemanggilan fungsi nya.
- Algoritma :

void buka(int sem_value)


{
sem_value++;
if(sem_value <= 0)
{
/*keluarkan satu thread dari waiting queue*/
/*aktifkan thread tersebut*/
}
}
- Penjelasan :
Pertama terdapat parameter yang terdapat pada fungsi buka yaitu sem_value
dideklarasikan ke tipe data int (integer). Kemudian terdapat variable sem_value++ yang
berfungsi jika variable sem_value++ kurang dari sama dengan 0 maka thread akan
dikeluarkan dari waiting queue, kemudian aktifkan thread tersebut.

Fungsi kunci (lock)


- Pada saat thread akan memasuki critical section, fungsi inilah yang akan dipanggil
terlebih dahulu
- Algoritma :
void kunci(int sem_value)
{
sem_value--;
if(sem_value < 0)
{
/*masukkan thread ke dalam waiting queue*/
/*blok thread tersebut*/
}
}
- Penjelasan :
Pertama terdapat parameter yang terdapat pada fungsi kunci yaitu sem_value
dideklarasikan ke tipe data int (integer). Kemudian terdapat variable sem_value-- yang
berfungsi jika variable sem_value++ kurang dari 0 maka thread akan dikeluarkan dari
waiting queue, kemudian block thread tersebut.

Kesimpulan :

Jika kita cermati fungsi kunci, thread akan terus berada dalam waiting loop sampai
sem_value naik lebih dari 0. Padahal, di dalam loop tersebut thread tidak melakukan
tugas apa-apa. Inilah yang disebut dengan busy waiting (semafor jenis ini disebut
dengan semafor spinlock). Hal ini tentu saja akan berakibat buruk terhadap kinerja
CPU, karena loop tersebut membutuhkan CPU cycle, sementara loop tersebut tidak
menghasilkan apa-apa, jadi sama saja dengan menyia-nyiakan CPU cycle.

Untuk mengatasi hal ini, dibuatlah modifikasi dari semafor, yaitu dengan
menambahkan waiting queue pada masing-masing semafor. Tujuannya adalah
agar thread yang harus menunggu dipindahkan ke waiting queue dan kegiatannya
dihentikan sementara.

Ketika thread keluar dari critical section-nya, thread tersebut akan memanggil
fungsi buka yang akan mengeluarkan satu (dari beberapa) thread yang berada
dalam waiting queue lalu membangunkannya untuk kemudian memasuki critical
section-nya.
DAFTAR RUJUKAN

Buku Sistem Operasi Universitas Gunadarma. 2018. Sistem Operasi.


http://ftp.gunadarma.ac.id/linux/docs/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi-4.X-
1/ch20s04.html. Diakses pada 23 Sep 2019.

Riadhi saiful. 2014. Metode dengan Semaphore. https://sites.google.com/a/student.unsika.ac.id/riadhi-


sigaluhpakuan/home-1/metodedengansemaphore. Diakses pada 23 September 2019

Anda mungkin juga menyukai