Dokumen tersebut membahas tentang konsep thread pada sistem operasi, termasuk definisi thread, model thread, pustaka thread seperti POSIX dan Java thread, serta isu-isu terkait thread seperti penanganan sinyal dan thread pools. Contoh sistem operasi yang mendukung thread seperti Windows XP dan Linux juga dijelaskan."
Modul Ajar Bahasa Inggris - HOME SWEET HOME (Chapter 3) - Fase D.pdf
Os04
1. Sistem Operasi - Thread -
S ISTEM O PERASI
- T HREAD -
Arya Adhyaksa Waskita
Fakultas Ilmu Komputer
Universitas Pembangunan Nasional Veteran Jakarta
24 Maret 2012
2. Sistem Operasi - Thread -
AGENDA
1 R EVIEW
2 OVERVIEW & O BYEKTIF
3 KONSEP
4 M ODEL THREAD
5 P USTAKA THREAD
6 I SU DALAM THREAD
7 C ONTOH : S ISTEM O PERASI
3. Sistem Operasi - Thread -
Review
O UTLINE
1 R EVIEW
2 OVERVIEW & O BYEKTIF
3 KONSEP
4 M ODEL THREAD
5 P USTAKA THREAD
6 I SU DALAM THREAD
7 C ONTOH : S ISTEM O PERASI
4. Sistem Operasi - Thread -
Review
P ERTEMUAN KE -3
Konsep proses: program yang sedang dieksekusi
layout memory untuk proses
Process Control Block
Penjadwalan:
Latar belakang: multiprogramming & multitasking
Elemen:
antrian: job, ready, device
penjadwal (scheduler): long, short & medium term
context switch: membuat CPU idle
5. Sistem Operasi - Thread -
Review
P ERTEMUAN KE -3
Operasi: creation & termination
Ruang memory: saling menggunakan (sebagian / seluruhnya), saling
bebas
Eksekusi: saling tunggu / parallel
Terminasi proses → de-alokasi resource
Komunikasi antar proses yang saling tergantung
Model: shared memory & message passing
Komunikasi: langsung & tidak langsung
Sinkronisasi & Buffer
Client-Server: Socket, RPC, RMI
6. Sistem Operasi - Thread -
Overview & Obyektif
O UTLINE
1 R EVIEW
2 OVERVIEW & O BYEKTIF
3 KONSEP
4 M ODEL THREAD
5 P USTAKA THREAD
6 I SU DALAM THREAD
7 C ONTOH : S ISTEM O PERASI
7. Sistem Operasi - Thread -
Overview & Obyektif
T HREAD
Mempelajari konsep thread
Mempelajari berbagai pustaka thread: Pthread, Win32, Java
Mempelajari berbagai isu terkait thread
8. Sistem Operasi - Thread -
Konsep
O UTLINE
1 R EVIEW
2 OVERVIEW & O BYEKTIF
3 KONSEP
4 M ODEL THREAD
5 P USTAKA THREAD
6 I SU DALAM THREAD
7 C ONTOH : S ISTEM O PERASI
9. Sistem Operasi - Thread -
Konsep
T ENTANG THREAD
Lightweight process: satuan penggunaan CPU
Berbagi resource dengan thread lain dalam sebuah proses
Proses (heavyweight process), memilki kontrol tunggal eksekusi
10. Sistem Operasi - Thread -
Konsep
I LUSTRASI
G AMBAR : Perbedaan proses dengan thread tunggal dan jamak
11. Sistem Operasi - Thread -
Konsep
K EUNTUNGAN MODEL MULTITHREAD
Responsif → web browser
Resource sharing: aplikasi dengan beberapa thread dapat
menggunakan lokasi memori yang sama
Ekonomis: tanpa alokasi dan dealokasi resource → resource sharing
Skalabilitas: selain optimasi penggunaan prosesor multicore,
perpindahan antar thread lebih cepat pada single core daripada proses
12. Sistem Operasi - Thread -
Konsep
I SU TERKAIT PEMROGRAMAN MULTICORE
Berbagi aktifitas
Penyeimbangan beban
Memecah data
Ketergantungan data
Pengujian dan debug
13. Sistem Operasi - Thread -
Konsep
I LUSTRASI : MULTITHREAD SERVER
G AMBAR : Server dengan model multithread
14. Sistem Operasi - Thread -
Konsep
I LUSTRASI : ARSITEKTUR SINGLE CORE
G AMBAR : Penjadwalan thread pada arsitektur single core
15. Sistem Operasi - Thread -
Konsep
I LUSTRASI : ARSITEKTUR MULTICORE
G AMBAR : Penjadwalan thread pada arsitektur multicore
16. Sistem Operasi - Thread -
Konsep
J ENIS THREAD
User thread:
Kernel thread
Keduanya meliputi: pembuatan, penjadwalan dan pengelolaan di levelnya
masing-masing
17. Sistem Operasi - Thread -
Konsep
U SER THREAD
Selalu berasosiasi dengan kernel thread
Pustaka di level user → cepat
Salah satu thread yang melakukan blocking akan mencegah seluruh
proses di mana thread tersebut berasal untuk ditunda (single thread
kernel) → SC: read, sleep
Pthread (POSIX), Win32, Java
18. Sistem Operasi - Thread -
Konsep
K ERNEL THREAD
Pengelolaan di level kernel
lambat
dianggap seperti proses
Salah satu thread yang melakukan blocking, tidak mencegah seluruh
proses tertunda
19. Sistem Operasi - Thread -
Model thread
O UTLINE
1 R EVIEW
2 OVERVIEW & O BYEKTIF
3 KONSEP
4 M ODEL THREAD
5 P USTAKA THREAD
6 I SU DALAM THREAD
7 C ONTOH : S ISTEM O PERASI
20. Sistem Operasi - Thread -
Model thread
M ANY- TO - ONE
Konkurensi terbatas
Green (Solaris-2), GNU portable thread
21. Sistem Operasi - Thread -
Model thread
One-to-one
Proses dicegah tertunda secara total
Mahal, satu user thread harus diwakili satu kernel thread
Windows NT/XP/2000, Linux, Solaris 9
22. Sistem Operasi - Thread -
Model thread
Many-to-many
Banyak user thread dipetakan ke kernel thread
Konkurensi optimal
Solaris sebelum versi 9, Windows NT/2000 dengan paket ThreadFiber
23. Sistem Operasi - Thread -
Pustaka thread
O UTLINE
1 R EVIEW
2 OVERVIEW & O BYEKTIF
3 KONSEP
4 M ODEL THREAD
5 P USTAKA THREAD
6 I SU DALAM THREAD
7 C ONTOH : S ISTEM O PERASI
24. Sistem Operasi - Thread -
Pustaka thread
KONSEP
Memberikan API untuk pengembang perangkat lunak mengelola thread
Implementasi:
sepenuhnya di user level (-to-one)
didukung oleh kernel level (-to-many)
25. Sistem Operasi - Thread -
Pustaka thread
POSIX THREAD
Diimplementasi baik sebagai user maupun kernel level
Standar IEEE 1003.1c: API terkait pembuatan dan sinkronisasi thread
Umum digunakan pada keluarga UNIX
26. Sistem Operasi - Thread -
Pustaka thread
I LUSTASI : POSIX THREAD
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
int *a,*b;
void *vector(void *vargp) {
int temp,counter,start,finish,ptrNumber,*passVal ;
ptrNumber=*((int *) vargp); free(vargp);
start=(ptrNumber*25000);
finish=start+25000;
temp=0;
for(counter=start;counter<finish;counter++)
temp+=a[counter]*b[counter];
passVal=malloc(sizeof(int));
*passVal=temp; pthread_exit(passVal);
}
dilanjutkan ...
27. Sistem Operasi - Thread -
Pustaka thread
I LUSTRASI : POSIX THREAD
int main() {
pthread_t tid[4];
int c=0,c1=0,i,*ptr,*passVal,tmp;
a=malloc(100000*sizeof(int));
b=malloc(100000*sizeof(int));
for(i=0;i<1000;i++) {
a[i]=1+(rand()%1000);
b[i]=1+(rand()%1000);
c+=(a[i]*b[i]);
}
printf("C total (Sequential) = %dn",c);
for(i=0;i<4;i++) {
ptr=malloc(sizeof(int));
*ptr=i; pthread_create(&tid[i],NULL,vector,ptr);
}
dilanjutkan ...
28. Sistem Operasi - Thread -
Pustaka thread
I LUSTRASI : POSIX THREAD
for(i=0;i<4;i++) {
if((pthread_join(tid[i], (void**) &passVal))==0) {
tmp=*passVal; c1+=tmp;
}
else {
printf("Threads %d can’t be joinedn",i);
printf("program terminatedn");
exit(0);
}
}
printf("C total (Parallel) = %dn",c1);
printf("nComparing sequential and parallel resultn");
if((c-c1)!=0)
printf("pthread failed...!n");
else
printf("pthread success!n");
return 0;
}
29. Sistem Operasi - Thread -
Pustaka thread
JAVA THREAD
Dikelola JVM
Dibuat dengan mengimplementasi Runnable
30. Sistem Operasi - Thread -
Pustaka thread
I LUSTRASI : JAVA THREAD
class MutableInteger {
private int value;
public int getValue() {
return value;
}
public void setValue(int value) {
this.value=value;
}
}
31. Sistem Operasi - Thread -
Pustaka thread
I LUSTRASI : JAVA THREAD
class Summation implements Runnable {
private int upper;
private MutableInteger sumValue;
public Summation (int upper, MutableInteger sumValue) {
this.upper=upper; this.sumValue=sumValue;
}
public void run() {
int sum=0;
Thread thrd=new Thread();
thrd.start();
for(int i=0; i<upper; i++) {
sum=sum+2;
}
sumValue.setValue(sum);
}
}
32. Sistem Operasi - Thread -
Pustaka thread
I LUSTRASI : JAVA THREAD
public class Driver {
public static void main(String[] args) {
if(args.length > 0) {
if(Integer.parseInt(args[0])<0) {
System.err.println(args[0]+" must be>=0.");
}
else {
MutableInteger sum=new MutableInteger();
int upper=Integer.parseInt(args[0]);
Thread thrd=new Thread(new Summation(upper,sum));
thrd.start();
try {
thrd.join();
System.out.println("The sum of "+ upper+ " is " + sum.getValue());
}
catch(InterruptedException e) {
}
}
}
else {
System.err.println("Usage: Driver <Integer Value>");
}
}
}
33. Sistem Operasi - Thread -
Isu dalam thread
O UTLINE
1 R EVIEW
2 OVERVIEW & O BYEKTIF
3 KONSEP
4 M ODEL THREAD
5 P USTAKA THREAD
6 I SU DALAM THREAD
7 C ONTOH : S ISTEM O PERASI
34. Sistem Operasi - Thread -
Isu dalam thread
SC: fork & exec
Opsi saat thread dijalankan:
menduplikasi seluruh thread dalam sebuah proses
menduplikasi thread yang menjalankan fork
35. Sistem Operasi - Thread -
Isu dalam thread
P EMBATALAN THREAD
Terkait terminasi thread sebelum seharusnya selesai
Opsi:
Asinkron: langsung melakukan terminasi
Deffered: safely cancelation,
36. Sistem Operasi - Thread -
Isu dalam thread
P ENANGANAN SIGNAL
Digunakan untuk memberitahu proses bahwa ada sebuah kejadian.
Diterima secara
sinkron: dikirimkan ke proses penyebab munculnya SIGNAL (pembaian
dengan nol)
asinkron: dikirimkan oleh kejadian di luar proses (ctrl C)
Dikelola oleh:
default handler
user defined handler
Beberapa ada yang diabaikan (mengubah ukuran obyek window), ada
yang menyebabkan proses harus diterminasi (mengakses memori
secara ilegal)
37. Sistem Operasi - Thread -
Isu dalam thread
P ENANGANAN SIGNAL
Pada thread:
SIGNAL dikirimkan ke thread yang menyebabkannya
SIGNAL dikirimkan ke setiap thread pada proses
SIGNAL dikirimkan ke thread tertentu pada proses
Menugaskan sebuah thread untuk menangani semua SIGNAL yang
terjadi
38. Sistem Operasi - Thread -
Isu dalam thread
T HREAD P OOLS
Multithreaded server: berpotensi membahayakan sistem jika diijinkan
membuat thread dalam jumlah sangat banyak (tak hingga)
Dibatasi jumlah thread yang diijinkan (pools)
Saat proses dijalankan, sejumlah thread telah disiapkan, menunggu
untuk memberi layanan pada client
Keuntungan:
lebih cepat daripada konsep on-demand
mencegah kegagalan operasi karena keterbatasan resource
39. Sistem Operasi - Thread -
Isu dalam thread
Thread specific data
Memungkinkan setiap thread memiliki datanya sendiri
for(i=0;i<4;i++) {
ptr=malloc(sizeof(int));
*ptr=i; pthread_create(&tid[i],NULL,vector,ptr);
}
40. Sistem Operasi - Thread -
Contoh: Sistem Operasi
O UTLINE
1 R EVIEW
2 OVERVIEW & O BYEKTIF
3 KONSEP
4 M ODEL THREAD
5 P USTAKA THREAD
6 I SU DALAM THREAD
7 C ONTOH : S ISTEM O PERASI
41. Sistem Operasi - Thread -
Contoh: Sistem Operasi
W INDOWS XP
One-to-one mapping
Berisi:
identitas
register, stack (user & kernel), data khusus 1
Struktur data utama:
Executive thread block (ETHREAD)
Kernel thread block (KTHREAD)
Thread environment block (TEB)
1
konteks thread
42. Sistem Operasi - Thread -
Contoh: Sistem Operasi
I LUSTRASI
G AMBAR : Thread Windows XP
43. Sistem Operasi - Thread -
Contoh: Sistem Operasi
L INUX THREAD
Dikenal sebagai task
Thread dibuat dengan clone () SC
Memungkinkan berbagi ruang memori antara child-parent, pointer ke
lokasi memori