Rabu, 24 Februari 2010

interupsi

INTERUPSI

Kelompok : Muhammad Muchlis
Pitriantoro Apriadi
Muchamad ikbal
Putut R
Januar adi
Muhammad sobirin
Fangky B.





Interupsi
Seperti namanya, interupsi adalah suatu kejadian yang akan menghentikan sementara jalan program saat itu. Dengan interupsi, suatu alur program dapat dihentikan sementara untuk menjalankan suatu subrutin, dan kemudian melanjutkan aliran program secara normal seperti tidak pernah ada interupsi. Subrutin ini yang disebut dengan interrupt handler, dan hanya dijalankan jika terjadi suatu kejadian khusus (event). Kejadian ini bisa berupa timer yang mengalami overflow, penerimaan karakter melalui port serial, mengirimkan karakter melalui port serial, atau salah satu dari dua kejadian eksternal. Mikrokontroler 89C51 bisa dikonfigurasi untuk menangani interupsi yang disebabkan oleh salah satu dari kejadian.
Dengan interupsi ini, dapat dengan mudah dimonitor kejadian-kejadian yang diinginkan. Tanpa interupsi maka proses monitor ini dilakukan manual dengan pengecekan berulang. Proses pengecekan manual ini akan membuat program menjadi panjang dan lebih rumit.
Interupsi dalam teknologi informasi merujuk kepada sebuah permintaan terhadap layanan dari CPU yang dibuat baik secara eksternal oleh sebuah perangkat keras (sebagai contoh: oleh disk drive, atau port I/O) atau secara internal oleh CPU itu sendiri. Interupsi perangkat keras eksternal digunakan untuk beberapa situasi seperti halnya ketika sebuah karakter telah diterima dari sebuah port I/O tertentu dan harus diproses oleh CPU, disk drive yang telah siap untuk mentransfer sekumpulan data, atau system timer yang berdetak. Sementara itu, interupsi perangkat keras internal terjadi ketika sebuah program mencoba sesuatu yang tidak mungkin, seperti halnya mencoba untuk mengakses alamat memori yang tidak ada atau membagi sebuah bilangan dengan angka nol. Interupsi perangkat keras umumnya diberi tingkatannya yang disusun berdasarkan prioritasnya dan tingkat kepentingannya. Tingkatan interupsi tertinggi diberikan kepada sebuah jenis interupsi yang disebut sebagi Non-Maskable Interrupt (NMI), yang mengindikasikan kesalahan yang serius, seperti halnya kerusakan/kegagalan memori atau perangkat lain yang harus dilayani secara langsung oleh prosesor.

Kejadian-kejadian yang Membangkitkan Interupsi
Dalam keluarga 8051, ada beberapa kejadian yang dapat membangkitkan interupsi, yaitu:
1. Timer 0 overflow
2. Timer 1 overflow
3. Penerimaan / Pengiriman data secara serial
4. Kejadian eksternal 0
5. Kejadian eksternal 1
Dengan demikian, perlu dibedakan interupsi yang terjadi karena kejadian-kejadian yang berbeda. Hal ini bisa diwujudkan dengan adanya alamat pasti bagi sebuah rutin interupsi untuk masing-masing interupsi.


Daftar Alamat Rutin Interupsi
Interupsi Flag Alamat Rutin
Eksternal 0 IE0 0003h
Timer 0 TF0 000Bh
Eksternal 1 IE1 0013h
Timer 1 TF1 001Bh
Serial R1/T1 0023h
Dengan referensi tabel di atas, dapat dilihat bahwa jika TIMER0 mengalami overflow (bit TF0 logika 1), maka program utama akan ditunda sementara dan kontrol program akan melompat ke alamat 0003h.
Menyeting Interupsi
Pada saat awal dihidupkan (power on), semua interupsi dimatikan. Jadi, meskipun bit TF0 diset (interupsi timer 0 diaktifkan), mikrokontroler 89C51 tidak akan menjalankan rutin interupsi. Sebuah program harus dibuat dan dijalankan untuk mengaktifkan dan menspesifikasikan interupsi mana yang diinginkan. Hal ini dapat dilakukan dengan mengkonfigurasi SFR IE (Interrupt Enable) yang berada di alamat A8h. Konfigurasi bit-bit SFR IE yang mengatur enable dari konfigurasi interupsi tercantum pada tabel di bawah ini.
Konfigurasi Bit-bit SFR IE
Bit Nama Alamat Fungsi
7 EA AFh Global enable/disable interupsi
6 - AEh Tidak didefinisikan
5 - ADh Tidak didefinisikan
4 ES ACh Enable interupsi serial
3 ET1 ABh Enable interupsi timer 1
2 EX1 AAh Enable interupsi eksternal 1
1 ET0 A9h Enable interupsi timer 0
0 EX0 A8 Enable interupsi eksternal 0
Sebelum semua interupsi dijalankan, bit 7 dari SFR IE harus diset terlebih dahulu. Global enable/disable interupsi ini menyebabkan semua interupsi enable atau disable. Jika bit 7 IE ini dinolkan, tidak akan ada satu interupsi pun yang terjadi. Prosedur yang benar adalah dengan mengeset jenis interupsi yang diinginkan dan kemudian mengeset bit 7 IE, barulah interupsi akan berjalan dengan baik.
Prioritas Interupsi
Mikrokontroler 89C51 menawarkan dua macam prioritas interupsi, yaitu prioritas tinggi dan prioritas rendah. Dengan demikian, dapat ditentukan suatu interupsi memiliki prioritas pengerjaan lebih dahulu daripada interupsi-interupsi yang lain yang bekerja saat itu. Sebagai contoh, interupsi timer 1 diaktifkan untuk secara otomatis memanggil sebuah rutin saat timer 1 mengalami kondisi overflow. Di samping itu, interupsi serial juga diaktifkan untuk memanggil suatu rutin saat ada sebuah karakter diterima dalam port serial. Dalam kasus ini diinginkan bahwa penerimaan karakter dari port serial lebih penting daripada interupsi timer. Jadi seandainya interupsi timer 1 sedang bekerja dan terjadi penerimaan karakter, maka rutin interupsi timer 1 tersebut akan diinterupsi oleh interupsi port serial dan akan ditunda sementara untuk mengerjakan rutin interupsi port serial ini. Setelah pengerjaan rutin interupsi serial selesai, maka kontrol program akan kembali ke rutin interupsi timer 1. Yang dikerjakan di sini adalah mengeset prioritas interupsi serial lebih tinggi daripada prioritas interupsi timer. Prioritas interupsi ini dikontrol oleh SFR IP dengan alamat B8h yang memiliki konfigurasi bit-bit sebagaimana tercantum dalam tabel di bawah ini.
Konfigurasi Bit-bit SFR IP
Bit Nama Alamat Fungsi
7 - Tidak terdefinisi
6 - Tidak terdefinisi
5 - Tidak terdefinisi
4 PS BCh Prioritas interupsi serial
3 PT1 BBh Prioritas interupsi timer 1
2 PX1 BAh Prioritas interupsi eksternal 1
1 PT0 B9h Prioritas interupsi timer 0
0 PX0 B8h Prioritas interupsi eksternal 0
Pemakaian prioritas interupsi di atas memiliki beberapa peraturan yang tercantum di bawah ini:
1. Tidak ada interupsi yang meninterupsi interupsi prioritas tinggi.
2. Interupsi prioritas tinggi boleh menginterupsi interupsi prioritas rendah.
3. Interupsi prioritas rendah boleh terjadi jika tidak ada interupsi lain yang sedang dijalankan.
4. Jika dua interupsi terjadi pada waktu bersamaan, interupsi yang memiliki prioritas lebih tinggi akan dikerjakan terlebih dahulu. Jika keduanya memiliki prioritas sama, maka interupsi yang berada pada urutan polling akan dikerjakan terlebih dahulu.
Mikrokontroler 89C51 secara otomatis akan menguji apakah sebuah interupsi bisa terjadi setelah setiap instruksi dikerjakan. Pengecekan ini mengikuti suatu alur yang disebut dengan Polling Sequence dengan urutan:
1. Interupsi Eksternal 0
2. Interupsi Timer 0
3. Interupsi Eksternal 1
4. Interupsi Timer 1
5. Interupsi serial
Ini berarti jika sebuah interupsi serial terjadi pada waktu bersamaan dengan interupsi eksternal 0, maka interupsi eksternal 0 akan dikerjakan terlebih dahulu dan interupsi serial baru akan dikerjakan setelah pengerjaan rutin interupsi eksternal 0 selesai dilakukan.

Selasa, 16 Februari 2010

SAP (sistem waktu nyata)

Sistem Waktu – Nyata (Real - Time) :
Teori dan Implementasinya dalam Bahasa C dan Ada
Penulis : BAMBANG SRIDADI, Ir., MSc.
Penerbit : INFORMATIKA, Bandung, 2010.
Sistem waktu – nyata (real – time system) begitu pesat berkembang dan aplikasinya
telah meluas di berbagai bidang. Mesin ATM (Automatic Teller Machine) bank, sistem
informasi saham, pemesanan tiket pesawat terbang, beberapa mobil berteknologi EFI
(Electronic Fuel Injection) dan VVT-i (Variable Valve Timing with Intelligence), sistem
jajak pendapat pemilu capres / cawapres merupakan beberapa contoh praktis sistem waktu -
nyata yang kita jumpai setiap hari. Pengalaman penulis dengan sistem waktu - nyata
dimulai pada tahun 1988 ketika mulai mengenal dan belajar bahasa komputer Ada,
kemudian berlanjut dengan ikut serta dalam pengembangan simulasi flight control fly - by -
wire (FbW) pesawat terbang N250 menggunakan sistem operasi RTU (Real – Time UNIX)
(1995), simulasi olah yudha (war game) (2000), simulasi helikopter Sikorsky UH60 Black
Hawk (2003), dan simulasi pesawat terbang CN235 pada sistem operasi waktu – nyata
VxWorks (2004), serta simulasi pesawat tempur Bae Mk128 Hawk yang ditulis dalam
bahasa komputer Ada (2007).
Untuk mengenali dan mempelajari sistem waktu - nyata, pembaca bisa membaca buku
ini. Buku ini ditulis dengan maksud agar dapat digunakan oleh siapa saja, dengan harapan
dapat membantu mempermudah pembaca dalam memahami sistem waktu - nyata yang
memiliki lingkup sangat luas. Bermacam – macam topik tentang sistem waktu - nyata
beserta aplikasinya dibahas dalam buku ini. Selain itu, materi sistem waktu - nyata juga
dilengkapi dengan contoh implementasi program menggunakan bahasa komputer C / C++
dan Ada yang kiranya akan banyak menolong pembaca dalam memahami materi. Disini
penulis menggunakan berbagai kompiler seperti Microsoft Visual C++, Borland Turbo
C++ dan GNAT (GNU Ada Compiler).
Di Indonesia, materi sistem waktu – nyata diberikan di program studi Teknik
Informatika, Teknik Komputer, Teknik Elektro, Teknik Fisika, dan lain – lain. Sebagai
prasyarat untuk mempelajari sistem waktu - nyata, pembaca disarankan sudah memahami
organisasi dan arsitektur komputer, sistem operasi, rekayasa perangkat - lunak, bahasa
pemrograman C / C++ dan Ada. Penulis memilih implementasi dengan menggunakan
bahasa pemrograman C / C++ dan Ada, karena disamping bahasa C dan C++ serta Ada
mendukung prinsip sumber terbuka (open source), juga pembaca dapat mempelajari lebih
dalam bahkan dapat mengembangkan penelitian sendiri algoritma – algoritma dan prosedur
- prosedur yang ada dalam implementasi sistem waktu - nyata.



Disebut juga dengan Sistem waktu nyata. Sistem yang harus menghasilkan respon yang tepat dalam batas waktu yang telah ditentukan. Jika respon komputer melewati batas waktu tersebut, maka terjadi degradasi performansi atau kegagalan sistem. Sebuah Real time system adalah sistem yang kebenarannya secara logis didasarkan pada kebenaran hasil-hasil keluaran sistem dan ketepatan waktu hasil-hasil tersebut dikeluarkan. Aplikasi penggunaan sistem seperti ini adalah untuk memantau dan mengontrol peralatan seperti motor, assembly line, teleskop, atau instrumen lainnya. Peralatan telekomunikasi dan jaringan komputer biasanya juga membutuhkan pengendalian secara Real time.
Berdasarkan batasan waktu yang dimilikinya, Real time system ini dibagi atas:
1.Hard Real time
2. Soft Real time
3. Firm Real time
Komponen dari Real time system ini adalah:
1. Perangkat keras,
2. Sistem Operasi Real time,
3. Bahasa Pemrograman Real time,
4. Sistem Komunikasi.




































Sistem Waktu Nyata
Pada sub bab ini, kami akan mencoba sedikit menggambarkan fasilitas penjadualan yang dibutuhkan untuk mendukung komputasi real-time dengan bantuan sistem komputer.
Suatu sistem komputasi dinamakan real-time jika sistem tersebut dapat mendukung eksekusi program/aplikasi dengan waktu yang memiliki batasan. Dengan kata lain, sistem real-time harus memenuhi kondisi berikut:
• Batasan waktu: memenuhi deadline, artinya bahwa aplikasi harus menyelesaikan tugasnya dalam waktu yang telah dibatasi.
• Dapat diprediksi: artinya bahwa sistem harus bereaksi terhadap semua kemungkinan kejadian selama kejadian tersebut dapat diprediksi.
• Proses bersamaan: artinya jika ada beberapa proses yang terjadi bersamaan, maka semua deadline nya harus terpenuhi.
Komputasi real-time ada dua jenis, yaitu sistem Hard Real-time dan sistem Soft Real-time.
Sistem Hard Real-Time
Sistem hard real-time dibutuhkan untuk menyelesaikan critical task dengan jaminan waktu tertentu. Jika kebutuhan waktu tidak terpenuhi, maka aplikasi akan gagal. Dalam definisi lain disebutkan bahwa kontrol sistem hard real-time dapat mentoleransi keterlambatan tidak lebih dari 100 mikro detik. Secara umum, sebuah proses di kirim dengan sebuah pernyataan jumlah waktu dimana dibutuhkan untuk menyelesaikan atau menjalankan I/O. Kemudian penjadual dapat menjamin proses untuk selesai atau menolak permintaan karena tidak mungkin dilakukan. Mekanisme ini dikenal dengan resource reservation. Oleh karena itu setiap operasi harus dijamin dengan waktu maksimum. Pemberian jaminan seperti ini tidak dapat dilakukan dalam sistem dengan secondary storage atau virtual memory, karena sistem seperti ini tidak dapat meramalkan waktu yang dibutuhkan untuk mengeksekusi suatu proses.
Contoh dalam kehidupan sehari-hari adalah pada sistem pengontrol pesawat terbang. Dalam hal ini, keterlambatan sama sekali tidak boleh terjadi, karena dapat berakibat tidak terkontrolnya pesawat terbang. Nyawa penumpang yang ada dalam pesawat tergantung dari sistem ini, karena jika sistem pengontrol tidak dapat merespon tepat waktu, maka dapat menyebabkan kecelakaan yang merenggut korban jiwa.
Sistem Soft Real-Time
Komputasi soft real-time memiliki sedikit kelonggaran. Dalam sistem ini, proses yang kritis menerima prioritas lebih daripada yang lain. Walaupun menambah fungsi soft real-time ke sistem time sharing mungkin akan mengakibatkan ketidakadilan pembagian sumber daya dan mengakibatkan delay yang lebih lama, atau mungkin menyebabkan starvation, hasilnya adalah tujuan secara umum sistem yang dapat mendukung multimedia, grafik berkecepatan tinggi, dan variasi tugas yang tidak dapat diterima di lingkungan yang tidak mendukunng komputasi soft real-time.
Contoh penerapan sistem ini dalam kehidupan sehari-hari adalah pada alat penjual/pelayan otomatis. Jika mesin yang menggunakan sistem ini telah lama digunakan, maka mesin tersebut dapat mengalami penurunan kualitas, misalnya waktu pelayanannya menjadi lebih lambat dibandingkan ketika masih baru. Keterlambatan pada sistem ini tidak menyebabkan kecelakaan atau akibat fatal lainnya, melainkan hanya menyebabkan kerugian keuangan saja. Jika pelayanan mesin menjadi lambat, maka para pengguna dapat saja merasa tidak puas dan akhirnya dapat menurunkan pendapatan pemilik mesin.
Untuk lebih memahami tentang perbedaan kedua sistem ini dapat diperhatikan dari diagram dibawah ini.
Gambar 3-25. Grafik Hard Real-Time

Sumber: http://www.ncst.ernet.in/education/pgdst/coosfac/slides/rtos.pdf per Desember 2003.
Gambar 3-26. Grafik Soft Real-Time

Sumber: http://www.ncst.ernet.in/education/pgdst/coosfac/slides/rtos.pdf; per Desember 2003.
Setelah batas waktu yang diberikan telah habis, pada sistem hard real-time, aplikasi yang dijalankan langsung dihentikan. Akan tetapi, pada sistem soft real-time, aplikasi yang telah habis masa waktu pengerjaan tugasnya, dihentikan secara bertahap atau dengan kata lain masih diberikan toleransi waktu.
Mengimplementasikan fungsi soft real time membutuhkan design yang hati-hati dan aspek yang berkaitan dengan sistem operasi. Pertama, sistem harus punya prioritas penjadualan, dan proses real-time harus memiliki prioritas tertinggi, tidak melampaui waktu, walaupun prioritas non real time dapat terjadi. Kedua, dispatch latency harus lebih kecil. Semakin kecil latency, semakin cepat real time proses mengeksekusi.
Untuk menjaga dispatch tetap rendah, kita butuh agar system call untuk preemptible. Ada beberapa cara untuk mencapai tujuan ini. Pertama adalah dengan memasukkan preemption points di durasi system call yang lama, yang memeriksa apakah prioritas utama butuh untuk dieksekusi. Jika sudah, maka contex switch mengambil alih, ketika high priority proses selesai, proses yang diinterupsi meneruskan dengan system call. Points premption dapat diganti hanya di lokasi yang aman di kernel dimana kernel struktur tidak dapat dimodifikasi.
Metoda yang lain adalah dengan membuat semua kernel preemptible. Karena operasi yang benar dapat dijamin, semua struktur data kernel harus diproteksi dengan mekanisme sinkronisasi. Dengan metode ini, kernel dapat selalu di preemptible, karena setiap data kernel yang sedang di update diproteksi dengan pemberian prioritas yang tinggi. Jika ada proses dengan prioritas tinggi ingin membaca atau memodifikasi data kernel yang sedang dijalankan, prioritas yang tinggi harus menunggu sampai proses dengan prioritas rendah tersebut selesai. Situasi seperti ini dikenal dengan priority inversion. Kenyataanya, serangkaian proses dapat saja mengakses sumber daya yang sedang dibutuhkan oleh proses yang lebih tinggi prioritasnya. Masalah ini dapat diatasi dengan priority-inheritance protocol, yaitu semua proses yang sedang mengakses sumber daya mendapat prioritas tinggi sampai selesai menggunakan sumber daya. Setelah selesai, prioritas proses ini dikembalikan menjadi seperti semula.
Rangkuman
Proses
Sebuah proses adalah suatu program yang sedang dieksekusi. Proses lebih dari sebuah kode program tetapi juga mencakup program counter, stack, dan sebuah data section. Dalam pengeksekusiannya sebuah proses juga memiliki status yang mencerminkan keadaan dari proses tersebut. Status dari proses dapat berubah-ubah setiap saat sesuai dengan kondisinya. Status tersebut mungkin menjadi satu dari lima status berikut: new, ready, running, waiting, atau terminated. Setiap proses juga direpresentasikan oleh Proces Control Block (PCB) yang menyimpan segala informasi yang berkaitan dengan proses tersebut.
Sebuah proses, ketika sedang tidak dieksekusi, ditempatkan pada antrian yang sama. Disini ada dua kelas besar dari antrian dalam sebuah sistem operasi: permintaan antrian I/O dan ready queue. Ready queue memuat semua proses yang siap untuk dieksekusi dan yang sedang menunggu untuk dijalankan pada CPU. PCB dapat digunakan untuk mencatat sebuah ready queue. Penjadualan Long-term adalah pilihan dari proses-proses untuk diberi ijin menjalankan CPU. Normalnya, penjadualan long-term memiliki pengaruh yang sangat besar bagi penempatan sumber daya, terutama managemen memori. Penjadualan short-term adalah pilihan dari satu proses dari ready queue.
Proses-proses pada sistem dapat dieksekusi secara berkelanjutan. Disini ada beberapa alasan mengapa proses tersebut dapat dieksekusi secara berkelanjutan: pembagian informasi, penambahan kecepatan komputasi, modularitas, dan kenyamanan atau kemudahan. Eksekusi secara berkelanjutan menyediakan sebuah mekanisme bagi proses pembuatan dan penghapusan.
Pengeksekusian proses-proses pada sistem operasi mungkin dapat digolongkan menjadi proses yang mandiri dan kooperasi. Proses kooperasi harus memiliki beberapa alat untuk mendukung komunikasi antara satu dengan yang lainnya. Prinsipnya adalah ada dua rencana komplementer komunikasi: pembagian memori dan sistem pesan. Metode pembagian memori menyediakan proses komunikasi untuk berbagi beberapa variabel. Proses-proses tersebut diharapkan dapat saling melakukan tukar-menukar informasi seputar pengguna variabel yang terbagi ini. Pada sistem pembagian memori, tanggung jawab bagi penyedia komunikasi terjadi dengan programmer aplikasi; sistem operasi harus menyediakan hanya pembagian memori saja. Metode sistem pesan mengijinkan proses-proses untuk tukar-menukar pesan. Tanggung jawab bagi penyedia komunikasi ini terjadi dengan sistem operasi tersebut.
Thread
Threadadalah 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 pengguna, pembagian sumber daya proses, ekonomis, dan kemampuan untuk mengambil keuntungan dari arsitektur multiprosesor. Thread tingkat pengguna adalah thread yang tampak oleh programmer dan tidak diketahui oleh kernel. Thread tingkat pengguna secara tipikal dikelola oleh sebuah library thread di ruang pengguna. Thread tingkat kernel didukung dan dikelola oleh kernel sistem operasi. Secara umum, thread tingkat pengguna lebih cepat dalam pembuatan dan pengelolaan dari pada kernel thread. Ada 3 perbedaan tipe dari model yang berhubungan dengan pengguna dan kernel thread yaitu one-to one model, many-to-one model, many-to-many model.
• Model many to one: memetakan beberapa pengguna level thread hanya ke satu buah kernel thread.
• Model one to one: memetakan setiap thread pengguna ke dalam satu kernel thread berakhir.
• Model many to many: mengijinkan pengembang untuk membuat thread pengguna sebanyak mungkin, konkurensi tidak dapat tercapai karena hanya satu thread yang dapat dijadualkan oleh kernel dalam satu waktu.
Thread cancellation adalah tugas untuk memberhentikan thread sebelum ia menyelesaikan tugasnya. Thread yang akan diberhentikan disebut target thread
Pemberhentian target thread dapat terjadi melalui 2 cara yang berbeda
• Asynchronous cancellation: suatu thread seketika itu juga memberhentikan target thread.
• Deffered cancellation: target thread secara periodik memeriksa apakah dia harus berhenti, cara ini memperbolehkan target thread untuk memberhentikan dirinya sendiri secara terurut.
Thread Pools adalah cara kerja dengan membuat beberapa thread pada proses startup dan menempatkan mereka ke pools.
Keuntungan Thread Pools
• Biasanya lebih cepat untuk melayani permintaan dengan thread yang ada dibanding dengan menunggu thread baru dibuat.
• Thread pool membatasi jumlah thread yang ada pada suatu waktu. Hal ini penting pada sistem yang tidak dapat mendukung banyak thread yang berjalan secara concurrent
Thread di Linux dianggap sebagai task. System call yang dipakai antara lain fork dan clone. Perbedaan antara keduanya adalah clone selain dapat membuat duplikat dari proses induknya seperti fork, juga dapat berbagi ruang alamat yang sama antara proses induk dengan proses anak. Seberapa besar kedua proses tersebut dapat berbagi tergantung banyaknya flag yang ditandai.
Java adalah unik karena telah mendukung thread didalam tingkatan bahasanya. Semua program Java sedikitnya terdiri dari kontrol sebuah thread tunggal dan mempermudah membuat kontrol untuk multiple thread dengan program yang sama. JAVA juga menyediakan library berupa API untuk membuat thread, termasuk method untuk suspend dan resume suatu thread, agar thread tidur untuk jangka waktu tertentu dan menghentikan thread yang berjalan. Sebuah java thread juga mempunyai 4 kemungkinan keadaan, diantaranya: New, Runnable, Blocked dan Dead. Perbedaan API untuk mengelola thread seringkali mengganti keadaan thread itu sendiri.
Penjadualan CPU
Penjadualan CPU adalah pemilihan proses dari antrian ready untuk dapat dieksekusi. Algoritma yang digunakan dalam penjadulan CPU ada bermacam-macam. Diantaranya adalah First Come Firsrt Serve (FCFS), merupakan algoritma sederhana dimana proses yang datang duluan maka dia yang dieksekusi pertama kalinya. Algoritma lainnya adalah Shorthest Job First (SJF), yaitu penjadulan CPU dimana proses yang paling pendek dieksekusi terlebih dahulu.
Kelemahan algoritma SJF adalah tidak dapat menghindari starvation. Untuk itu diciptakan algoritma Round Robin (RR). Penjadulan CPU dengan Round Robin adalah membagi proses berdasarkan waktu tertentu yaitu waktu quantum q. Setelah proses menjalankan eksekusi selama q satuan waktu maka akan digantikan oleh proses yang lain. Permasalahannya adalah bila waktu quantumnya besar sedang proses hanya membutuhkan waktu sedikit maka akan membuang waktu. Sedang bila waktu quantum kecil maka akan memakan waktu saat context-switch.
Penjadualan FCFS adalah nonpreemptive yaitu tidak dapat diinterupsi sebelum proses dieksekusi seluruhnya. Penjadualan RR adalah preemtive yaitu dapat dieksekusi saat prosesnya masih dieksekusi. Sedangkan penjadualan SJF dapat berupa nonpreemtive dan preemtive.

Real Time Software
Posted by errissya rasywir on November 5, 2009
Program-program yang memonitor, menganalisis, mengontrol kejadian dunia nyatapada saat terjadinya dalam rentang waktu yang tetap melalui jangkauan I milidetik sampai 1 menit.
Elemen dari Real Time Software:
• Komponen pengumpulan data, yang mengumpulkan dan menformatinformasi dari lingkungan ekternal.
• Komponen analisa, yang mentransformasikan informasi yang diperlukan atau aplikasi tersebut.
• Komponen kontrol/output, yang memberikan respon terhadap lingkungan eksternal.
• Komponen monitoring, yang mengkoordinasi komponen-komponen lainnya ,sehingga bisa memberikan respon yang Real Time (biasanya antara 1 milidetik/1 menit)

Komponen Sistem Waktu-Nyata :
1. Perangkat keras
2. Sistem operasi waktu-nyata
3. Bahasa pemrograman waktu-nyata
4. Sistem komunikasi Perangkat keras komputer
Tiga karakteristik yang membedakan antara pengembangan perangkat lunak real-time dari kerja rekayasa perangkat lunak yang lain:
• Desain system real-time dibatasi oleh sumber daya, sumber utama dari real-time adalah waktu. Untuk tambahan, sumber daya system ysng lsin, seperti ukuran memori, dapat dipertukarkan dengan waktu untuk mencapai sasaran dari system.
• System real-time padat, tetapi kompleks. Sebenarnya system real-time yang memiliki persentase kode yang kecil inilah yang paling kompleks(dari suatu titik pandang algoritmik).
• System real-time sering bekerja tanpa kehadiran pemakai manusia. Sistem real-time harus dapat mendeteksi masalah-masalah yang menyebabkan kegagalan dan secara otomatis mengatasi masalah-masalah tersebut sebelum terjadi kerusakan.


SISTEM REAL-TIME
Sistem resl-time memunculkan beberapa aksi sebagai respon terhadap kejadian-kejadian eksternal. Unutk melakukan fungsi tersebut , sistem melakukan akuisisi data dengan kecepatan tinggi dan kontrol dibawah batasan waktu dan reliabilitas ysng ketat.
Kinerja real-time ditentukan terutama oleh :
1. waktu respon.
Waktu respon sistem adalah waktu dimana sebuah sistem harus mendeteksi sebuah kejadian eksternal atau internal dan merespon dengan sebuah aksi. Kejadian yang menentukan respon adalah pemrosesan informasi yang melibatkan algoritma yang kompleks.

1. Laju transfer
Laju transfer data menunjukkan seberapa cepat data serial atau paralel, dan data analog dan digital harus digerakkan masuk atau keluar dari sistem.

PENANGANAN INTERUPSI
Karakterisitik untuk membedakan sistem reak-time dari tipe yang lain adalah penanganan interupsi. Sistem real-time harus merespon ke stimulus eksternal – interupsi- denagn waktu yang telah ditentukan oleh dunia eksternal. Karena ada banyak stimulus(interupsi) maka prioritas dan interupsi prioritas harus dibangun. Jadi, tugas yang paling penting harus dilayani dalam batasan waktu yang telah ditentukan tanpa memperhatikan kejadian yang lain.


Karakteristik Sistem Waktu Nyata
Timeliness – sistem waktu nyata merupakan fungsi dari waktu. Berkaitan dengan data transfer rate dan throughput. Terdiri antara lain dari :
• waktu service – waktu netto yang dipergunakan untuk merespons satu masukan yang diberikan
• Waktu latency – interval antara waktu kemunculan input dengan waktu mulai diberikan service terhadap input tersebut.
• Dynamic internal structure – kebanyakan sistem waktu nyata dibutuhkan untuk memantau lingkungan yang tergantung pada waktu. Ini mengakibatkan komponen sistem waktu nyata
harus dapat melakukan-rekonfigurasi dinamis untuk menyesuaikan dengan kondisi ekstemal lingkungan (yang dinamis juga). Dengan keterbatasan-:sumber (kapasitas prosesor, memori) maka biasanya diperlukan pembentukan dan pemusnahani komponen-komponen perangkat lunak secara: dinamis pula (otomatis)
• Reactiveness – kondisi yang secara terus menerus dapat berespons terhadap kejadian yang beragam dimana urutan dan waktu kedatangannya tidak selalu dapat diprediksi
• Concurrency – pada setiap saat, multiple simultaneous kegiatan harus dapat dilaksanakan dalam sistem waktu nyata. Aspek synchronous , asynchronous ,communication, interrupt handling dan locking menjadi bagian penting dalam menyelesaikan masalah konkurensi ini.
• Distrbution – kondisi yang memungkinkan untuk melakukan multiple computing sites cooperatively untuk menyelesaikan satu fungsi yang umum

YANG MO INFO