Jumat, 24 April 2015

Proses Dalam Sistem Terdistribusi


Proses
Konsep Proses

         Jika kita berdiskusi mengenai sistem operasi, maka akan timbul sebuah pertanyaan yaitu mengenai istilah apa yang tepat untuk menyebut semua kegiatan yang dilakukan oleh CPU. Sistem batch mengeksekusi jobs sebagaimana suatu sistem time-share menggunakan program pengguna (user programs) atau tasks. Bahkan pada sistem dengan pengguna tunggal pun, seperti pada MicrosoftWindows dan Macintosh OS, seorang pengguna mampu menjalankan beberapa program pada saat yang sama, contohnya Word Processor, Web Browser, dan paket e-mail. Bahkan jika pengguna hanya dapat menjalankan satu program pada satu waktu, sistem operasi perlu untuk mendukung aktivitas program internalnya sendiri, seperti managemen memori. 
Dalam banyak hal, seluruh aktivitas ini adalah serupa, maka kita menyebut seluruh program itu proses-proses.
        Istilah job dan proses digunakan hampir dapat dipertukarkan pada tulisan ini. Walau kami sendiri lebih menyukai istilah proses, banyak teori dan terminologi sistem operasi dikembangkan selama suatu waktu ketika aktivitas utama sistem operasi adalah job processing. Akan membingungkan jika kita menghindari penggunaan istilah yang telah diterima oleh masyarakat yang memasukkan kata job hanya karena proses memiliki istilah job sebagai pengganti atau pendahulunya. 


Definisi Proses
          Secara tidak langsung, proses merupakan program yang sedang dieksekusi. Menurut Silberschatz, suatu proses adalah lebih dari sebuah kode program, yang terkadang disebut text section. Proses jugamencakup program counter, yaitu sebuah stack untuk menyimpan alamat dari instruksi yang akan dieksekusi selanjutnya dan register. Sebuah proses pada umumnya juga memiliki sebuah stack yang berisikan data-data yang dibutuhkan selama proses dieksekusi seperti parameter metoda, alamat return dan variabel lokal, 
     dan sebuah data section yang menyimpan variabel global. Sama halnya dengan Silberschatz, Tanenbaum juga berpendapat bahwa proses adalah sebuah program yang dieksekusi yangmencakup program counter, register, dan variabel di dalamnya. Kami tekankan bahwa program itu sendiri bukanlah sebuah proses; suatu 
           program adalah satu entitas pasif; seperti isi dari sebuah berkas yang disimpan didalam disket. Sedangkan sebuah proses dalam suatu entitas aktif, dengan sebuah program counter yang menyimpan alamat instruksi selanjut yang akan dieksekusi dan seperangkat sumber daya (resource) yang dibutuhkan agar sebuah proses dapat dieksekusi. Untuk mempermudah kita membedakan program dengan proses, kita akan menggunakan analogi yang diberikan oleh Tanenbaum. Misalnya ada seorang tukang kue yang ingin membuat kue ulang tahun untuk anaknya. Tukang kue tersebut memiliki resep kue ulang tahun dan bahan-bahan yang dibutuhkan untuk membuat kue ulang tahun di dapurnya seperti: tepung terigu, telur, gula, bubuk vanila dan bahan-bahan lainnya. Dalam analogi ini, resep kue ulang tahun adalah sebuah program, si tukang kue tersebut adala prosesor (CPU), dan bahan-bahan untuk membuat kue tersebut adalah data input. Sedangkan proses-nya adalah kegiatan sang tukang kue untuk membaca resep, mengolah bahan, dan memanggang kue tersebut. 
          Walau dua proses dapat dihubungkan dengan program yang sama, program tersebut dianggap dua urutan eksekusi yang berbeda. Sebagai contoh, beberapa pengguna dapat menjalankan salinan yang berbeda pada mail program, atau pengguna yang sama dapat meminta banyak salinan dari program editor. Tiap-tiap proses ini adakah proses yang berbeda dan walau bagian text-section adalah sama, data section-nya bervariasi. Adalah umum untuk memiliki proses yang menghasilkan banyak proses begitu ia bekerja. 

Status Proses
          Bila sebuah proses dieksekusi, maka statusnya akan berubah-ubah. Status dari sebuah proses mencerminkan aktivitas atau keadaan dari proses itu sendiri. Berikut ini adalah status-status yangmungkin dimiliki sebuah proses menurut Tanenbaum:

  1. Running: pada saat menggunakan CPU pada suatu waktu. 
  2. Ready: proses diberhentikan sementara karena menunggu proses lain untuk dieksekusi. 
  3. Blocked: tidak dijalankan sampai event dari luar, yang berhubungan dengan proses tersebut terjadi. Sedangkan menurut Silberschatz, terdapat lima macam jenis status yang mungkin dimiliki oleh suatu proses: 
  4. New: status yang dimiliki pada saat proses baru saja dibuat. 
  5. Running: status yang dimiliki pada saat instruksi-instruksi dari sebuah proses dieksekusi. 
  6. Waiting: status yang dimiliki pada saat proses menunggu suatu event (contohnya: proses I/O). 
  7. Ready: status yang dimiliki pada saat proses siap untuk dieksekusi oleh prosesor. 
  8. Terminated: status yang dimiliki pada saat proses telah selesai dieksekusi. 
           Nama-nama tersebut adalah berdasar opini, istilah tersebut bervariasi di sepanjang sistem operasi. Keadaan yang mereka gambarkan ditemukan pada seluruh sistem. Namun, pada sistem operasi tertentu lebih baik menggambarkan keadaan/status proses. Penting untuk diketahui bahwa hanya satu proses yang dapat berjalan pada prosesor mana pun pada satu waktu. Namun, banyak proses yang dapat berstatus ready atau waiting. Keadaan diagram yang berkaitan dengan keadaan tersebut dijelaskan pada gambar 3.1 Ada tiga kemungkinan bila sebuah proses memiliki status running:





Gambar~3.1: Status proses

  • Jika program telah selesai dieksekusi maka status dari proses tersebut akan berubah menjadi Terminated. 
  • Jika waktu yang disediakan oleh OS untuk proses tersebut sudah habis maka akan terjadi interrupt dan proses tersebut kini berstatus Ready. 
  • Jika suatu event terjadi pada saat proses dieksekusi (seperti ada request I/O) maka proses tersebut akan menunggu event tersebut selesai dan proses berstatus Waiting. 


Proses Control Block

            Tiap proses digambarkan dalam sistem operasi oleh sebuah process control block (PCB) - juga disebut sebuah control block. Sebuah PCB ditunjukkan dalam Gambar 3.2. PCB berisikan banyak bagian dari informasi yang berhubungan dengan sebuah proses yang spesifik, termasuk hal-hal di bawah ini: 


  • Status proses: status mungkin, new, ready, running, waiting, halted, dan juga banyak lagi. 
  • Program counter: suatu stack yang berisi alamat dari instruksi selanjutnya untuk dieksekusi untuk proses ini. 
  • CPU register: Register bervariasi dalam jumlah dan jenis, tergantung pada rancangan komputer. Register tersebut termasuk accumulator, register indeks, stack pointer, general-purposes register, ditambah code information pada kondisi apa pun. Beserta dengan program counter, keadaan/status informasi harus disimpan ketika gangguan terjadi, untukmemungkinkan proses tersebut berjalan/bekerja dengan benar setelahnya (lihat Gambar 3.3Tiap proses digambarkan dalamsistem operasi oleh sebuah process control block (PCB) - juga disebut sebuah control block. Sebuah PCB ditunjukkan dalam Gambar 3-2. PCB berisikan banyak bagian dari informasi yang berhubungan dengan sebuah proses yang spesifik, termasuk hal-hal di bawah ini: 
  • Status proses: status mungkin, new, ready, running, waiting, halted, dan juga banyak lagi. 
  • Program counter: suatu stack yang berisi alamat dari instruksi selanjutnya untuk dieksekusi untuk proses ini. 
  • CPU register: Register bervariasi dalam jumlah dan jenis, tergantung pada rancangan komputer. Register tersebut termasuk accumulator, register indeks, stack pointer, general-purposes register, ditambah code information pada kondisi apa pun. Beserta dengan program counter, keadaan/status informasi harus disimpan ketika gangguan terjadi, untukmemungkinkan proses tersebut berjalan/bekerja dengan benar setelahnya (lihat Gambar 3.3). 
  • ² Informasi managemen memori: Informasi ini dapat termasuk suatu informasi sebagai nilai dari dasar dan batas register, tabel page/halaman, atau tabel segmen tergantung pada sistem memori yang digunakan oleh sistem operasi (lihat Bab 5). 
  • Informasi pencatatan: Informasi ini termasuk jumlah dari CPU dan waktu riil yang digunakan, batas waktu, jumlah akun jumlah job atau proses, dan banyak lagi. 
  • Informasi status I/O: Informasi termasuk daftar dari perangkat I/O yang di gunakan pada proses ini, suatu daftar berkas-berkas yang sedang diakses dan banyak lagi. 
  • PCB hanya berfungsi sebagai tempat penyimpanan informasi yang dapat bervariasi dari proses yang satu dengan yang lain. 


Gambar~3.2: Proses Control Block

Thread
Apa itu thread ?

           Thread merupakan unit dasar dari penggunaan CPU, yang terdiri dari Thread_ID, program counter, register set, dan stack. Sebuah thread berbagi code section, data section, dan sumber daya sistem operasi dengan Thread lain yang dimiliki oleh proses yang sama. Thread juga sering disebut lightweight process. Sebuah proses tradisional atau heavyweight process mempunyai thread tunggal yang berfungsi sebagai pengendali. Perbedaan antara proses dengan thread tunggal dengan proses dengan thread yang banyak adalah proses dengan thread yang banyak dapat mengerjakan lebih dari satu tugas pada satu satuan waktu. Banyak perangkat lunak yang berjalan pada PC modern dirancang secara multi-threading. Sebuah aplikasi biasanya diimplementasi sebagai proses yang terpisah dengan beberapa thread yang berfungsi sebagai pengendali. 

Contohnya sebuah web browser mempunyai thread untuk menampilkan gambar






Gambar~3.3: Status proses




Gambar~3.4: Thread


bar atau tulisan sedangkan thread yang lain berfungsi sebagai penerima data dari network. Kadang kala ada situasi dimana sebuah aplikasi diperlukan untuk menjalankan beberapa tugas yang serupa. Sebagai contohnya sebuah web server dapatmempunyai ratusan klien yang mengaksesnya secara concurrent. Kalau web server berjalan sebagai proses yang hanya mempunyai thread tunggal maka ia hanya dapat melayani satu klien pada pada satu satuan waktu. Bila ada klien lain yang ingin mengajukan permintaan maka ia harus menunggu sampai klien sebelumnya selesai dilayani. Solusinya adalah dengan membuat web server menjadi multi threading. Dengan ini maka sebuah web server akan membuat thread yang akan mendengar permintaan klien, ketika permintaan lain diajukan maka web server akan menciptakan thread lain yang akan melayani permintaan tersebut. Java mempunyai pengunaan lain dari thread. Perlu diketahui bahwa Java tidak mempunyai konsep asynchronous. Sebagai contohnya kalau program java mencoba untuk melakukan koneksi ke server maka ia akan berada dalam keadaan block state sampai koneksinya jadi (dapat dibayangkan apa yang terjadi apabila servernya mati). Karena Java tidak memiliki konsep asynchronous maka solusinya adalah dengan membuat thread yang mencoba untuk melakukan koneksi ke server dan thread lain yang pertamanya tidur selamabeberap waktu (misalnya 60 detik) kemudian bangun. Ketika waktu tidurnya habis maka ia akan bangun dan memeriksa apakah thread yang melakukan koneksi ke server masih mencoba untuk melakukan koneksi ke server, kalau thread tersebutmasih dalam keadaan mencoba untuk melakukan koneksi ke server maka ia akan melakukan interrupt dan mencegah thread tersebut untuk mencoba melakukan koneksi ke server.


Keuntungan Thread

Keuntungan dari program yang multithreading dapat dipisah menjadi empat

kategori:


1. Responsi: Membuat aplikasi yang interaktif menjadi multithreading dapat membuat sebuah program terus berjalan meskipun sebagian dari program tersebut diblok atau melakukan operasi yang panjang, karena itu dapat meningkatkan respons kepada pengguna. Sebagai contohnya dalam web browser yang multithreading, sebuah thread dapat melayani permintaan pengguna sementara thread lain berusaha menampilkan image. 


2. Berbagi sumber daya: thread berbagi memori dan sumber daya dengan thread lain yang dimiliki oleh proses yang sama. Keuntungan dari berbagi kode adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.


3. Ekonomi: dalam pembuatan sebuah proses banyak dibutuhkan pengalokasian memori dan sumber daya. Alternatifnya adalah dengan penggunaan thread, karena thread berbagi memori dan sumber daya proses yang memilikinya maka akan lebih ekonomis untuk membuat dan context switch thread. Akan susah untuk mengukur perbedaan waktu antara proses dan thread dalam hal pembuatan dan pengaturan, tetapi secara umum pembuatan dan pengaturan proses lebih lama dibandingkan thread. Pada Solaris, pembuatan proses lebih lama 30 kali dibandingkan pembuatan thread, dan context switch proses 5 kali lebih lama dibandingkan context switch thread. 


4. Utilisasi arsitektur multiprocessor: Keuntungan dari multithreading dapat sangat meningkat pada arsitektur multiprocessor, dimana setiap thread dapat berjalan secara pararel di atas processor yang berbeda. Pada arsitektur processor tunggal, CPU menjalankan setiap thread secara bergantian tetapi hal ini berlangsung sangat cepat sehingga menciptakan ilusi pararel, tetapi pada kenyataannya hanya satu thread yang dijalankan CPU pada satu-satuan waktu (satu-satuan waktu pada CPU biasa disebut time slice atau quantum). 


User dan Kernel Thread User Thread


              User thread didukung di atas kernel dan diimplementasi oleh thread library pada user level. Library menyediakan fasilitas untuk pembuatan thread, penjadualan thread, dan managemen thread tanpa dukungan dari kernel. Karena kernel tidak menyadari user-level thread maka semua pembuatan dan penjadualan thread dilakukan di user space tanpa intervensi dari kernel. Oleh karena itu, user-level thread biasanya cepat untuk dibuat dan diatur. Tetapi user threadmempunyai kelemahan yaitu apabila kernelnyamerupakan thread tunggal maka apabila salah satu user-level thread menjalankan blocking system call maka akan mengakibatkan seluruh proses diblok walau pun ada thread lain yang dapat jalan dalam aplikasi tersebut. Contoh user-thread libraries adalah POSIX Pthreads, Mach C-threads, dan Solaris threads. 

Kernel Thread

           Kernel thread didukung langsung oleh sistem operasi. Pembuatan, penjadualan, dan managemen thread dilakukan oleh kernel pada kernel space. Karena pengaturan thread dilakukan oleh sistem operasi maka pembuatan dan pengaturan kernel thread lebih lambat dibandingkan user thread. Keuntungannya adalah thread diatur oleh kernel, karena itu jika sebuah thread menjalankan blocking system call maka kernel dapat menjadualkan thread lain di aplikasi untuk melakukan eksekusi. Keuntungan lainnya adalah pada lingkunganmultiprocessor, kernel dapatmenjadual thread-thread pada processor yang berbeda. Contoh sistem operasi yang mendukung kernel thread adalah Windows NT, Solaris, Digital UNIX. 








Gambar~3.5: Many to one


Multithreading Model


Many to one Model


Many-to-One model memetakan banyak user-level thread ke satu kernel thread. Pengaturan thread dilakukan di user space, oleh karena itu ia e…sien tetapi


ia mempunyai kelemahan yang sama dengan user thread. Selain itu karena hanya satu thread yang dapat mengakses thread pada suatu waktu makamultiple thread tidak dapat berjalan secara pararel pada multiprocessor. Userlevel thread yang diimplementasi pada sistem operasi yang tidak mendukung kernel thread menggunakan Many-to-One model.



One to one Model


     One-to-Onemodel memetakan setiap user thread ke kernel thread. Ia menyediakan lebih banyak concurrency dibandingkan Many-to-One model. Keuntungannya sama dengan keuntungan kernel thread. Kelemahannya model ini adalah setiap pembuatan user thread membutuhkan pembuatan kernel thread. Karena pembuatan thread dapat menurunkan performa dari sebuah 






Gambar~3.6: One to one

aplikasi maka implmentasi dari model ini membatasi jumlah thread yang dibatasi oleh sistem. Contoh sistem operasi yang mendukung One-to-One model adalah Windows NT dan OS/2.


Many to many Model
            Many-to-many model multiplexes banyak user-level thread ke kernel thread yang jumlahnya lebih kecil atau sama banyaknya dengan user-level thread. Jumlah kernel thread dapat spesi…k untuk sebagian aplikasi atau sebagian mesin. Many-to-One model mengizinkan developer ntuk membuat user thread sebanyak yang iamau tetapi concurrency tidak dapat diperoleh karena hanya satu thread yang dapat dijadual oleh kernel pada suatu waktu. One-to-One menghasilkan concurrency yang lebih tetapi developer harus hati-hati untuk tidak menciptakan terlalu banyak thread dalam suatu aplikasi (dalam beberapa hal, developer hanya dapat membuat thread dalam jumlah yang terbatas). Many-to-Many model tidak menderita kelemahan dari 2 model di atas. Developer dapat membuat user thread sebanyak yang diperlukan, dan kernel thread yang bersangkutan dapat bejalan secara pararel pada multiprocessor. Dan juga ketika suatu thread menjalankan blocking system 





Gambar~3.7: Many to many

call maka kernel dapat menjadualkan thread lain untuk melakukan eksekusi. Contoh sistem operasi yang mendukung model ini adalah Solaris, IRIX, dan Digital UNIX.


Fork dan Exec System Call

Ada dua kemungkinan dalam system UNIX jika fork dipanggil oleh salah satu thread dalam proses:

  • Semua thread diduplikasi. 
  • Hanya thread yang memanggil fork. 

           Kalau thread memanggil exec System Call maka program yang dispesi fikasi di parameter exec akan mengganti keseluruhan proses termasuk thread dan LWP. Penggunaan dua versi dari fork di atas tergantung dari aplikasi. Kalau exec dipanggil seketika sesudah fork, maka duplikasi seluruh thread tidak dibutuhkan, karena program yang dispesi…kasi di parameter exec akan mengganti seluruh proses. Pada kasus ini cukup hanya mengganti thread yang memanggil fork. Tetapi jika proses yang terpisah tidak memanggil exec sesudah fork maka proses yang terpisah tersebut hendaknya menduplikasi seluruh thread.


Cancellation

           Thread cancellation adalah tugas untuk memberhentikan thread sebelum ia menyelesaikan tugasnya. Sebagi contohnya jika dalam program java kita hendak mematikan Java Virtual Machine (JVM) maka sebelum JVM-nya dimatikan maka seluruh thread yang berjalan dihentikan terlebuh dahulu. Thread yang akan diberhentikan biasa disebut target thread. Pemberhentian target thread dapat terjadi melalui dua cara yang berbeda: 


  • Asynchronous cancellation: suatu thread seketika itu juga memberhentikan target thread. 
  • Defered cancellation: target thread secara perodik memeriksa apakah dia harus berhenti, cara ini memperbolehkan target thread untuk memberhentikan dirinya sendiri secara terurut. 

Hal yang sulit dari pemberhentian thread ini adalah ketika terjadi situasi dimana sumber daya sudah dialokasikan untuk thread yang akan diberhentikan. Selain itu kesulitan lain adalah ketika thread yang diberhentikan sedang meng-update data yang ia bagi dengan thread lain. Hal ini akan menjadi masalah yang sulit apabila digunakan asynchronous cancellation. Sistem operasi akanmengambil kembali sumber daya dari thread yang diberhentikan tetapi seringkali sistem operasi tidak mengambil kembali semua sumber daya dari thread yang diberhentikan. Alternatifnya adalah dengan menggunakan de¤ered cancellation. Cara kerja dari de¤ered cancellation adalah dengan menggunakan satu thread yang berfungsi sebagai pengindikasi bahwa target thread hendak diberhentikan. Tetapi pemberhentian hanya akan terjadi jika target threadmemeriksa apakah ia harus berhenti atau tidak. Hal ini memperbolehkan thread untuk memeriksa apakah ia harus berhenti pada waktu dimana ia dapat diberhentikan secara aman yang aman. Pthreadmerujuk tersebut sebagai cancellation points. Pada umumnya sistem operasi memperbolehkan proses atau thread untuk diberhentikan secara asynchronous. Tetapi Pthread API menyediakan deferred cancellation. Hal ini berarti sistem operasi yang mengimplementasikan Pthread API akan mengizinkan deferred cancellation.


Penanganan Sinyal
         Sebuah sinyal digunakan di sistem UNIX untuk notify sebuah proses kalau suatu peristiwa telah terjadi. Sebuah sinyal dapat diterima secara synchronous atau asynchronous tergantung dari sumber dan alasan kenapa peristiwa itu memberi sinyal. 
  • Semua sinyal (asynchronous dan synchronous) mengikuti pola yang sama: 
  • Sebuah sinyal dimunculkan oleh kejadian dari suatu persitiwa. 
  • Sinyal yang dimunculkan tersebut dikirim ke proses. 
  • Sesudah dikirim, sinyal tersebut harus ditangani. 

Contoh dari sinyal synchronous adalah ketika suatu proses melakukan pengaksesan memori secarai ilegal atau pembagian dengan nol, sinyal dimunculkan dan dikirim ke proses yang melakukan operasi tersebut. Contoh dari sinyal asynchronous misalnya kitamengirimkan sinyal untuk mematikan proses dengan keyboard (ALT-F4)maka sinyal asynchronous dikirim ke proses tersebut. Jadi ketika suatu sinyal dimunculkan oleh peristiwa diluar proses yang sedang berjalanmaka proses tersebut menerima sinyal tersebut secara asynchronous.
Setiap sinyal dapat ditangani oleh salah satu dari dua penerima sinyal:
  • Penerima sinyal yang merupakan set awal dari sistem operasi. 
  • Penerima sinyal yang dide…nisikan sendiri ole user. 

Penanganan sinyal pada program yang hanya memakai thread tunggal cukup mudah yaitu hanya dengan mengirimkan sinyal ke prosesnya. Tetapi mengirimkan sinyal lebih rumit pada program yang multithreading, karena sebuah proses dapat memiliki beberapa thread.

Secara umum ada empat pilihan kemana sinyal harus dikirim:

  • Mengirimkan sinyal ke thread yang dituju oleh sinyal
  • Mengirimkan sinyal ke setiap thread pada proses tersebut. 
  • Mengirimkan sinyal ke thread tertentu dalam proses. 
  • Menugaskan thread khusus untuk menerima semua sinyal yang ditujukan pada proses. 

Cara untuk mengirimkan sebuah sinyal tergantung dari jenis sinyal yang dimunculkan. Sebagai contoh sinyal synchronous perlu dikirimkan ke thread yang memunculkan sinyal tersebut bukan thread lain pada proses tersebut. Tetapi situasi dengan sinyal asynchronous menjadi tidak jelas. Beberapa sinyal asynchronous seperti sinyal yang berfungsi untuk mematikan proses (contoh: alt-f4) harus dikirim ke semua thread. Beberapa versi UNIX yang multithreading mengizinkan thread menerima sinyal yang akan ia terima dan menolak sinyal yang akan ia tolak. Karena itu sinyal asynchronouns hanya dikirimkan ke thread yang tidak memblok sinyal tersebut. Solaris 2 mengimplementasikan pilihan ke-4 untuk menangani sinyal. Windows 2000 tidak menyediakan fasilitas untuk mendukung sinyal, sebagai gantinya Windows 2000 menggunakan asynchronous procedure calls (APCs). Fasilitas APC memperbolehkan user thread untuk memanggil fungsi tertentu ketika user thread menerima notifikasi peristiwa tertentu.


Thread Pools

Pada web server yang multithreading ada dua masalah yang timbul:


  • Ukuran waktu yang diperlukan untuk menciptakan thread untuk melayani permintaan yang diajukan terlebih pada kenyataannya thread dibuang ketika ia seketika sesudah ia menyelesaikan tugasnya. 
  • Pembuatan thread yang tidak terbatas jumlahnya dapat menurunkan performa dari sistem. 

Solusinya adalah dengan penggunaan Thread Pools, cara kerjanya adalah dengan membuat beberapa thread pada proses startup dan menempatkan mereka ke pools, dimana mereka duduk diam dan menunggu untuk bekerja. Jadi ketika server menerima permintaan maka maka ia akan membangunkan thread dari pool dan jika thread tersedia maka permintaan tersebut akan dilayani. Ketika thread sudah selesai mengerjakan tugasnya maka ia kembali ke pool dan menunggu pekerjaan lainnya. Bila tidak thread yang tersedia
pada saat dibutuhkan maka server menunggu sampai ada satu thread yang bebas. Keuntungan thread pool:

  • 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 sistemyang tidak dapatmendukung banyak thread yang berjalan secara concurrent. Jumlah thread dalam pool dapat tergantung dari jumlah CPU dalam sistem, jumlah memori fisik, dan jumlah permintaan klien yang concurrent.


Sistem client - server

Merupakan bagian dari model sistem terdistribusi yang membagi jaringan berdasarkan pemberi dan penerima jasa layanan. Pada sebuah jaringan akan didapatkan: file server, time server, directory server, printer server, dan seterusnya.



2. Sistem point to point
Merupakan bagian dari model sistem terdistribusi dimana system dapat sekaligus berfungsi sebagai client maupun server.


3. Sistem terkluster
Adalah gabungan dari beberapa sistem individual (komputer) yang dikumpulkan pada suatu lokasi, saling berbagi tempat penyimpanan data (storage), dan saling terhubung dalam jaringan lokal (Local Area Network). Sistem kluster memiliki persamaan dengan sistem paralel dalam hal menggabungkan beberapa CPU untuk meningkatkan kinerja komputasi. Jika salah satu mesin mengalami masalah dalam menjalankan tugas maka mesin lain dapat mengambil alih pelaksanaan tugas itu. Dengan demikian, sistem akan lebih handal dan fault tolerant dalam melakukan komputasi.


E. Alasan Membangun Sistem Terdistribusi
Ada empat alasan utama untuk membangun sistem terdistribusi, yaitu:


1. 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


2. 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)


3. 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


4. Communication
Ketika banyak situs saling terhubung melalui jaringan komunikasi, user dari situs-situs yang berbeda mempunyai kesempatan untuk dapat bertukar informasi.


Selain itu ada beberapa alasan lain membangun sistem terdistribusi, yakni :

Distribusi fungsi : Komputer memiliki kemampuan fungsi yang berbeda-beda (client/server, Host/terminal, Data gathering / data processing)
Distribusi beban/keseimbangan : Pemberian tugas ke prosesor secukupnya sehingga unjuk kerja seluruh sistem teroptimasi
Replika Kekuatan : Kumpulan PC memiliki kekuatan yang lebih besar dari super komputer
Pemisahan Fisik : Untuk kehandalan atau redundansi sistem
Ekonomis : Kumpulan mikroprosesor memberikan harga/unjuk kerja yang lebih baik dibandingkan dengan mainframe.



F. Permasalahan Sistem Terdistribusi


Masalah dengan sistem terdistribusi yang dapat dimunculkan antara lain berkaitan dengan :

Software - bagaimana merancang dan mengatur software dalam Distribusi Sistem
Ketergantungan pada infrastruktur jaringan
Kemudahan akses ke data yang di share, memunculkan masalah keamanan

Dalam setiap penggunaan suatu sistem, banyak sekali ditemui permasalahan -permasalahan yang muncul, begitu juga dengan sistem terdistribusi. Selain permasalahan-permasalahan yang akan dihadapi terdapat tantangan- tantangan dalam sistem terdistribusi.


G. Contoh dari sistem terdistribusi


1. Internet

Merupakan suatu bentuk jaringan global yang menghubungkan komputer denga satu sama lainnya, yang dapat berkomunikasi dengan media IP sebagai protokol.



2. Intranet

Jaringan yang teradministrasi secara lokal
Biasanya proprietary
Terhubung ke internet (melalui firewall)
Menyediakan layanan internal dan eksternal




3. Mobile dan sistem komputasi ubiquitous


Sistem telepon Cellular (e.g., GSM) Resources dishare : frekuensi radio, waktu transmisi dalam satu frekuensi, bergerak
Komputer laptop, ubiquitous computing
Handheld devices, PDA, etc



4. World wide web

Arsitektur client/server tebuka yang diterapkan di atas infrastruktur internet
Shared resources (melalui URL)



Sumber : http://www.blogsitaufik.web.id/2013/12/mengenal-sistem-terdistribusi.html

Komunikasi Dalam Sistem Terdistribusi


Interproses komunikasi adalah jantung dari semua sistem terdistribusi. Tidak masuk akal untuk mempelajari sistem terdistribusi tanpa hati-hati dengan cara bahwa proses pada mesin yang berbeda dapat saling bertukar informasi. Komunikasi dalam sistem terdistribusi selalu didasarkan pada pesan tingkat rendah yang lewat seperti yang ditawarkan oleh jaringan yang mendasarinya. Sistem terdistribusi modern biasanya terdiri dari ribuan atau bahkan jutaan proses yang tersebar di seluruh jaringan internet. 
Dalam pembahasan kali ini, kita mulai dengan membahas aturan bahwa proses berkomunikasi harus ada yang dikenal sebagai protokol, dan cocencrate. Pada penataan tersebut protokol dalam bentuk lapisan. Dari tampilan diempat luas dan model yang digunakan untuk komunikasi terbagi atas: prosedur panggilan jarak jauh (RMC), remote metode doa (RMI), pesan middleware berorientasi (MOM) dan streams.Model pertama untuk komunikasi dalam sistem terdistribusi adalah panggilan prosedur remote (RPC). Sebuah RPC bertujuan menyembunyikan sebagian besar seluk-beluk pesan lewat, dan sangat ideal untuk aplikasi client-server. perbaikan untuk model RPC datang dalam bentuk doa metode remote (RMIs), yang didasarkan pada gagasan obyek terdistribusi. RPC dan RMIs dibahas dalam bagian terpisah.
Pesan-berorientasi middleware (MOM) adalah disebut juga sebagai suatu message-queuing sistem, suatu kerangka pesan, atau sekedar messaging sistem. MOM dapat membentuk suatu lapisan middleware yang penting untuk aplikasi perusahaan melalui Internet. MOM dapat menerbitkan dan mendaftar model, suatu klien dapat mendaftarkan sebagai penerbit atau seorang langganan dari pesan. Pesan dikirimkan hanya untuk tujuan yang relevan dan hanya sekali, dengan berbagai metoda komunikasi yang mencakup komunikasi one-to-many atau many-to-many. Sumber data dan tujuan dapat decoupled di bawah model tersebut.

1. Protocol LayerProtokol 
      merupakan sebuah rule, prosedur dan pengaturan sejumlah operasi peralatan komunikasi data,dalam komunikasi data, aturan-aturan meliputi cara membuka hubungan, mengirim paket data, menginformasi jumlah data yang diterima, dan meneruskan pengiriman data. Protokol dapat diterapkan pada perangkat keras, perangkat lunak atau kombinasi dari keduanya. Pada tingkatan yang terendah, protokol mendefinisikan koneksi perangkat keras.Prinsip dalam membuat protokol ada tiga hal yang harus dipertimbangkan, yaitu efektivitas, kehandalan, dan Kemampuan dalam kondisi gagal di network. Protokol distandarisasi oleh beberapa organisasi yaitu IETF, ETSI, ITU, dan ANSI.
Tugas yang biasanya dilakukan oleh sebuah protokol dalam sebuah jaringan diantaranya adalah : 

  1. Melakukan deteksi adanya koneksi fisik atau ada tidaknya komputer / mesin lainnya. 
  2. Melakukan metode “jabat-tangan” (handshaking). 
  3. Negosiasi berbagai macam karakteristik hubungan. 
  4. Bagaimana mengawali dan mengakhiri suatu pesan. 
  5. Bagaimana format pesan yang digunakan. 
  6. Yang harus dilakukan saat terjadi kerusakan pesan atau pesan yang tidak sempurna. 
  7. Mendeteksi rugi-rugi pada hubungan jaringan dan langkah-langkah yang dilakukan selanjutnya. 
  8. Mengakhiri suatu koneksi. 

       Dalam Model OSI terdapat 7 layer dimana masing-masing layer mempunyai jenis protokol sesuai dengan peruntukannya. Sebuah standar protokol yang dikenal sebagai OSI (Open System Interconection) model dengan aisitektur sebagai berikut.

Arsitektur OSI dibuat berlapis-lapis dengan fungsi yang berbeda pada setiap lapisannya. Lapisan yang lebih tinggi menyembunyikan kerumitan dari operasi di lapisan yang lebih rendah dan suatu lapisan hanya dapat di akses oleh lapisan yang ada di atasnya atau di bawahnya.Hal tersebut di maksudkan untuk memberi kemudahankepada para pembuat perangkat keras dan perangkat lunak komunikasi dalam mengembangkan berbagai protokol yang berbeda sesuai kebutuhan. Namun tetap mereka harus mematuhi standar yang telah di berikan OSI.
Lapisan layer protokol tersebut dapat di golongkan lebih jauh menjadi:
  • Low level Layers 
  • Transport Layers 
  • Higher Level Layer 

a. Low level Layers
   Yang termasuk Low layers adalah lapisan-lapisan sebagi berikut:
  • Physical Layer: Spesifikasi dan implementasi dari bit-bit dan proses transmisi dari pengirim ke penerima. Berfungsi untuk mendefinisikan media transmisi jaringan, metode pensinyalan, sinkronisasi bit, arsitektur jaringan (seperti halnya Ethernet atau Token Ring), topologi jaringan dan pengkabelan. Selain itu, level ini juga mendefinisikan bagaimana Network Interface Card (NIC) dapat berinteraksi dengan media kabel atau radio. 
  • Data Link Layer: Bertanggung jawab mengurusi perubahan bit=bit data menjadi frame untuk mengatasi error dan penontrolan pengiriman frame. Befungsi untuk menentukan bagaimana bit-bit data dikelompokkan menjadi format yang disebut sebagai frame. Data link layer melakukan tugasnya dengan meletakkan pola bit khusus pada awal dan akhir dari setiap frame untuk menandai mereka, serta komputasi checksum dengan menjumlahkan semua byte dalam bingkai dengan cara tertentu. 
    Ketika frame tiba, penerima recomputes checksum dari data dan membandingkan hasilnya dengan checksum mengikuti frame. Jika setuju, frame dianggap benar dan diterima. Jika mereka tidak setuju, penerima meminta pengirim untuk retrasmit itu. Frame ditugaskan nomor urut (di header), sehingga semua orang dapat memberitahukan yang mana. 
  • Network Layer: Mengatur bagaimana paket-paket di arahkan berdasarkan alamat logik. lapisan bertanggung jawab untuk menerjemahkan alamat logis jaringan ke alamat fisik jaringan. Berfungsi untuk mendefinisikan alamat-alamat IP, membuat header untuk paket-paket, dan kemudian melakukan routing melalui internetworking dengan menggunakan router dan switch layer. Lapisan ini juga member identitas alamat, jalur perjalanan pengiriman data, dan mengatur masalah jaringan misalnya pengiriman paket-paket data. 
  • Saat ini, mungkin protokol jaringan yang paling banyak digunakan adalah IP connectionless (Internet Protocol), yang merupakan bagian dari protokol internet. Sebuah paket IP dapat dikirim tanpa pengaturan apapun. Setiap paket IP diarahkan ke tujuan yang independen dari semua orang lain. Tidak ada jalur internal dipilih dan diingat. 


b. Transport Layers
         Merupakan lapisan yang memberi fasilitas komunikasi bagi kebanyakan sistem tersebar. Berfungsi untuk memecah data ke dalam paket-paket data serta memberikan nomor urut ke paket-paket tersebut sehingga dapat disusun kembali pada sisi tujuan setelah diterima. Selain itu, pada level ini juga membuat sebuah tanda bahwa paket diterima dengan sukses (acknowledgement), dan mentransmisikan ulang terhadap paket-paket yang hilang di tengah jalan.Pada lapisan ini terdapat dua macam protokol yang sering digunakan, yaitu: 

  1. Transport Control Protocol (TCP) adalah protocol yang connection-oriented, yang berarti komunikasi yang melewatinya membutuhkan handshaking untuk mengatur koneksi end-to-end. Koneksi dapat dibuat dari client ke server, dan kemudian banyak data dapat dikirimkan melalui konesi itu. TCP memiliki karakteristik sebagai berikut: 

  • Connection-oriented merupakan sistem yang akan berkomunikasi harus terlebih dulu saling mengetahui dan sepakat 
  • Reliable, tersedia mekanisme menjamin paket yang rusak atau hilang dikirim ulang 
  • Stream –oriented communication 
  • Membutuhkan sumberdaya komputasi dan jaringan lebih dari UDP 
  • User Datagram Protocol (UDP) adalah protocol connectionless message-based yang lebih sederhana. Di protocol connectionless, tidak ada usaha yang dibuat untuk koneksi end-to-end. Koumikasi dicapai dengan mengirimkan informasi satu arah, dari source ke destination tanpa mengecek untuk melihat apakah tujuan masih ada, atau apakah koneksi disiapkan untuk menerima informasi. Paket UDP melewati jaringan dalam unit-unit yang berdiri sendiri. UDP memiliki karakteristik sebagai berikut: 

     Connectionless, tidak memerlukan adanya saling mengetahui dan kesepakatan Unreliable datagram communication, tidak tersedianya mekanisme yang menjamin paket rusak atau dikirim ulang.

         Manfaat TCP dibandingkan dengan UDP adalah bahwa ia bekerja andal melalui jaringan apapun. Kelemahan yang jelas adalah bahwa TCP memperkenalkan overhead yang jauh lebih, terutama dibandingkan dengan kasus-kasus di mana jaringan yang mendasarinya sangat handal, seperti dalam sistem area lokal. Ketika kinerja dan kehandalan yang dipertaruhkan, solusi alternatif selalu untuk menggunakan UDP, dan mengkombinasikannya dengan kesalahan tambahan dan kontrol aliran yang dioptimalkan untuk aplikasi tertentu. Kelemahan dari pendekatan ini adalah bahwa pekerjaan pembangunan banyak ekstra perlu dilakukan, tetapi juga bahwa solusi proprietary diperkenalkan, yang mempengaruhi keterbukaan sistem.
     Apa yang membuat TCP begitu menarik dalam banyak kasus, adalah bahwa hal itu tidak disesuaikan untuk mendukung jawaban perilaku permintaan sinkron interaksi klien yang paling server. Dalam keadaan normal, ketika pesan tidak tersesat, menggunakan TCP untuk interaksi client server hasil seperti yang ditunjukkan pada gambar 2-4 (a). Pertama, klien memulai setup sambungan, yang dilakukan dengan menggunakan tiga cara protokol jabat tangan, ditampilkan sebagai tiga pesan pertama di gambar 2-4 (a). Protokol ini diperlukan untuk kedua belah pihak untuk mencapai kesepakatan pada urutan penomoran untuk paket yang akan dikirim melalui sambungan. Ketika koneksi telah dibentuk, client mengirimkan permintaannya (pesan 4), langsung diikuti oleh paket memberitahu server untuk menutup koneksi (pesan 5).
Gambar 2-4 (a) Pengoperasian normal TCP. (B) Transaksional TCPServer merespon dengan segera mengakui bahwa ia menerima permintaan klien, piggybacked dengan pengakuan bahwa koneksi akan clossed bawah (pesan 6). Server kemudian melakukan pekerjaan yang diminta dan mengirimkan jawaban kepada klien (pesan 7), diikuti dengan permintaan untuk melepaskan koneksi juga (pesan 8). Klien hanya perlu merespon dengan pengakuan untuk menyelesaikan komunikasi dengan server (pesan 9).
Jelas, banyak overhead dalam TCP berasal dari benar-benar mengelola koneksi. Ketika TCP digunakan untuk interaksi client server, itu jauh lebih murah untuk menggabungkan pengaturan koneksi dengan segera mengirimkan permintaan, dan seperti bijaksana untuk menggabungkan mengirimkan jawaban dengan menutup koneksi. Protokol yang dihasilkan disebut TCP untuk Transaksi, disingkat T / TCP, dan esensi dari bagaimana ia beroperasi di bawah kondisi normal ditunjukkan pada gambar 2-4 (b).Apa yang terjadi dalam keadaan normal, adalah bahwa klien mengirimkan pesan tunggal (ditampilkan sebagai pesan 1) yang berisi tiga potongan informasi: permintaan untuk mengatur koneksi, permintaan layanan yang sebenarnya, dan permintaan memberitahu server yang segera bisa merobek turun koneksi sesudahnya.Server merespon setelah ia dilayani permintaan yang sebenarnya, sehingga dapat mengirim jawaban bersama dengan data yang diperlukan untuk menerima koneksi, dan segera meminta rilis, ditampilkan sebagai pesan pada Gambar 2. 2-4 (b). 
Sekali lagi, klien hanya perlu mengakui rilis final dari koneksi (pesan 3).

c. Higher Level Layer
Di atas lapisan transport. OSI membedakan tiga lapisan tambahan. Dalam prakteknya, hanya lapisan aplikasi yang pernah digunakan. Bahkan, di suite internet protocol, segala sesuatu di atas lapisan transport dikelompokkan bersama-sama. Dalam menghadapi sistem middleware, akan kita lihat dalam bagian ini bahwa baik OSI maupun pendekatan internet benar-benar tepat. Dalam Higher Level Layer 
ini terbagi menjadi tiga lapisan tambahan yaitu:

1. Sesi dan Presentasi Protokol
          Lapisan sesi dasarnya merupakan versi yang disempurnakan dari lapisan transport. Menyediakan kontrol dialog, untuk melacak pihak mana saat berbicara, dan menyediakan fasilitas sinkronisasi. Sehingga jika terjadi kecelakaan, yang terakhir ini berguna untuk memungkinkan pengguna memasukkan pos-pos pemeriksaan dalam transfer yang panjang. Hal ini diperlukan untuk kembali hanya untuk pos pemeriksaan terakhir, daripada semua jalan kembali ke awal. Dalam prakteknya, beberapa aplikasi tertarik dalam lapisan sesi dan jarang didukung. Hal ini tidak hadir dalam acara suite protokol Internet.
         Berbeda dengan lapisan bawah, yang prihatin dengan mendapatkan bit dari pengirim ke penerima andal dan efisien, lapisan presentasi berkaitan dengan arti dari bit. Pesan yang paling tidak terdiri dari string bit acak, tetapi informasi lebih terstruktur seperti nama orang, alamat, jumlah uang, dan sebagainya. Pada lapisan presentasi adalah mungkin untuk menentukan catatan yang berisi bidang-bidang seperti ini dan kemudian memiliki Sener memberitahukan penerima bahwa pesan berisi catatan tertentu dalam format tertentu. Hal ini memudahkan untuk mesin dengan representasi internal yang berbeda untuk berkomunikasi.

2. Protocol Application
     Menyediakan layanan untuk aplikasi misalnya transfer file, email, akses suatu komputer atau layanan. Lapisan aplikasi OSI awalnya dimaksudkan untuk menampung koleksi aplikasi jaringan standar seperti untuk surat elektronik, transfer file, dan emulasi terminal. Sampai saat ini telah menjadi wadah untuk semua aplikasi dan protokol yang dalam satu cara atau yang lain tidak masuk ke dalam salah satu lapisan yang mendasarinya. Dari perspektif model referensi OSI, hampir semua sistem terdistribusi hanya aplikasi.Ada juga banyak tujuan umum protokol yang berguna untuk banyak aplikasi, tetapi yang tidak dapat dikualifikasikan sebagai protokol transport. Dalam banyak kasus, protokol seperti jatuh ke dalam kategori protokol middleware, yang akan kita bahas selanjutnya.

3. Middleware Protocol
        Middleware adalah sebuah aplikasi yang logis tinggal di lapisan aplikasi, tetapi yang mengandung banyak tujuan umum protokol yang menjamin lapisan mereka sendiri, independen lainnya, aplikasi yang lebih spesifik. Perbedaan dapat dibuat antara tingkat tinggi protokol komunikasi dan protokol untuk membangun layanan middleware berbagai.
     Dibuat untuk menyediakan layanan layanan protokol yang seragam dan dapat digunakan oleh aplikasi-aplikasi yang berbeda-beda. Pada lapisan ini terdapat sekumpulan protokol komunikasi yang beragam yang memungkinkan berbagai macam aplikasi dapat berkomunikasi. Middleware juga memberi fasilitas marshalling dimana terdapat proses pengubahan data dalam komunikasi antar proses menjadi bentuk yang siap dikirim melalui jaringan sehingga dapat tetap konsisten sampai di si penerima data dan kebalikannya.
     Middleware komunikasi protokol mendukung tingkat tinggi layanan komunikasi. Misalnya, di bagian dua berikutnya kita akan membahas protokol yang memungkinkan proses untuk memanggil prosedur atau invok obyek pada mesin remote dengan cara yang sangat transparan. Demikian juga, ada layanan komunikasi tingkat tinggi untuk menetapkan dan sinkronisasi aliran untuk mentransfer data real-time, seperti yang diperlukan untuk aplikasi multimedia. Sebagai contoh terakhir, beberapa sistem middleware menawarkan layanan multicast handal yang skala untuk ribuan penerima tersebar di wide area network.
     Beberapa protokol komunikasi middleware yang sama bisa juga termasuk dalam lapisan transport, tapi mungkin ada alasan spesifik untuk menjaga mereka pada tingkat yang lebih tinggi. Misalnya, multicasting layanan yang handal Taht skalabilitas jaminan dapat diimplementasikan hanya jika persyaratan aplikasi diperhitungkan. Akibatnya, sistem middleware mungkin menawarkan yang berbeda (merdu) protokol, masing-masing pada gilirannya diimplementasikan dengan menggunakan protokol transport yang berbeda, tapi mungkin menawarkan antarmuka tunggal.

Konsep objek terdistribusi dan object interface 
       Meskipun teknologi RPC ini relatif sudah memberikan kenyamanan bagi developer namun seiring dengan perkembangannya, sistem ini dinilai tidak efisien lagi. Dalam membuat aplikasi client server, programmer masih harus membuat fungsi-fungsi yang sama untuk aplikasi yang berbeda. Kadang kala kode program yang sama digunakan dengan melakukan copy paste dan melakukan sedikit perubahan untuk menyesuaikan dengan aplikasi yang baru dibuat. Jika ada perubahan, fungsi tersebut dalam masing-masing aplikasi harus di update satu persatu lagi. Hal ini mengakibatkan perawatan program menjadi susah dan fungsi-fungsi tersebut dapat menjadi tidak konsisten satu sama lain.

CORBA
Common Object Request Broker Architecture (CORBA) merupakan standar yang dikeluarkan oleh Object Management Group (OMG). Spesifikasi CORBA ini berisi sebuah spesifikasi infrastruktur yang disebut Object Request Broker (ORB) yang memungkinkan aplikasi klien untuk dapat berkomunikasi dengan obyek secara remote. Spesifikasi ini meliputi antarmuka program, protokol komunikasi dan model obyek atau layanan yang memungkinkan aplikasi yang ditulis dengan berbagai macam bahasa pemrograman.
    CORBA membungkus kode program yang dibuat dengan bahasa pemrograman tertentu menjadi sebuah obyek yang ditambah dengan informasi mengenai kemampuan kode program dan cara mengaksesnya. Obyek tersebut dapat dipanggil oleh program lain melalui jaringan. CORBA menggunakan interface definition languange (IDL) untuk menunjukkan interface atau antarmuka yang dapat digunakan oleh program atau obyek lain. Dari IDL tersebut CORBA akan memetakannya ke implementasi yang lebih spesifik dari masing-masing bahasa pemrograman.
COM 
   Component Object Model (COM) adalah teknologi yang diciptakan oleh Microsoft untuk memungkinkan komunikasi antaraplikasi. Teknologi ini sudah disediakan untuk beberapa platform tetapi kebanyakan digunakan untuk platform Windows. Teknologi ini sudah diperkenalkan oleh microsoft pada tahun 1993 tetapi baru populer pada tahun 1997. Perkembangan teknologi COM ini bermula dari teknologi OLE (Object Linking and Embedding) yang dibuat untuk memungkinkan aplikasi dapat saling bertukar data.
DCOM
      Pada tahun 1996 diperkenalkan Distributed Component Object Model (DCOM) sebagai jawaban Microsoft atas CORBA. DCOM dibandingkan dengan COM memiliki kelebihan mampu untuk terdistribusi dan berkomunikasi antarkomponen melalui jaringan. DCOM dan CORBA saling berkompetisi untuk menjadi standar dalam distribusi komponen melalui internet. Namun dibalik kesulitan dalam hal keamanan, sebuah browser yang berjalan menggunakan teknologi http sudah dapat menggantikan teknologi tsb.
RMI
     Remote Method Invocation (RMI) adalah sebuah teknik pemanggilan method remote yang lebih secara umum lebih baik daripada RPC. RMI menggunakan paradigma pemrograman berorientasi obyek (Object Oriented Programming). RMI memungkinkan kita untuk mengirim obyek sebagai parameter dari remote method. Dengan dibolehkannya program Java memanggil method pada remote obyek, RMI membuat pengguna dapat mengembangkan aplikasi Java yang terdistribusi pada jaringan.RMI menyediakan mekanisme dimana server dan client berkomunikasi dan memberikan informasi secara timbal balik. Aplikasi semacam ini seringkali disebut aplikasi objek terdistribusi

Langkah-Langkah Pembuatan Program dengan RMIDalam RMI, semua informasi tentang satu pelayanan server disediakan dalam suatu definisi remote interface. Dengan melihat pada definisi interface, seorang pemrogram dapat memberitahukan method apa yang dapat dikerjakan oleh server, meliputi data apa yang diterima dan data apa yang akan dikirim sebagai tanggapan.Definisi yang ada pada remote interface menentukan karakteristik methods yang disediakan server yang dapat dilihat oleh client. Client programmer harus dapat mengetahui methods apa yang disediakan server dan bagaimana memanggilnya langsung dengan melihat ke remote interface. Client mendapatkan referensi ke remote object melalui RMI registry.

Membangun suatu aplikasi terdistribusi menggunakan RMI meliputi 6 langkah. Keenam langkah tersebut adalah:
1. Mendefinisikan remote interface
2. Implementasi remote interface dan server
3. Pengembangan client (atau applet) yang menggunakan remote interface
4. Mengkompilasi source files dan mem-buat stub and skeletons
5. Memulai (start) RMI registry
6. Menjalankan server dan client

Sumber: http://penuhrahmatt.mdl2.com/mod/book/view.php?id=4&chapterid=2 http://damaraaaa.wordpress.com/2013/03/19/konsep-objek-terdistribusi-dan-object-interface/

Pengenalan Sistem Terdistribusi


PENDAHULUAN


1.1 Apakah yang dimaksud dengan SistemTerdistribusi?

        Sistem Terdistribusi adalah Sekumpulan komputer otonom yang terhubung ke suatu jaringan, dimana bagi pengguna sistem terlihat sebagai satu komputer. Maksud komputer otonomi adalah walaupun komputer tidak terhubung ke jaringan, komputer tersebut tetap data berjalan. Dengan menjalankan sistem terdistribusi, komputer dapat melakukan :
  • Koordinasi Aktifitas 
  • Berbagi sumber daya : hardware, software dan data 

         Dengan definisi tersebut diatas maka internet sesungguhnya bukanlah suatu sistem terdistribusi, melainkan infrastruktur dimana sistem terdistribusi dapat di aplikasikan pada jaringan tersebut.


1.2 Contoh Sistem Terdistribusi
  • Sistem Telepon 
           - ISDN, PSTN
  • Manajemen Jaringan
          - Adminstrasi sesumber jaringan









Gambar~1.1: Contoh sistem terdistribusi, Automatic Banking (teller machine) System



  • Network File System (NFS) 
          - Arsitektur untuk mengakses sistem file melalui jaringan
  • WWW 
         - Arsitektur client/server yang diterapkan di atas infrastruktur internet

         - Shared Resource (melalui URL)



1.3 Keuntungan dan Permasalahan SistemTerditribusi


1.3.1 Keuntungan Sistem Terdistribusi
       Keuntungan yang didapatkan dalam menerapkan sistem terdistribusi, antara lain : 
  • Performance 
Kumpulan dari beberapa prosesor akan memberikan kinerja yang lebih baik dari pada komputer yang terpusat. Begitu juga kalau dilihat dari sisi biaya.
  • Distribution 
  • Reliability (Fault tolerance)                                                                                                          apabila salah satu komponen terjadi kerusakan, system tetap dapat berjalan 
  • Incremental Growth                                                                                                                           Mudah dalam melakukan penambahan komputer/komponen 
  • Sharing Data/Resources                                                                                                          Berbagi data adalah salah satu hal yang pokok pada kebanyakan aplikasi.
1.3.2 Permasalahan dalam Sistem Terdistribusi

Kelemahan pada sistem terdistribusi adalah :
  • Kesulitan dalam membangun perangkat lunak . 
Kesulitan yang akan dihadapi antara lain : bahasa pemrogramman yang harus dipakai, sistem operasi
  • Masalah Jaringan 
           Karena sistem terdistribusi di implementasikan dalam jaringan komputer, maka isu2 yang berkaitan dengan jaringan komputer akan menjadi pertimbangan utama dalam merancang dan mengimplementasikan sistem.

  • Masalah Keamanan 
           Karena pada sistem terdistribusi berbagi data/sumber daya merupakan hal yang mutlak maka muncul masalah2 yang berkaitan dengan keamanan data dll.

1.4 Karakteristik Sistem Terdistribusi
         Ada beberapa hal yang harus diperhatikan dalam membangun sistem terdistribusi, yaitu :
  • Transparency (Kejelasan) 
  • Communication (Komunikasi) 
  • Performance & Scalability (Kinerja dan Ruang Lingkup) 
  • Heterogeneity (Keanekaragaman) 
  • Opennes (Keterbukaan) 
  • Reliability & Fault Tolerancy (Kehandalan dan Toleransi Kegagalan) 
  • Security (Kemanan) 
1.4.1 Transparency

1. Access transparency
        Sumber daya lokal dan remote di akses dengan menggunakan operasi yang sama.  Location  transparency Pengguna sistem tidak tahu mengetahui keberadaan hardware dan software(CPU file dan  data). Migration (Mobility) transparency Sumber daya (baik berupa Hardware dan/atau software)    dapat bebas berpindah tanpa mengubah sistem penamaan.

2. Replication transparency
      Sistem bebas untuk menambah …le atau sumber daya tanpa diketahui oleh user (dalam rangkan      meningkatkan kinerja)

3. Concurency transparency
     User tidak akan mengetahui keberadaan user lain dalam sistem, walaupun user tersebut menggunakan  sumber daya yang sama.

4. Failure transparency
     Aplikasi harus dapat menyelesaikan proses nya walaupun terdapat kegagalan pada beberapa pada  komponen sistem.

5. Performance transparency
     Beban kerja yang bervariasi tidak akan menyebabkan turunnya kinerja sistem, hal ini dapat di capai  dengan melakukan automatisasi konfigurasi terhadap perubahan beban.

1.4.2 Communication

Komponen2 pada sistem terdistribusi harus melakukan komunikasi dalam suatu urutan. Sebagai berikut:
     Infrastruktur jaringan (interkoneksi dan software jaringan)
 Metode dan Model komunikasi yang cocok

Metode komunikasi :

- Send
- Receive
- Remote Procedure Call


Model Komunikasi
- client - server communication : pertukaran pesan antara dua proses: dimana satu proses (client) menggunakan / meminta layanan pada server dan server menyediakan hasil dari proses tersebut.

- groupmulitcast : target dari pesan yang dikirimkan adalah gabungan dari proses, yang berasal dari suatu grup.

1.4.3 Performance and Scalability

Ada beberapa faktor yang mempengaruhi kinerja (performance) dari pada
sistem terdistribusi : 

  • Kinerja dari pada personal workstations 
  • Kecepatan infrastruktur komunikasi 
  • Fleksibilitas dalam membagi beban kerja : contoh, apabila terdapat prosesor (workstation) yang idle maka dapat di alokasikan secara otomatis untuk mengerjakan tugas2 user. 

Scalability

Sistem tetap harus memperhatikan efesiensi walaupun terdapat penambahan

secara signifikan user atau sumber daya yang terhubung :
  • Cost (biaya) penambahan sumber daya (resources) harus reasonable. 
  • Penurunan kinerja (performance) diakibatkan oleh penambahan user atau sumber daya harus terkontrol. 

1.4.4 Heterogeneity

Aplikasi yang terdistribusi biasa berjalan dalam keberagaman :
  • Hardware : mainframes, workstations, PC’s, server dll. 
  • Software : UNIX, MS Windows, IMB OS/2, LINUX dll. 
  • Devices : teller machine, robot, sistem manufacturing dll. 
  • Network dan Protocol : Ethernet, FDDI, ATM, TCP/IP dll 

Melihat keaneka ragaman di atas maka salah satu solusi yang bisa di

terapkan adalah Middleware : berfungsi sebagai jembatan untuk komunikasi

dan proses.





Gambar~1.2: Arsitektur sofware pada sistem terdistribusi


1.4.5 Opennes

        Salah satu hal terpenting yang harus dimiliki oleh sistem terdistribusi adalah

  • opennes (keterbukaan) dan ‡exibility (‡eksibilitas) : 
  • Setiap layanan (services) harus dapat di akses oleh semua user. 
  • Mudah dalam implementasi, install dan debug services; 
  • User dapat membuat dan menginstall service yang telah dibuat oleh si user tersebut. 

Aspek kunci pada opennes :
  • Interface dan Protocol yang standard (seperti protokol komunikasi di internet) 
  • Support terhadap keanekaragaman. ( denganmembuatmidleware seperti CORBA) 





Gambar~1.3: Sistem Terdistribusi pada dua titik


1.4.6 Reliability dan Fault Tolerance

         Salah satu tujuan dalam membangun sistemterdistribusi adalahmemunkinkan untuk melakukan improvisasi terhadap kehandalan sistem. Availability : kalau mesin mati (down), sistem tetap harus berjalan dengan jumlah layananan yang tersisa. 

  • Dalam sistem terdistribusi componen yang sangat vital (critical resources)berjumlah se minimal mungkin. Yang dimaksud dengan critical resources adalah komponen yang harus ada untuk menjalankan sistem terdistribusi. 
  • Masing - masing Software dan Hardware harus di replikasi : kalau terjadikegagalan / error maka yang lain akan menangani. 

         Data dalam sistem tidak boleh hilang, copy dari file tersebut disimpan pada secara redundan pada server lain, tapi tetap harus dijaga konsistensi datanya. Fault Tolerance : Sistemharus bisa mendeteksi kegagalan danmelakukan tindakan dengan dasar sebagai berikut : 

  • Mask the fault (menutupi kegagalan) : tugas harus dapat dilanjutkandengan menurunkan kinerja tapi tanpa terjadi kehilangan data atau informasi. 
  • Fail Gracefully : membuat suatu antisipasi terhadap suatu kegagalan ke suatu prosedur yang telah di rencanakan dan memungkinkan untuk menghentikan proses dalam waktu yang singkat tanpa menghilangkan informasi atau data. 

1.4.7 Security
  • ² Confidentiality :keamanan terhadap data yang di akses oleh user yang tidak di perbolehkan(unauthorizes user) 
  • Integrty:keamanan terhadap kelengkapan dan autentikasi data. 
  • Availability Menjaga agar resource dapat selalu di akses.Sistem terdistribusi harus memperbolehkan komunikasi antara program/user/resources pada computer yang berbeda, maka resiko keamanan akan muncul apabila memberlakukan free access. Dan ada hal lain juga yang harus dijamin dalam sistem terdistribusi, yaitu : penggunaan rerources yang tepat oleh user yang berlainan. 
1.5 Model dalam Sistem Terdistribusi

Model dalam sistem terdistribusi :
  • Model Arsitektur (Architectural Models) 
  • Model Interaksi (Interaction Models) 
  • Model Kegagalan (Failure Models) 

            Resources dalam sistem terdistribusi dipakai secara bersama oleh users.Biasa nya di bungkus (encapsulated) dalam suatu komputer dan dapat di akses oleh komputer lain dengan komunikasi.Setiap resource di atur oleh program yang disebut dengan resource manager.Resource manager memberikan kemungkinan komunikasi interface antar


resource.
        Resource Managers dapat digeneralisasi sebagai proses, kalau sistem di design dengan sudut pandang object (Object Oriented), resource dibungkus

dalam suatu objek.


1.5.1 Architectural Models

          Bagaimana cara kerja sistem terdisribusi antara komponen - komponen sistem dan bagaimana komponen tersebu berada pada sistem terdistribusi : 

  1. Client - Server Model 
  2. Proxy Server 
  3. Peer processes ( peer to peer ) 

1. Client - Server Model

         Sistem yang terdiri dari kumpulan2 proses disebut dengan server, dan memberikan layanan kepada user yang disebut dengan client.
Model client-server biasanya berbasiskan protokol request/reply. Contoh
implementasi nya, atara lain: RPC (Remote Procedure Calling) dan RMI
(Remote Method Invocation) :
  • client mengirimkan request berupa pesan ke server untuk mengakses suatu service. 
  • server menerima pesan tersebut dan mengeksekusi request client dan mereply hasil ke client 






Gambar~1.4: Model arsitektur client - server







Gambar~1.5: Model Proxy Server

2. Proxy Server

            Proxy server menyediakan hasil copy (replikasi) dari resource yang di atur oleh server lain Biasa nya proxy server di pakai untuk menyimpan hasil copy web resources. Ketika client melakukan request ke server, hal yang pertama dilakukan adalah memeriksa proxy server apakah yang dimita oleh client terdapat pada proxy server. Proxy server dapat diletakkan pada setiap client atau dapat di pakai bersama oleh beberapa client. Tujuannya adalah meningkatkan performance dan availibity denganmencegah frekwensi akses ke server.

           Peer Process Semua proses (object) mempunyai peran yang sama.
  • Proses berinteraksi tanpa ada nya perbedaan antara client dan server. 
  • Pola komunikasi yang digunakan berdasarkan aplikasi yang digunakan. 
  • Merupakan model yang paling general dan fleksible. 
1.5.2 Interaction Modelstem terdi

Untuk interaksi nya sisstribusi dibagi menjadi dua bagian :
  • Synchrounous distributed system 
  • Asynchronous distributed system 

Synchronous Distributed System

Batas atas dan batas bawah waktu pengeksekusian dapat di set.
  • Pesan yang dikirim di terima dalam waktu yang sudah di tentukan 
  • Fluktuasi ukuran antara waktu local berada dalam suatu batasan. 
Beberapa hal yang penting untuk di perhatikan :
  • Dalam synchronous distributed system terdapat satu waktu global. 
  • Hanya synchronous distributed system dapat memprediksi perilaku (waktu). 
  • Dalam synchornous distributed system dimungkinkan dan aman untukmenggunakan mekanisme timeout dalam mendekteksi error atau kegagalan dalam proses atau komunikasi. 

Asynchronous Distributed System

Banyak sistem terdistribusi yangmenggunakan model interaksi ini (termasuk Internet)
  • Tidak ada batasan dalam waktu pengkeksekusian. 
  • Tidak ada batasan dalam delay transmission (penundaan pengiriman) 
  • Tidak ada batasan terhadap fluktuasi waktu local. 
Asynchronous system secara parktek lebih banyak digunakan.

1.5.3 Failure Models

Kegagalan apa saja yang dapat terjadi dan bagaimana efek yang ditimbulkan?
  1. Omission Faluires 
  2. Arbitary Failures 
  3. Timing Failures 
Kegagalan dapat terjadi pada proses atau kanal komunikasi. Dan penyebabnya bisa berasal dari hardware ataupun software. Model Kegagalan (Failure Models) dibutuhkan dalam membangun suatu sistem dengan prediksi terhadap kagagalan2 yang mungkin terjadi.

Ommision Failures

Yang dimaksud dengan Ommision Failures adalah ketika prosesor dan kanal komunikasi mengalami kegagalan untuk melakukan hal yang seharusnya dilakukan. Dikatakan tidak mempunyai ommision failures apabila :
  • Terjadi keterlambatan (delayed) tetapi akhirnya tetap tereksekusi. 
  • Sebuah aksi di eksekusi walaupun terdapat kesalahan pada hasil. 
Dengan synchronous system, ommision failures dapat dideteksi dengan timeouts. Kalau kita yakin bahwa pesan yang dikirim sampai, timeout akan mengindikasikan bahwa proses pengiriman rusak, seperti fail-stop behavior pada sistem.

Arbitary Failures

         Ini adalah kegagalan yang paling buruk dalam sistem. Tahapan proses atau komunikasi diabaikan atau yang tidak diharapkan terjadi dieksekusi. Sehingga hasil yang diharapkan tidak terjadi ataumegeluarkan hasil yang salah.

Timing Failures

        Timing Failures dapat terjadi pada synchronous system, dimana batas waktu di atur untuk eksekusi proses, komunikasi dan fluktuasi waktu. Timing Failures terjadi apabila waktu yang telah ditentukan terlampaui.

Kamis, 09 April 2015

Structure To Be

Apa itu to be ?

To be adalah kata pelengkap dlm sebuah kalimat yg merupakan penyambung dr satu kata ke kata yg lainnya dan biasanya memiliki arti yg berbeda tergantung pemakaiannya

Jenis-jenis to be


pemakaian to be digolongkan pada penggunaan subject atau kata sebelumnya. Lihat dibawah ini !....

1. am - digunakan hanya untuk subject I (saya)

contohnya

a. I am doctor ( saya adalah docter )
b. I am dentist ( saya adalah ahli gigi )

disini apabila seperti contoh diatas maka arti dari to be AM = adalah... Dan ingat kata sesudahnya adalah kata benda berarti apabila digabungkan dengan kata benda maka artinya = adalah..

2. Are = digunakan untuk banyak fungsi untuk subject you, we, dan they dan juga digunakan untuk menyatakan benda dlm jumlah yg banyak.

Contoh :

a. You are policeman.( kamu adalah polisi )
b. We are student.( kami adalah pelajar )
c. They are christian. ( mereka adalah orang kristen )

contoh untuk benda dlm jumlah lebih dari 2 atau banyak.

There are many tourists there. ( ada banyak turis disana )

3. is - digunakan untuk subject dan juga benda dengan jumlah tidak lebih dari 1.

Contohnya :

a. She is accounting( dia adalah akunting )

b. He is postman( dia adalah tukang post )

menyatakan tentang benda

a. there is a book ( ada sebuah buku )

fungsi dan kegunaan to be masih ada lagi yg lain dan itu ada dlm rumus yaitu continous tense yang akan anda pelajari nanti dalam tenses

Penggunaan To Be dalam Bahasa Inggris

To be juga  kerap kita temui di rumus – rumus tenses. To be itu sendiri dapat kita bedakan menjaid dua  bagian, yakni to be untuk waktu present (sekarang) dan  to be untuk past (masa lampau).



Jadi, to be kita gunakan sesuai dengan kurun  waktunya. Penggunaan to be itu sendiri lebih tampak bila kita lebih mendalami pelajaran tentang tenses.
Dan bagaimana penggunaanya, silahkan perhatikan penjelasan saya berikut:

Pemakaian to be kurang lebih ada 5.

1.      To be digunakan sebagai penghubung antara subjek dengan kata benda (Noun).
Rumus:


Note:
1.      She digunakan untuk kata ganti/subjek (perempuan)
2.      He digunakan untuk kata ganti/subjek (laki-laki)
3.      They bisa digunakan baik untuk manusia, benda, ataupun binatang
4.      Jika subjek berupa nama orang, lebih dari satu maka dianggap sama dengan they dan menggunakan to be are.
5.      Jika subjek  merupakan nama orang (hanya 1 orang), jika laki laki sama dengan He dan menggunakan to be is, jika perempuan sama dengan she dan menggunakan to be is.
6.      They juga dapat dipakai sebagai kata ganti binatang (jamak) dan It bisa juga dipakai sebagai kata ganti binatang (tunggal).
7.      Jika subjeknya lebih dari satu pelaku (2 orang atau lebih) atau (2 binatang atau lebih), bisa dipastikan bahwa to be pasti menggunakan are.

Perhatikan contoh penggunaan to be dalam kalimat berikut:

Note: To be dalam kaitannya dengan kata benda (noun) dapat diartikan “adalah”.
Dari sini bisa difahami? Kalo ada yang kurang di fahami silahkan tinggalkan komentar. Oke mari kita lanjut.

2.      To be digunakan sebagai penghubung antara subjek dengan kata sifat (adjective).

Saya asumsikan anda sudah paham dengan pasangan subjek dengan to be nya. Jadi berikut langsung saya berikan contoh penggunaannya dalam kalimat:

Note: Perhatikan, to be di situ tidak diartikan. Jadi fungsinya hanya sebagai penghubung saja.

3.      To be digunakan sebagai penghubung antara subjek dengan kata keterangan (adverb).
Perhatikan contoh penggunaan to be dalam kalimat berikut:


4.      To be digunakan untuk pembentukan Present continous tense. Rumus dari present continous tense adalah S + To be +  Verb ing.
Perhatikan contoh pemakaian To be dalam kalimat present continous tense berikut:



Note: untuk pembahasan tenses, termasuk present continous tense, akan saya paparkan secara tersendiri. Karena saya berusaha memaparkan sedetail mungkin, agar lebih mudah dipahami. Jika ada seputar pertanyaan ketika membaca artikel do blog “cara mudah belajar bahasa Inggris” ini, langsung saja kirim komentar di bawah setiap artikel.

5.      To be digunakan dalam kalimat pasif.
Rumus dari kalimat pasif adalah S + TO be + V3. Perhatikan contoh penggunaan to be dalam kalimat pasif berikut ini:



Note: Untuk pembahasan mengenai kalimat pasif (Passive voice), akan saya paparkan dalam bahasan tersendiri.

Perlu kita ketahui bahwa semua contoh To be diatas adalah penggunaan To be dalam kalimat positif (positive sentence). Selain digunakan dalam kalimat positif, TO be juga digunakan dalam kalimat negative (negative sentence) dan kalimat Tanya (interrogative sentence) . Dan berikut penggunaan To be dalam kalimat Negatif dan penggunaan To be dalam kalimat Tanya.

PEMBENTUKAN TO BE DALAM KALIMAT NEGATIF (-) (NEGATIVE SENTENCE)
Dalam pembentukan To be kedalam kalimat negative sangatlah mudah. Seperti contoh pembentukan dalam kalimat positif, hanya saja harus ditambahkan (not) setelah To be.
Perhatikan contoh penggunaan To be dalam kalimat negative berikut:


PEMBENTUKAN TO BE DALAM  KALIMAT TANYA (?) (INTEROGATIVE SENTENCE)
Sama halnya dengan pembentukan pembentukan dalam kalimat positif dan kalimat Tanya, dalam kalimat Tanya (interrogative sentence) yang perlu dilakukan adalah memindah To be berada di awal kalimat, dan memberikan tanda (?) di akhir kalimat.

Perhatikan contoh pembentukan To be ke dalam kalimat Tanya berikut ini:


Note: dalam kalimat Tanya, To be diartikan sebagai “apakah”.


5 Kegunaan To Be Dalam Bahasa Inggris

1. To be yang diikuti Noun / Kata Benda.
Contohnya :
Waktu Present
  • She is a singer (Dia [perempuan] adalah penyanyi).
  • They are policemans (Mereka adalah polisi).
  • We are a team of volley ball of Indonesia (Kami adalah tim bola voli Indonesia).
  • Izen is a student (Izen adalah seorang pelajar).

Waktu Past

  • She was a singers 2 years ago (Dia adalah penyanyi dua tahun yang lalu).
  • They were policemans 10 years ago (Mereka adalah polisi 10 tahun yang lalu).
  • We were a volley ball team (Kami adalah tim bola voli).
  • Zudin was a businessman (Zudin adalah seorang pebisnis).


2. To be yang diikuti Adjective / Kata Sifat
Contohnya :
Waktu Present

  • He is smart (Dia pintar).
  • She is beautiful girl (Dia adalah gadis yang cantik).
  • I am a good student (Saya adalah siswa yang baik).
  • They are happy be a winner (Mereka senang menjadi pemenang).

Waktu Past

  • He was stupid 2 years ago (Dia bodoh dua tahun yang lalu).
  • She was ugly 10 years ago (Dia jelek 10 tahun yang lalu).
  • The books were cheap 3 days ago (Buku itu murah 3 hari yang lalu).
  • The ball is small (Bola itu kecil).


3. To be yang diikuti Adverb / Kata Keterangan
Contohnya :
Waktu Present

  • Adek is at restaurant now (Adek berada di restoran sekarang).
  • It is 9 a.m o’clock now (Sekarang pukul 9 pagi tepat).
  • Today is Satuday (Sekarang adalah hari sabtu).
  • We are at school now (Kami ada di sekolah sekarang).

Waktu Past

  • Adek was at restaurant 2 hours ago (Adek berada di restoran 2 jam yang lalu).
  • The man was here last time (Pria tersebut disini beberapa waktu yang lalu).
  • Izen was fastly to do the homeworks last night (Izen mengerjakan tugas dengancepat malam kemaren).
  • Yesterday was Friday (Kemaren adalah hari Jumat).


4. To  be yang diikuti Kata Kerja 1 + ing
Contohnya :
Waktu Present

  • Ivan is running (Ivan sedang berlari).
  • Izen is typing (Izen sedang mengetik).
  • They are meeting (Mereka sedang rapat).
  • You are climbing a tree (Kamu sedang memanjat sebuah pohon).

Waktu Past

  • Ivan was reading a comic yesterday (Ivan sedang membaca komik kemarin).
  • Izen was listening a song a hour ago (Izen sedang mendengarkan musik satu jam yang lalu).
  • Dino and Dina were preparing their presentation (Dino dan Dina sedang mempersiapkan presentasi mereka).
  • The cat was running last minute (Kucing itu berlari beberapa menit yang lalu).


5. To be yang diikuti oleh Kata Kerja 3 / Past Participle
Contohnya :
Waktu Present

  • Izen is knocked by Anto (Izen ditendang oleh Anto).
  • Robots are operated by computers (Robot – robot dioperasikan oleh komputer).
  • The documents are typed by Marko (Dokumen – dokumen tersebut diketik oleh Marko).
  • They are misunderstood about the infromation (Mereka salah mengerti tentang infromasi tersebut).

Waktu Past

  • The ball was knocked by Izen (Bola tersebut ditendang oleh Izen).
  • The computer was operated by Mark a hour ago (Komputer tersebut dioperasikan oleh Mark satu jam yang lalu).
  • I was listened a song by my father when I was child (Saya didengarkan suatu lagu oleh ayah saya ketika saya kecil).
  • You were hitted by she (Kamu dipukul oleh dia).

Setelah tahu penggunaan To be, bagaimana kalau anda memulai untuk membuat kalimat dengan kreasi anda sendiri? Kalau bisa buatlah kalimat sesuai dengan setiap contoh pemakaian To be diatas.Sebaiknya setelah anda selelsai menulis kalimat, ucapkan kalimat tersebut seakan akan anda sedang dalam kehidupan yang realita.  Saya yakin, semakin sering anda melatihnya maka akan semakin baik pula sensitivitas anda dalam menggunakan TO be. Untuk Tobe bentuk 2 dan To be bentuk 3, akan saya bahasa pada bahasan terpisah. Jika ingin membuat kalimat negatif hanya tinggal ditambahkan not di depan to be tersebut, seperti am menjadi am not. Jika kita ingin membuat kalimat pertanyaan hanya tinggal geser to be ke depan subjek.
Demikianlah pembahasan to be, semoga bermanfaat.