Pertemuan 3
Pertemuan 3
NIM : 183307039
Kelas : Teknologi Informasi TTD
Pertemuan :3 ACC
Tanggal : 13 Februari 2020 Revisi
Pokok-pokok Pembahasan:
1. Thread
2. Perbedaan thread dengan proses
3. Single Thread vs Multithread Process
4. Keuntungan thread
5. Macam-macam thread
6. Model-model Multithreading
7. Thread cancelation
8. Client – server & model
9. Agent
10. Klasifikasi agent software
1. Thread
Thread adalah sebuah alur kontrol dari sebuah proses. Suatu proses yang multithreaded
mengandung beberapa perbedaan alur kontrol dengan ruang alamat yang sama.
Keuntungan dari multithreaded meliputi peningkatan respon dari user, pembagian sumber
daya proses, ekonomis, dan kemampuan untuk mengambil keuntungan dari arsitektur
multiprosesor. User level thread adalah thread yang tampak oleh programmer dan tidak
diketahui oleh kernel. User level thread secara tipikal dikelola oleh sebuah library thread
di ruang user. Kernel level thread didukung dan dikelola oleh kernel sistem operasi. Secara
umum, user level thread lebih cepat dalam pembuatan dan pengelolaan dari pada kernel
thread. Ada tiga perbedaan tipe dari model yang berhubungan dengan user dan kernel
thread.
a. Model many to one: memetakan beberapa user level thread hanya ke satu buah kernel
thread.
b. Model one to one: memetakan setiap user thread ke dalam satu kernel thread. Berakhir.
c. Model many to many: mengizinkan pengembang untuk membuat user thread sebanyak
mungkin, konkurensi tidak dapat tercapai karena hanya satu thread yang dapat
dijadualkan oleh kernel dalam satu waktu.
Kegunaan Thread
Multithreading berguna untuk multiprocessor dan singleprocessor.
Kegunaan untuk system multiprocessor adalah :
a. Sebagai unit pararel atau tingkat granularitas pararelisme.
b. Peningkatan kinerja disbanding berbasis 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 :
a. Ruang alamat.
b. Himpunan berkas yang dibuka.
c. Proses-proses anak.
d. Timer-timer.
e. Sinyal-sinyal.
f. Sumber daya-sumber daya lain milik proses.
4. Keuntungan Thread
Keuntungan pada Thread yaitu sebagai berikut:
a. Tanggap : Multithreading mengizinkan program untuk berjalan terus walau pun pada
bagian program tersebut di block atau sedang dalam keadaan menjalankan operasi
yang lama/ panjang. Sebagai contoh, multithread web browser dapat mengizinkan
pengguna berinteraksi dengan suatu thread ketika suatu gambar sedang diload oleh
thread yang lain.
b. Pembagian sumber daya : Secara default, thread membagi memori dan sumber daya
dari proses. Keuntungan dari pembagian kode adalah aplikasi mempunyai perbedaan
aktifitas thread dengan alokasi memori yang sama.
c. Ekonomis: Mengalokasikan memori dan sumber daya untuk membuat proses adalah
sangat mahal. Alternatifnya, karena thread membagi sumber daya dari proses, ini lebih
ekonomis untuk membuat threads.
d. Pemberdayaan arsitektur multiprosesor: Keuntungann dari multithreading dapat
ditingkatkan dengan arsitektur multiprosesor, dimana setiap thread dapat jalan secara
parallel pada prosesor yang berbeda. Pada arsitektur prosesor tunggal, CPU biasanya
berpindah-pindah antara setiap thread dengan cepat, sehingga terdapat ilusi
paralelisme, tetapi pada kenyataannya hanya satu thread yang berjalan di setiap waktu.
e. 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.
f. 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.
g. 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.
h. 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).
5. Macam-macam Thread
a. 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.
b. 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 lingkungan multiprocessor, kernel dapatmenjadual thread-thread
pada processor yang berbeda. Contoh sistem operasi yang mendukung kernel thread
adalah Windows NT, Solaris, Digital UNIX.
Single threading : proses hanya mengeksekusi satu thread dalam satu waktu.
Multithread: proses dapat mengeksekusi sejumlah thread dalam satu waktu.
6. Model-model multithreading
a. One To One
One to One : memetakan setiap user thread ke dalam 1 kernel 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.
Kelebihan :
Model one-to-one lebih sinkron daripada model many-to-one karena mengizinkan
thread lain untuk berjalan ketika suatu thread membuat pemblokingan terhadap sistem
pemanggilan, hal ini juga membuat multiple thread bisa berjalan secara parallel dalam
multiprosesor .
Kekurangan:
Dalam pembuatan user thread diperlukan pembuatan korespondensi thread pengguna.
Karena dalam proses pembuatan kernel thread dapat mempengaruhi kinerja dari
aplikasi, maka kebanyakan dari implementasi model ini membatasi jumlah thread
yang didukung oleh sistem.
Model ini ada pada Windows NT dan OS/2.
b. One to Many
One to Many : memetakan beberapa tingkatan thread user hanya ke satu buah kernel
thread.
Kelebihan :
Managemen proses thread dilakukan oleh (di ruang) pengguna, sehingga menjadi
lebih efisien.
Kekurangan :
Multithread tidak dapat berjalan atau bekerja secara paralel di dalam multiprosesor
karena hanya satu thread saja yang bisa mengakses kernel dalam suatu waktu.
Model ini ada pada Solaris Green dan GNU Portable.
c. Many to Many
Many to Many : membolehkan setiap tingkatan user thread dipetakan ke banyak kernel
thread. Model ini mengizinkan developer membuat thread sebanyak yang diinginkan
tetapi concurrency tidak dapat diperoleh karena hanya satu thread yang dapat
dijadwalkan oleh kernel pada suatu waktu
Kelebihan:
Developer dapat membuat user thread sebanyak yang diperlukan dan kernel thread
yang bersangkutan dapat berjalan secara parallel pada multiprocessor. Dan ketika
suatu thread menjalankan blocking system call maka kernel dapat menjadwalkan
thread lain untuk melakukan eksekusi.
Kekurangan :
Developer dapat membuat user thread sebanyak mungkin, tetapi konkurensi tidak
dapat diperoleh karena hanya satu thread yang dapat dijadwalkan oleh kernel pada
suatu waktu. Model ini ada pada Solaris, IRIX, dan Digital UNIX.
7. Thread Cancelation
Thread Cancellation ialah pembatalan thread sebelum tugasnya selesai.
Umpamanya, jika dalam program Java hendak mematikan Java Virtual Machine (JVM).
Sebelum JVM dimatikan, maka seluruh thread yang berjalan harus dibatalkan terlebih
dahulu. Contoh lain adalah di masalah search. Apabila sebuah thread mencari sesuatu
dalam database dan menemukan serta mengembalikan hasilnya, thread sisanya akan
dibatalkan. Thread yang akan diberhentikan biasa disebut target thread.
Pemberhentian target Thread dapat dilakukan dengan 2 cara:
a) Asynchronous cancellation : Suatu thread seketika itu juga membatalkan target
thread.
b) Deferred cancellation. Suatu thread secara periodik memeriksa apakah ia harus batal,
cara ini memperbolehkan target thread untuk membatalkan dirinya secara terurut.
Hal yang sulit dari pembatalan thread ini adalah ketika terjadi situasi dimana sumber
daya sudah dialokasikan untuk thread yang akan dibatalkan. Selain itu kesulitan lain
adalah ketika thread yang dibatalkan sedang meng-update data yang ia bagi
dengan thread lain. Sistem operasi akan mengambil kembali sumber daya dari thread yang
dibatalkan tetapi seringkali sistem operasi tidak mengambil kembali semua sumber daya
dari thread yang dibatalkan.
Alternatifnya adalah dengan menggunakan deffered cancellation. Cara kerja
dari deffered cancellation adalah dengan menggunakan satu thread yang berfungsi sebagai
pengindikasi bahwa target thread hendak dibatalkan.Tetapi pembatalan hanya akan terjadi
jika target thread memeriksa apakah ia harus batal atau tidak.
Pada umumnya sistem operasi memperbolehkan proses atau thread untuk dibatalkan
secara asynchronous. Tetapi Pthread API menyediakan deferred cancellation. Hal ini
berarti sistem operasi yang mengimplementasikan Pthread API akan
mengizinkan deferred cancellation.
Penjadwalan Thread
Begitu dibuat, thread baru dapat dijalankan dengan berbagai macam penjadwalan.
Kebijakan penjadwalanlah yang menentukan setiap proses, dimana proses tersebut akan
ditaruh dalam daftar proses sesuai proritasnya dan bagaimana ia bergerak dalam daftar
proses tersebut. Untuk menjadwalkan thread, sistem dengan model mulithreading many to
many atau many to one menggunakan:
a) Process Contention Scope (PCS). Pustaka thread menjadwalkan thread pengguna
untuk berjalan pada LWP (lightweight process) yang tersedia.
b) System Contention Scope (SCS). SCS berfungsi untuk memilih satu dari banyak thread
, kemudian menjadwalkannya ke satu thread tertentu(CPU / Kernel).
Server adalah sebuah sistem komputer yang menyediakan jenis layanan tertentu dalam
sebuah jaringan komputer. Server didukung dengan prosesor yang bersifat scalable dan RAM
yang besar, juga dilengkapi dengan sistem operasi khusus, yang disebut sebagai sistem operasi
jaringan atau network operating system. Server jugamenjalankan perangkat lunak
administratif yang mengontrol akses terhadap jaringan dan sumber daya yang terdapat di
dalamnya, seperti halnya berkas atau alat pencetak (printer), dan memberikan akses kepada
workstation anggota jaringan.
Client adalah komputer yang diperbolehkan untuk masuk kedalam network dan
mengambil/menggunakan segala sumber daya yang tersedia di dalam network.
Sistem client-server mempunyai satu atau lebih proses client dan satu atau lebih proses
server, dan sebuah proses client dapat mengirim query ke sembarang proses server. Client
bertanggung jawab pada antar muka untuk user, sedangkan server mengatur data dan
mengeksekusi transaksi. Sehingga suatu proses client berjalan pada sebuah personal komputer
dan mengirim query ke sebuah server yang berjalan pada mainframe.
Arsitektur ini menjadi sangat popular untuk beberapa alasan. Pertama, implementasi yang
relatif sederhana karena pembagian fungsi yang baik dan karena server tersentralisasi. Kedua,
mesin server yang mahal utilisasinya tidak terpengaruh pada interaksi pemakai, meskipun
mesin client tidak mahal. Ketiga, pemakai dapat menjalankan antarmuka berbasis grafis
sehingga pemakai lebih mudah dibandingkan antar muka pada server yang tidak user-friendly.
perlu diingat batasan antara client dan server dan untuk menjaga komunikasi antara keduanya
yang berorientasi himpunan. Contoh :
Implementasi 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
Ketika client membutuhkan suatu service yang ada di server, dia akan mengirim request
kepada server lewat jaringan. Jika request tersebut dapatdilaksanakan, maka server akan
mengirim balasan berupa service yangdibutuhkan untuk saling berhubungan menggunakan
Socket .
a. Karakteristik Server :
Pasif
Menunggu request
Menerima request , memproses mereka dan mengirimkan balasan berupa service
b. Karakteristik Client
Aktif
Mengirim request
Menunggu dan menerima balasan dari server
Socket adalah sebuah endpoint untuk komunikasi didalam jaringan. Sepasang proses Atau
thread berkomunikasi dengan membangun sepasang socket , yangmasing-masing proses
memilikinya. Socket dibuat dengan menyambungkan dua buah alamat IP melalui port tertentu.
Secara umum socket digunakan dalam client/server system, dimana sebuah server akan
menunggu client pada port tertentu. Begitu ada client yang menghubungi server maka server
akan menyetujui komunikasi dengan client melalui socket yang dibangun.
a. Keuntungan dari Client Server :
Terpusat – resource dan keamanan data terkontrol melalui server. Mempunyai skala
Satu atau semua elemen bisa di ganti bergantung pada kebutuhan.
Fleksibel – Teknologi baru dengan mudah dapat di integrasikan ke dalam
sistem.Interoperability – semua komponen (client/jaringan/server) bekerja bersama-
sama. Mudah di akses Server dapat di akses dari jauh dan melewati multiple platform.
c. Middleware
Merupakan komponen perantara yang memungkinkan client dan server untuk saling
terhubung dan berkomunikasi satu dengan yang lain.Menerjemahkan pesan dari client
agar dapat dimengerti oleh server.Menerjemahkan hasil proses dari server agar dapat
dipahami oleh client.Mengirimkan hasil proses yang telah diterjemahkan kembali ke
client.Transaction Monitor (TP), Remote Procedure Calling (RPC), Object Request
Broker (ORB). Server Merupakan pihak yang menyediakan layanan. Menerima pesan
permintaan layanan dari client. Memproses permintaan dari client.Mengirimkan hasil
permintaan ke client.Server Basis Data, Monitor TP, Server Groupware, Server Object,
Server Web.
d. Ciri – Ciri Client Server :
Berbasis layanan Server memberikan sejumlah layanan yang dibutuhkan dan diminta
oleh client.
Sumber daya yang digunakan bersama Server mengelola sejumlah sumber daya yang
dimilikinya agar dapat diakses dan digunakan secara bersama-sama oleh terminal-
terminal client yang terhubung pada server.
Hubungan dan interaksi antara client-server. Hubungan yang terjadi antara server dan
client adalah one-to-many.
Client tidak perlu mengetahui lokasi fisik server. Server dapat terletak di berbagai
tempat yang belum tentu diketahui oleh client.
Interoperabilitas perangkat lunak dan perangkat keras Perangkat keras dan perangkat
lunak yang digunakan oleh masing-masing client tidak harus sama dengan yang
digunakan pada server, namun masih dapat saling terkoneksi antara satu dan yang
lain.
Pertukaran berbasis pesan Mekanisme dari client-server berdasar pada pertukaran
pesan. Pesan yang dipertukarkan ialah permintaan layanan dan umpan balik dari
permintaan layanan.
Enkapsulasi layanan Client tidak perlu mengetahui proses pengolahan permintaan
yang terjadi dalam server sehingga client tidak dapat mengontrol proses pengolahan
permintaan.
Skalabilitas adalah kemampuan untuk diperbesar atau diperkecilnya ukuran sistem
client server dapat diubah secara horizontal maupun vertikal .
Konsistensi data Data hanya dikelola pada server pusat sehingga konsistensi dan data
lebih terjamin dan biaya pemeliharaan pun menjadi lebih murah.
e. Server Berkas
Sistem berkas terdistribusi adalah sebuah sistem di mana banyak pengguna dapat berbagi
berkas dan sumber daya penyimpanan. Client, server, dan media penyimpanan dalam
sistem terdistribusi tersebar pada perangkat-perangkat yang terdapat dalam sistem
terdistribusi.
Sistem jaringan server berkas ialah system jaringan dimana layanan yang diberikan server
berupa berkas,baik berkas aplikasi, seperti pengolahan kata, pengolah angka, pengolah
data, pengolah gambar dan lain sebagainya, maupun berkas yang dihasilkan oleh aplikasi
tersebut, seperti dokumen pengolah kata, table-tabel pengolah angka, berkas presentase
dan lain sebagainya.
Ada beberapa Model Client/Server yang penting untuk diketahui. Dimulai dari arsitektur
mainframe hingga arsitektur client/server.
a. Arsitektur Mainframe
Pada arsitektur ini, terdapat sebuah komputer pusat (host) yang memiliki sumber daya
yang sangat besar, baik memori, processor maupun media penyimpanan. Melalui
komputer terminal, pengguna mengakses sumber daya tersebut. Komputer terminal hanya
memiliki monitor/keyboard dan tidak memiliki CPU. Semua sumber daya yang diperlukan
terminal dilayanioleh komputer host. Model ini berkembang pada akhir tahun 1980-an.
c. Arsitektur Client/Server
Karena keterbatasan sistem file sharing, dikembangkanlah arsitektur client/server. Salah
satu hasilnya yaitu berupa software database server yang menggantikan software database
berbasis file server. Dikenalkan pula RDBMS (Relational Database Management
System). Dengan arsitektur ini, query data ke server dapat terlayani dengan lebih cepat
karena yang ditransfer bukanlah file, tetapi hanyalah hasil dari query tersebut. RPC
(Remote Procedure Calls) memegang peranan penting pada arsitektur client/server.
d. Model Two-tier
Model Two-tier terdiri dari tiga komponen yang disusun menjadi dua lapisan: client (yang
meminta service) dan server (yang menyediakan service). Tiga komponen tersebut yaitu :
User Interface, yaitu antar muka program aplikasi yang berhadapan dan digunakan
langsung oleh user.
Manajemen proses
Database Model ini memisahkan peranan user interface dan database dengan jelas,
sehingga terbentuk dua lapisan.
c. Model Three-tier
Pada model ini disisipkan satu layer tambahan diantara user interface tier dan database
tier. Tier tersebut dinamakan middle-tier. Middle-Tier terdiri dari bussiness logic dan
rules yang menjembatani query user dan database, sehingga program aplikasi tidak bisa
mengquery langsung ke database server, tetapi harus memanggil prosedur-prosedur yang
telah dibuat dan disimpan pada middle-tier. Dengan adanya server middle-tier ini, beban
database server berkurang. Jika query semakin banyak dan/atau jumlah pengguna
bertambah, maka server-server ini dapat ditambah, tanpa merubah struktur yang sudah
ada. Ada berbagai macam software yang dapat digunakan sebagai server middle-tier.
Contohnya MTS (Microsoft Transaction Server) dan MIDAS.
9. Agent
Agent adalah entitas perangkat lunak yang didedikasikan untuk tujuan tertentu yang
memungkinkan user untuk mendelegasikan tugasnya secara mandiri, selanjutnya software
agent nantinya disebut agent saja. Agent bisa memiliki ide sendiri mengenai bagaimana
menyelesaikan suatu pekerjaan tertentu atau agenda tersendiri. Agent yang tidak berpindah ke
host lain disebut stationary agent.
Karakteristik dari Agent :
a. Autonomy :
Agent dapat melakukan tugas secara mandiri dan tidak dipengaruhi secara langsung oleh
user, agent lain ataupun oleh lingkungan (environment). Untuk mencapai tujuan dalam
melakukan tugasnya secaramandiri, agent harus memiliki kemampuan kontrol terhadap
setiap aksi yang mereka perbuat, baik aksi keluar maupun ke dalam.
d. Delegation :
Agent bergerak dalam kerangka menjalankan tugas yang diperintahkan oleh user.
Fenomena pendelegasian (delegation) ini adalah karakteristik utama suatu program
disebut agent.
e. Reactivity :
Kemampuan untuk bisa cepat beradaptasi dengan adanya perubahan informasi yang ada
dalam suatu lingkungan. Lingkungan itu bisa mencakup : agent lain, user, informasi dari
luar, dsb.
Collaborative Agent :
Agent yang memiliki kemampuan melakukan kolaborasi dan koordinasi antar
agent dalam kerangka Multi Agent System (MAS)
Interface Agent :
Agent yang memiliki kemampuan untuk berkolaborasi dengan user, melakukan
fungsi monitoring dan learning untuk memenuhi kebutuhan user.
Mobile Agent :
Agent yang memiliki kemampuan untuk bergerak dari suatu tempat ke tempat
lain, dan secara mandiri melakukan tugas ditempat barunya tersebut, dalam
lingkungan jaringan komputer.
Information dan Internet Agent :
Agent yang memiliki kemampuan untuk menjelajah internet untuk melakukan
pencarian, pemfilteran, dan penyajian informasi untuk user, secara mandiri.
Atau dengan kata lain, memanage informasi yang ada di dalam jaringan
Internet.
Reactive Agent :
Agent yang memiliki kemampuan untuk bisa cepat beradaptasi dengan
lingkungan baru dimana dia berada.
Hybrid Agent :
Kita sudah mempunyai lima klasifikasi agent . Kemudian agent yang memiliki
katakteristik yang merupakan gabungan dari karakteristik yang sudah kita
sebutkan sebelumnya adalah masuk ke dalam hybrid agent .
Heterogeneous Agent System :
Dalam lingkungan Multi Agent System (MAS),apabila terdapat dua atau lebih
hybrid agent yang memiliki perbedaan kemampuan dan karakteristik, maka
sistem MAS tersebut kita sebut dengan heterogeneous agent system.