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.