Anda di halaman 1dari 11

SISTEM WAKTU NYATA

KOMUNIKASI DAN SINKRONISASI TASK


Anggota kelompok: Eddi Kurniawan Mega Nurmalasari Novi Indah Pradasari Uray Ristian

Fakultas Matematika dan Ilmu Pengetahuan Alam UNIVERSITAS TANJUNGPURA 2012

Aplikasi sistem waktu nyata 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. Multi tasking 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. 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 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.

Multi Threading 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.

Penjadualan Penjadwalan proses merupakan kumpulan kebijaksanaan dan mekanisme di sistem operasi yang berkaitan dengan urutan kerja yang dilakukan sistem computer. Adapun penjadwalan bertugas memutuskan : a. Proses yang harus berjalan b. Kapan dan selama berapa lama proses itu berjalan

Kriteria untuk mengukur dan optimasi kinerja penjadwalan : a. Adil (fairness) Adalah proses-proses yang diperlakukan sama, yaitu mendapat jatah waktu pemroses yang sama dan tak ada proses yang tak kebagian layanan pemroses sehingga mengalami kekurangan waktu. b. Efisiensi (eficiency) Efisiensi atau utilisasi pemroses dihitung dengan perbandingan (rasio) waktu sibuk pemroses. c. Waktu tanggap (response time) Waktu tanggap berbeda untuk : Sistem interaktif Didefinisikan sebagai waktu yang dihabiskan dari saat karakter terakhir dari perintah dimasukkan atau transaksi sampai hasil pertama muncul di layar. Waktu tanggap ini disebut terminal response time. Sistem waktu nyata Didefinisikan sebagai waktu dari saat kejadian (internal atau eksternal) sampai instruksi pertama rutin layanan yang dimaksud dieksekusi, disebut event response time. d. Turn around time Adalah waktu yang dihabiskan dari saat program atau job mulai masuk ke sistem sampai proses diselesaikan sistem. Waktu yang dimaksud adalah waktu yang dihabiskan di dalam sistem, diekspresikan sebagai penjumlah waktu eksekusi (waktu pelayanan job) dan waktu menunggu, yaitu : Turn arround time = waktu eksekusi + waktu menunggu. e. Throughput Adalah jumlah kerja yang dapat diselesaikan dalam satu unit waktu. Cara untuk mengekspresikan throughput adalah dengan jumlah job pemakai yang dapat dieksekusi dalam satu unit/interval waktu. Sistem Integrasi Integrasi merupakan adanya saling keterkaitan suatu sistem dengan sistem yang lainnya. Beberapa sistem dapat berhubungan dengan sistem yang lain dengan berbagai cara dan sesuai dengan keperluan yang ada. Keuntungan dari pengimplementasian multi tasking pada suatu sistem aplikasi adalah pada sistem yang saling terkait adalah tidak terlalu terikatnya suatu fungsi kerja dengan fungsi yang lainnya. Sehingga jika ada suatu

fungsi yang tidak bekerja maka fungsi lainnya tidak terganggu.Dan jika dilakukan pemeriksaan fungsi oleh yang lain maka dapat dilakukan dengan mudah. kelebihan yang lain adalah fungsi yang telah ada tidak akan terganggu jika menambahkan dan memodifikasi fungsi yang lain. Task di linux Cara yang biasa dilakukan untuk memulai task baru di sistem operasi unix adalah menggunakan sistem pemanggil fork(). Ini menduplikasi parent task yang sudah ada, untuk membuat semua struktur data perlu membuka child task baru. Keduanya mengeksekusi kode yang sama, tapi dapat membedakan dirinya sebagai parent atau child. Contoh pembuatan task adalah sebagai berikut:

Data sharing Implementasi multi tasking dapat dipermudah dengan membagi sumber daya. Dalam hal ini, pembaca task memastikan bahwa data dalam kondisi stabil dan valid,

penulis task harus melindunginya dari operasi yang berkelanjutan yang mana membuat data dalam kondisi tidak stabil. Event flag Sebuah event flag adalah sebuah bit status untuk menunjukkan beberapa event telah diganti. Perintah untuk menggunakan flag yaitu READ (event_flag), untuk menghapus event flags menggunakan perintah CLEAR (event_flag). Semaphore Dalam kehidupan nyata, semafor adalah sistem sinyal yang digunakan untuk berkomunikasi secara visual. Dalam software, semafor adalah sebuah variabel bertipe integer yang selain saat inisialisasi, hanya dapat diakses melalui dua operasi standar, yaituincrement dan decrement. Semafor digunakan untuk menyelesaikan masalah sinkronisasi secara umum.

Berdasarkan jenisnya, semafor hanya bisa memiliki nilai 1 atau 0, atau lebih dari sama dengan 0. Konsep semafor pertama kali diajukan idenya oleh Edsger Dijkstra pada tahun 1967. Operasi standar pada semafor (dalam bahasa pemrograman C). Nama asli dari operasi tersebut sebenarnya adalah Proberen (test) dan Verhogen (increment).. Fungsi wait dipanggil ketika thread akan memasuki critical section-nya atau

ketika threadakan memakai resource yang tersedia. Jika sem_value kurang dari sama dengan 0, threadtersebut harus menunggu sampai thread lain memanggil fungsi buka. Fungsi buka dipanggil ketika thread meningggalkan critical section-nya atau ketika melepaskanresource yang telah digunakannya. Tentu saja kedua operasi tersebut harus bersifat atomik karena sem_value dapat diakses oleh beberapa proses (shared resource). Semafor memiliki dua jenis, yaitu:

a. Binary semaphore . Semafor ini hanya memiliki nilai 1 atau 0. Sering juga disebut sebagai semafor primitif b. Counting semaphore . Semafor ini memiliki nilai 0, 1, serta integer lainnya. Banyak sistem operasi yang tidak secara langsung mengimplementasikan semafor ini, tetapi dengan memanfaatkan binary semaphore Remote Procedure Call (RPC) Remote Procedure Call (RPC) adalah sebuah metoda yang memungkinkan kita untuk mengakses sebuah prosedur yang berada di komputer lain. Untuk dapat melakukan ini sebuah komputer (server) harus menyediakan layanan remote prosedur. Pendekatan yang dilakukan adalah, sebuah server membuka socket, menunggu client yang meminta prosedur yang disediakan oleh server. RPC masih menggunakan cara primitive dalam pemrograman, yaitu menggunakan paradigma procedural programming. Hal itu membuat kita sulit ketika menyediakan banyak remote procedure. RPC menggunakan soket untuk berkomunikasi dengan proses lainnya. Pada sistem seperti SUN, RPC secara default sudah terinstall kedalam sistemnya, biasanya RPC ini digunakan untuk administrasi sistem. Sehingga seorang administrator jaringan dapat mengakses sistemnya dan mengelola sistemnya dari mana saja, selama sistemnya terhubung ke jaringan. Umumnya protokol RPC yang digunakan pada saat ini adalah DCOM (Distributed Component Object Model). Saat ini ada alternatif protokol baru, yakni SOAP (Simple Object Access Protocol), yang berdasarkan pada teknologi XML.

Gambar 1. Prinsip Kerja RPC

Implementasi RPC Sun Microsystems Open Network Computing (ONC) : RPC specification, XDR (eXternal Data Representation) standard, UDP atau TCP transport protocol. Xerox Courier : RPC model, Data representation standard, XNS (Xerox Network Systems) SPP (Sequenced Packet Protocol) sbg transport protocol, Apollo s Network Computing Architecture (NCA), RPC protocol, NDR (Network Data Representation). Kelebihan RPC Relatif mudah digunakan : Pemanggilan remote procedure tidak jauh berbeda dibandingkan pemanggilan local procedure. Sehingga pemrogram dapat berkonsentrasi pada software logic, tidak perlu memikirkan low level details seperti soket, marshalling & unmarshalling. Robust (Sempurna): Sejak th 1980-an RPC telah banyak digunakan dlm pengembangan missioncritical application yg memerlukan scalability, fault tolerance, & reliability. Kekurangan RPC Tidak fleksibel terhadap perubahan : Static relationship between client & server at run-time. Berdasarkan prosedural/structured programming yang sudah ketinggalan jaman dibandingkan OOP. Kurangnya location transparency : Misalnya premrogram hanya boleh melakukan pass by value, bukan pass by reference. Komunikasi hanya antara 1 klien & 1 server (one-to-one at a time). Komunikasi antara 1 klien & beberapa server memerlukan beberapa koneksi yang terpisah. Ada Rendezvous Bahasa Ada telah memiliki fitur sinkronisasi yang mirip dengan sistem RPC dalam sistem Waktu Nyata. Task yang dipanggil akan ditunda hingga menerima hasil kembali, dan disebut task yang akan di blok pada akses masuk (accept()) menunggu sebuah balasan permintaan. Ada dua cara dalam task ini yaitu menyinkronkan eksekusi mereka,

atau hanya melewatkan datanya saja dan ditampilkan sebagai sebuah pesan saja. Pengkodean ini juga dapat dibentuk untuk menjaga data penting dari simultan akses. Java Sync. Java Sinkronisasi merupakan suatu proses untuk mengontrol suatu resource (sumber daya) terhadap multiple thread sehingga hanya terdapat satu thread yang mengakses resource tersebut pada satu waktu. pernyataan sebagai berikut: synchronized (object) statement; Dalam sinkronisasi suatu thread sebelum mengakses suatu resource, harus memperoleh lock yang mengontrol akses ke sumber daya. Dengan cara ini, akses sumber daya dapat disinkronkan dan harus dipastikan bahwa hanya satu thread saja yang dapat aktif pada sumber daya untuk menghindari corrupt data. Sinkronisasi mencegah jenis kerusakan data demikian, jika tidak disinkronkan maka dapat mengakibatkan pembacaan yang buruk dan error yang signifikan. Secara umum bagian kritis (critical sections) dari kode biasanya ditandai dengan kata kunci synchronized. Suatu lock (kunci) digunakan untuk mengsinkronkan akses ke sumber daya terbagi-pakai. Suatu lock dapat diasosiasikan dengan suatu sumber daya terbagi-pakai. Thread memperoleh akses ke sumber daya terbagi-pakai dengan terlebih dahulu mendapatkan lock yang terasosiasi dengan obyek atau block dari kode. Pada suatu waktu yang diberikan, harus hanya satu thread yang dapat memegang lock dan dengan cara demikian mempunyai akses ke sumber daya terbagi-pakai. Lock seperti ini Untuk sinkronisasinya menggunakan

mengimplementasikan mutual exclusion. Setelah memperoleh lock, suatu thread dapat mengakses resource tersebut, sedangkan thread lain yang akan menggunakan resource tersebut harus menunggu hingga lock dilepaskan oleh thread yang sedang memegang lock tersebut.

Anda mungkin juga menyukai