Tugas 4
1. Multiplexing
Multiplexing merupakan sebuah proses dimana protokol pada sebuah layer dapat melakukan proses encapsulation terhadap paket data dari beberapa buah protokol dilayer atas secara bersamaan dalam satu waktu. Multiplexing juga merupakan strategi untuk menghandle banyak koneksi selain itu multiplexing adalah cara menangani beberapa klien dalam satu proses server. Aplikasi ini memungkinkan klien untuk terhubung ke server dan menambahkannya ke watch list. Watch list merupakan sebuah array deskriptor soket.Kemudian sistem operasi memberitahu aplikasi klien (jika ada) yang perlu dilayani atau jika klien baru telah membuat koneksi
Terdapat problem yaitu dari soket mana server harus menerima koneksi atau menerima
pesan dan terdapat soolusinya adalah dengan menggunakan select(). Select() merupakan sebuah fungsi sistem yang memungkinkan programmer untuk menentukan socket descriptor yang akan digunakan.
Fungsi select()
● select() merupakan sebuah fungsi sistem yang memungkinkan programmer
untuk menentukan socket descriptor yang akan digunakan.
● menetapkan daftar deskriptor untuk memeriksa operasi I / O yang tertunda
● blok sampai salah satu deskriptor siap
● returns which descriptors are ready
● Prototype fungsi select() :
import select
Panggilan select() memungkinkan untuk menggunakan pemblokiran I/O pada satu set deskriptor.
I/O
multiplexing merupakan kapabilitas untuk memberi instruksi ke kernel bahwa kita
ingin diberi notifikasi ketika satu atau beberapa kondisi I/O telah
tercapai. Beberapa scenario dimana I/O multiplexing dipakai :
- Ketika klient sedang menangani beberapa deskriptor sekaligus
- Ketika klient menangani beberapa socket bersamaan
- Ketika TCP server menangani listening dan socket ang terkoneksi
- Ketika server menangani TCP dan UDP bersamaan
- Ketika server menangani lebih dari satu service dan protocol secara bersamaan
Tujuan dari komunikasi data secara multiplexing yaitu meningkatkan effisiensi penggunaan bandwidth atau kapasitas saluran transmisi dengan cara berbagi akses bersama dan menghemat jumlah saluran fisik.
2. Preforking
Saat terdapat masalah
pada forking seperti masalah performa, terjadinya
delay dalam menjalankan child process ketika client terhubung ke server dalam
jumlah besar maka kita dapat mengatasinya menggunakan preforking. Preforking merupakan membuat proses anak dengan jumlah tertentu
pada saat aplikasi dimulai.Preforking membatasi semua cost yang terkait dengan
pembuatan child process ke bagian inisialisasi aplikasi ketika sebuah client
terkoneksi, maka proses yang menanganinya telah terbentuk. Preforking menciptakan salinan sebuah proses
membutuhkan biaya kinerja yang cukup besar, tambah lagi jika dilakukan pada
aplikasi yang besar. Biaya kinerja akan semakin mahal seiring banyaknya jumlah
client yang terhubung dengan server.. Untuk mengurangi biaya kinerja yang
dipergunakan untuk menggandakan proses induk digunakan strategi preforking,
yaitu dengan membuat proses anak dengan jumlah tertentu pada saat aplikasi
dimulai, kemudian proses anak akan melayani client yang terhubung.
Konsep client-server
merupakan dasar dari setiap transaksi yang terjadi pada setiap aplikasi
jaringan. Socket merupakan antarmuka antara application process dan transport
layer. 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 tsb. • 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.
3. Berikan contoh program menggunakan python untuk Multiplexing dan preforking
a. Multiplexing
- Server
- Client
- Output
b. Preforking
- Server
- Client
0 comments:
Post a Comment