Sabtu, 07 November 2015

THREAD TUTORIAL

Kali ini kita akan mempelajari tentang thread . Apa itu thread ? Baca Penjelasan ringkasnya dibawah ini .

Thread
Thread merupakan sebuah unit dasar dari utilisasi CPU . Di dalam sebuah thread terdapat Id thread ( Id thread berbeda dari PID ) , PC , Register , dan Stack . Dalam proses yang sama  thread akan saling berbagi antar thread yang satu dengan yang lain. Apabila sebuah proses memiliki eksekusi multithreads , maka proses tersebut memungkinkan untuk menjalankan lebih dari satu tugas dalam waktu yang bersamaan.

Penerapan Thread dalam Kodingan


=> PENJELASAN
--------------------------------------------------------------------------------------------------------------------------

                        pthread_t tid[2];

--------------------------------------------------------------------------------------------------------------------------

Digunakan untuk menginisialisasi array yang digunakan untuk menampung thread . Dari contoh diatas , akan dibuat 2 thread .

--------------------------------------------------------------------------------------------------------------------------

                        void* playAndCount(void *arg)

--------------------------------------------------------------------------------------------------------------------------

Membuat fungsi yang akan digunakan untuk menjalankan thread.

--------------------------------------------------------------------------------------------------------------------------

                        if(pthread_equal(id,tid[0]))
                        {
                                    system("clear");                      
                                    for(iter=length;iter>0;iter--)
                                    {
                                                  printf("%d",iter);
                                                  fflush(stdout);
                                                  sleep(1);
                                                  system("clear");
                                    }
                        }

--------------------------------------------------------------------------------------------------------------------------

Membuat thread pertama , yang dalam hal ini digunakan untuk menghitung mundur tiap detik dari angka 5~1

--------------------------------------------------------------------------------------------------------------------------

                        else if(pthread_equal(id,tid[1]))
                        {
                                    system("cvlc Firstlove.mp3");
                        }

--------------------------------------------------------------------------------------------------------------------------

Membuat thread kedua , proses yang dijalankan adalah menjalankan sebuah lagu yang berjudul First love dengan ekstensi (.mp3) menggunakan vlc ( dengan syarat PC harus sudah diinstall vlc ).

--------------------------------------------------------------------------------------------------------------------------

                        int main(void)
                        {
                         int i = 0;
                        int err;                    
                         while(i<2)
                       {
                           err = pthread_create(&(tid[i]), NULL, &playAndCount, NULL);
                                   if(err!=0)
                           printf("\n can't create thread : [%s]", strerror(err));
                           else
                           printf("\n Thread created succesfully\n");
                           i++;
                       }
                         pthread_join(tid[0],NULL);
                        pthread_join(tid[1],NULL);
                        return 0;
                        }

--------------------------------------------------------------------------------------------------------------------------

Dan yang terakhir adalah membuat fungsi main ,
looping while yang pertama digunakan untuk menjalankan thread dan mengecek apakah thread terbuat atau tidak , dan menampilkan keterangan . Perulangan ini akan dilakukan 2x mengingat kita membuat 2 thread .

pthread_join ialah perintah agar thread dijalankan sampai selesai .
Jika pthread_join yang dibuat hanya "pthread_join(tid[0],NULL);" maka thread kedua yang menjalankan lagu akan dipaksa berhenti setelah countdown 5 detik dari thread pertama selesai.

Sekian Tutorial saya kali ini. Terima kasih sudah membaca , semoga bermanfaat .

Sabtu, 17 Oktober 2015

DAEMON TUTORIAL

Dalam kesempatan kali ini , kita akan membuat sebuah daemon dan menjalankannya pada terminal Linux.

Pertama-tama mari kita mengenal terlebih dahulu daemon dan macam-macam proses yang terlibat.

Apa itu Daemon ??
Daemon merupakan sebuah program yang berjalan sendiri , dibalik layar dan tidak memiliki interface untuk dikontrol , daemon juga tidak dapat berinteraksi langsung dengan user.

Bagaimana cara membuat sebuah Daemon ??
Terdapat 6 tahapan dalam membuat Daemon

1. Fork Parent Processs dan penghentian Parent Process
                 Langkah awal dalam pembuatan daemon adalah dengan membuat proses baru yang dilakukan dengan forking . Setelah proses terbentuk , matikan proses induk . Proses induk yang mati akan menyebabkan OS mengira proses telah selesai dan kembali ke terminal . Dari rangkaian proses diatas , kita akan mendapatkan hasil yang berupa proses anak yang meneruskan program setelah proses induknya mati . Hal ini dilakukan untuk mendapatkan proses yang bekerja pada background.

-------------------------------------------------------------------------------------------------------------------------
pid_t pid, sid;
        pid = fork();
        if (pid < 0)
        {
                exit(EXIT_FAILURE);
        }
        if (pid > 0)
        {
                exit(EXIT_SUCCESS);
        }
--------------------------------------------------------------------------------------------------------------------------

2. Mengubah mode file menggunakan UMASK(0);
                 umask merupakan sebuah command yang digunakan untuk menset hak akses dari file yang dibuat oleh proses yang berjalan saat itu . Jadi mengeset umask(0) akan membuat proses yang tidak memiliki batasan akses , dalam arti lain mempunyai akses penuh .

-------------------------------------------------------------------------------------------------------------------------

          umask(0);

--------------------------------------------------------------------------------------------------------------------------
             
3. Membuat Unique Session ID (SID)
                 Dalam langkah kali ini , akan dilakukan pemanggilan fungsi setsid() yang digunakan agar proses anak memiliki sebuah SID baru . Hal ini dilakukan dikarenakan Daemon harus bekerja secara independen , termasuk proses yang menjalankannya .

-------------------------------------------------------------------------------------------------------------------------

            sid = setsid();
            if (sid < 0)
            {
                exit(EXIT_FAILURE);
             }

--------------------------------------------------------------------------------------------------------------------------

4. Mengubah Directory Kerja
                 Direktory kerja yang aktid pada daemon diharuskan direktori yang selalu hidup. Hal ini dilakukan dengan fungsi chdir().

-------------------------------------------------------------------------------------------------------------------------
if ((chdir("/")) < 0)
        {
                exit(EXIT_FAILURE);
        }
--------------------------------------------------------------------------------------------------------------------------

5. Menutup File Descriptor Standar
                 Agar tidak ada gangguan dari user , maka standar I/o harus ditutup. Hal ini dilakukan dikarenakan daemon tidaklah bergantung pada terminal maupun user . Terdapat 3 jenis standar I/O yaitu : STDIN ( Standar Input ) , STDOUT ( Standar Output ) , STDERR ( Standar Error ).

-------------------------------------------------------------------------------------------------------------------------
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
--------------------------------------------------------------------------------------------------------------------------

6. Membuat Loop utama (inti kerja dari daemon)
                 Dan yang terakhir dalam pembuatan daemon adalah dengan membuat looping yang akan selalu berjalan selama jangka waktu yang ditentukan.

-------------------------------------------------------------------------------------------------------------------------
        while(1)
        {
sleep(23);
        }
        exit(EXIT_SUCCESS);
--------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------

Contoh Daemon Sederhana




PENJELASAN
Daemon diatas akan menampilkan sebuah notif yang bertuliskan Love_Your_Life setiap 23 detik sekali.


Cara Menjankan Program Daemon


PENJELASAN
Pertama kita diharuskan untuk mengcompile daemon (.c) yang kita buat , caranya dengan menuliskan "gcc (nama_daemon).c -o (nama_program)" pada terminal.
Misal daemon yang kita punya adalah lapres.c dan akan dicompile menjadi program yang bernama lapres.
Contoh :

-------------------------------------------------------------------------------------------------------------------------

          -gcc lapre.c -o lapres

--------------------------------------------------------------------------------------------------------------------------

Setelah itu jalankan program lapres dengan cara ./(nama_program)
Contoh :

-------------------------------------------------------------------------------------------------------------------------
./lapres
--------------------------------------------------------------------------------------------------------------------------




Sekian Tutorial saya kali ini . Terima Kasih sudah membaca , semoga bermanfaat .

Jumat, 25 September 2015

BASH Scripting Tutorial

Dalam tutorial kali ini , kita akan membuat sebuah program sederhana di Linux dengan menggunakan bash script


Apa itu Bash Script ??
Bash script merupakan sebuah bahasa pemrograman yang terdapat pada sistem operasi ( OS ) Linux.



Bagaimana cara memulai pemrograman dengan Bash Script ??
Pertama buka terminal dan ketik "touch <nama_file>.sh"  Hal ini digunakan untuk membuat file dengan format shell script.

Misalkan kita akan membuat file dengan nama "test" berformat shell script , cukup ketik
--------------------------------------------------------------------------------------------------------------------------
touch test.sh
--------------------------------------------------------------------------------------------------------------------------


Adapula perintah lain dalam bash sbb :
  • ls = untuk melihat list file dan direktori
  • pwd = menunjukkan direktori yang sedang aktif
  • mkdir = untuk membuat direktori baru
  • cd = untuk berganti direktori 
  • rm = untuk menghapus file
  • mv = untuk memindahkan atau merename suatu file atau direktori
  • date = menunjukkan tanggal dan waktu

Setelah itu ketik nano <nama file> semisal

-------------------------------------------------------------------------------------------------------------------------
nano test.sh 
-------------------------------------------------------------------------------------------------------------------------
Kamu akan dibawa masuk ke dalam sebuah jendela file test.sh




Membuat Program Sederhana dengan Bash
Untuk contoh kali ini , kita akan membuat sebuah program sederhana untuk menampilkan bilangan prima. Pertama ketik dahulu seperti contoh dibawah ini.



PENJELASAN :
  • echo "Masukkan bilangan : " berfungsi untuk menampilkan output "Masukkan bilangan:" jika program dijalankan.
  • read bilangan berfungsi untuk meminta user untuk memasukkan sebuah nilai dan disimpan ke variabel bilangan.
  • n=1 digunakan untuk mendeklarasikan nilai n yang berawal pada angka 1.
  • while [ $n -le $bilangan ]; do berfungsi untuk melakukan perulangan dengan syarat selama ( n <= bilangan ) maka perintah selanjutnya akan dilaksanakan . 
  • if [ $(($n % $pembagi)) -eq 0 ]; then berfungsi untuk melakukan permisalan , jika nilai n % pembagi = 0 maka perintah selanjutnya akan dilaksanakan.
  • break digunakan untuk menghentikan proses perulangan
  • else let pembagi+=1 digunakan jika fungsi permisalan tidak sesuai maka akan menjalankan perintah ini , dimana perintahnya adalah nilai pembagi ditambah 1
  • fi merupakan sebuah penutup , setiap ada if harus ditutup dengan fi.
  • echo -n "$n " digunakan untuk menampikan hasil dari nilai n tanpa ditutup dengan enter
  • done berfungsi untuk menutup sebuah while.

--------------------------------------------------------------------------------------------------------------------------
* % ( dibaca mod ) diguankan untuk mencari nilai sisa , contoh : 10 % 2 = 0 , 10 % 3 = 1
   -le ( less equal ) merupakan tanda <=
   -eq ( equal ) merupakan tanda =
--------------------------------------------------------------------------------------------------------------------------

Setelah selesai , tekan "Ctrl + X" pada keyboard , lalu tekan "Y" dan "Enter" untuk mensave file yang telah dibuat.
Setelah itu layar akan menampilkan terminal kembali , untuk menjalankan program yang telah dibuat, pertama-tama kamu diharuskan untuk mengubah permission untuk menjadikannya executable .
Caranya dengan mengetik chmod +<option> <nama_file> , kali ini option yang kita tambahkan adalah x(executable) , berikut contoh penulisannya

--------------------------------------------------------------------------------------------------------------------------
chmod +x test.sh
-------------------------------------------------------------------------------------------------------------------------

hal ini akan memberi akses ke file test.sh agar dapat dieksekusi.
Untuk menjalankan filenya ketik ./test.sh , setelah itu masukkan input dan tekan Enter.


Sekian Tutorial saya kali ini . Terima Kasih sudah membaca , semoga bermanfaat .