NIM : 183307045
Kelas : Teknologi Informasi 4A TTD
Pertemuan : Tiga ACC
Tanggal : 13-02-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.
Thread adalah unit dasar dari penggunaan CPU, thread mengandung 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 software yang berjalan pada PC modern didesain secara
multithreading. Sebuah aplikasi biasanya diimplementasi sebagai proses yang terpisah
dengan beberapa thread yang berfungsi sebagai pengendali. Contohnya sebuah web
browser mempunyai thread untuk menampilkan gambar atau tulisan sedangkan thread
yang lain berfungsi sebagai penerima data dari network.
Java mempunyai pengunaan lain dari thread. Perlu dikeahui 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(bisa 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 tersebut masih dalam keadaan mencoba
untuk melakukan koneksi ke server maka ia akan melakukan interrupt dan mencegah thread
tersebut untuk mencoba melakukan koneksi ke server.
b. Thread
Adalah alur kontrol dari suatu proses.
Merupakan unit dasar dari penggunaan CPU dan sering disebut dengan lightweight
process.
Ruang alamat atau IP address digunakan secara bersama-sama dari proses yang
menciptakannya.
Memiliki akses langsung ke segmen data dari prosesnya.
Dapat saling berkomunikasi dengan thread lain dalam satu proses.
Hampir tidak memiliki overhead.
Perubahan pada thread utama seperti pembatalan atau perubahan prioritas dapat
mempengaruhi tingkah laku thread lain dalam satu proses.
Pembentukan thread membutuhkan waktu yang lebih sedikit.
Waktu yang dibutuhkan untuk mengakhiri thread lebih sedikit.
Lebih mudah dan cepat melakukan swicth antar thread daripada switch antar
proses.
5. Macam-macam Thread
a. Kernel-level threading:
Thread yang pengaturannya dilakukan oleh pustaka thread pada tingkatan pengguna.
Karena pustaka yang menyediakan fasilitas untuk pembuatan dan penjadwalan thread,
thread pengguna cepat dibuat dan dikendalikan. Thread ini dibuat oleh pengguna yang
berkorespondensi 1-1 dengan entitas-entitas yang terjadwalkan yang berada di kernel.
Ini merupakan implementasi (penerapaan) paling sederhana dari threading.
Thread kernel didukung langsung oleh sistem operasi.
Pembuatan, penjadwalan, dan manajemen thread dilakukan oleh kernel pada
kernel space.
Pengaturan thread dilakukan oleh sistem operasi, sehingga pembuatan dan
pengaturan kernel thread lebih lambat dibandingkan user thread.
b. User-level threading:
Thread yang didukung langsung oleh kernel. Pembuatan, penjadwalan dan manajemen
thread dilakukan oleh kernel pada kernel space. Karena dilakukan oleh sistem operasi,
proses pembuatannya akan lebih lambat jika dibandingkan dengan thread pengguna.
Sebuah pemetaan N-1, yang berarti bahwa semua level aplikasi thread dipetakan ke
entitas tunggal yang ada di kernel. Dengan pendekatan ini, switching proses dapat
dilakukan dengan sangat cepat.
Thread pengguna didukung kernel serta diimplementasikan dengan pustaka
(library) thread pada tingkatan pengguna.
Pustaka (library) menyediakan fasilitas untuk pembuatan thread, penjadwalan
thread, dan manajemen thread tanpa dukungan dari kernel.
Semua pembuatan dan penjadwalan thread dilakukan dalam ruang pengguna tanpa
campur tangan kernel.
6. Model-model Multithreading
a. Model Many-to-One.
Model ini memetakan beberapa thread tingkatan pengguna ke sebuah thread.
tingkatan kernel. Pengaturan thread dilakukan dalam ruang pengguna sehingga
efisien. Hanya satu thread pengguna yang dapat mengakses thread kernel pada satu
saat. Jadi Multiple thread tidak dapat berjalan secara paralel pada multiprosesor.
Contoh: Solaris Green Threads dan GNU Portable Threads.
b. Model One-to-One.
Model ini memetakan setiap thread tingkatan pengguna ke setiap thread. Ia
menyediakan lebih banyak concurrency dibandingkan model Many-to-One.
Keuntungannya sama dengan keuntungan thread kernel. Kelemahan model ini ialah
setiap pembuatan thread pengguna memerlukan tambahan thread kernel. Karena
itu, jika mengimplementasikan sistem ini maka akan menurunkan kinerja dari
sebuah aplikasi sehingga biasanya jumlah thread dibatasi dalam sistem. Contoh:
Windows NT/XP/2000 , Linux, Solaris 9.
c. Model Many-to-Many.
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 bisa spesifik untuk sebagian aplikasi atau sebagian mesin. Many-to-
One model mengijinkan developer untuk membuat user thread sebanyak yang ia
mau tetapi concurrency tidak dapat diperoleh karena hanya satu thread yang bisa
dijadwal 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 bisa membuat
thread dalam jumlah yang terbatas ). Many-to- Many model tidak menderita
kelemahan dari 2 model di atas. Developer bisa membuat user threadsebanyak yang
diperlukan, dan kernel thread yang bersangkutan bisa bejalan secara pararel pada
multiprocessor . Dan juga ketika suatu thread menjalankan blocking system call
maka kernel dapat menjadwalkan thread lain untuk melakukan eksekusi. Contoh
sistem operasi yang mendukung model ini adalah Solaris, IRIX, dan Digital UNIX.
7. Thread Cancelation
Thread cancellation adalah tugas untuk memberhentikan thread sebelum ia menyelesaikan
tugasnya. Sebagi contohnya jika dalam program java kita hendak mematikan JVM( Java
Virtual Machine ) maka sebelum JVM-nya dimatikan maka seluruh thread yang berjalan
dihentikan terlebuh dahulu. Thread yang akan diberhentikan biasa disebut target thread.
Pemberhentian target thread bisa terjadi melalui 2 cara yang berbeda :
1. Asynchronous cancellation: suatu thread seketika itu juga memberhentikan target
thread.
2. Defered cancellation: target thread secara perodik memeriksa apakah dia harus
berhenti, cara ini memperbolehkan targetthread 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 akan mengambil 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 Deffered
cancellation .
Cara kerja dari deffered cancellation adalah dengan menggunakan 1 thread yang berfungsi
sebagai pengindikasi bahwa target thread hendak diberhentikan. Tetapi pemberhentian
hanya akan terjadi jika target thread memeriksa apakah ia harus berhenti atau tidak. Hal ini
memperbolehkan thread untuk memeriksa apakah ia harus berhenti pada waktu dimana ia
bisa diberhentikan secara aman yang aman. Pthread merujuk 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 system operasi yang mengimplementasikan Pthread API akan
mengijinkan deferred cancellation.
Dalam ilmu komputer, client server adalah model arsitektur perangkat lunak yang
terdiri dari dua bagian yaitu sistem client dan sistem server yang berkomunikasi
baik melalui jaringan komputer ataupun pada komputer yang sama.
Aplikasi client server adalah sistem terdistribusi yang terdiri dari perangkat lunak
client dan juga server. Aplikasi server client menyediakan cara yang lebih baik
untuk berbagi beban kerja. Proses client selalu memulai koneksi ke server,
sementara proses server selalu menunggu permintaan dari client mana pun.
Arsitektur perangkat lunak client server telah menjadi salah satu model dasar
komputasi jaringan. Banyak jenis aplikasi telah dibuat menggunakan model client
server.
Fungsi-fungsi jaringan standar seperti pertukaran Email, akses web dan akses
database, didasarkan pada model client server ini. Misalnya, browser web adalah
program client di komputer pengguna yang dapat mengakses informasi di server
web manapun di dunia. Model pemrograman client server adalah arsitektur
komputasi terdistribusi yang memisahkan penggunaan informasi (client) dari
penyedia informasi (server).
Aplikasi client adalah aplikasi yang membutuhkan sesuatu seperti halaman
web atau alamat IP dari server. Client dapat menghubungi server untuk
mendapatkan informasi ini kapan saja. Client adalah pengguna informasi.
Aplikasi server adalah aplikasi yang menyediakan informasi atau sumber daya
untuk client. Itu harus selalu berjalan dan berjalan, menunggu permintaan dari
client.
Aplikasi client berkomunikasi hanya dengan aplikasi server dan sebaliknya. Client
tidak berkomunikasi langsung dengan client lain.
c. Arsitektur Client/Server
Karena keterbatasan sistem file sharing, dikembangkanlah arsitektur client/server.
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. Arsitektur Client-Server Telematika terdiri dari 2 buah arsitektur
yakni, arsitektur sisi client dan sisi server-nya.
3) Kolaborasi Client-Server
Berikut ini adalah penjelasan mengenai beberapa kolaborasi arsitektur sisi client dan sisi
server
a. Arsitektur Single- Tier (Stand Alone)
Definisi satu-tier arsitektur adalah semua komponen produksi dari sistem
dijalankan pada komputer yang sama. Ini adalah sederhana dan paling mahal
alternatif. Ada kurang perlengkapan untuk membeli dan mempertahankan.
Kelemahan dari jenis ini pelaksanaan keamanan lebih rendah dan kurangnya
skalabilitas. Sebuah arsitektur skalabel ketika dapat dengan mudah diperluas atau
ditambah untuk memenuhi kebutuhan peningkatan kinerja.
Setelah semua komponen utama situs dan data di satu komputer di belakang
firewall daun domain situs lebih rentan terhadap serangan berbahaya. Menjalankan
semua komponen situs pada sebuah komputer juga membatasi ekspansi dan
optimalisasi kemungkinan. Anda hanya dapat menambahkan begitu banyak
memori atau begitu banyak CPU untuk sebuah server tunggal.
b. Arsitektur Two-tier (client/server)
Dalam dua lapis client / server arsitektur, antarmuka pengguna pengguna
ditempatkan di lingkungan desktop dan sistem manajemen database jasa biasanya
dalam sebuah server yang lebih kuat merupakan mesin yang menyediakan
layanan bagi banyak klien. Pengolahan informasi dibagi antara sistem user
interface lingkungan dan lingkungan server manajemen database. Manajemen
database server mendukung untuk disimpan prosedur dan pemicu.. Vendor
perangkat lunak menyediakan alat-alat untuk menyederhanakan pengembangan
aplikasi untuk dua lapis client / server arsitektur.
Dalam model client/server, pemrosesan pada sebuah aplikasi terjadi pada client
dan server. Client/server adalah tipikal sebuah aplikasi two-tier dengan banyak
client dan sebuah server yang dihubungkan melalui sebuah jaringan, seperti
terlihat dalam gambar 1.2. Aplikasi ditempatkan pada komputer client dan mesin
database dijalankan pada server jarak-jauh. Aplikasi client mengeluarkan
permintaan ke database yang mengirimkan kembali data ke client-nya.
Pada gambar tersebut, user interface yang merupakan bagian dari program aplikasi
melayani input dari user. Input tersebut diproses oleh Manajemen Proses dan
melakukan query data ke database (dalam bentuk perintah SQL). Pada database
server juga bisa memiliki Manajemen Proses untuk melayani query tersebut,
biasanya ditulis ke dalam bentuk Stored Procedure.
Dalam client/server, client-client yang cerdas bertanggung jawab untuk bagian dari
aplikasi yang berinteraksi dengan user, termasuk logika bisnis dan komunikasi
dengan server database. Tipe-tipe tugas yang terjadi pada client adalah :
1. Antarmuka pengguna
2. Interaksi database
3. Pengambilan dan modifikasi data
4. Sejumlah aturan bisnis
5. Penanganan kesalahan
Server database berisi mesin database, termasuk tabel, prosedur tersimpan, dan
trigger (yang juga berisi aturan bisnis). Dalam sistem client/server, sebagian besar
logika bisnis biasanya diterapkan dalam database. Server database manangani :
1. Manajemen data
2. Keamanan
3. Query, trigger, prosedur tersimpan
4. Penangan kesalahan
Arsitektur client/server merupakan sebuah langkah maju karena mengurangi beban
pemrosesan dari komputer sentral ke komputer client. Ini berarti semakin banyak
user bertambah pada aplikasi client/server, kinerja server file tidak akan menurun
dengan cepat. Dengan client/server user dair berbagai lokasi dapat mengakses data
yang sama dengan sedikit beban pada sebuah mesin tunggal. Namun masih terdapat
kelemahan pada model ini. Selain menjalankan tugas-tugas tertentu, kinerja dan
skalabilitas merupakan tujuan nyata dari sebagian besar aplikasi. Model client/server
memiliki sejumlah keterbatasan :
1. Kurangnya skalabilitas
2. Koneksi database dijaga
3. Tidak ada keterbaharuan kode
4. Tidak ada tingkat menengah untuk menangani keamanan dan transaksi
Aplikasi-aplikasi berbasis client/server memiliki kekurangan pada skalabilitas.
Skalabilitas adalah seberapa besar aplikasi bisa menangani suatu kebutuhan yang
meningkat – misalnya, 50 user tambahan yang mengakses aplikasi tersebut.
Walaupun model client/server lebih terukur daripada model berbasis host, masih
banyak pemrosesan yang terjadi pada server. Dalam model client/server semakin
banyak client yang menggunakan suatu aplikasi, semakin banyak beban pada server.
Koneksi database harus dijaga untuk masing-masing client. Koneksi menghabiskan
sumber daya server yang berharga dan masing-masing client tambahan
diterjemahkan ke dalam satu atau beberapa koneksi. Logika kode tidak bisa didaur
ulang karena kode aplikasi ada dalam sebuah pelaksanaan executable monolitik pada
client. Ini juga menjadikan modifikasi pada kode sumber sulit. Penyusunan ulang
perubahan itu ke semua komputer client juga membuat sakit kepala.
Keamanan dan transaksi juga harus dikodekan sebagai pengganti penanganan oleh
COM+/MTS. Bukan berarti model client/server bukanlah merupakan model yang
layak bagi aplikasi-aplikasi. Banyak aplikasi yang lebih kecil dengan jumlah user
terbatas bekerja sempurna dengan model ini. Kemudahan pengembangan aplikasi
client/server turut menjadikannya sebuah solusi menarik bagi perusahaan.
Pengembangan umumnya jauh lebih cepat dengan tipe sistem ini. Siklus
pengembangan yang lebih cepat ini tidak hanya menjadikan aplikasi meningkat dan
berjalan dengan cepat namun juga lebih hemat biaya.
Bahasa Pemrograman
Bahasa pemrograman yang dipakai untuk tahap implementasi dari software agent,
sangat menentukan keberhasilan dalam implementasi agent sesuai dengan yang
diharapkan. Beberapa peneliti memberikan petunjuk tentang bagaimana karakteristik
bahasa pemrorgaman yang sebaiknya di pakai [Knabe, 1995] [Brenner et al., 1998].
Diantaranya yaitu :
1. Object-Orientedness
Karena agent adalah berhubungan dengan obyek, bahkan beberapa peneliti
menganggap agent adalah obyek yang aktif, maka juga agent harus
diimplementasikan kedalam pemrorgaman yang berorientasi obyek (object-
oriented programming language).
2. Platform Independence
Seperti sudah dibahas pada bagian sebelumnya, bahwa agent hidup dan
berjalan diberbagai lingkungan. Sehingga idealnya bahasa pemrograman yang
dipakai untuk implementasi adalah yang terlepas dari platform, atau dengan
kata lain program tersebut harus bisa dijalankan di platform apapun (platform
independence).
3. Communication Capability
Pada saat berinteraksi dengan agent lain dalam suatu lingkungan jaringan
(network environment), diperlukan kemampuan untuk melakukan komunikasi
secara fisik. Sehingga diperlukan bahasa pemrograman yang dapat
mensupport pemrograman yang berbasis network dan komunikasi.
4. Security
Faktor keamanan (security) adalah factor yang sangat penting dalam memilih
bahasa pemrorgaman untuk implementasi software agent. Terutama untuk
mobil agent, diperlukan bahasa pemrograman yang mensupport level-level
keamanan yang bisa membuat agent bergerak dengan aman.
5. Code Manipulation
Beberapa aplikasi software agent memerlukan manipulasi kode program
secara runtime, sehingga diperlikan bahasa pemrograman untuk software
agent yang dapat menangani masalah runtime tersebut. Dari karakteristik
diatas dapat disimpulkan bahwa bahasa pemrograman yang layak untuk
mengimplementasikan software agent adalah sebagai berikut :
Java
Telescript
Tcl/Tk, Safe-Tcl, Agent-Tcl