Pages

Algoritma Penjadwalan Processor Round Robin

Jumat, 08 Mei 2015

Pada kesempatan kali ini kita akan membahas mengenai algoritma penjadwalan Round Robin pada sistem operasi.

Penjadwalan merupakan kumpulan kebijaksanaan dan mekanisme di ssistem operasi yang berkaitan dengan urutan kerja yang dilakkan sistem komputer. Penjadwalan bertugas memutuskan :
– Proses yang harus berjalan
– Kapan dan selama berapa lama proses itu berjalan.


Tipe-Tipe Penjadwalan
Terdapat tiga tipe penjadwalan berada secara bersama-sama pada sistem operasi yang kompleks, yaitu :
1. Penjadwal jangka pendek (short-tem scheduller)
2. Penjadwal jangka menengah (medium-term scheduller)
3. Penjadwal jangka panjang (long-term scheduller)

Penjadwal Jangka Pendek
          Penjadwal ini bertugas menjadwalkan alokasi pemroses diantara proses-proses ready di memori utama. Sasaran utama penjadwal ini memaksimalkan kinerja untuk memenuhi satu kumpulan kriteria yang diharapakan. Penjadwal ini dijalankan setiap terjadi pengalihan proses untuk memilih proses berikutnya yang harus dijalankan.

Penjadwal Jangka Menengah
         Setelah eksekusi selama suatu waktu, proses mungkin ditunda karena membuat permintaan layanan masukan/keluaran atau memanggil suatu system call. Proses-proses tertunda tidak dapat membuat suatu kemajuan selesai sampai kondisi-kondisi yang menyebabkan tertunda dihilangkan.

Agar ruang memori dapat bermanfaat, maka proses dipindah dari memori utama ke memori sekunder agar tersedia ruang untuk proses-proseslain. Kapasitas memori utama terbatas untuk sejumlah proses aktif. Aktivitas pemindahan proses yang tertunda dari memori utama ke memori sekunder disebutswapping.

Penjadwal jangka menengah adalah menangani proses-proses swapping. Proses-proses mempunyai kepentingan kecil saat itu sebagai proses yang tertunda. Tetapi, begitu kondisi yang membuatnya terunda hilang dan proses dimasukkan kembali ke memori utama dan ready. Penjadwal jangka menengah mengendalikan transisi dari suspended-ready (dari keadaan suspend ke ready) proses-proses swapping.

Penjadwal Jangka Panjang
              Penjadwal jangka panjang bekerja terhadap antrian batch dan memilih batch berikutnya yang harus dieksekusi. Batch biasanya adalah proses-proses dengan penggunaan sumber daya yang intensif (yaitu waktu proses, memori, perangkat I/O), program-program ini berprioritas rendah, digunakan sebagai pengisi (agar pemroses sibuk) selama periode aktivitas job-job interaktif rendah. Sasaran utama penjadwal jangka pangjang adalah memberi keseimbangan job-job campuran. Dikaitkan dengan state-state proses.
 
Strategi Pendjadwalan
Terdapat dua strategi penjadwalan, yaitu:
1. Penjadwalan nonpreemptive (run – to – completion)
2. Penjadwalan preemptive

Penjadwalan Nonpreemptive
Begitu proses diberi jatah waktu pemroses maka pemroses tidak dapat diambil alih oleh proses lain sampai proses itu selesai.

Penjadwalan Preemptive
Saat proses diberi jatah waktu pemroses maka pemroses dapat diambil alih proses lain sehingga proses disela sebelum selesai dan harus dilanjutkan menunggu jatah waktu pemroses tiba kembali pada proses itu.

Penjadwalan preemptive berguna pada sistem dimana proses-proses yang mendapat perhatian tanggapan pemroses secara cepat. Misalnya :
– Pada sistem waktu nyata, kehilangan interupsi (yaitu interupsi tidak segera dilayani) dapat berakibat fatal.
– Pada sistem interaktif/time-sharing, penjadwalan preemptive penting agar  dapat menjamin waktu tanggap yang memadai.


Penjadwalan preemptive bagus, tapi tidak tanpa ongkos. Perlaihan proses (yaitu proses beralih ke proses lain) memerlukan overhead (karena banyak tabel yang dikelola). Agar preemptive efektif, banyak proses harus berada di memori utama sehingga proses-proses tersebut dapat segera running begitu diperlukan. Menyimpan banyak proses tak running benar-benar di memori merupakan suatu overhead tersendiri.

Algoritma Penjadwalan
Terdapat banyak algoritma penjadwalan ,baik nonpreemptive maupun preemptive.
Algoritma-algoritma yang menerapkan strategi nonpreemptive diantaranya:
– FIFO (Frist In First Out)
– SJF (Shortest Job First)
– HRN (Highest Ratio Net)
– MFQ (Multiple Feedback Queues).
Algoritma-algoritma yang menerapkan strategi preemptive diantaranya:
– RR (Round Robin)
– SRF (Shortest remaining First)
– PS (Priority Schedulling)
– GS (Guaranteed Schedulle)

Penjadwalan Round Robin (RR)
Penjadwalan ini merupakan:
– Penjadwalan preemptive, buka dipreempt oleh proses lain tapi terutama oleh penjadwal berdasarkan lama waktu berjalannya proses, disebut preempt-by-time.
– Penjadwalan tanpa protes.

Semua Proses dianggap penting dan diberi sejumlah waktu pemroses yang disebut kwata (quantum) atau time slice dimana proses itu berjalan.

Ketentuan
Ketentuan algoritma round robin adalah sebagai berikut:
1.Jika kwanta habis dan proses belum selesai maka proses menjadi runable dan pemroses dialihkan ke poses lain.
2.Jika kwanta belum habis dan proses menunggu suatu kejadian (selesainya operasi I/O), maka proses menjadi blocked dan pemroses dialihkan ke proses lain.
3.Jika kwanta belum habis tapi proses telah selesai maka proses diakhiri dan pemroses dialihkan ke proses lain.

Algoritma penjadwalan ini dapat diimplementasi sebagai berikut:
– Mengelola senarai proses ready (runnable) seusai urutan kedatangan.
– Ambil proses yang berada diujung depan antrian menjadi running.
– Bila kwanta belum habis dan proses selesai maka ambil proses diujung depan antrian proses ready.
– Jika kwanta habis dan proses belum selesai maka tempatkan proses running ke ekor antrian proses ready dan ambil proses diujung depan antrian proses ready.

Masalah penjadwalan ini adalah menentukan besar kwanta, yaitu:
–  Kwanta terlalu besar menyebabkan waktu tanggap besar dan turn arround time rendah.
– Kwanta terlalu kecil mengakibatkan peralihan proses terlalu banyak sehingga menurunkan efesiensi pemroses.

Harus ditetapkan kwanta waktu yang optimal berdasar kebutuhan sistem terutama dari hasil percobaan atau data historis. Besar kwanta waktu beragam bergantung beban sistem.

Berdasarkan kriteria penilaian penjadwalan:
– Fairness
Penjadwalan RR adil bila dipandang dari persamaan pelayanan oleh pemroses.
– Efesiensi
Penjadwalan RR cenderung efesien pada sistem interaktif.
– Waktu tanggap
Penjadwalan RR memuaskan untuk sistem interaktif, tidak memakai untuk sistem waktu nyata.
– Turn Arround Time
Penjadwalan RR cukup bagus.
– Throughput
Penjadwalan RR cukup bagus.

Penggunaan:
– Cocok untuk sistem interaktif-time sharing dimana kebanyakan waktu dipergunakan menunggu kejadian eksternal. Contoh ; text-editor, kebanyakan waktu program adalah menunggu keyboard, hingga dijalankan proses-proses lain.
– Tidak cocok untuk sistem real-time.
 


referensi : http://manajement-info.blogspot.com/2011/12/bab-v-sistem-operasi-penjadwalan-proses.html
Read more ...

Pengontrolan LED Via Port USB Tanpa Konverter USB/RS232

Rabu, 06 Mei 2015


Perlahan tapi pasti, port USB telah "mengalahkan" popularitas port serial (COM) dan port paralel (LPT). Kini, komputer-komputer dan laptop terbaru tidak menyertakan lagi port serial, apalagi port paralel. Beberapa tipe motherboard masih menyertakakan sebuah port serial (COM1).Namun demikian, kini hampir semua peralatan elektronik memiliki port USB untuk berkomunikasi dengan piranti elektronik lainnya.

Port USB memang memiliki banyak kelebihan dibandingkan dengan port serial dan port paralel. Terlepas dari sudut pandang aplikasi, port USB lebih cepat dan lebih ringkas dibandingkan port serial maupun port paralel. Port USB juga menyediakan catu daya 5V DC dengan kemampuan arus maksimum 500mA untuk menyuplai perangkat elektronik berbasis USB.

V-USB adalah sebuah software implementasi protokol USB berkecepatan rendah untuk mikrokontroller ATMEL AVR sehingga memungkinkan untuk membuat piranti USB dengan sebagian besar mikrokontroller AVR tanpa tambahan chip lain. V-USB dapat di download di www.obdev.at.

libusb-win32 adalah library Win32 yang memberikan akses kepada user (bukan admin) untuk mengakses piranti-piranti USB secara generik tanpa perlu membuat kode-kode program kernel. Dengan libusb, kita dapat menggunakan fungsi-fungsi API untuk transfer data Bulk, Control, Interrupt, dan Isochronous. Library dan driver libusb dapat di download di http://sourceforge.net/apps/trac/libusb-win32/wiki.

Skematik 

Pada eksperimen ini mengunakan mikrokontroller ATtiny2313V dengan kristal 12MHz dengan sebuah LED aktif high yang terhubung ke pin PD6. Berikut adalah skematik rangkaian eksperimen USB LED.



Berikut adalah program mikrokontroller ATtiny2313 untuk pengontrolan LED dari port USB
#define ON 1
#define OFF 0
#define LED(n) ((n)==(OFF) ? (PORTD&=~_BV(PD6)) : (PORTD|=_BV(PD6))) uchar   usbFunctionSetup(uchar data[8])
{
  usbRequest_t    *rq = (void *) data;   if (rq->bRequest==4)
      LED(ON);
  else if (rq->bRequest==5)
      LED(OFF);
} /***  P R O G R A M  U T A M A  ***/
int main(void)
{
    //Inisialisasi PORT D
    PORTD = 0;       
    DDRD = ~(1 << 2);     //Inisialisasi PORT B
    PORTB = 0;         
    DDRB = ~USBMASK;      //Inisialisasi Driver USB
    usbInit();     //Aktifkan fungsi interupsi
    sei();     for(;;)
    {
          usbPoll();    //Pantau terus, apakah ada permintaan dari Host
          _delay_ms(12);
    }
    return 0;
}

Untuk mengontrol LED melalui PC diperlukan sebuah antarmuka yang pada eksperimen ini menggunakan bahasa C. Kompiler yang digunakan yakni Pelles C. Berikut adalah gambar dari program USB LED Control

Jika button LED ON di klik, maka program akan mengirimkan request ke USB Device yakni ATtiny2313 yang sudah ditanami program USB Protocol. Demikian juga dengan button LED OFF di klik, maka program akan mengirimkan request ke ATtiny2313 dengan ID request yang berbeda.

Untuk dapat berinteraksi dengan ATtiny2313. maka driver libusb perlu diinstal terlebih dahulu. Jika komputer telah terinstal piranti USB yang menggunakan libusb sebagai drivernya, contoh AVR USB. maka modul akan dikenal sebagai USBasp.

Berikut ini adalah program Demo USB LED Control dalam bahasa C
static INT_PTR CALLBACK MainDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    unsigned char        nBytes;
    unsigned char        buffer[64];
    switch (uMsg)
    {
        case WM_INITDIALOG:
            //Inisialisasi port USB
            usb_init();             //Buka komunikasi USB dengan Modul USBLED
            if(usbOpenDevice(&handle, USBDEV_SHARED_VENDOR, "Teknik Elektro Links", USBDEV_SHARED_PRODUCT, "TELINKS-USB LED") != 0)
            {
                MessageBox(hwndDlg, "USBLED Error: Kode Vendor dan Product Salah!", "Error!", MB_ICONERROR);
                exit(1);
            }
            return TRUE;         case WM_COMMAND:
            switch (GET_WM_COMMAND_ID(wParam, lParam))
            {
                case ID_LED_ON:
                    nBytes = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN,
                    PSCMD_ON, 0, 0, (char *)buffer, sizeof(buffer), 5000);
                    return TRUE;                 case ID_LED_OFF:
                    nBytes = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN,
                    PSCMD_OFF, 0, 0, (char *)buffer, sizeof(buffer), 5000);
                    return TRUE;                 case IDOK:
                    EndDialog(hwndDlg, TRUE);
                    return TRUE;
            }
            break;         case WM_CLOSE:
            EndDialog(hwndDlg, 0);
            return TRUE;     }     return FALSE;
}
Program menggunakan fungsi usb_control_msg() untuk mengirimkan request kepada modul USBLED. Identifikasi perintah LED ON dan LED OFF diletakkan pada ID-Request yang dalam hal ini angka 4 (PSCMD_ON) untuk LED ON dan angka 5 (PSCMD_OFF) untuk LED OFF.

Demikian sedikit informasi mengenai pengontrolan LED melalui port USB, semoga bermanfaat.

sumber :  http://fajar-el-ridikc.blogspot.com/#ixzz3XQ7DkMTJ
Read more ...