Wednesday, November 25, 2015

Fungsi fungsi pada FUSE

Beberapa fungsi yang disediakan oleh FUSE dan akan berguna kita pakai nantinya:

  1. int (*getattr) (const char *, struct stat *);
    Get file attributes.
  2. int (*readlink) (const char *, char *, size_t);
    Read the target of a symbolic link
  3. int (*mknod) (const char *, mode_t, dev_t);
    Create a file node. 
  4. int (*mkdir) (const char *, mode_t);
    Create a directory.
  5. int (*unlink) (const char *);
    Remove a file
  6. int (*rmdir) (const char *);
     Remove a directory
  7. int (*rename) (const char *, const char *);
    Rename a file
  8. int (*chmod) (const char *, mode_t);
    Change the permission bits of a file
  9. int (*chown) (const char *, uid_t, gid_t);
    Change the owner and group of a file
  10. int (*truncate) (const char *, off_t);
    Change the size of a file
  11. int (*open) (const char *, struct fuse_file_info *);
    File open operation.
  12. int (*readdir) (const char *, void *, fuse_fill_dir_t, off_t, struct fuse_file_info *);
    Read directory
  13. int (*read) (const char *, char *, size_t, off_t, struct fuse_file_info *);
    Read data from an open file
  14. int (*write) (const char *, const char *, size_t, off_t, struct fuse_file_info *);
    Write data to an open file

Thursday, November 5, 2015

All about thread

....
Thread adalah unit dasar dari utilitas CPU. Di dalamnya terdapat ID thread, program counter, register, dan stack. Dan saling berbagi dengan thread lain dalam proses yang sama.

Keuntungan memakai Thread:

* Tanggap: Multi-threading mengizinkan program untuk terus berjalan walaupun pada bagian program tersebut diblock atau sedang dalam keadaan menjalankan operasi yang lama/panjang. Contohnya multithread web browser dapat mengizinkan pengguna berinteraksi dengan suatu thread ketika suatu gambar sedang diload oleh thread yang lain.
* Pembagian sumber daya: Secara default, thread membagi memori dan sumber daya dari proses. Keuntungan dari pembagian kode adalah aplikasi mempunyai perbedaan aktifitas thread dengan alokasi.
* Ekonomis: Mengalokasikan memori dan sumber daya untuk membuat proses itu sangat mahal. Alternatifnya thread membagi sumber daya dari proses, Jadi lebih ekonomis.
* Pemberdayaan arsitektur multiprosesor: Keuntungann dari multithreading dapat ditingkatkan dengan arsitektur multiprosesor, dimana setiap thread dapat berjalan secara parallel pada prosesor yang berbeda. Pada arsitektur prosesor tunggal, CPU biasanya berpindah-pindah antara setiap thread dengan cepat, sehingga terdapat ilusi paralelisme, tetapi pada kenyataannya hanya satu thread yang berjalan di setiap waktu.

Selain itu...
1. User thread adalah pengelolaan thread yang dilakukan oleh user level (pengguna)
2. Kernel thread adalah pengelolaan thread yang dilakukan oleh kernel komputer sehingga user tidak dapat menginterupsi.

Macam-macam Thread
Single threading : proses hanya mengeksekusi satu thread dalam satu waktu.
Multi-threading : proses dapat mengeksekusi sejumlah thread dalam satu waktu.

Model MultiTrading:
One to one: Memetakan setiap user thread ke dalam 1 kernel thread.


Kelebihan: Model one-to-one lebih sinkron daripada model many-to-one karena mengizinkan thread lain untuk berjalan ketika suatu thread membuat pemblokingan terhadap sistem pemanggilan, hal ini juga membuat multiple thread bisa berjalan secara parallel dalam multiprosesor .
Kekurangan: Dalam pembuatan user thread diperlukan pembuatan korespondensi thread pengguna. Karena dalam proses pembuatan kernel thread dapat mempengaruhi kinerja dari aplikasi, maka kebanyakan dari implementasi model ini membatasi jumlah thread yang didukung oleh sistem.
Model ini ada pada Windows NT dan OS/2.

One to Many: memetakan beberapa tingkatan thread user hanya ke satu buah kernel thread.

Kelebihan: Managemen proses thread dilakukan oleh (di ruang) pengguna, sehingga menjadi lebih efisien.
Kekurangan: multi thread tidak dapat berjalan atau bekerja secara paralel di dalam multiprosesor karena hanya satu thread saja yang bisa mengakses kernel dalam suatu waktu.

Model ini ada pada Solaris Green dan GNU Portable.

Many to Many : Membolehkan setiap tingkatan user thread dipetakan ke banyak kernel thread.
Kelebihan: 
Developer dapat membuat user thread sebanyak yang diperlukan dan kernel thread yang bersangkutan dapat berjalan secara parallel pada multiprocessor.
* Dan ketika suatu thread menjalankan blocking system call maka kernel dapat menjadwalkan thread lain untuk melakukan eksekusi.
Kekurangan:
* Developer dapat membuat user thread sebanyak mungkin, tetapi konkurensi tidak dapat diperoleh karena hanya satu thread yang dapat dijadwalkan oleh kernel pada suatu waktu.
Model ini ada pada Solaris, IRIX, dan Digital UNIX.

Saturday, October 17, 2015

Daemon di ubuntu


Daemon adalah service background process yang didesain untuk berjalan secara otomatis dengan sedikit/tidak terinterfensi oleh user. Daemon tidak boleh memiliki komunikasi secara langsung dengan user melalui terminal. Jadi bila kita memiliki daemon kita hanya bisa melihat pekerjaan daemon melalui file yang dikerjakan atau dari control proses di terminal. Dan berikut adalah cara untuk membuat daemon, yaitu
  1. MATIKAN PROSES PARENT

    Proses induk dimatikan supaya proses yang semula memiliki parent menjadi orphant proses. 
    pid_t pid;
    pid = fork();

    if (pid < 0) {
        exit(EXIT_FAILURE);
    }
    if (pid > 0) {
        exit(EXIT_SUCCESS);
    }
  2. UBAH MODE FILE MASK

    Untuk menulis file (termasuk log), yg dibuat daemon.
    Harus diubah untuk memastikan dapat ditulisi atau dibaca secara sesuai.

    umask(0);
    umask(0)  kita akan mendapat akses penuh dari file yang dibuat oleh daemon.
  3. BUKA LOG UNTUK PENULISAN

    Membuka sebuah log file di suatu lokasi pada sistem untuk penulisan. Untuk informasi debug dari daemon yang kita buat. gunakan standart input output file untuk lebih sederhananya.
  4. BUAT SEBUAH SESSION ID (SID) UNIK

    Proses anak harus mendapat SID unik dari kernel untuk dapat dijalankan.
    Jika tidak mendapat SID, maka proses anak akan menjadi yatim piatu pada sistem.

    pid_t sid;
    sid = setsid();
    if (sid < 0) {
        exit(EXIT_FAILURE);
    }
  5. UBAH DIREKTORI KERJA SAAT INI KE TEMPAT YANG AMAN

    Direktori kerja saat ini harus diubah ke tempat yang dijamin selalu ada. Direktori kerja diubah ke direktori root (/), dengan system call chdir.

    if ((chdir(“/”)) < 0) {
        exit(EXIT_FAILURE);
    }
  6. TUTUP FILE DESKRIPTOR STANDAR

    Langkah akhir, tutup file descriptor standar (STDIN, STDOUT, STDERR).

    close(STDIN_FILENO);
    close(STDOUT_FILENO);
    close(STDERR_FILENO);
  7. MASUKKAN KODE DAEMON


    while (1) {
        sleep(30);
    }

Friday, September 25, 2015

Membuat tar.gz melalui terminal ubuntu

Assalamulaikum, kali ini saya akan menjelaskan bagaimana membuat atau mengkompress file menjadi .tar.gz debgan terminal di ubuntu
Pertama, buka terminal linux dengan menekan ctrl + alt + t
Kedua, ketik sudo su pada terminal untuk masuk pada mode super user
Ketiga, masuk ke direktori tempat file yang anda ingin compress berada dengan mengetik cd /tempat/file/anda/berada diterminal
Keempat, ketik tar -cvzf (namafile).tar.gz pada terminal
Kelima, file .tar.gz sudah selesai, apa bila kita ingin menambahkan tanggal dan waktu ke log (menyimpan tanggal dan waktu saat anda membuat file .tar.gz) dapat dengan mengetik echo $(date +"%d_%m_%Y") $(date +"%H_%M_%S") >>log_(namafile).txt pada terminal.
Apabila anda hanya menggunakan ">" maka log akan direplace saat eksekusi compress selanjutnya, namun apabila menggunakan ">>" maka tidak akan ter-replace dan akan tertulis di baris selanjutnya.