Monday, November 21, 2022

Tugas 3 Socket Progamming

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:
  1. Program yang dapat dieksekusi.
  2. Data terkait yang dibutuhkan oleh program (variabel, ruang kerja, buffer, dll.)
  3. Konteks eksekusi program (Status proses)

Multi-threading: Beberapa utas dapat ada dalam satu proses di mana:

  1. Setiap utas berisi set register dan variabel lokalnya sendiri (disimpan dalam tumpukan) 
  2. 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

Client

Hasil program 




No comments:

Post a Comment