Pertemuan 6 Server dengan Multi Thread pada Linux

Slides:



Advertisements
Presentasi serupa
Try, Catch, Finally Throws
Advertisements

Aplikasi dan Pemrograman Jaringan
Mengamati Proses pada SO Linux
Pemrograman Jaringan Socket Programming Aurelio Rahmadian.
Komunikasi antar Proses
KONSEP PROSES Minggu ke 5.
Workshop SCS: Java Game Programming
//program untuk menulis ke dalam file teks kemudian menampilkan isi file ke layar #include Void main() { const int mak 80; file p; // deklarasi file.
SISTEM TERDISTRIBUSI (SILABUS dan Introduction to Distributed Systems)
SI 325 Konsep Sistem Operasi Minggu 3
3 Variabel, Konstanta Tipe Data dan dalam Bahasa C/C++ Java dan Bab
Sistem Operasi (Operating Systems) Minggu 5
Algoritma dan Struktur Data
Fungsi Lecture 7. Motivation Complexity of programming problem  more difficult to consider the solution as a whole  clue: dividing the problem into.
Pertemuan 5 Server dengan Multi Proses pada Linux
ARRAY OF STRUCT Apabila hendak menggunakan 1 struct untuk beberapa kali, ada 2 cara : Deklarasi manual #include typedef struct Mahasiswa { char.
PROCESS DAN THREADS Pengertian : Program Proses MonoProgramming
Single Linked List Yuliana Setiowati, S.Kom.
Alokasi Memori Yuliana Setiowati.
Pointer Memory Dinamic.
Socket Programming Isbat Uzzin.
Pengembang aplikasi memiliki kemampuan untuk memperbaiki beberapa parameter TCP, seperti buffer dan maksimum ukuran segmen maksimum Socket Programming.
Matakuliah : H0483 / Network Programming Tahun : 2008 Versi : 2.0
Pertemuan 2 Socket Introduction
Algorithm and Data Structures.
#include //bagian modul int hitung(x,y) { return(x+y); } //bagian utama main() { int jumlah,a,b; a=8; b=2; jumlah=hitung(a,b); cout
Algoritma dan Struktur Data
Sistem Operasi (Operating Systems) Minggu 4
1 Pertemuan 18 Matriks Matakuliah: T0016/Algoritma dan Pemrograman Tahun: 2005 Versi: versi 2.
Structure Data - Array Pertemuan 7 Matakuliah: T0456 / Algoritma dan Metode Object Oriented Programming Tahun: 2007.
STRUCT OF ARRAY Apabila hendak menggunakan 1 struct untuk beberapa kali, ada 2 cara : Deklarasi manual #include typedef struct Mahasiswa { char.
Bab 05 Tipe Data dan Mengisi Variabel
FUNCTIONS Pertemuan 9 Matakuliah: T0456 / Algoritma dan Metode Object Oriented Programming Tahun: 2007.
1 Pertemuan 1 Pendahuluan Matakuliah: H0483 – Network Programming Tahun: 2005 Versi: 1.0.
PROCESS DAN THREADS PROCESS Multiprogramming Pseudoparallelism
8.1. Multiprosesor Memori Bersama 8.2. Membangun Kepararelan Khusus Membuat Proses Simultan Threads Pengolahan Paralel/KK /1/51 8. Pemrograman Dengan.
Pertemuan 3 ELEMENTARY TCP SOCKETS
DASAR SOCKET PROGRAMMING
TCP Socket Programmning
1 Pertemuan Fungsi Matakuliah: T0016 / Algoritma dan Pemrograman Tahun: 2007 Versi: 6.
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
1 Pertemuan 10 Pemrograman Jaringan pada Windows dengan VC ) Matakuliah: H0483 – Network Programming Tahun: 2008 Versi: 2.0.
Matakuliah : T0016 / Algoritma dan Pemrograman Tahun : 2007 Versi : 6
PENJADWALAN PROSES.
1 Pertemuan 7 Name and Address Conversion Matakuliah: H0483 / Network Programming Tahun: 2005 Versi: 1.0.
1 Pertemuan 8 Advanced I/O function Matakuliah: H0483 / Network Programming Tahun: 2005 Versi: 1.0.
Fungsi, Array dan String
Pertemuan 8 Stack dengan Array
Pertemuan 9 Stack dengan Linked-list
1 Pertemuan 5 Encapsulation Matakuliah: T0044/Pemrograman Berorientasi Obyek Tahun: 2005 Versi: 1.0.
1 Pertemuan 5 Komunikasi antar Proses / Interprocess Communication (IPC) Matakuliah: T0316/sistem Operasi Tahun: 2005 Versi/Revisi: 5 OFFCLASS01.
1 Pertemuan 8 Array & Pointer of Class Matakuliah: T0044/Pemrograman Berorientasi Obyek Tahun: 2005 Versi: 1.0.
1 Pertemuan 9 Unix Domain Protocol Matakuliah: H0483 / Network Programming Tahun: 2005 Versi: 1.0.
1 Pertemuan 12 Membuat Program Client dan Server pada Win32 Console Application Matakuliah: H0483 – Network Programming Tahun: 2008 Versi: 2.0.
PROSES & THREADS Disajikan Oleh :.
Matakuliah : H0483 – Network Programming Tahun : 2008 Versi : 2.0
Pertemuan 2 SINTAKS BAHASA, TIPE DATA, DAN OPERATOR
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
Pengujian Hipotesis (I) Pertemuan 11
Pertemuan 24 Teknik Searching
Pertemuan 2 Socket Introduction
Aplikasi dan Pemrograman Jaringan
Process and Tread Saifudin Anshory Abd. Chariz Fauzan Wahyu Hartono
Pertemuan 6 Server dengan Multi Thread
Aplikasi dan Pemrograman Jaringan
Komunikasi antar Proses
TCP Socket Programmning
Tim Teaching Grant Mata Kuliah Sistem Operasi
Tim Teaching Grant Mata Kuliah Sistem Operasi
Tim Teaching Grant Mata Kuliah Sistem Operasi
Transcript presentasi:

Pertemuan 6 Server dengan Multi Thread pada Linux I Made Astawa deastawa@yahoo.com

mendemonstrasikan program aplikasi client- server dengan multithread Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : mendemonstrasikan program aplikasi client- server dengan multithread

Beda multiproses vs multithread Kasus: Server dengan multithread Outline Materi Pengertian program Pengertian proses Pengertian threads Beda multiproses vs multithread Kasus: Server dengan multithread

The Process Model Multiprogramming of four programs Conceptual model of 4 independent, sequential processes Only one program active at any instant

Process States Possible process states running blocked ready Transitions between states shown

Threads The Thread Model (a) Three processes each with one thread (b) One process with three threads

The Thread Model Items shared by all threads in a process Items private to each thread

Each thread has its own stack The Thread Model Each thread has its own stack

A word processor with three threads Thread Usage (1) A word processor with three threads

Pop-Up Threads Creation of a new thread when message arrives (a) before message arrives (b) after message arrives

CONTOH PROGRAM #include <stdio.h> #include <sys/ioctl.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <pthread.h> void* thread_proc(void *arg); int main(int argc, char *argv[]) { struct sockaddr_in sAddr; int listensock; int newsock; int result; pthread_t thread_id; int val; listensock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

CONTOH PROGRAM val = 1; result = setsockopt(listensock, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val)); if(result < 0){ perror("serverthread1"); return 0; } sAddr.sin_family = AF_INET; sAddr.sin_port = htons(1972); sAddr.sin_addr.s_addr = INADDR_ANY; result = bind(listensock, (struct sockaddr *) &sAddr, sizeof(sAddr)); if(result < 0) { perror("serverthread1"); result=listen(listensock, 5); if(result < 0) { perror("serverthread1");

CONTOH PROGRAM while(1){ newsock = accept(listensock, NULL ,NULL); result = pthread_create(&thread_id, NULL, thread_proc, (void *) newsock); if(result != 0){ printf("Could not create thread.\n"); return 0; } pthread_detach(thread_id); // melepaskan/detach a thread sched_yield(); /*function shall force the running thread to relinquish the processor until it again becomes the head of its thread lis */

CONTOH PROGRAM void* thread_proc(void *arg) { int sock; char buffer[25]; int nread; printf("child thread %u with pid %i created.\n", pthread_self(), getpid()); sock = (int) arg; nread = recv(sock, buffer, 25, 0); buffer[nread] = '\0'; printf("%s\n", buffer); send(sock, buffer, nread, 0); close(sock); printf("child thread %u with pid %i finished.\n", pthread_self(), getpid()); }

Latihan Perhatikan contoh program diatas, bolehkan variabel newsocket diatas dibuat menjadi variabel global?, sehingga pada fungsi “thread_proc” variabel newsocket bisa digunakan ? Setelah accept mengapa tidak perlu close(listensocket) ?, seperti pada server dengan fork() ? Variabel int sock pada fungsi “thread_proc”, digunakan untuk menyimpan socket dari client yang connect dengan server. Jelaskan mengapa bisa demikian ?