Selamat siang
teman-teman sekaliaaaaannn :))
Gimana kabarnya?
Bentar lagi weekend nih, udah ada rencana liburan? Mungkin
temen-temen rantau ada yang mau pulang kandang, atau ada yang sekedar
mau wisata, atau ada yang mau nonton film-film yang baru keluar nih
di bioskop? Yak, nay denger lagi banyak film yang bagus sih. Oke
pokoknya apapun yang bakal kalian lakuin semoga bisa mengisi weekend
kalian dengan hal yang bermanfaat yah. Nah di edisi apdetan blog nay
kali ini nay bakal menemani weekend kalian dengan sedikit cerita
tentang sistem operasi nih. Oke oke. Semoga bisa menambah ilmu
teman-temna sekalian.
Oke, lets start it.
Pada bahasan hari ini nay akan jelasin tentang Thread dan IPC. Apasih
Thread itu? Thread adalah bagian kecil dari suatu proses yang bisa
dijadwalkan oleh sistem operasi yang sering juga disebut proses
ringan atau lightweight.
Ada beberapa jenis
thread, ada single threading dan multi threading. Single threading
adalah proses dengan satu thread yang berjalan, biasanya digunakan
sebagai pengendali jalannya proses. Multi threading adalah proses
dengan thread yang banyak dan mengerjakan lebih dari satu tugas dalam
satu waktu.
Ada juga beberapa
model threading
1. Kernel-level threading; thread ini dibuat oleh pengguna yang
berkorespondensi 1-1 dengan entitas-entitas yang terjadwalkan yang
berada di kernel. Ini merupakan implementasi (penerapaan) paling
sederhana dari threading.- Thread kernel didukung langsung oleh sistem operasi.
- Pembuatan, penjadwalan, dan manajemen thread dilakukan oleh kernel pada kernel space.
- Pengaturan thread dilakukan oleh sistem operasi, sehingga pembuatan dan pengaturan kernel thread lebih lambat dibandingkan user thread.
2. User-level threading; sebuah pemetaan N-1, yang berarti bahwa semua level aplikasi thread dipetakan ke entitas tunggal yang ada di kernel. Dengan pendekatan ini, switching proses dapat dilakukan dengan sangat cepat.
- Thread pengguna didukung kernel serta diimplementasikan dengan pustaka (library) thread pada tingkatan pengguna.
- Pustaka (library) menyediakan fasilitas untuk pembuatan thread, penjadwalan thread, dan manajemen thread tanpa dukungan dari kernel.
- Semua pembuatan dan penjadwalan thread dilakukan dalam ruang pengguna tanpa campur tangan kernel.
-Thread pengguna biasanya dapat cepat dibuat dan dikendalikan
3. Hybrid threading; sebuah pemetaan M-N, yang berarti beberapa jumlah N-thread aplikasi dipetakan ke beberapa entitas di kernel.
Kalo IPC itu apasih nay? Yak, IPC itu adalah singkatan dari Inter-Process Communication atau komunikasi antar proses, ini adalah cara atau mekanisme pertukaran data antara satu proses dengan proses yang lainnya, baik itu proses yang berada di dalam komputer yang sama ataupun komputer jarak jauh yang terhubung dnegan jaringan. Teknik IPC ini terbagi metode message passing, synchronization, shared memory, dan remote procedure calls (RPC). Teknik IPC dapat digunakan dengan metode yang bervariasi tergantung olen latency dan bandwidth komunikasi antar thread dan jenis data yang dikomunikasikan. Ada beberapa dari API (Application Programming Interface) yang memungkinkan untuk digunakan untuk IPC.
Yup selanjuntya nay
akan jelasin salah satu contoh soal thread. Salah satunya adalah
music player.
Music player yang
akan kita buat masih menggunakan tampilan yang sederhana.
Music playernya
memiliki 6 inputan, inputan 1 untuk menampilkan help list, inputan 2
untuk menampilkan playlist, inputan 3 untuk mem-play musik yang akan
dimainkan, inputan 4 untuk mem-pause lagu selama t detik, inputan 5
untuk meng-continue lagu selama t detik, dan terakhir inputan 6 untuk
men-stop lagu.
Ya contoh di atas
adalah kodingan dari thread music player. Kita menggunakan 2 thread.
Thread yang pertama digunakan untuk melihat playlist lagu, digunakan
dengan menggunakan format “ls | grep .mp3”. Fungsi ls digunakan
untuk melihat isi dari suatu folder, fungsi grep digunakan untuk
mengambil data dengan format tertentu, dalam kasus ini mengambil data
dengan format '.mp3'.
Thread yang kedua
digunakan untuk mem-play lagu yang akan dimainkan. User dapat
menginputkan judul lagu dari playlist untuk dimainkan. Setelah itu
lagu akan dimainkan dengan menggunakan syntax “system(music);”.
Fungsi main dari
program ini adalah
int main(){
system("clear");
int err=0;
int i=0;
while (1){
int input;
int err=0;
int i=0;
scanf("%d",
&input);
// menampilkan
help list
if(input==1){
system("clear");
printf("Help
List\n");
printf("Daftar
List Perintah :\n");
printf("1 =
Menampilkan Help List\n");
printf("2 =
Menampilkan Playlist\n");
printf("3 =
Play Lagu\n");
printf("4 =
Pause selama t detik\n");
printf("5 =
Continue selama t detik\n");
printf("6 =
Stop selama t detik\n");
printf("7 =
Exit\n");
}
// pause lagu
setelah t detik
else if(input==4){
scanf("%d",
&n);
printf("\n");
system("clear");
sleep(n);
system("pkill
-STOP vlc");
printf("PAUSE\n");
fflush(stdout);
}
// meng-continue
lagu setelah t detik
else if(input==5){
scanf("%d",
&n);
printf("\n");
system("clear");
sleep(n);
system("pkill
-CONT vlc");
printf("RESUME\n");
fflush(stdout);
}
// men-stop lagu
setelah t detik
else if(input==6){
scanf("%d",
&n);
printf("\n");
system("clear");
sleep(n);
system("pkill
vlc");
printf("TERMINATE\n");
fflush(stdout);
}
else if(input==7){
system("pkill
vlc");
break;
}
else{
err=pthread_create(&(tid[input]),
NULL, &PlayAndCount, NULL);
while(err!=0){
if(err!=0){
printf("\ncan't
create thread : [%s]", strerror(err));
}
else
err=pthread_create(&(tid[input]), NULL, &PlayAndCount, NULL);
}
sleep(1);
}
}
return 0;
}
oh iya nay mau
mengingatkan untuk menjalankan thread di terminal kalian harus
menggunakan syntax
gcc -pthread -o
namapilihan namaprogram.c
./namapilihan
Yak, segitu dulu nih
sharing-sharing dari nay, semoga dapat bermanfaat dan dapat menemani
kesendirian kalian di weekend kali ini hehe. Sampai ketemu lagi di
apdetan nay selanjutnya, byebye (kiss)(muah)
Komentar
Posting Komentar