Client-Server adalah pembagian kerja antara server dan client yg
mengakses server dalam suatu jaringan. Jadi arsitektur client-server
adalah desain sebuah aplikasi terdiri dari client dan server yang saling
berkomunikasi ketika mengakses server dalam suatu jaringan.
Dari diatas, kata kuncinya adalah pada sistem client/server harus
terdapat satu atau beberapa server yang menyediakan layanan dan satu
atau beberapa klien yang meminta layanan tersebut (tidak perduli apakah
kondisi tersebut berada pada sebuah sistem jaringan ataupun
stand-alone). Istilah server di sini bisa saja berupa komputer-komputer kelas
server seperti IBM, HP, Compaq dll. Atau juga berupa software yang dapat
dikategorikan berdasarkan layanannya misalnya web server, application
server, file server, database server, terminal server, mail server, dll.
Server bisa juga berupa proses, seperti RPC Server yang terdapat pada
sistem operasi server seperti Novell, Windows NT, Linux dll. Lebih
dalam lagi, pada kernel (inti) sebuah sistem operasi juga banyak
terdapat proses-proses yang bertanggung-jawab menyediakan
layanan-layanan agar hardware komputer dapat bekerja sebagai mana
mestiya.
Microsoft menamakan proses tersebut
services sedangkan keluarga Unix/Linux menyebutnya
daemons. Services/daemons tersebut umumnya menyediakan manajemen memory, akses file/jaringan, serta penjadwalan (scheduling).
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.
- Karakteristik Server
- Pasif
- Menunggu request
- Menerima request, memproses mereka dan mengirimkan balasan berupa service
- 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, yang masing-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.
Konsep Dasar Proses Dalam Sistem Operasi
Proses dalam sistem operasi adalah suatu bagian dari program yang
berada pada status tertentu dalam rangkaian eksekusinya. Di dalam
bahasan Sistem Operasi, kita lebih sering membahas proses dibandingkan
dengan program. Pada Sistem Operasi modern, pada satu saat tidak seluruh
program dimuat dalam memori, tetapi hanya satu bagian saja dari program
tersebut. Sedangkan bagian lain dari program tersebut tetap
beristirahat di media penyimpan disk. Hanya pada saat dibutuhkan saja,
bagian dari program tersebut dimuat di memory dan dieksekusi oleh
prosesor. Hal ini akan sangat menghemat pemakaian memori.
Secara informal; proses adalah program dalam eksekusi. Suatu proses
adalah lebih dari kode program, dimana kadang kala dikenal sebagai
bagian tulisan. Proses juga termasuk aktivitas yang sedang terjadi,
sebagaimana digambarkan oleh nilai pada program counter dan isi dari
daftar prosesor/ processor’s register. Suatu proses umumnya juga
termasuk process stack, yang berisikan data temporer (seperti parameter
metoda, address yang kembali, dan variabel lokal) dan sebuah data
section, yang berisikan variabel global.
Kami tekankan bahwa program itu sendiri bukanlah sebuah proses; suatu
program adalah satu entitas pasif; seperti isi dari sebuah berkas yang
disimpan didalam disket, sebagaimana sebuah proses dalam suatu entitas
aktif, dengan sebuah program counter yang mengkhususkan pada instruksi
selanjutnya untuk dijalankan dan seperangkat sumber daya/ resource yang
berkenaan dengannya.
Walau dua proses dapat dihubungkan dengan program yang sama, program
tersebut dianggap dua urutan eksekusi yang berbeda. Sebagai contoh,
beberapa pengguna dapat menjalankan copy yang berbeda pada mail program,
atau pengguna yang sama dapat meminta banyak copy dari program editor.
Tiap-tiap proses ini adakah proses yang berbeda dan walau bagian
tulisan-text adalah sama, data section bervariasi. Juga adalah umum
untuk memiliki proses yang menghasilkan banyak proses begitu ia bekerja.
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.
- Model Many to
One: Model Many-to-One 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 multiprocessor. Thread tingkat
pengguna yang diimplementasi pada sistem operasi yang tidak mendukung
thread kernel menggunakan model Many-to-One.
Model Many to One
- Model One to One: Model One-to-One memetakan setiap thread tingkatan
pengguna ke thread kernel. Ia menyediakan lebih banyak concurrency
dibandingkan model Many-to-One. Keuntungannya sama dengan keuntungan
thread kernel. Kelemahannya model ini ialah setiap pembuatan thread
pengguna memerlukan pembuatan thread kernel. Karena pembuatan thread
dapat menurunkan kinerja dari sebuah aplikasi maka implmentasi dari
model ini jumlah thread dibatasi oleh sistem. Contoh sistem operasi yang
mendukung model One-to-One ialah Windows NT dan OS/2.
Model One to One
Model Many To Many: Model ini me-multipleks banyak thread tingkatan
pengguna ke thread kernel yang jumlahnya lebih sedikit atau sama dengan
tingkatan pengguna. thread. Jumlah thread kernel spesifik untuk sebagian
aplikasi atau sebagian mesin. Many-to-One model mengizinkan developer
untuk membuat user thread sebanyak yang ia mau tetapi concurrency
(berjalan bersama) tidak dapat diperoleh karena hanya satu thread yang
dapat 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 dapat membuat thread dalam jumlah yang terbatas).
Model Many-to-Many tidak mengalami kelemahan dari dua model di atas.
Developer dapat membuat user thread sebanyak yang diperlukan, dan kernel
thread yang bersangkutan dapat bejalan secara paralel 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.
Konsep Dasar Thread Dalam Sistem Operasi
Thread dalam sistem operasi dapat diartikan sebagai sekumpulan
perintah (instruksi) yang dapat dilaksanakan (dieksekusi) secara sejajar
dengan ulir lainnya, dengan menggunakan cara time slice (ketika satu
CPU melakukan perpindahan antara satu ulir ke ulir lainnya) atau
multiprocess (ketika ulir-ulir tersebut dilaksanakan oleh CPU yang
berbeda dalam satu sistem).
Ulir sebenarnya mirip dengan proses, tapi cara berbagi sumber daya
antara proses dengan ulir sangat berbeda. Multiplethread dapat
dilaksanakan secara sejajar pada sistem komputer. Secara umum
multithreading melakukan time-slicing (sama dengan time-division
multipleks), di mana sebuah CPU bekerja pada ulir yang berbeda, di mana
suatu kasus ditangani tidak sepenuhnya secara serempak, untuk CPU
tunggal pada dasarnya benar-benar melakukan sebuah pekerjaan pada satu
waktu.
Thread saling berbagi bagian program, bagian data dan sumber daya
sistem operasi dengan thread lain yang mengacu pada proses yang sama.
Thread terdiri atas ID thread, program counter, himpunan register, dan
stack. Dengan banyak kontrol thread proses dapat melakukan lebih dari
satu pekerjaan pada waktu yang sama.
Program yang dieksekusi :
a.Proses berat (heavyweight) => proses tradisional
b.Proses ringan (lightweight) => THREAD
Thread terdiri dari ID thread, program counter,himpunan register dan
stack. Thread dapat melakukan lebih dari satu pekerjaan pada waktu yang
sama (multithreading). Thread bekerja sama dengan thread lain dalam
penggunaan bagian kode, bagian data, dan resource. Dengan penggunaan
thread CPU dapat secara ekstensif di antara peer thread tanpa
menggunakan manajemen memori.
Keuntungan penggunaan thread :
>Tanggap
>Pemberdayaan resorce
>Ekonomis
>Pemberdayaan arsitektur multiprocessor
Single thread dan multi thread
1.Single thread >> process hanya mengeksekusi satu thread saja pada satu waktu
2.Multi thread >> process dapat mengeksekusi sejumlah thread dalam satu waktu.
Model Multithread
Sebelumnya, perlu diketahui apa itu user thread dan kernel thread.
User thread >> pengelolaan thread dilakukan oleh user level (pengguna)
Kernel thread >> pengelolaan thread dilakukan oleh kernel komputer User tidak dapat menginterupsi.
Sumber :