Secara tidak langsung,
proses merupakan program yang sedang dieksekusi. Silberschatz: suatu proses
adalah lebi hdari sebuah kode program, yang terkadang disebut text section.
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 atauheavyweight
process mempunyai thread tunggal yang berfungsi
sebagai pengendali. Perbedaan antara proses dengan thread tunggal
dan proses dengan thread yang banyak adalah proses
dengan thread banyak dapat mengerjakan lebih dari satu tugas
pada satu satuan waktu.
Keuntungan Thread
Keuntungan dari
program yang multithreading dapat dipisah menjadi empat
kategori:
·
Responsi: Membuat aplikasi yang interaktif menjadi multithreading dapat
membuat sebuah program terus berjalan meski pun sebagian dari program tersebut
diblok atau melakukan operasi yang panjang, karena itu dapat meningkatkan
respons kepada pengguna. Sebagai contohnya dalam web browseryang multithreading,
sebuah thread dapat melayani permintaan pengguna
sementara thread lain berusaha menampilkan image.
·
Berbagi sumber daya: thread berbagi memori dan
sumber daya dengan threadlain 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.
·
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.
Model-model Multithreading:
·
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 mengaksesthread kernel pada satu saat. Jadi Multiple
thread tidak dapat berjalan secara paralel pada multiprosesor. Contoh:
Solaris Green Threads dan GNU Portable Threads.
·
Model One-to-One. Model ini memetakan
setiap thread tingkatan pengguna ke setiap thread.
Ia menyediakan lebih banyak concurrency dibandingkan modelMany-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 threaddibatasi dalam sistem. Contoh: Windows NT/XP/2000 ,
Linux, Solaris 9.
·
Model Many-to-Many. Model ini memultipleks
banyak thread tingkatan pengguna ke thread kernel
yang jumlahnya sedikit atau sama dengan tingkatan pengguna. Model ini
mengizinkan developer membuat thread sebanyak
yang ia mau tetapi concurrency tidak dapat diperoleh karena
hanya satu thread yang dapat dijadwalkan oleh kernel pada
suatu waktu. Keuntungan dari sistem ini ialah kernel thread yang
bersangkutan dapat berjalan secara paralel pada multiprosessor.
Pembatalan Thread (Thread
Cancellation)
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 dalamdatabase 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:
1.
Asynchronous cancellation. Suatu thread seketika
itu juga membatalkan target thread.
2.
Deferred cancellation. Suatu thread secara periodik
memeriksa apakah ia harus batal, cara ini memperbolehkan target
thread untuk membatalkan dirinya secara terurut.
Penjadwalan Thread
Begitu dibuat, thread baru
dapat dijalankan dengan berbagai macam penjadwalan. Kebijakan penjadwalanlah
yang menentukan setiap proses, di mana 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 ataumany to
one menggunakan:
·
Process Contention Scope (PCS). Pustaka thread menjadwalkan
thread pengguna untuk berjalan pada LWP (lightweight process) yang
tersedia.
·
System Contention Scope (SCS). SCS berfungsi untuk
memilih satu dari banyakthread , kemudian menjadwalkannya ke
satu thread tertentu(CPU / Kernel).
·
Client – Server
Server adalah komputer yang
dapat memberikan service ke client,
sedangkan clientadalah komputer yang mengakses beberapa service yang
ada di server. Ketika clientmembutuhkan suatu service yang
ada di server, dia akan mengirim request kepadaserver lewat
jaringan. Jika request tersebut dapat dilaksanakan, maka server akan
mengirim balasan berupa service yang dibutuhkan untuk saling
berhubungan menggunakan Socket. Socket adalah
sebuah endpoint untuk komunikasi didalam jaringan.
Model Client-Server
Ada beberapa model
client/server yang penting untuk diketahui. Dimulai dari arsitektur mainframe
hingga arsitektur client/server.
·
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 dilayani oleh komputer host.
·
Arsitektur File Sharing
Pada arsitektur ini
komputer server menyediakan file-file yang tersimpan di media penyimpanan
server yang dapat diakses oleh pengguna. Arsitektur file sharing memiliki
keterbatasan, terutama jika jumlah pengakses semakin banyak serta ukuran file
yang di shaing sangat besar. Hal ini dapat mengakibatkan transfer data menjadi
lambat. Model ini populer pada tahun 1990-an.
·
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.
·
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.
·
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.
·
Agent
Software 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.
Karakteristik dari
Agen:
1.
Autonomy
2.
Intelligence, Reasoning, dan Learning
3.
Mobility dan Stationary.
4.
Delegation
5.
Reactivity
6.
Proactivity dan Goal-Oriented
7.
Communication and Coordination Capability
Bahasa Pemrograman
yang digunakan
Bahasa pemrograman
yang dipakai untuk tahap implementasi dari software agent, sangat menentukan
keberhasilan dalam implementasi agent sesuai dengan yang diharapkan.
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 di
atas dapat disimpulkan bahwa bahasa pemrograman yang layak untuk
mengimplementasikan software agent adalah sebagai berikut :
·
Java
·
Telescript
·
Tcl/Tk, Safe-Tcl, Agent-Tcl
Tidak ada komentar:
Posting Komentar