Arsitektur client server

Arsitektur client – server melibatkan minimal 1 server dan 1 client untuk saling berkomunikasi. Server berfungsi sebagai pihak yang merespons apa yang dikirim client, sedangkan client merupakan sisi yang meminta data sesuai dengan permintaan user. mendefinisikan client-server
sebagai arsitektur yang paling banyak digunakan saat ini. Dimana client dapat
melakukan proses sendiri, ketika client meminta data, server akan mengirimkan
data sesuai yang diminta, kemudian proses akan dilakukan di client.
Client adalah sembarang sistem atau proses yang melakukan suatu
permintaan data atau layanan ke server.
Server adalah sistem atau proses yang menyediakan data atau layanan yang
diminta oleh client. Secara fisik, sebuah server dapat berupa komputer
mainframe, mini-komputer, workstation, ataupun PC atau peranti lain seperti
printer, server tidak harus berupa sistem fisik, tetapi juga suatu proses.
Dalam model Klien/Server, sebuah aplikasi dibagi menjadi dua bagian yang
terpisah, tapi masih merupakan sebuah kesatuan yakni komponen Klien dan
komponen Server. Komponen klien juga sering disebut sebagai front-end, sementara komponen server disebut
sebagai back-end. Komponen klien dari aplikasi tersebut
dijalankan dalam sebuah workstation dan menerima masukan data dari pengguna.
Komponen klien tersebut akan menyiapkan data yang dimasukkan oleh pengguna
dengan menggunakan teknologi pemrosesan tertentu dan mengirimkannya kepada
komponen server yang dijalankan di atas mesin server, umumnya dalam
bentuk request terhadap beberapa layanan yang dimiliki
oleh server. Komponen server akan menerima request dari klien dan langsung
memprosesnya lalu mengembalikan hasil pemrosesan tersebut kepada klien. Klien
pun menerima informasi hasil pemrosesan data yang dilakukan server dan
menampilkannya kepada pengguna, dengan menggunakan aplikasi yang berinteraksi
dengan pengguna.
Forking
forking merupakan cara tradisional untuk menghandle multiple clients Ketika sebuah aplikasi memanggil fork (), maka dibuat copyan dari calling program, sampai ke program counter(PC), dan child process baru dimulai dengan copyan tersebut. Hasil kembalian dari fork() : sekali dalam program pemanggil dan waktu berikutnya dalam child process. Nilai kembalian dalam program pemanggil adalah PID dari child process baru, sementara dalam child process itu adalah 0.
Proses bercabang adalah cara tradisional untuk menyusun tugas paralel, dan merupakan bagian mendasar dari rangkaian alat Unix. Forking didasarkan pada gagasan menyalin program: ketika sebuah program memanggil rutin fork, sistem operasi membuat salinan baru dari program itu di memori, dan mulai menjalankan salinan itu secara paralel dengan yang asli. Beberapa sistem tidak benar-benar menyalin program aslinya (ini adalah operasi yang mahal), tetapi salinan baru berfungsi seolah-olah itu adalah salinan literal.
Setelah operasi fork, salinan asli dari program disebut proses induk , dan salinan yang dibuat oleh os.forkdisebut proses anak . Secara umum, orang tua dapat membuat sejumlah anak, dan anak dapat membuat proses anak mereka sendiri -- semua proses bercabang berjalan secara mandiri dan paralel di bawah kendali sistem operasi. Ini mungkin lebih sederhana dalam praktiknya daripada teori; skrip Python pada Contoh 3-1 mem-fork proses anak baru hingga Anda mengetikkan "q" di konsol.
Multithreading
Multithreading adalah kemampuan yg memungkinkan kumpulan instruksi atau proses dpt dijalankan secara bersamaan dlm sebuah program. multithreading juga cara untuk mencapai multitasking. Dalam multithreading, konsep utas digunakan. Mari kita pahami dulu konsep thread dalam arsitektur komputer. Salah satu solusi untuk permasalahan diatas adalah penggunaan thread. Thread berjalan secara paralel dan menggunakan shared memory global. Karena semua thread berjalan dalam proses dan ruang memori yang sama, secara otomatis thread berbagi soket yang lewat di antara mereka. Hal ini serupa dengan cara child process mewarisi deskriptor soket. Namun, tidak seperti proses, thread biasanya lebih murah untuk memulai, dan bekerja pada mesin Unix dan Windows di bawah standar Python.
Dalam komputasi, proses adalah turunan dari program komputer yang sedang dieksekusi. Setiap proses memiliki 3 komponen dasar:
- Program yang dapat dieksekusi.
- Data terkait yang dibutuhkan oleh program (variabel, ruang kerja, buffer, dll.)
- Konteks eksekusi program (Status proses)
Multi-threading: Beberapa utas dapat ada dalam satu proses di
mana:
- Setiap utas berisi set register dan variabel lokalnya sendiri (disimpan dalam tumpukan)
- Semua utas proses berbagi variabel global (disimpan di
tumpukan) dan kode program
Pertimbangkan diagram di bawah ini untuk memahami bagaimana banyak utas
ada di memori
Contoh program menggunakan python untuk forking dan multithreading
Server
No comments:
Post a Comment