Sabtu, 09 Februari 2013

Algoritma Ostrich dan Algoritma Safety

  • Algoritma Ostrich adalah metode pengabaian masalah yang biasa terjadi atas dasar masalah yang jarang terjadi dan digunakan untuk menangani deadlock pada pemograman concurrent.
  • Algoritma Safety adalah algoritma yang bekerja untuk menentukan apakah sistem berada pada status selamat atau tidak.
    contohnya seperti :
    1. work and finish vektor 
        dengan panjang m dan n , jika work : available dan finish[i] : false
        untuk i = 1,2,3......
    2. cari i dengan finish[i] = false , need ≤ work
        jika i tidak terdapat 
    3. work + work = allocation
         finish[i]= true , kembali ke 2
    4. finish[i] = true  pada semua i maka sistem selamat

Algoritma Banker

Algoritma banker adalah suatu algoritma resource allocation dan deadlock avoidance yang mealkukan simulasi terhadap jumlah maksimal resource dan memeriksa status keamanan kondisi deadlock pada saat posisi menunggu sebelum melakukan alokasi resource. algoritma ini dijalankan pada saat proses melakukan permintaan resources.

proses yang diberikan resources:

1. request* ≤ max**, (max = jumlah resource yang sebelumnya sudah diklaim) jika tidak set error, karena request melebihi jumlah klaim sebelumnya. 
2. request ≤ available***, (availabel = jumlh sisa resource yg tidak terpakai) jika tidak, proses harus menunggu hingga resource yang diminta ada

syarat algoritma banker bekerja:

1. jumlah resource dari setiap proses yang akan di request
2. jumlah resource dari tiap proses yang sedang digunakan
3. jumlah sisa resource yang ada di sistem
 

Kamis, 15 November 2012

Contoh Thread pada Bahasa Pemrograman

Thread adalah suatu pengontrol aliran program dengan menggunakan kendali tunggal.

contoh thread pada pemrograman java :

class TestSinkronisasi {
private java.util.Random random = new java.util.Random();
public void callMe(String data) {
System.out.print("[");
67
try{
Thread.sleep(random.nextInt(200));
}catch(InterruptedException e) {
e.printStackTrace();
}
System.out.print(data);
try{
Thread.sleep(random.nextInt(200));
}catch(InterruptedException e) {
e.printStackTrace();
}
System.out.println("]");
}
}
class ThreadBaru extends Thread {
private String data;
private TestSinkronisasi obj;
public ThreadBaru(TestSinkronisasi obj,String data) {
this.obj = obj;
this.data = data;
start();
}
public void run() {
obj.callMe(data);
}
}
class DemoThread {
public static void main(String[] args) {
TestSinkronisasi obj = new TestSinkronisasi();
ThreadBaru thread1 = new ThreadBaru(obj,"Superman");
ThreadBaru thread2 = new ThreadBaru(obj,"Batman");
ThreadBaru thread3 = new ThreadBaru(obj,"Spiderman");
//tunggu hingga semua child thread selesai dieksekusi
try{
68
thread1.join();
thread2.join();
thread3.join();
}catch(InterruptedException e) {
System.out.println("Thread utama diinterupsi " + e);
}
}
}

Ada juga alternatif lain sebagai berikut :
#define _REENTRANT
#include <stdio.h>
#include <thread.h>

/* Prototype for thread subroutine */
void *counter(void *);

int count;
mutex_t count_lock;

main()
{
char str[80];
thread_t ctid;

/* create the thread counter subroutine */
thr_create(NULL, 0, counter, 0, THR_NEW_LWP|THR_DETACHED, &ctid);

while(1) {
gets(str);
thr_suspend(ctid);

mutex_lock(&count_lock);
printf("\n\nCOUNT = %d\n\n", count);
mutex_unlock(&count_lock);

thr_continue(ctid);
}

return(0);
}

void *counter(void *arg)
{
int i;

while (1) {
printf("."); fflush(stdout);

mutex_lock(&count_lock);
count++;

for (i=0;i<50000;i++);

mutex_unlock(&count_lock);

for (i=0;i<50000;i++);
}

return((void *)0);
}

Sistem Operasi yang Mendukung HyperThreading

  1. Windows NT/XP/2000, linux, solaris 9 termasuk ke kelompok multithreading one the one model
  2. Windows NT/2000, IRIX, Digital Unix dan solaris termasuk kelompok multhithreading many the one model
  3. IRIX, HP-UX, Tru64 UNIX, solaris 8 termasuk kelompok multithreading two level model
  4. GNU juga termasuk ke kelompok multithreading many to one model

Dispatching Algorithm

Dispatching algorithm atau algoritma antrian adalah suatu proses mengeksekusi dalam 2 buah proses secara berurutan atau sekuensial ini memungkinkan efisiensi ketika mengeksekusi sebuah thread meskipun sistem operasi bersifat multitasking

Komputer dengan Teknologi Hyperthreading

komputer ini merupakan sebuah teknologi mikroprosesor yang diciptakan oleh intel corp, pada beberpa prosesor seperti pentium 4, pentium D, Xeon, dan core 2. 
prosesor tingkat ini akan dilihat oleh sistem operasi yang banyak mendukung seperti windows NT, 2000, xp, vista, dan GNU sebagai 2 buah prosesor walaupun jika secara fisik hanya 1 prosesor.jika demikian maka kerja sistem pun akan lebih efisien, meskipun sifatnya multitasking, sistem operasi tersebut melakukan eksekusi secara berurutan dengan sebuah algoritma antrean/algoritma dispatching

Latihan Tugas 4

10. Perlihatkan semua kemungkinan keadaan dimana suatu proses dapat berjalan, dan gambarkan   diagram transisi keadaan yang menjelaskan bagaimana proses bergerak diantara state

Jawab !


11. Apakah suatu proses memberikan 'issue' ke suatu disk I/O ketika, proses tersebut dalam 'ready' state jelaskan?

 Jawab !
 ya, karena dalam suatu proses mempunyai 'issue'(pengaruh) terhadap disk I/O itu sendiri

12. Kernel menjaga suatu rekaman untuk setiap proses, disebut Proses Control Blocks(PCB).
ketika suatu proses sedang tidak berjalan, PCB berisi informasi tentang perlunya melakukan restart suatu proses dalam CPU. jelaskan dua informasi yang harus dipunyai PCB?

Jawab !

- Informasi status I/O : berisi tentang informasi daftar I/O yang digunakan pada proses
- Informasi pencatatatan : berisi info tentang jumlah CPU, waktu riil, digunakan, batas waktu, jumlah akun, jumlah job, dll.