Thread adalah sebuah pengontrol aliran program pelaksanaan program dengan menggunakan kendali tunggal. Operasi yang paling Modern saat ini adalah sistem yang banyak sekali menyediakan berbagai cara, dan memungkinkan suatu proses terkendali dengan baik.
Macam - Macam Syntax Thread :
pthread_t
Merupakan tipe data thread.
pthread_mutex_t
Merupakan tipe data mutex thread. mutex merupakan routine yang berhubungan dengan sinkronisasi. fungsi mutex menyediakan perintah untuk membuat, menghancurkan, mengunci dan membuka kunci mutex. kemudian ditambah juga dengan fungsi untuk mengeset attribut yang terkait dengan mutex.
pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg)
Fungsi yang digunakan untuk menciptakan thread baru dalam suatu proses dengan atribut ditentukan oleh attr. Jika attr diisi NULL, atribut default akan dimuat. Jika pemanggilan fungsi berhasil, fungsi akan menyimpan ID dari thread ciptaan pada rujukan yang ditunjuk thread.
void *(*start_routine)(void*) adalah nama fungsi thread yg dipanggil, jadi fungsi thread selalu bertipe void*.
void *arg merupakan argumen atau parameter yang dikirim ke fungsi thread, parameter juga selalu bertipe void* dan hanya boleh ada satu parameter. Jadi parameter yg dikirim harus diubah dahulu ke void*, misal parameter yg dikirim adalah int x, maka penulisannya mejadi (void*)x. Jika ingin mengirim lebih dari satu parameter, maka bisa menggunakan struct.
pthread_detach(pthread_t thread)
Fungsi ini digunakan untuk mengindikasikan pada implementasi bahwa ruang penyimpanan thread pada thread bisa diminta kembali ketika thread berakhir
pthread_cancel(pthread_t thread)
Fungsi ini digunakan untuk meminta agar thread dibatalkan. Kondisi kemampuan membatalkan dan tipe dari thread yang dituju menentukan kapan pembatlan terjadi. sebelum memanggil fungsi pthread_cancel, terlebih dahulu harus meng-enable pthread_setcancelstate. penulisannya adalah pthread_setcancelstate(PTHHREAD_CANCEL_ENABLE, NULL);
pthread_mutex_lock(pthread_mutex_t *mutex)
Fungsi ini digunakan untuk mengunci objek mutex yang dirujuk oleh mutex. Jika mutex sudah dikunci, thrad pemanggil akan ditahan hingga mutex menjadi tersedia (tidak terkunci). Operasi ini mengembalikan objek mutex yang dirujuk oleh mutex pada keadaan terkunci dengan thread pemanggil sebagai pemiliknya.
contoh penggunaan pthread_mutex_lock :
pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
void *thread1(void *ptr)
{
pthread_mutex_lock(&lock);
printf("a");
printf("b");
printf("c");
pthread_mutex_unlock(&lock);
}
void *thread2(void *ptr)
{
printf("d");
printf("e");
printf("f");
}
jika pada fungsi thread1 tidak menggunakan pthread_mutex_lock, maka outputnya bisa saja "aebcdf", atau "fcdabe", atau yang lainnnya. tetapi jika kita ingin mencetak 'a', 'b', 'c' secara berurutan, maka bisa menggunakan pthread_mutex_lock seperi pada program diatas. jadi ketika thread1 memasuki fungsi pthread_mutex_lock, thread2 akan menunggu sampai thread1 mengeksekusi pthread_mutex_unlock. output dari program diatas adalah bisa "abcdef", atau "fdeabc", atau "dabcef", atau yang lainnnya dimana 'a', 'b', 'c' selalu dicetak berurutan.
pthread_mutex_unlock(pthread_mutex_t *mutex)
Fungsi ini berguna untuk membebaskan objek mutex yang dirujuk mutex. Bagaimana cara mutex dibebaskan tergantung dari tipe atribut mutex
pthread_mutex_destroy(pthread_mutex_t *mutex)
Fungsi ini menghancurkan objek mutex yang dirujuk oleh mutex, sehingga objek tersebut menjadi tidak terinisialisasi. Objek yang dihancurkan bisa diinisialisasi masukan diberikan .
pthread_exit() : digunakan untuk menghentikan thread.
pthread_join(pthread_t thread)
digunakan untuk menunggu sampai thread yang bersangkutan selesai, baru kemudian melanjutkan kode program utama. pthread_join digunakan jika kita ingin menjalankan kode program setelah thread berakhir, atau ketika tidak ada kode program lagi setelah menciptakan thread. karena thread dan kode program utama berjalan bersamaan, maka jika tidak ada kode program yang dijalankan setelah menciptakan thread, maka fungsi main akan berakhir. berakhirnya fungsi main juga mengakibatkan thread berhenti, baik thread sudah selesai maupun belum. jadi agar thread dijalankan sampai selesai sebelum fungsi main berakhir, maka bisa menggunakan pthread_join.
Minggu, 23 November 2014
Kamis, 06 November 2014
Daemon
Daemon adalah sebuah proses yang bekerja pada background karena proses ini tidak memiliki terminal pengontrol. Dalam sistem operasi Windows biasanya lebih dikenal dengan sebutan service. Daemon adalah sebuah proses yang didesain supaya proses tersebut tidak mendapatkan intervensi dari user. Daemon biasanya bekerja dalam jangka waktu yang sangat lama dan bertugas menerima request dan menjalankan responsnya. Contoh dari daemon ini misalnya adalah Apache Web Server HTTP daemon. Daemon ini bekerja pada background dan menerima request HTTP pada port tertentu (biasanya 80 atau 8080) dan memberikan
respon terhadap request tersebut, berdasarkan tipe dari request tersebut.
Adapun hal-hal yang membedakan daemon dengan proses lainnya adalah: daemon tidak memiliki parent proses ID, daemon tidak memiliki pengontrol baik itu STDOUT, STDIN, maupun STDERR, dan daemon berjalan dalam previlege super user.
Dibawah ini adalah source code dasar dari sebuah daemon :
respon terhadap request tersebut, berdasarkan tipe dari request tersebut.
Adapun hal-hal yang membedakan daemon dengan proses lainnya adalah: daemon tidak memiliki parent proses ID, daemon tidak memiliki pengontrol baik itu STDOUT, STDIN, maupun STDERR, dan daemon berjalan dalam previlege super user.
Dibawah ini adalah source code dasar dari sebuah daemon :
#include <stdio .h>#include <stdlib .h>#include <unistd .h>#include <sys types.h>#include <sys stat.h>int main(){pid_t process_id = 0, sid = 0;// Create child processprocess_id = fork();// Indication of fork() failureif (process_id < 0){printf("fork failed!\n");// Return failure in exit statusexit(1);}// PARENT PROCESS. Need to kill it.if (process_id > 0){printf("process_id of child process %d \n", process_id);// return success in exit statusexit(0);}//unmask the file modeumask(0);//set new sessionsid = setsid();if(sid < 0){// Return failureexit(1);}// Close stdin. stdout and stderrclose(STDIN_FILENO);close(STDOUT_FILENO);close(STDERR_FILENO);while (1){//Put your process heresleep(10);}return 0;}
Cara Setting Crontab di Linux
Apa itu cron / crontab ? Crontab adalah aplikasi daemon (berjalan dibalik layar) yang digunakan untuk menjalankan tugas yang dijadwalkan pada suatu waktu di sistem operasi linux. Setiap user di sistem yang memiliki file crontab, mengijinkan file tersebut untuk melakukan suatu aksi yang telah dispesifikasikan sesuai waktu yang telah ditentukan. Crontab biasa digunakan untuk membuat backup secara otomatis, sinkronisasi files, dll.
1. Install crontab
Buat yang belum diinstall crontabnya, cara install nya adalah :
2. Melihat aktifitas crontab
Untuk melihat schedule yang sedang berjalan di sistem Anda :
3. Mengedit cron jobs
4. Format penulisan cron
Format penulisan crontab ditulis dengan format seperti ini :
Penjelasan :
5 bintang (*) diatas merepresentasikan bagian2 format tanggal yang berbeda, urutannya sebagai berikut :
1. (* pertama) : menit (isian : 0 – 59)
2. (* kedua) : jam (isian : 0 – 23)
3. (* ketiga) : hari dari bulan / tanggal (isian : 1 – 31)
4. (* keempat) : bulan (isian : 1 – 12)
5. (* kelima) : hari dari minggu (isian : 0 – 6) –> 0 = minggu
Contoh :
- Eksekusi setiap menit :
- Eksekusi setiap Sabtu jam 12 siang :
- Eksekusi pada jam 9 malam setiap hari kerja (Senin – Jumat) :
- Eksekusi setiap menit ke 30 (setiap jam) pada setiap tanggal 1 (setiap bulan)
5. Tips and Trick
Misalnya kita mau jalanin suatu perintah setiap 10 menit (tiap hari), penulisannya bisa seperti ini :
Tapi ada trik penulisan yang lebih gampang, caranya seperti ini
1. Install crontab
Buat yang belum diinstall crontabnya, cara install nya adalah :
sudo apt-get install cron
2. Melihat aktifitas crontab
Untuk melihat schedule yang sedang berjalan di sistem Anda :
sudo crontab -l
3. Mengedit cron jobs
sudo crontab -e
4. Format penulisan cron
Format penulisan crontab ditulis dengan format seperti ini :
* * * * * /home/unix/script.sh
Penjelasan :
5 bintang (*) diatas merepresentasikan bagian2 format tanggal yang berbeda, urutannya sebagai berikut :
1. (* pertama) : menit (isian : 0 – 59)
2. (* kedua) : jam (isian : 0 – 23)
3. (* ketiga) : hari dari bulan / tanggal (isian : 1 – 31)
4. (* keempat) : bulan (isian : 1 – 12)
5. (* kelima) : hari dari minggu (isian : 0 – 6) –> 0 = minggu
Contoh :
- Eksekusi setiap menit :
* * * * * php /opt/lampp/htdocs/jobs/test.php
jadwal tersebut akan mengeksekusi perintah php pada setiap menit dari setiap jam, setiap hari, setiap minggu, setiap bulan ::bingung::, pokoknya setiap menit dah.- Eksekusi setiap Sabtu jam 12 siang :
0 12 * * 6 /home/unix/script.sh
(* pertama) artinya pada menit ke 0, (* kedua) artinya pada jam ke 12, (* ketiga) artinya pada tanggal berapapun, (* keempat) artinya pada setiap bulan, (* kelima) artinya pada setiap hari sabtu (6 = sabtu). (semoga ngga bingung)- Eksekusi pada jam 9 malam setiap hari kerja (Senin – Jumat) :
0 21 * * 1-5 /home/unix/script.sh
Arinya sama mirip-mirip ama diatas, cuma (* kelima) diisi rentang, yaitu 1-5 (artinya senin-jumat)- Eksekusi setiap menit ke 30 (setiap jam) pada setiap tanggal 1 (setiap bulan)
30 * 1 * * /home/unix/script.sh
5. Tips and Trick
Misalnya kita mau jalanin suatu perintah setiap 10 menit (tiap hari), penulisannya bisa seperti ini :
0,10,20,30,40,50 * * * * /home/unix/script.sh
Tapi ada trik penulisan yang lebih gampang, caranya seperti ini
*/10 * * * * /home/unix/script.sh
Minggu, 05 Oktober 2014
10 Langkah mudah menginstall dual boot Ubuntu 14.04 :
1. Langkah pertama adalah dengan membuat partisi pada control panel, bisa dilihat pada gambar di bawah ini.
Setelah dibuka, Klik Kanan pada partisi yang ingin kita bagi, lalu Klik "Shrink Volume"
Setelah itu tentukan besar kapasitas partisi, kemudian klik "Shrink". Kapasitas minimal yang pernah saya baca untuk OS Linux adalah 10 - 20 GB.
2. Masukkan USB yang telah ada Bootable Ubuntu, kemudian restart komputer / laptop anda.
3. Pada saat komputer / laptop anda sedang booting, tekan F2 atau F10 (tergantung komputer / laptop) untuk masuk kedalam BIOS. Kemudian pilih Boot and Secure, cari Secure Boot dan pilih disable. Setelah itu save.
4. Masih di BIOS, kita set Boot Priority USB menjadi pilihan teratas kemudian save and exit.
5. Ketika USB telah di boot, kita pilih install Ubuntu.
6. Akan muncul kotak dialog Installation Type seperti dibawah ini, kemudian kita pilih something else.
7. Pada tampilan ini, kita pilih free space yang telah disediakan sebelumnya kemudian klik tombol + pada sebelah kiri bawah.
8. Dari total seluruh kapasitas sisahkan 500MB untuk swap areanya. pada mount poin pilih root : / seperti gambar berikut, kemudian klik OK.
9. Dari sisa partisi tadi langkahnya sama seperti langkah no.8, namun pada use as : pilih swap area saja, kemudian klik OK.
10. Perhatikan, pada kolom format, yang bertanda cek list berarti partisi tersebut nantinya akan di format, pastikan yang di cek list hanya partisi untuk linux saja, setelah semua yakin langkah selanjutnya adalah klik Install Now. Tunggu sampai selesai proses installasinya. Kemudian restart komputer / laptop anda.
Sekian dan Semoga Bermanfaat
Langganan:
Postingan (Atom)