Selasa, 03 April 2012

Implementasi Thread dan multithreaded server

Thread
Thread adalah objek yang mewakili satu unit eksekusi sekumpulan instruksi.Ada pula yang mendefinisikan, thread adalah sekumpulan instruksi yang dapatdieksekusi secara mandiri. Proses adalah satu unit kepemilikan sumberdaya.

Multithreading
adalah suatu kemampuan yang memungkinkan beberapa threaddapat dijalankan secara bersamaan/bergantian/konkuren.Manfaat aplikasi menggunakan multithreading yaitu agar thread-thread di suatu proses, dapat sharing kode program, data, dan sumber daya, secara lebih efisiendibanding proses-proses terpisah, sehingga kinerja aplikasi berbasis thread lebih baik dibanding aplikasi berbasis proses.
Membuat Thread

Untuk membuat thread ada dua cara yaitu:
1) Membuat kelas implementasi dari interface Runnable
 2) Membuat kelas turunan dari kelas thread
 3) Kondisi Thread
Thread dapat berada dalam 1 dari 4 kondisi berikut:

 Multitasking adalah kemampuan komputer melakukan banyak tugas secarakonkuren/bergantian. Pada multitasking, konkurensi melibatkan banyak proses.Karena multithreading perluasan dari multitasking, maka pada multithreading setiap proses melibatkan banyak thread.Terdapat tiga kelas yang berkaitan dengan aplikasi multithreading :
1.Thread : membuat thread di program
2.ThreadDeath : membersihkan thread yang telah berakhir eksekusinya.
3 ThreadGroup : mengelompokkan thread-threadHanya ada satu interface yaitu Runnable yang digunakan untuk membuat thread.Method-method standard yang berkaitan dengan multithreading :a.
 4. Siklus Hidup Thread
a.

Pertama kali thread diciptakan (
born
), selalu dalam kondisi
ready
. Method
start()
harus dipanggil untuk mengeksekusi method
run()
sehingga threadtersebut siap segera dieksekusi processor.

 b.

Thread yang berada pada kondisi
ready
antri menunggu giliran untuk dieksekusi, penjadwal akan melakukan dispatching kepada thread sehinggathread transisi dari kondisi
ready
ke
running
(processor sedangmengeksekusi thread tersebut).


 c.

Jika saat eksekusi thread memerlukan kondisi tertentu untuk dipenuhi ataukarena diinterupsi, maka thread tersebut dapat memanggil method wait() atausleep() agar thread dapat transisi dari kondisi
running
ke kondisi
waiting
 (menunggu sampai masuk kembali ke kondisi ready).

d.

Thread transisi dari kondisi
running
ke kondisi
dead
ketika method run()selesai dilaksanakan atau diakhiri karena terjadi exception, selanjutnyadihapus dari memori aktif.
Pemakaian Thread

Alasan pemakaian threads:
1. Multiple sequential threads bisa dijalankan secara quasi-parallel
2. Lebih mudah di-create dan di-delete
3. Performance
4. Lebih sesuai diterapkan pada sistem dengan multiple CPU


IMPLEMENTASI THREADS PADA USER-SPACE

Kegunaan Thread

Multithreading berguna untuk multiprocessor dan singleprocessor.

Kegunaan untuk system multiprocessor adalah :

· Sebagai unit pararel atau tingkat granularitas pararelisme.

· Peningkatan kinerja disbanding berbasis proses.

Kegunaan multithreading pada singleprocessor, adalah :

· Kerja foreground dan background sekaligus di satu aplikasi.

· Penanganan asynchronous proseccing menjadi baik.

· Mempercepat eksekusi program.

· Pengorganisasian program menjadi lebih baik.



Manfaat utama banyak thread di satu proses adalah memaksimumkan derajat kongkurensi antara operasi-operasi yang terkait erat. Aplikasi jauh lebih efisien dikerjakan sebagai sekumpulan thread disbanding sekumpulan proses.



Karakteristik Thread

Proses merupakan lingkungan eksekusi bagi thread-thread yang dimilikinya. Thread-thread di satu proses memakai bersama sumber daya yang dimiliki proses, yaitu :

· Ruang alamat.

· Himpunan berkas yang dibuka.

· Proses-proses anak.

· Timer-timer.

· Snyal-sinyal.

· Sumber daya-sumber daya lain milik proses.

Tiap thread mempunyai property independen berikut seperti :

· Keadaan (state) eksekusi thread (running, ready dan sebagainya).

· Konteks pemroses. Thread dapat dipandang sebagai satu PC (program counter) tersendiri independen di satu proses.

· Beberapa penyimpan static per-thread untuk variable-variabel local.

Implementasi Paket Thread:
1. Thread level kernel.
> Keunggulan :
· Memudahkan koordinasi multithread seperti proses server.
· Tidak seboros kumpulan proses tradisional.
> Kelemahan :
· Operasi manajemen thread sangat lebih boros.
· Kernel harus menyediakan semua feature.
2. Thread level pemakai.
> Keunggulan :
Kinerja luar biasa bagus disbanding thread level kernel.
· Tidak diperlukan modifikasi kernel.
· Fleksibelitas tinggi.
> Kelemahan :
· Tidak manfaatkan multiprocessor.
· Untuk aplikasi dengan keterlibatan kernel yang kecil.
· Mengharuskan nonblocking system call.



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.













http://www.scribd.com/doc/67819329/90/Pengertian-Thread
http://fatiaro-otniel.blogspot.com/
http://alfan-ichwanan.blogspot.com/2012/04/thread-multithread-serta.html
http://bebas.ui.ac.id/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi-4.X-1/ch11s02.html

Selasa, 20 Maret 2012

Remote Procedure Call (RPC)

Remote Procedure Call (RPC) adalah sebuah metode yang memungkinkan kita untuk mengakses sebuah prosedur yang berada di komputer lain. Untuk dapat melakukan ini sebuah server harus menyediakan layanan remote procedure. Pendekatan yang dilakuan adalah sebuah server membuka socket, lalu menunggu clientyang meminta prosedur yang disediakan oleh server. Bila client tidak tahu harus menghubungi port yang mana, client bisa me- request kepada sebuah matchmaker pada sebuah RPC port yang tetap. Matchmaker akan memberikan port apa yang digunakan oleh prosedur yang diminta client.
 
RPC masih menggunakan cara primitif dalam pemrograman, yaitu menggunakan paradigma procedural programming. Hal itu membuat kita sulit ketika menyediakan banyak remote procedure. RPC menggunakan socket untuk berkomunikasi dengan proses lainnya. Pada sistem seperti SUN, RPC secara default sudah ter- installkedalam 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.
RPC adalah suatu protokol yang menyediakan suatu mekanisme komunikasi antar proses yang mengijinkan suatu program untuk berjalan pada suatu komputer tanpa terasa adanya eksekusi kode pada sistem yang jauh ( remote system ).Protokol RPC digunakan untuk membangun aplikasi klien-server yang terdistribusi.
 
• Cara Kerja RPC :
Tiap prosedur yang dipanggil dalam RPC, maka proses ini harus berkoneksi dengan server remote dengan mengirimkan semua parameter yang dibutuhkan, menunggu balasan dari server dan melakukan proses kemudian selesai. Proses di atas disebut juga dengan stub pada sisi klien. Sedangkan Stub pada sisi server adalah proses menunggu tiap message yang berisi permintaan mengenai prosedur tertentu.
Contoh aplikasi untuk meremote pada teknik RPC (Remote Procedure Call) adalah menggunakan putty untuk melakukan SSH.
Kegunaan utama SSH adalah untuk memasuki sistem komputer di tempat lain yang terhubung melalui jaringan dengan cara yang aman. Tapi saat ini SSH dapat diturunkan untuk berbagai hal yang amat dibutuhkan dalam komputasi jaringan atau lebih besar lagi: internet.
Sedangkan putty adalah software remote console/ terminal yang digunakan untuk meremote komp dengan terhubungnya menggunakan port ssh atau sebagainya, Pada bahasan disini diterang cara unutk meremote komp sistem operasi linux dengan menggunakan komp sisem operasi windows tentunya putty disini diinstall diwindows jadi digunakan putty versi windows.
• Cara Meremote :
Sebelum melakukan langkah di bawah port ssh di komp tujuan harus aktif dengan cara diaktifkan servicenya melalui terminal
=>di fedora => service sshd start “untuk mengaktifkan por ssh”
=> chkconfig sshd on “servis aktif terus berjalan”
jika untuk mengatahui sshd sudah terinstall belum ==>service sshd status jika failed berarti belum terinstall dan harus diinstal dahulu opensshnya.
Putty bisa di download secara gratis di situs
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
Cara pakai putty sesudah didownload : 
Software putty tidak memerlukan installasi putty versi ini langsung klik-klik saja .
Berikut pada host name isikan IP local computer tujuan untuk diremote atau dikendalikan, lalu pada port tetapkan 22 karena port ssh yang terbuka di computer tujuan adalah port 22. Cukup hanya itu saja yang harus diisikan. Lalu klik “Open” untuk memulai putty.
Selanjutnya langkah kedua adalah :
Untuk mengisi login as harus benar passwordnya juga harus tepat sesuai yang terdaftar pada komp yang di remote.
Setelah menekan Enter maka anda berhasil masuk. Hal yang terpenting disini adalah jika kita ingin akses full administrator komputer linux yang di remote tadi harus masuk sebagai root.

Hasilnya Setelah kita melakukan setting pada awal install putty dan setelah masuk console lalu login dan memasukkan password tujuan dengan benar maka kita bisa mengakses computer yang kita remote secara penuh.
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 socket, marshalling & unmarshalling.

- Robust (Sempurna):

Sejak th 1980-an RPC telah banyak digunakan dlm pengembangan mission-critical 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.

Sumber :http://mfahrura.blogspot.com/2011/01/tugas-makalah-sistem-terdistribusi.html

Name : Andreas

Class : 4IA09

Selasa, 13 Maret 2012

Definisi dari Sistem Terdistribusi berikut contohnya..

Pengertian Sistem Terdistribusi 

 Sistem terdistribusi adalah sekumpulan prosesor yang tidak saling berbagi memori atau clock dan terhubung melalui jaringan komunikasi yang bervariasi, yaitu melalui Local Area Network ataupun melalui Wide Area Network. Prosesor dalam sistem terdistribusi bervariasi, dapat berupa small microprocessor, workstation, minicomputer, dan lain sebagainya. Berikut adalah ilustrasi struktur sistem terdistribusi:
Gambar Struktur Sistem Terdistribusi
 
Struktur Sistem Terdistribusi
Karakteristik sistem terdistribusi adalah sebagai berikut:  

  1. Concurrency of components. Pengaksesan suatu komponen/sumber daya (segala hal yang dapat digunakan bersama dalam jaringan komputer, meliputi H/W dan S/W) secara bersamaan. Contoh: Beberapa pemakai browser mengakses halaman web secara bersamaan
  2. No global clock. Hal ini menyebabkan kesulitan dalam mensinkronkan waktu seluruh komputer/perangkat yang terlibat. Dapat berpengaruh pada pengiriman pesan/data, seperti saat beberapa proses berebut ingin masuk ke critical session.
  3. Independent failures of components. Setiap komponen/perangkat dapat mengalami kegagalan namun komponen/perangkat lain tetap berjalan dengan baik.
    Ada EMPAT alasan utama untuk membangun sistem terdistribusi, yaitu:
  • Computation Speedup. Apabila sebuah komputasi dapat dipartisi menjadi beberapa subkomputasi yang berjalan bersamaan, maka sistem terdistribusi akan mendistribusikan subkomputasi tersebut ke situs-situs dalam sistem. Dengan demikian, hal ini meningkatkan kecepatan komputasi (computation speedup). 
  • Reliability. Dalam sistem terdistribusi, apabila sebuah situs mengalami kegagalan, maka situs yang tersisa dapat melanjutkan operasi yang sedang berjalan. Hal ini menyebabkan reliabilitas sistem menjadi lebih baik. 
  • Resource Sharing. Dalam sistem terdistribusi, situs-situs yang berbeda saling terhubung satu sama lain melalui jaringan sehingga situs yang satu dapat mengakses dan menggunakan sumber daya yang terdapat dalam situs lain. Misalnya, user di situs A dapat menggunakan laser printer yang dimiliki situs B dan sebaliknya user di situs B dapat mengakses file yang terdapat di situs A.
  • Communication. Ketika banyak situs saling terhubung melalui jaringan komunikasi, user dari situs-situs yang berbeda mempunyai kesempatan untuk dapat bertukar informasi.

 Model Sistem terdistribusi

  • Model client server
  • Model proxy server
  • Model peer to peer
  • Model mobile Code
  • Model mobile agent

Contoh - Contoh Sistem terdistribusi 

1.  Sistem Telepon
- ISDN, PSTN

2.  Manajemen Jaringan
- Adminstrasi ke sumber jaringan

Gambar diatas adalah  contoh sistem terdistribusi, Automatic Banking (teller machine) System

3.  Network File System (NFS)
- Arsitektur untuk mengakses sistem file melalui jaringan

4.  WWW (World Wide Web)
- Arsitektur client/server yang diterapkan di atas infrastruktur internet
- Shared Resource (melalui URL)


Sumber
http://nurmanto.com/pengertian-sistem-terdistribusi/
http://ar4y4sh1k1.wordpress.com/2010/02/13/model-sistem-terdistribusi/
http://sistemterdistribusipradityo.wordpress.com/2011/01/14/1-2-contoh-sistem-terdistribusi/


Nama : Andreas
NPM : 50408111