Friday, November 27, 2015

FUSE

Assalamualaikum wr.wb

Ketemu lagi dengan saya, apakabar sobat sekalian??
Sekarang ini sudah waktunya saya berbagi ilmu buat sobat sekalian. Nah kali ini yang kita bahas adalah mengenai fuse. Ketika saya mencoba mencari apa itu fuse di Mbah Google, ini adalah top result yang keluar.
Hasil pencari yang paling tinggi mengatakan bahwa "Fuse is a type of low resistance resistor that acts as asacrificial device to provide overcurrent protection, of either the load or source circuit." Sobat ngerti nggak masksudnya apaan?

Jadi yang dimaksud fuse oleh Wikipedia Fuse Adalah fuse yang biasa kita kenal sebagai sekering. Eits, tapi saya tidak akan menjelaskan apa itu sekering lebih lanjut lagi. Sebab fuse yang kita maksud bukan lah sekering melainkan Fuse sebagai Filesystem in Userspace.Nah langsung kita bahas apa itu fuse sebenarnya.FUSE (File system in User Space) adalah sebuah kerangka sistem berkas pada area pengguna yang terdiri dari sebuah modul kernel (fuse.ko), sebuah pustaka pada area pengguna, dan sebuah utilitas untuk melakukan proses mount (fusermount). FUSE sendiri merupakan mekanisme sistem operasi pada umumnya Unix, Linux dan keluarganya yang memungkinkan pengguna yang memiliki akses terbatas menciptakan file sistem mereka sendiri tanpa mengubah kode kernel. Jadi intinya fuse itu gunanya adalah untuk mengendalikan akses terhadap data yang ada pada harddisk.
Adapun cara kerja dari fuse sendiri adalah sebagai berikut:
·         fuse_main() (lib/helper.c) : sebagian fungsi main (userspace), program user memanggil fungsi fuse_main() kemudian fungsi fuse_mount() dipanggil.
·         fuse_mount() (lib/mount.c) : menciptakan UNIX domain socket, kemudian di fork dan menciptakan child process yang menjalankan fusermount
·         fusermount() (util/fusermount.c) : untuk mengecek apakah modul FUSE sudah di load. Kemudian membuka /dev/fuse dan mengirim file handle melalu UNIX domain socket kembali ke fungsi fuse_mount()
·         fuse_new() (lib/fuse.c) : menciptakan struktur data yang berisi ruang yang digukanan untuk menyimpan data file system
·         fuse_loop() (lib/fuse.c) : membaca file system calls dari /dev/fuse

Diagram kerja fuse

Module kernel FUSE dan FUSE library berhubungan melalui sebuah special file descriptor yang didapatkan dengan membuka /dev/fuse. FUSE kernal module meneruskan request ke aplikasi fuse anda. aplikasi anda memerintahkan fuse cara menjawab request. FUSE kernal module dan FUSE library berkomunikasi lewat file deskriptor spesial yang diperoleh dengan membuka /dev/fuse. file ini dapat terbuka berkali-kali dan file deskriptor yang diperoleh diteruskan ke mount syscall, untuk menyesuaikan deskriptor dengan filesystem mount.

Berikut ini beberapa jenis perintah yang tersedia pada fuse:

.getattr        = xmp_getattr, => mengambil atribut file
.access         = xmp_access,         => mengambil direktori
.readlink       = xmp_readlink,   => membaca target dari symbolic link
.readdir        = xmp_readdir,       => membaca direktori
.mknod          = xmp_mknod,     => membuka node file
.mkdir          = xmp_mkdir,         => membuat directory
.symlink        = xmp_symlink,   => membua symbolic link
.unlink         = xmp_unlink,       => menghapus file
.rmdir          = xmp_rmdir,           => menghapus directory
.rename         = xmp_rename,     => memperbaharui nama file
.link           = xmp_link,              => menciptakan hardlink ke file
.chmod          = xmp_chmod,      => mengubah permission file
.chown          = xmp_chown,      => mengubah kepemilikan file
.truncate       = xmp_truncate,    => merubah ukuran file
.utimens        = xmp_utimens,    => mengubah akses dan modifikasi waktu dari file dengan resolusi nanosecond
.open           = xmp_open,           => membuka file
.read           = xmp_read,              => membaca data dari file yang dibuka
.write          = xmp_write,            => menulis data ke file yang telah dibuka
.release        = xmp_release,        => melepaskan file yang sudah dibuka
.fsync          = xmp_fsync,           => sinkronisasi isi file 

Nah itu dia sedikit penjelasan tentang fuse pada kali ini. Semoga bermanfaat, wassalamualikum wr wb. :D
Continue Reading...

Saturday, November 7, 2015

Music Player Menggunakan Thread

Assalamualaukum sobat sekalian, bagaimana dengan post-post sebelumnya? Mantap bukan?
Sudah tidak sabar dengan ilmu yang akan saya bagikan saat ini?
Ok, sekarang kita akan belajar tentang bagaimana cara membuat sebuah music player sederhana. Nah aplikasi ini memanfaatkan thread dalam prosesnya. Sobat-sobat mungkin tahu apakah itu thread?
Thread merupakan alur control dari suatu perintah yang dapat kita jalankan didalam komputer, dimana thread dapat berjalan secara sejajar atau multi proses. Jadi kita menggunakan thread dalam suatu proses, maka kita dapat menjalankan perintah lainnya ketika suatu perintah yang lainnya dikerjakan, simplenya kita sebut dengan multiproses.

Nah itu sedikit penjelasan tentang thread, sekarang kita akan membuat music player sederhana menggunakan thread.



Penjelasan
Semua jenis include diatas digunakan dalam membuat thread, agar thread tersebut dapat dijalankan.
pthread_t tid[6] : Program diatas menggunakan 6 jenis thread. Yaitu untuk menjalankan perintah HELP, LIST LAGU, PLAY, PAUSE, CONTINUE dan STOP.
pthread_t id = pthread_self() : Membuat thread id
Fungsi yang digunakan untuk menjalankan thread bernama “playAndCount”. Didalamnya terdapat 6 jenis thread yang memiliki fungsi yang berbeda-beda.
Pada thread pertama berisi perintah HELP yang akan menampilkan menu-menu yang tersedia dalam music player.
Thread kedua berisi perintah untuk menampilkan list lagu yang dapat dimainkan dalam suatu folder tertentu. Sebelumnya kita harus mengakses dimana lagu-lagu tersebut kita simpan, contohnya saya mengakses folder lagunya yang bernama playlisy dengan menggunakan perintah
chdir ("/home/hendry/Documents/Sisop/Modul3/playlist");
Selain itu, sobat juga dapat menempatkan lagunya dalam satu folder yang sama dengan program, sehingga sobat tidak perlu mengaksesnya.
Thread ketiga berisi perintah untuk play lagu, caranya kita pertama ketikkan play terlebih dahulu kemudian kita menginputkan nama dari lagu yang akan kita mainkan.
Thread keempat berisi perintah untuk mempause lagu yang sedang diputar dengan. Perintah pause tersebut akan dijalankan setelah x detik dari perintah itu dijalankan. Jadi misalnya sobat menginputkan waktunya 10 detik, maka lagu tersebut akan dipause setelah 10 detik dari waktu awal sobat menginputkan tadi.
Thread kelima berisi perintah untuk continue lagu setelah x detik.
Thread keenam berisi perintah untuk menstop lagu setelah x detik.
Sebelum kita menjalankan program tersebut, terlebih dahulu sobat harus menginstall vlc terlebih dahulu agar musicnya dapat kita mainkan. Kemudian kita compile dengan menggunakan perintah
gcc –o –phtread namafile.c namafile(export)
Nah itu sedikit ilmu yang dapat saya share pada kali ini. Tetap follow blog ini ya, insyaallah masih banyak ilmu-ilmu yang bermanfaat nantinya. Wassalamulaikum wr wb
~ Semoga bermanfaat.
Continue Reading...