Tampilkan postingan dengan label mateRi. Tampilkan semua postingan
Tampilkan postingan dengan label mateRi. Tampilkan semua postingan

Rabu, 20 Oktober 2010

Pemrograman JAVA

Diposting oleh zaki di 19.19 0 komentar
Java' adalah bahasa pemrograman yang dapat dijalankan di berbagai komputer termasuk telepon genggam. Dikembangkan oleh Sun Microsystems dan diterbitkan tahun 1995. Java tidak boleh disalahpahami sebagai JavaScript. JavaScript adalah bahasa scripting yang digunakan oleh web browser.
•
sejarah perkembangan Java
Bahasa pemrograman Java pertama lahir dari The Green Project, yang berjalan selama 18 bulan, dari awal tahun 1991 hingga musim panas 1992. Proyek tersebut belum menggunakan versi yang dinamakan Oak. Proyek ini dimotori oleh Patrick Naughton, Mike Sheridan, James Gosling dan Bill Joy, beserta sembilan pemrogram lainnya dari Sun Microsystems. Salah satu hasil proyek ini adalah maskot Duke yang dibuat oleh Joe Palrang.
Pertemuan proyek berlangsung di sebuah gedung perkantoran Sand Hill Road di Menlo Park. Sekitar musim panas 1992 proyek ini ditutup dengan menghasilkan sebuah program Java Oak pertama, yang ditujukan sebagai pengendali sebuah peralatan dengan teknologi layar sentuh (touch screen), seperti pada PDA sekarang ini. Teknologi baru ini dinamai "*7" (Star Seven).
Setelah era Star Seven selesai, sebuah anak perusahaan Tv kabel tertarik ditambah beberapa orang dari proyek The Green Project. Mereka memusatkan kegiatannya pada sebuah ruangan kantor di 100 Hamilton Avenue, Palo Alto.
Perusahaan baru ini bertambah maju: jumlah karyawan meningkat dalam waktu singkat dari 13 menjadi 70 orang. Pada rentang waktu ini juga ditetapkan pemakaian Internet sebagai medium yang menjembatani kerja dan ide di antara mereka. Pada awal tahun 1990-an, Internet masih merupakan rintisan, yang dipakai hanya di kalangan akademisi dan militer.
Mereka menjadikan perambah (browser) Mosaic sebagai landasan awal untuk membuat perambah Java pertama yang dinamai Web Runner, terinsipirasi dari film 1980-an, Blade Runner. Pada perkembangan rilis pertama, Web Runner berganti nama menjadi Hot Java.
Pada sekitar bulan Maret 1995, untuk pertama kali kode sumber Java versi 1.0a2 dibuka. Kesuksesan mereka diikuti dengan untuk pemberitaan pertama kali pada surat kabar San Jose Mercury News pada tanggal 23 Mei 1995.
Sayang terjadi perpecahan di antara mereka suatu hari pada pukul 04.00 di sebuah ruangan hotel Sheraton Palace. Tiga dari pimpinan utama proyek, Eric Schmidt dan George Paolini dari Sun Microsystems bersama Marc Andreessen, membentuk Netscape.
Nama Oak, diambil dari pohon oak yang tumbuh di depan jendela ruangan kerja "bapak java", James Gosling. Nama Oak ini tidak dipakai untuk versi release Java karena sebuah perangkat lunak sudah terdaftar dengan merek dagang tersebut, sehingga diambil nama penggantinya menjadi "Java". Nama ini diambil dari kopi murni yang digiling langsung dari biji (kopi tubruk) kesukaan Gosling. Konon kopi ini berasal dari Pulau Jawa. Jadi nama bahasa pemrograman Java tidak lain berasal dari kata Jawa (bahasa Inggris untuk Jawa adalah Java).
Versi Awal
Versi awal Java ditahun 1996 sudah merupakan versi release sehingga dinamakan Java Versi 1.0. Java versi ini menyertakan banyak paket standar awal yang terus dikembangkan pada versi selanjutnya:
• java.lang: Peruntukan kelas elemen-elemen dasar.
• java.io: Peruntukan kelas input dan output, termasuk penggunaan berkas.
• java.util: Peruntukan kelas pelengkap seperti kelas struktur data dan kelas kelas penanggalan.
• java.net: Peruntukan kelas TCP/IP, yang memungkinkan berkomunikasi dengan komputer lain menggunakan jaringan TCP/IP.
• java.awt: Kelas dasar untuk aplikasi antarmuka dengan pengguna (GUI)
• java.applet: Kelas dasar aplikasi antar muka untuk diterapkan pada penjelajah web.

Kelebihan
• Multiplatform. Kelebihan utama dari Java ialah dapat dijalankan di beberapa platform / sistem operasi komputer, sesuai dengan prinsip tulis sekali, jalankan di mana saja. Dengan kelebihan ini pemrogram cukup menulis sebuah program Java dan dikompilasi (diubah, dari bahasa yang dimengerti manusia menjadi bahasa mesin / bytecode) sekali lalu hasilnya dapat dijalankan di atas beberapa platform tanpa perubahan. Kelebihan ini memungkinkan sebuah program berbasis java dikerjakan diatas operating system Linux tetapi dijalankan dengan baik di atas Microsoft Windows. Platform yang didukung sampai saat ini adalah Microsoft Windows, Linux, Mac OS dan Sun Solaris. Penyebanya adalah setiap sistem operasi menggunakan programnya sendiri-sendiri (yang dapat diunduh dari situs Java) untuk meninterpretasikan bytecode tersebut.
• OOP (Object Oriented Programming - Pemrogram Berorientasi Objek) yang artinya semua aspek yang terdapat di Java adalah Objek. Java merupakan salah satu bahasa pemrograman berbasis objek secara murni. Semua tipe data diturunkan dari kelas dasar yang disebut Object. Hal ini sangat memudahkan pemrogram untuk mendesain, membuat, mengembangkan dan mengalokasi kesalahan sebuah program dengan basis Java secara cepat, tepat, mudah dan terorganisir. Kelebihan ini menjadikan Java sebagai salah satu bahasa pemograman termudah, bahkan untuk fungsi fungsi yang advance seperti komunikasi antara komputer sekalipun.
• Perpustakaan Kelas Yang Lengkap, Java terkenal dengan kelengkapan library/perpustakaan (kumpulan program program yang disertakan dalam pemrograman java) yang sangat memudahkan dalam penggunaan oleh para pemrogram untuk membangun aplikasinya. Kelengkapan perpustakaan ini ditambah dengan keberadaan komunitas Java yang besar yang terus menerus membuat perpustakaan-perpustakaan baru untuk melingkupi seluruh kebutuhan pembangunan aplikasi.
• Bergaya C++, memiliki sintaks seperti bahasa pemrograman C++ sehingga menarik banyak pemrogram C++ untuk pindah ke Java. Saat ini pengguna Java sangat banyak, sebagian besar adalah pemrogram C++ yang pindah ke Java. Universitas-universitas di Amerika Serikat juga mulai berpindah dengan mengajarkan Java kepada murid-murid yang baru karena lebih mudah dipahami oleh murid dan dapat berguna juga bagi mereka yang bukan mengambil jurusan komputer.
• Pengumpulan sampah otomatis, memiliki fasilitas pengaturan penggunaan memori sehingga para pemrogram tidak perlu melakukan pengaturan memori secara langsung (seperti halnya dalam bahasa C++ yang dipakai secara luas).
Kekurangan
• Tulis sekali, perbaiki di mana saja - Masih ada beberapa hal yang tidak kompatibel antara platform satu dengan platform lain. Untuk J2SE, misalnya SWT-AWT bridge yang sampai sekarang tidak berfungsi pada Mac OS X.
• Mudah didekompilasi. Dekompilasi adalah proses membalikkan dari kode jadi menjadi kode sumber. Ini dimungkinkan karena kode jadi Java merupakan bytecode yang menyimpan banyak atribut bahasa tingkat tinggi, seperti nama-nama kelas, metode, dan tipe data. Hal yang sama juga terjadi pada Microsoft .NET Platform. Dengan demikian, algoritma yang digunakan program akan lebih sulit disembunyikan dan mudah dibajak/direverse-engineer.
• Penggunaan memori yang banyak. Penggunaan memori untuk program berbasis Java jauh lebih besar daripada bahasa tingkat tinggi generasi sebelumnya seperti C/C++ dan Pascal (lebih spesifik lagi, Delphi dan Object Pascal). Biasanya ini bukan merupakan masalah bagi pihak yang menggunakan teknologi terbaru (karena trend memori terpasang makin murah), tetapi menjadi masalah bagi mereka yang masih harus berkutat dengan mesin komputer berumur lebih dari 4 tahun.
Contoh Kode Program Sederhana Dalam Java
Contoh program Halo dunia yang ditulis menggunakan bahasa pemrograman Java adalah sebagai berikut:
// Outputs "Hello, world!" and then exits
public class HelloWorld {
public static void main(String args[]) {
System.out.println("Hello, world!");
}
}
Tahap Kompilasi Java
1. Tulis / Ubah. Pemrogram menulis program dan menyimpannya di media dalam bentuk berkas '.java'.
2. Kompilasi. Pengkompilasi membentuk bytecodes dari program menjadi bentuk berkas '.class'.
3. Muat. Pemuat kelas memuat bytecodes ke memori.
4. Verifikasi. Peng-verifikasi memastikan bytecodes tidak mengganggu sistem keamanan Java.
5. Jalankan. Penerjemah menerjemahkan bytecodes ke bahasa mesin.tidak bisa di pakai‘’
Integrated Development Environment
Banyak pihak telah membuat IDE (Integrated Development Environment - Lingkungan Pengembangan Terintegrasi) untuk Java. Yang populer saat ini (Juli 2006) antara lain:
• Dr. Java, program gratis yang dikembangkan oleh Universitas Rice, Amerika Serikat
• BlueJ, program gratis yang dikembangkan oleh Universitas Monash, Australia
• NetBeans (open source- Common Development and Distribution License (CDDL))
NetBeans disponsori Sun Microsystems, dan versi terkininya memilki Matisse, sebuah GUI Editor yang menurut pendapat umum merupakan yang terbaik.[rujukan?]
• Eclipse JDT (open source- Eclipse Public License)
Eclipse dibuat dari kerja sama antara perusahaan-perusahaan anggota 'Eclipse Foundation' (beserta individu-individu lain). Banyak nama besar yang ikut dalam 'Eclipse Foundation', termasuk IBM, BEA, Intel, Nokia, Borland. Eclipse bersaing langsung dengan Netbeans IDE. Plugin tambahan pada Eclipse jauh lebih banyak dan bervariasi dibandingkan IDE lainnya.
• IntelliJ IDEA (commercial, free 30-day trial)
• Oracle JDeveloper (free)
• Xinox JCreator (ada versi berbayar maupun free)
JCreator ditulis dalam C/C++ sehingga lebih cepat (dan menggunakan memori lebih sedikit) dari kebanyakan IDE.

Rabu, 24 Maret 2010

Aplikasi Sistem Waktu Nyata

Diposting oleh zaki di 09.44 0 komentar
Sistem waktu nyata adalah sebuah sistem komputer yang tidak hanya membutuhkan hasil komputasi yang benar tetapi juga harus sesuai dengan batas waktu yang dikehendaki. Hasil dari komputasi yang dilakukan (jika benar) mungkin tidak dalam nilai real.
Sistem waktu nyata banyak digunakan dalam bermacam-macam aplikasi. Sistem waktu nyata tersebut ditanam di dalam alat khusus seperti di kamera, mp3 players, serta di pesawat dan mobil. Sistem waktu nyata bisa dijumpai pada tugas-tugas yang mission critical, misal sistem untuk sistem pengendali reaktor nuklir atau sistem pengendali rem mobil. Juga sering dijumpai pada peralatan medis, peralatan pabrik, peralatan untuk riset ilmiah, dan sebagainya.
Multitasking dan Multithreading
a. Multitasking
Multitasking adalah istilah teknologi informasi dalam bahasa Inggris yang mengacu kepada sebuah metode dimana banyak pekerjaan atau dikenal juga sebagai proses diolah dengan menggunakan sumberdaya CPU yang sama. Dalam kasus sebuah komputer dengan prosesor tunggal, hanya satu instruksi yang dapat bekerja dalam satu waktu, berarti bahwa CPU tersebut secara aktif mengolah instruksi untuk satu pekerjaan tersebut.
Multitasking memecahkan masalah ini dengan menjadwalkan pekerjaan mana yang dapat berjalan dalam satu waktu, dan kapan pekerjaan yang lain menunggu untuk diolah dapat dikerjakan. Kondisi mengalokasikan CPU dari pekerjaan satu ke pekerjaan yang lain disebut context switch.
Ketika context switch terjadi dengan sangat cepat -- kondisi ini cukup untuk memberikan ilusi pengolahan-paralel. Bahkan dalam komputer yang memiliki lebih dari satu CPU (disebut multi-prosesor), Multitasking memperbolehkan lebih banyak pekerjaan dijalankan dibanding dengan jumlah CPU yang tersedia.
Dalam system waktu nyata, teradapat suatu alur multitasking yang disebut Loop Multitasking (telah dibahas pada pertemuan sebelumnya), yaitu dimana dalam multitaskin terjadi perulangan task yang dapat dikontrol dengan menggunakan Interrupt Service Routine (ISR).
Keuntungan sistem ini adalah :
- Suatu perintah dapat dilaksanakan secara tuntas sampai berakhir dengan prioritas tertinggi.
- Mampu memproses lebih dari satu perintah dalam waktu yang bersamaan.hal ini dapat terjadi karena kemampuan membagi sumber daya yang tersedia. Jika suati perintah datang membutuhkan sumber daya media simpan menyelesaikan perintah/pekerjaan yang telah ditentukan, apabila datang perintah lain yang membutuhkan sumber daya memori misalnnya, perintah tersebut dapat langsung dikerjakan tanpa menunggu perintah sebelumnya selesai dierjakan.

Kelemahan dari sistem ini adalah jika terdapat banyak perintah, maka akan terjadi antian perintah yang cukup panjang. Pengguna harus menunggu perintah selesai dilaksanakan untuk memasukkan perintah selanjutnya.
Manfaat metode ini akan terasa ketika banyak terdapat perintah yang menggunakan sumber daya yang berbeda, sehingga rangkaina perintah dapat diselesaikan dengan lebih cepat
b. Multithreading
Multithreading adalah cara pengeksekusian yang mengizinkan beberapa alur terjadi dalam satu proses. Multithreading atau yang lebih dikenal Thread pada suatu istilah komputer dapat diartikan sebagai sebuah proses untuk melakukan suatu pekerjaan tertentu. Suatu program yang kita buat walaupun sangat sederhana, misalnya program “hello world” memiliki thread. Prosessor akan mengeksekusi suatu program berdasarkan thread yang diberikan oleh program tersebut.
Disamping program yang dibuat, program bawaan dari sistem operasi juga memiliki thread. Ketika program dijalankan dan program lain pada saat bersamaan juga dijalankan, maka prosessor harus menjalankan thread itu semua secara sekuensial. Setelah program selesai dijalankan, thread dari program lainnya menunggu dalam antrian untuk dieksekusi. Tentunya banyak algoritma untuk menentukan thread milik program siapa dulu dan juga waktu pemrosesan untuk tiap thread. Jadi prosessor akan istirahat (idle) jika tidak ada permintaan untuk melayani thread.
Bagaimana untuk membuat supaya prosessor terus bekerja dalam waktu yang bersamaan ? Salah satunya dengan Multithreading. Sebagai contoh multithreading dalam dunia nyata adalah ketika Anda bermain gitar sambil bernyanyi dan Anda juga membaca liriknya atau kunci gitarnya. Dalam contoh ini terdapat minimal tiga buah thread yang dijalankan oleh otak Anda (otak Anda dianalogikan sebagai sebuah prosessor). Pertama tangan Anda (kiri dan kanan) harus menekan dan memetik senar, kedua mulut Anda juga harus bersuara tentunya harus ada nadanya, ketiga mata Anda juga harus melihat teks lirik atau kunci gitar. Hal ini semakin sulit bila Anda harus memainkan melodi sambil bernyanyi dan melihat notasi balok dengan tempo yang cepat . Tentu otak Anda akan kewalahan, harus mensinkronkan semua dalam waktu yang bersamaan tentunya butuh konsentrasi tinggi dan juga stamina yang cukup.
Melalui multithreading, program yang kita buat dapat mengerjakan beberapa perintah secara bersamaan, efeknya waktu yang dibutuhkan untuk menyelesaikan semua perintah tersebut dari awal sampai akhir menjadi lebih sedikit. Namun demikian, membuat aplikasi yang multithreading haruslah berhati-hati, karena bila semakin banyak perintah yang dijalankan sementara penanganan untuk multithreading ini tidak teliti maka output program dapat terjadi kesalahan atau juga dapat terjadi deadlock. Untuk itu pada umumnya pada aplikasi multithreading dikenal adanya istilah Unsyncronized dan Syncronized Threads.
Multithreading mempunyai beberapa model, yaitu :
a. Model Many-to-One . Model ini memetakan beberapa thread tingkatan pengguna ke sebuah thread. tingkatan kernel. Pengaturan thread dilakukan dalam ruang pengguna sehingga efisien. Hanya satu thread pengguna yang dapat mengakses thread kernel pada satu saat. Jadi Multiple thread tidak dapat berjalan secara paralel pada multiprosesor. Contoh: Solaris Green Threads dan GNU Portable Threads.
b. Model One-to-One . Model ini memetakan setiap thread tingkatan pengguna ke setiap thread. Ia menyediakan lebih banyak concurrency dibandingkan model Many-to-One. Keuntungannya sama dengan keuntungan thread kernel. Kelemahan model ini ialah setiap pembuatan thread pengguna memerlukan tambahan thread kernel. Karena itu, jika mengimplementasikan sistem ini maka akan menurunkan kinerja dari sebuah aplikasi sehingga biasanya jumlah thread dibatasi dalam sistem. Contoh: Windows NT/XP/2000 , Linux, Solaris 9.
c. Model Many-to-Many . Model ini memultipleks banyak thread tingkatan pengguna ke thread kernel yang jumlahnya sedikit atau sama dengan tingkatan pengguna. Model ini mengizinkan developer membuat thread sebanyak yang ia mau tetapi concurrency tidak dapat diperoleh karena hanya satu thread yang dapat dijadwalkan oleh kernel pada suatu waktu. Keuntungan dari sistem ini ialah kernel thread yang bersangkutan dapat berjalan secara paralel pada multiprosessor.

c. Perbedaan antara Multitasking dan Multithreading
Multitasking merupakan metode untuk menjalankan lebih dari satu proses dimana terjadi pembagian sumberdaya seperti CPU. Multithreading adalah cara pengeksekusian yang mengizinkan beberapa thread terjadi dalam sebuah proses, saling berbagi sumber daya tetapi dapat dijalankan secara independen.

MULTITASKING

Diposting oleh zaki di 09.43 0 komentar
DEFINISI
Multitasking adalah istilah teknologi informasi dalam bahasa Inggris yang mengacu kepada sebuah metode dimana banyak pekerjaan atau dikenal juga sebagai proses diolah dengan menggunakan sumberdaya CPU yang sama. Dalam kasus sebuah komputer dengan prosesor tunggal, hanya satu instruksi yang dapat bekerja dalam satu waktu, berarti bahwa CPU tersebut secara aktif mengolah instruksi untuk satu pekerjaan tersebut.
Multitasking memecahkan masalah ini dengan menjadwalkan pekerjaan mana yang dapat berjalan dalam satu waktu, dan kapan pekerjaan yang lain menunggu untuk diolah dapat dikerjakan. Kondisi mengalokasikan CPU dari pekerjaan satu ke pekerjaan yang lain disebut context switch.
Ketika context switch terjadi dengan sangat cepat -- kondisi ini cukup untuk memberikan ilusi pengolahan-paralel. Bahkan dalam komputer yang memiliki lebih dari satu CPU (disebut multi-prosesor), Multitasking memperbolehkan lebih banyak pekerjaan dijalankan dibanding dengan jumlah CPU yang tersedia.

STRATEGI PENJADWALAN
Sistem operasi komputer dapat juga mengadopsi berbagai macam strategi penjadwalan, yang secara garis besar dapat dikategorikan sebagai berikut:
• Dalam sistem multi-program, pekerjaan yang sedang diolah terus berjalan hingga membutuhkan suatu operasi yang memerlukan interaksi dari luar. (e.g. membaca dari tape). Sistem multi-program didesain untuk memaksimalkan penggunaan CPU.
• Dalam sistem time-sharing , pekerjaan yang sedang diolah diharuskan melepaskan kerja CPU, baik secara sukarela atau dari interaksi luar, seperti interupsi-perangkat-keras. Sistem Time-sharing didesain untuk memperbolehkan beberapa program seolah diproses secara bersamaan.
• Dalam sistem real-time, beberapa program yang sedang menunggu dijamin untuk mendapatkan pengolahan dari CPU ketika interaksi luar terjadi. Sistem real-time didesain untuk melakukan kontrol mekanik seperti robot-robot industri, yang memerlukan ketepatan pemrosesan.
Dewasa ini, penggunaan time-sharing jarang digunakan, dan digantikan dengan multitasking.

Contoh sistem operasi jenis ini antara lain adalah linux. Linux adalah sistem operasi yang multitasking dan multiuser seperti kebanyakan SO yang ada pada saat ini. Multitasking pada linux artinya linux bisa atau mampu menjalankan beberapa proses dalam waktu yang bersamaan.
Seperti contoh pada saat kita menjalan kan aplikasi web browser kita juga bisa menjalankan aplikasi kompresi file. Sedangkan multiuser pada linux adalah user bisa login ke dalam sistem secara bersamaan, dengan artinya user bisa menggunakan satu sistem secara bersamaan dalam satu waktu. Multitasking dan multiuser pada sistem operasi merupakan satu keharusan dalam masa ini.

KEUNTUNGAN DAN KELEMAHAN
Keuntungan sistem ini adalah :
- Suatu perintah dapat dilaksanakan secara tuntas sampai berakhir dengan prioritas tertinggi.
- Mampu memproses lebih dari satu perintah dalam waktu yang bersamaan.hal ini dapat terjadi karena kemampuan membagi sumber daya yang tersedia. Jika suati perintah datang membutuhkan sumber daya media simpan menyelesaikan perintah/pekerjaan yang telah ditentukan, apabila datang perintah lain yang membutuhkan sumber daya memori misalnnya, perintah tersebut dapat langsung dikerjakan tanpa menunggu perintah sebelumnya selesai dierjakan.

Kelemahan dari sistem ini adalah jika terdapat banyak perintah, maka akan terjadi antian perintah yang cukup panjang. Pengguna harus menunggu perintah selesai dilaksanakan untuk memasukkan perintah selanjutnya.
Manfaat metode ini akan terasa ketika banyak terdapat perintah yang menggunakan sumber daya yang berbeda, sehingga rangkaina perintah dapat diselesaikan dengan lebih cepat.

Multitasking dalam Sistem Waktu Nyata
Dalam Sistem Real-Time, pada CPU misalnya, pemrograman Multitasking dapat dilakukan menggunakan pemrograman High Level-language, sehingga strategi penjadwalan dapat diatur dengan mempertimbangkan juga fitur-fitur yang terdapat pada CPU tersebut (aplkasi dan hardware).
Multitasking disebut juga Concurrent Processing (pemorsesan berbarengan) dimana multitasking menjalankan proses berbeda dilakukan pada satu unit CPU, sedangkan jika melakukan beberapa proses berbeda menggunakan beberapa CPU disebut pengolahan Paralel.

LOOP MULTITASKING

Real-Time System mungkin hanya menggunakan fungsi loop terus-menerus untuk melaksanakan semua kegiatan yang diperlukan. Namun, kendali sistem Real-Time tidak dikendalikan secara penuh.
Selain itu, banyak waktu yang dihabiskan prosesor dalam status-flag yang sia-sia, kadang-kadang disebut 'skip-polling'.
Masalah yang lebih signifikan timbul karena perulangan siklik sederhana prosedur tidak dapat memberikan waktu yang tepat ketika dibutuhkan untuk penjadwalan kegiatan secara berkala.
Solusi untuk masalah respons time tersebut adalah mengikat setiap respons critical task langsung ke perangkat berbasis Interrupt, dengan cara menggunakan interrupt-hardware untuk memprioritaskan jadwal pre-emptively sebuah task.


Penjadwalan yang berbasis hardware dapat bekerja dengan baik untuk aplikasi yang sangat kecil, tetapi agak tidak fleksibel, tidak terintegrasi dengan pengaturan prioritas tugas yang lebih luas, dan akan memunculkan beberapa masalah yang agak sulit.
Pada umumnya, tak ada tingkat interrupt yang tepat, aplikasi tersebut terikat pada hardware tertentu, prioritas yang bervariasi pada Interrupt Service Routine (ISR) hampir mustahil, dan debugging aplikasi secara penuh menjadi lebih dan lebih sulit.

Multi Threading

Diposting oleh zaki di 09.38 0 komentar
Arti istilah Multithreading dianggap berkaitan erat dengan pengertian multi thread merupakan jalannya beberapa proses dengan urutan yang cepat (multitasking) dalam satu program. Multithreading ini merupakaan teknik pada manipulasi data dimana node-node pada struktur pohon data berisi penunjuk ke node yang lebih tinggi untuk membuat lintasan struktur menjadi lebih efisien.

Kalau sebelumnya kita telah mempelajari tentang proses, namun seiring berjalannya waktu dan tuntutan teknologi ternyata ditemukan kelemahan yang sebenarnya bisa diminimalisir pada proses. Untuk itulah diciptakan thread yang merupakan cara dari komputer untuk menjalankan dua atau lebih task dalam waktu bersamaan, sedangkan multithreading adalah cara komputer untuk membagi-bagi pekerjaan yang dikerjakan sebagian-sebagian dengan cepat sehingga menimbulkan efek seperti menjalakan beberapa task secara bersamaan walaupun otaknya hanya satu.

Keuntungan MultiThreading

Multiprocessing merupakan penggunaan dua atau lebih CPU dalam sebuah sistem komputer. Multitasking merupakan metode untuk menjalankan lebih dari satu proses dimana terjadi pembagian sumberdaya seperti CPU. Multithreading adalah cara pengeksekusian yang mengizinkan beberapa thread terjadi dalam sebuah proses, saling berbagi sumber daya tetapi dapat dijalankan secara independen.

Keuntungan dari sistem yang menerapkan multithreading dapat kita kategorikan menjadi 4 bagian:

1. Responsif. Aplikasi interaktif menjadi tetap responsif meskipun sebagian dari program sedang diblok atau melakukan operasi lain yang panjang. Umpamanya, sebuah thread dari web browser dapat melayani permintaan pengguna sementara thread yang lain berusaha menampilkan gambar.

2. Berbagi sumber daya. Beberapa thread yang melakukan proses yang sama akan berbagi sumber daya. Keuntungannya adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.

3. Ekonomis. Pembuatan sebuah proses memerlukan pengalokasian memori dan sumber daya. Alternatifnya adalah dengan menggunakan thread, karena thread membagi memori dan sumber daya yang dimilikinya sehingga lebih ekonomis untuk membuat thread dan context switching thread. Akan susah mengukur perbedaan waktu antara thread dan switch, tetapi secara umum pembuatan dan pengaturan proses akan memakan waktu lebih lama dibandingkan dengan thread. Pada Solaris, pembuatan proses memakan waktu 30 kali lebih lama dibandingkan pembuatan thread sedangkan proses context switch 5 kali lebih lama dibandingkan context switching thread.

4. Utilisasi arsitektur multiprosesor. Keuntungan dari multithreading dapat sangat meningkat pada arsitektur multiprosesor, dimana setiap thread dapat berjalan secara paralel di atas procesor yang berbeda. Pada arsitektur processor tunggal, CPU menjalankan setiap thread secara bergantian tetapi hal ini berlangsung sangat cepat sehingga menciptakan ilusi paralel, tetapi pada kenyataanya hanya satu thread yang dijalankan CPU pada satu-satuan waktu.

Model MultiThreading

Beberapa terminologi yang akan dibahas:

1. Thread pengguna: Thread yang pengaturannya dilakukan oleh pustaka thread pada tingkatan pengguna. Karena pustaka yang menyediakan fasilitas untuk pembuatan dan penjadwalan thread, thread pengguna cepat dibuat dan dikendalikan.

2. Thread Kernel: Thread yang didukung langsung oleh kernel. Pembuatan, penjadwalan dan manajemen thread dilakukan oleh kernel pada kernel space. Karena dilakukan oleh sistem operasi, proses pembuatannya akan lebih lambat jika dibandingkan dengan thread pengguna.

Model-Model MultiThreading:

1. Model Many-to-One. Model ini memetakan beberapa thread tingkatan pengguna ke sebuah thread. tingkatan kernel. Pengaturan thread dilakukan dalam ruang pengguna sehingga efisien. Hanya satu thread pengguna yang dapat mengakses thread kernel pada satu saat. Jadi Multiple thread tidak dapat berjalan secara paralel pada multiprosesor. Contoh: Solaris Green Threads dan GNU Portable Threads.

2. Model One-to-One. Model ini memetakan setiap thread tingkatan pengguna ke setiap thread. Ia menyediakan lebih banyak concurrency dibandingkan model Many-to-One. Keuntungannya sama dengan keuntungan thread kernel. Kelemahan model ini ialah setiap pembuatan thread pengguna memerlukan tambahan thread kernel. Karena itu, jika mengimplementasikan sistem ini maka akan menurunkan kinerja dari sebuah aplikasi sehingga biasanya jumlah thread dibatasi dalam sistem. Contoh: Windows NT/XP/2000 , Linux, Solaris 9.

3. Model Many-to-Many. Model ini memultipleks banyak thread tingkatan pengguna ke thread kernel yang jumlahnya sedikit atau sama dengan tingkatan pengguna. Model ini mengizinkan developer membuat thread sebanyak yang ia mau tetapi concurrency tidak dapat diperoleh karena hanya satu thread yang dapat dijadwalkan oleh kernel pada suatu waktu. Keuntungan dari sistem ini ialah kernel thread yang bersangkutan dapat berjalan secara paralel pada multiprosessor.

Kesimpulan

Thread adalah alur kontrol dari suatu proses.

Keuntungan menggunakan Multithreading:
1. Meningkatkan respon dari pengguna.
2. Pembagian sumber daya.
3. Ekonomis.
4. Mengambil keuntungan dari arsitektur multiprosessor.

Tiga model Multithreading:
1. Model Many-to-One.
2. Model One-to-One.
3. Model Many-to-Many.

Pembatalan Thread: Tugas untuk membatalkan Thread sebelum menyelesaikan tugasnya.

Pembatalan Thread terdiri dari 2 jenis:
1. Asynchronous cancellation.
2. Deffered cancellation.

Thread Pools menciptakan sejumlah Thread yang ditempatkan di dalam pool dimana Thread menunggu untuk dipanggil.

Thread Schedulling ada 2 macam:
1. Local Schedulling.
2. Global Schedulling.

Istilah thread di Linux adalah task.
Pembuatan Thread di Linux menggunakan System call clone().

Mirip seperti sistem operasi desktop, Symbian OS mampu melakukan operasi secara multithreading, multitasking dan pengamanan terhadap memori. Dan semua pemrograman pada Symbian dilakukan secara event-based, artinya hardware CPU menjadi tidak aktif ketika tidak ada inputan berupa aktivitas tertentu. Namun perlu dipahami sistem operasi ini memang ditujukan untuk diinstal pada peralatan mobile dengan keterbatasan sumber daya. Multithread dan multitasking memberikan kemampuan Symbian OS untuk menjalankan lebih dari satu aplikasi sekaligus. Namun khusus ini, adanya preemptive multitasking kernel akan memberi tiap-tiap program suatu pembagian waktu pemprosesan yang dilakukan bergantian dengan cepat sehingga nampak bagi pemakai seolah-olah proses ini dieksekusi secara bersamaan. Untuk itu telah didefinisikan penjadwalan berdasar prioritas tertentu untuk menentukan proses mana yang berjalan terlebih dahulu dan proses apa berikutnya serta berapa banyak waktu akan jadi diberi.

Kamis, 25 Februari 2010

MULTITASKING

Diposting oleh zaki di 10.39 0 komentar
DEFINISI
Multitasking adalah istilah teknologi informasi dalam bahasa Inggris yang mengacu kepada sebuah metode dimana banyak pekerjaan atau dikenal juga sebagai proses diolah dengan menggunakan sumberdaya CPU yang sama. Dalam kasus sebuah komputer dengan prosesor tunggal, hanya satu instruksi yang dapat bekerja dalam satu waktu, berarti bahwa CPU tersebut secara aktif mengolah instruksi untuk satu pekerjaan tersebut.
Multitasking memecahkan masalah ini dengan menjadwalkan pekerjaan mana yang dapat berjalan dalam satu waktu, dan kapan pekerjaan yang lain menunggu untuk diolah dapat dikerjakan. Kondisi mengalokasikan CPU dari pekerjaan satu ke pekerjaan yang lain disebut context switch.
Ketika context switch terjadi dengan sangat cepat -- kondisi ini cukup untuk memberikan ilusi pengolahan-paralel. Bahkan dalam komputer yang memiliki lebih dari satu CPU (disebut multi-prosesor), Multitasking memperbolehkan lebih banyak pekerjaan dijalankan dibanding dengan jumlah CPU yang tersedia.

STRATEGI PENJADWALAN
Sistem operasi komputer dapat juga mengadopsi berbagai macam strategi penjadwalan, yang secara garis besar dapat dikategorikan sebagai berikut:
• Dalam sistem multi-program, pekerjaan yang sedang diolah terus berjalan hingga membutuhkan suatu operasi yang memerlukan interaksi dari luar. (e.g. membaca dari tape). Sistem multi-program didesain untuk memaksimalkan penggunaan CPU.
• Dalam sistem time-sharing , pekerjaan yang sedang diolah diharuskan melepaskan kerja CPU, baik secara sukarela atau dari interaksi luar, seperti interupsi-perangkat-keras. Sistem Time-sharing didesain untuk memperbolehkan beberapa program seolah diproses secara bersamaan.
• Dalam sistem real-time, beberapa program yang sedang menunggu dijamin untuk mendapatkan pengolahan dari CPU ketika interaksi luar terjadi. Sistem real-time didesain untuk melakukan kontrol mekanik seperti robot-robot industri, yang memerlukan ketepatan pemrosesan.
Dewasa ini, penggunaan time-sharing jarang digunakan, dan digantikan dengan multitasking.

Contoh sistem operasi jenis ini antara lain adalah linux. Linux adalah sistem operasi yang multitasking dan multiuser seperti kebanyakan SO yang ada pada saat ini. Multitasking pada linux artinya linux bisa atau mampu menjalankan beberapa proses dalam waktu yang bersamaan.
Seperti contoh pada saat kita menjalan kan aplikasi web browser kita juga bisa menjalankan aplikasi kompresi file. Sedangkan multiuser pada linux adalah user bisa login ke dalam sistem secara bersamaan, dengan artinya user bisa menggunakan satu sistem secara bersamaan dalam satu waktu. Multitasking dan multiuser pada sistem operasi merupakan satu keharusan dalam masa ini.

KEUNTUNGAN DAN KELEMAHAN
Keuntungan sistem ini adalah :
- Suatu perintah dapat dilaksanakan secara tuntas sampai berakhir dengan prioritas tertinggi.
- Mampu memproses lebih dari satu perintah dalam waktu yang bersamaan.hal ini dapat terjadi karena kemampuan membagi sumber daya yang tersedia. Jika suati perintah datang membutuhkan sumber daya media simpan menyelesaikan perintah/pekerjaan yang telah ditentukan, apabila datang perintah lain yang membutuhkan sumber daya memori misalnnya, perintah tersebut dapat langsung dikerjakan tanpa menunggu perintah sebelumnya selesai dierjakan.

Kelemahan dari sistem ini adalah jika terdapat banyak perintah, maka akan terjadi antian perintah yang cukup panjang. Pengguna harus menunggu perintah selesai dilaksanakan untuk memasukkan perintah selanjutnya.
Manfaat metode ini akan terasa ketika banyak terdapat perintah yang menggunakan sumber daya yang berbeda, sehingga rangkaina perintah dapat diselesaikan dengan lebih cepat.

Multitasking dalam Sistem Waktu Nyata
Dalam Sistem Real-Time, pada CPU misalnya, pemrograman Multitasking dapat dilakukan menggunakan pemrograman High Level-language, sehingga strategi penjadwalan dapat diatur dengan mempertimbangkan juga fitur-fitur yang terdapat pada CPU tersebut (aplkasi dan hardware).
Multitasking disebut juga Concurrent Processing (pemorsesan berbarengan) dimana multitasking menjalankan proses berbeda dilakukan pada satu unit CPU, sedangkan jika melakukan beberapa proses berbeda menggunakan beberapa CPU disebut pengolahan Paralel.

LOOP MULTITASKING

Real-Time System mungkin hanya menggunakan fungsi loop terus-menerus untuk melaksanakan semua kegiatan yang diperlukan. Namun, kendali sistem Real-Time tidak dikendalikan secara penuh.
Selain itu, banyak waktu yang dihabiskan prosesor dalam status-flag yang sia-sia, kadang-kadang disebut 'skip-polling'.
Masalah yang lebih signifikan timbul karena perulangan siklik sederhana prosedur tidak dapat memberikan waktu yang tepat ketika dibutuhkan untuk penjadwalan kegiatan secara berkala.
Solusi untuk masalah respons time tersebut adalah mengikat setiap respons critical task langsung ke perangkat berbasis Interrupt, dengan cara menggunakan interrupt-hardware untuk memprioritaskan jadwal pre-emptively sebuah task.


Penjadwalan yang berbasis hardware dapat bekerja dengan baik untuk aplikasi yang sangat kecil, tetapi agak tidak fleksibel, tidak terintegrasi dengan pengaturan prioritas tugas yang lebih luas, dan akan memunculkan beberapa masalah yang agak sulit.
Pada umumnya, tak ada tingkat interrupt yang tepat, aplikasi tersebut terikat pada hardware tertentu, prioritas yang bervariasi pada Interrupt Service Routine (ISR) hampir mustahil, dan debugging aplikasi secara penuh menjadi lebih dan lebih sulit.

Jumat, 19 Februari 2010

Sistem Waktu Nyata

Diposting oleh zaki di 12.15 0 komentar
Definisi Sistem Waktu Nyata
Menurut definisi Kamus komputer Oxford :
Setiap sistem yang waktu terjadinya output sangat signifikan. Jarak antara waktu input
terhadap waktu terjadinya output harus sangat kecil terhadap waktu yang diperbolehkan.
Menurut Cooling pada buku Software Design for Real Time Systems (1991):
Sistem Waktu Nyata adalah sistem yang harus memprodukis respon yang tepat dalam suatu batasan waktu yang tentu. Komputer yang responnya melebihi batasan waktu ini akan memberikan performansi yang terdegradasi atau malfunction
Sebuah sistem waktu nyata membaca input dari plant dan mengirim sinyal kontrol ke plant pada waktu-waktu yang ditentukan oleh pertimbangan operasional dari plant bukan oleh sistem komputer
Menurut Bennet:
Sebuah program yang ketepatan operasinya tergantung pada hasil logika komputasi dan waktu suatu hasil diproduksi
Klasifikasi Sistem Waktu Nyata
Suatu ciri sistem waktu nyata adalah komputer yang terhubung dengan lingkungan melalui peralatan interfacing yang banyak dan komputer menerima dan mengirim bervariasi sinyal.
Contoh Sistem Waktu Nyata:
•Proses pengambilan uang pada ATM
•Proses login atau pendaftaran online
•Proses pengenalan sidik jari pada absensi
•Proses perekaman suara
•Sistem pendeteksian dan alarm
•Sistem pengiriman data transmisi (TV, Telepon)
•Proses isi ulang pulsa

Sistem Waktu Nyata diklasifikasikan menjadi :
•Clock-based Task (Cyclic, periodic) 6fc
•Event-based Task (aperiodic)
•Interactive Systems
Clock-based Task
Sistem Waktu Nyata yang diukur berdasafrkan konstanta waktu yaitu waktu yang diambil dari respon suatu plant terhadap perubahan input atau beban.
Konstanta waktu bisa diukur dalam satuan jam untuk proses kimia atau detik untuk sistem penerbangan.
Semakin kecil konstanta waktu maka sampling rate semakin kecil
Sinkronisasi diperoleh dengan menambahkan clock pada sistem komputer yang dikenal dengan real-time clock. Sinyal clock ini digunakan untuk menginterrupt operasi komputer pada waktu-waktu yang telah ditetapkan (Clock-interrupt)
Event-Based Task
Sistem yang beraksi karena respon terhadap suatu kejadian (event). Contoh menutup katup pada saat permukaan air sudah mengenai batas penuh.
Digunakan interrupt untuk memberitahukan komputer aksi yang diperlukan atau bisa juga mempergunakan pooling (komputer menanyakan (polls) pada sensor apakah perlu dilakukan aksi)po
Interactive Systems
Sistem waktu nyata yang terjadi karena adanya suatu kejadian dan waktu rata-rata dari respon kejadian ini tidak boleh melebihi waktu yang ditetapkan. Jadi merupakan gabungan antara clock-based dan event-based hanya bedanya waktu respon setiap kejadian tidak selalu sama.
Misal pengambilan uang di ATM.
Batasan Waktu (Time Constraints)
Sistem Waktu Nyata dapat dibedakan berdasarkan Batasan waktu:
•Hard Real-Time
Sistem Waktu Nyata yang harus memenuhi target waktu pada setiap kesempatan
Contoh : Pengontrolan Temperatur blower
•Soft Real-Time
Sistem Waktu Nyata yang tidak harus memenuhi target waktu tetapi harus memenuhi suatu nilai ketepatan yang diambil dari nilai rata-rata.
Contoh : Pengambilan uang di ATM
Kriteria Sistem Waktu Nyata
Terdapat dua kriteria yang harus dipenuhi oleh sistem waktu nyata yaitu:
•Batasan Waktu (time constraint)
Setiap sistem dengan waktu nyata memiliki batasan waktu berupa waktu maksimum proses (akuisisi, transmisi, perekaman, perhitungan) dan standar waktu (waktu yang sama dengan waktu sehari-hari)
•Respon waktu dan Saturation Limit
Sistem Waktu nyata jika dipergunakan untuk mengontrol alat perlu mempertimbangkan kecepatan dari respon alat dan batas saturasi dari alat tersebut
 

my story Copyright © 2010 Design by Ipietoon Blogger Template Graphic from Enakei