Secara
tidak langsung, proses merupakan program yang sedang dieksekusi. Silberschatz:
suatu proses adalah lebi hdari sebuah kode program, yang terkadang disebut text
section.
1. Thread
Thread
adalah
sebuah alur kontrol dari sebuah proses. Kontrol thread tunggal ini hanya
memungkinkan proses untuk menjalankan satu tugas pada satu waktu. Banyak sistem
operasi modern telah memiliki konsep yang dikembangkan agar memungkinkan sebuah
proses untuk memiliki eksekusi multi-threads, agar dapat secara terus
menerus mengetik dan menjalankan pemeriksaan ejaan didalam proses yang sama,
maka sistem operasi tersebut memungkinkan proses untuk menjalankan lebih dari
satu tugas pada satu waktu. Suatu proses yang multithreaded mengandung
beberapa perbedaan alur kontrol dengan ruang alamat yang sama.
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 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:
1. 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 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.
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.
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 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.
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 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).
2.
Client – Server
Server adalah komputer yang dapat memberikan service ke
client, sedangkan client adalah komputer yang mengakses beberapa service
yang ada di server. Ketika client membutuhkan suatu service
yang ada di server, dia akan mengirim request kepada server
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.
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 dilayani oleh komputer host.
b.
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.
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.
e.
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.
3. 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 :
A. 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).
B.
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).
C. 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.
D. 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.
E. 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
0 komentar:
Posting Komentar