Sabtu, 28 November 2015

[TUTORIAL] File System pada Linux

   

     Nah, pada kesempatan kali ini kita akan membahas sedikit seluk beluk File System pada Linux. Simak ya..

     File System adalah struktur logika yang digunakan untuk mengendalikan akses terhadap data yang ada pada harddisk. Terdapat berbagai jenis-jenisnya dan penggunaan algoritma yang berbeda. Semakin baru jenis dari sebuah File System, maka semakin bagus pula kualitas dari File System tersebut.
     
     Tipe-tipe file system adalah sebagai berikut.

1. File System Disk
    adalah File System yang didesain untuk menyimpan data pada sebuah media penyimpanan data.

2. File System Flash
    adalah File System yang didesain untuk menyimpan data pada media flash memory.

3. File System Database
    adalah sebagai perbaikan bagi Manajemen terstruktur hirarkis, file diidentifikasi oleh karakteristiknya, seperti tipe file, topik, pembuat atau metadata yang sama.

4. File System Transaksional
    Setiap operasi disk dapat melibatkan perubahan ke sejumlah file dan struktur disk yang berbeda. Dalam banyak kasus, perubahan ini berhubungan. Hali in iberarti bahwa operasi ini dieksekusi pada waktu yang sama.

5. File System Jaringan
    adalah File System yang bertindak sebagai klien untuk protokol akses file jarak jauh, memberikan akses ke file pada sebuah server.

6. File System untuk Tujuan Khusus
    adalah File System yang tidak termasuk disk file system atau file system Jaringan. Termasuk dalam kategori ini adalah sistem dimana file ditata secara dinamis oleh software, ditujukan untuk tujuan tertentu seperti untuk komunikasi antar proses komputer atau space file sementara.

7. File System Journaling
    adalah File System yang mencatat perubahan ke dalam jurnal (biasanya berupa log sirkuolar dalam area tertentu) sebelum melakukan perubahan ke file system. File system seperti ini memiliki kemungkinan yang lebih kecil mengalami kerusakan saat terjadi power failure atau system crash.

     Virtual file system adalah suatu lapisan perangkat lunak dalam kernel yang menyediakan interface sistem berkas untuk program userspace. Virtual file system berfungsi agar berbagai sistem berkas yang berbeda dapat di akses oleh aplikasi komputer dengan cara yang seragam. VPS menyediakan antarmuka antara system call dengan system yang sesungguhnya.

     Dentry atau Directory Entry merupakan sebuah struktur data yang memiliki tugas sebagai penerjemah nama berkas ke inode-nya.

     Setiap sistem berkas yang di-mount akan direpresentasikan oleh sebuah VFS Superblock. Superblock digunakan untuk menyimpan informasi mengenai partisi tersebut.


     
Inode abstraksi VFS untuk berkas. Setiap berkas, directory, dan data lainnya pada VFS direpresentasikan oleh satu dan hanya satu VFS inode. VFS inode hanya terdapat di memori kernel dan disimpan di inode chace selama masih dibutuhkan oleh sistem.



     Filesystem in Userspace (FUSE) merupakan mekanisme sistem operasi untuk sistem operasi Unix-like yang memungkinkan pengguna tidak ber-hak istimewa menciptakan file system mereka sendiri tanpa mengubah kode kernel. Hal ini dicapai dengan menjalankan kode file system di userspace, sedangkan modul FUSE hanya menyediakan "jembatan" untuk antarmuka kernel yang sebenarnya. Cara instalasinya adalah sebagai berikut. (disini saya menggunakan Ubuntu Linux)

     Installasi FUSE:
1. Download FUSE dari http://fuse.sourceforge.net/ pada bagian Download stable release
2. Extract file tar.gz dan masuk ke direktori FUSE. (tar –xvzf fuse-2.9.4.tar.gz)
3. Lakukan installasi FUSE dengan cara :
a. Gunakan hak akses super user (sudo su)
b. Ketikkan perintah ./configure
c. Ketikkan perintah make
d. Ketikkan perintah make install
4. FUSE siap digunakan

     Dan cara membuat File System sendiri menggunakan fuse adalah sebagai berikut.





     Cukup sampai sini dulu tutorial hari ini, semoga dapat membantu, makasihhh :))

Sabtu, 07 November 2015

[TUTORIAL] Thread Dan IPC

     Sebelumnya kalian pasti pernah mendengar kata thread dan IPC, kan? Nah, disini kita akan membahas berbagai hal mengenai Thread dan IPC tersebut.

     Pertama kita akan membahas thread, apa itu thread?

     Thread adalah bagian kecil dari suatu proses yang bisa di jadwalkan oleh sistem operasi. Thread juga disebut sebagai proses ringan (lightweight).

     Thread dibagi menjadi 2 jenis, Single Threading dan Multi Threading.

     a. Single Threading
         Adalah sebuah proses yang hanya memiliki satu thread yang berjalan. Biasanya fungsi thread ini digunakan sebagai pengendali jalannya proses.

     b. Multi Threading
         Adalah proses yang memiliki lebih dari satu thread yang berjalan didalamnya, sehingga dalam hal ini proses dapat menjalankan lebih dari satu tugas dalam satu waktu.

     Kedua, kita akan membahas IPC. IPC sendiri memiliki kepanjangan Inter Process Communication. IPC adalah cara atau mekanisme pertukaran data antara satu proses dengan proses lainnya, baik itu proses yang berada di dalam komputer yang sama, atau komputer jarak jauh yang terhubung melalui jaringan.

     a. Pipes
         Pipe merupakan komunikasi sequensial antarproses yang saling terelasi, namun pipe memiliki            kelemahan yaitu hanya bisa digunakan untuk komunikasi antar proses yang saling berhubungan,          dan komunikasinya yang dilakukan adalah secara sequensial.

     b. Message Queue
         Sistem berkirim pesan adalah proses komunikasi antar bagian sistem untuk membagi variabel              yang dibutuhkan. Proses ini menyediakan 2 operasi yaitu mengirim pesan dan menerima pesan.

     c. Shared Memory
         Sistem berbagi memori merupakan salah satu cara komunikasi antar proses dengan cara                      mengalokasikan suatu alamat memori untuk dipakai berkomunikasi antar proses. Alamat dan              besar alokasi memori yang digunakan biasanya ditentukan oleh pembuat program. Pada metode          ini, sistem akan mengatur proses mana yang akan memakai memori pada waktu tertentu                      sehingga pekerjaan dapat dilakukan secara efektif.

     d. Socket
         Bentuk dari komunikasi yaitu UDP dan TCP menggunakan abstraksi socket yang menyediakan          endpoint untuk komunikasi antar proses. Socket bisa dijalankan di berbagai platform (BSD                  UNIIX, UNIX, Linux, Windows dan Machintos OS)
     Berikut ini adalah contoh kodingan untuk membuat suatu program yang dapat memainkan, pause, dan continue suatu lagu dan juga menampilkan playlist lagu yang tersedia.

#include<stdio.h>
#include<string.h>
#include<pthread.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>


pthread_t tid[10];
int n;

void* playandcount(void *arg){
     unsigned long i=0;
     pthread_t id=pthread_self();
     int iter;
     if(pthread_equal(id,tid[1])){
          system("clear");
          printf("\nHelp List\n");
          printf("Press the below number to execute command\n");
       printf("1===Show Help command\n");
      printf("2===Show playlist\n");
      printf("3===Play\n");
      printf("4===Pause after x sec\n");
      printf("5===Continue after x sec\n");
      printf("6===Stop after x sec\n");
     }
     else if(pthread_equal(id,tid[2])){
          system("clear");
          system("ls | grep .mp3");
     }
     else if(pthread_equal(id,tid[3])){
          system("clear");
          system("mpg123 Try.mp3");
     }
     else if(pthread_equal(id, tid[4])){
          system("clear");
          sleep(n);
          system("pkill -STOP mpg123");
     }
     else if(pthread_equal(id, tid[5])){
          system("clear");
          sleep(n);
          system("pkill -CONT mpg123");
     }
     else if(pthread_equal(id,tid[6])){
          system("clear");
          sleep(n);
          system("pkill mpg123");
     }
     return NULL;
}

int main(void){
     system("clear");
while(1){
      int flag=0;
       int comm;
      int i=0;
      int err=0;
      scanf("%d", &comm);
      if(comm==4 || comm==5 || comm==6)
            scanf("%d", &n);
          printf("\n\n");
       
          if (err!=0)
            printf("\ncan't create thread : [%s]", strerror(err));
      else
            err=pthread_create(&(tid[comm]), NULL, &playandcount, NULL);
     }
     return 0;
}

Minggu, 18 Oktober 2015

[TUTORIAL] DAEMON

      Pertama kita bahas pengertiannya terlebih dahulu, apa itu daemon? Daemon adalah proses yang berjalan di balik layar (background) dan tidak berinteraksi langsung dengan user melalui standard input/output.

      Untuk membuat proses, caranya mudah, jalankan saja program yang ingin kamu buat prosesnya, dan secara otomatis prosesnya akan berjalan juga.

      Ada 6 langkah pembuatan daemon, berikut langkah-langkahnya:
1. Fork Parent Processs dan penghentian Parent Process
    Buat sebuah proses baru, kemudian matikan proses induknya.

2. Mengubah mode file menggunakan UMASK(0)
    Ubah mode file untuk memastikan file dapat ditulis dan dibaca secara benar dengan implementasi       umask().

3. Membuat Unique Session ID (SID)
    Buatlah SID baru dengan implementasi setsid(), fungsi ini memiliki return tipe sama dengan fungsi     fork().

4. Mengubah Directory Kerja
    Ubah direktori kerja ke tempat yang pasti akan selalu ada, dengan menggunakan fungsi chdir().           Fungsi ini akan mengembalikan nilai -1 jika gagal.

5. Menutup File Descriptor Standar
    Kemudian tutup file descriptor standar (STDIN, STDOUT, STDERR). Gunakanlah fungsi close()       untuk menghindari file descriptor yang berulang.

6. Membuat Loop utama (inti kerja dari daemon)
    Terakhir buatlah looping untuk menjalankannya seperti berikut.

      Setelah semua proses dilakukan, jadinya adalah seperti berikut.


      Sekarang coba kita implementasikan pada sebuah masalah, berikut adalah contoh masalahnya.

Uul adalah seorang programer handal dan berani. Suatu hari, dia ingin membuat sebuah virus bernama “Virus Quotes 2 Menit”, dimana virus tersebut terdiri dari file aplikasi virus dan daftar quotes dalam sebuah file bernama virus.txt. Jika virus ini ada dalam komputer anda, maka akan muncul pop-up dari semua isi file virus.txt yang terpisah dengan tanda delimiter koma (,) satu persatu setiap 2 menit sekali. Sebagai praktikan sisop yang pintar, bantulah Uul untuk membuat virus tersebut!

1. Pertama-tama buatlah langkah 1-5 yang telah kita pelajari di atas tadi seperti berikut.

#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <syslog.h>
#include <string.h>

int main(void){
pid_t pid, sid;
pid=fork();
if (pid<0){
exit(EXIT_FAILURE);
}
if (pid>0){
exit(EXIT_SUCCESS);
}
umask(0);
sid=setsid();
if ((chdir("/home/dito"))<0){                           //sesuai dengan direktori yang kalian miliki
exit(EXIT_FAILURE);
}
close(STDIN_FILENO);
close(STDOUT_FILENO);

close(STDERR_FILENO);

//program inti

exit(EXIT_SUCCESS);

}

2. Lalu buatlah program intinya, seperti berikut ini.

FILE * file;
file=fopen("virus.txt","r");
char inp;
int count=0;
char print[100];
while(1){
fscanf(file, "%c", &inp);
if(inp==',')
        {
            char temp[]="zenity --info --text=\"";
            strcat(temp,print);
            strcat(temp,"\"");
            system(temp);
            count=0;
memset(temp,'\0',100);
            sleep(2);
        }
else if(inp=='\0') break;
else if(inp!=','){
            print[count]=inp;
            count++;
                }
}

fclose(file);

Program inti untuk menampilkan tulisan-tulisan tersebut berada di dalam if yang pertama, if kedua untuk mengakhiri program jika tulisan pada file virus.txt sudah habis, dan if ketiga untuk terus menyimpan karakter selama karakter itu bukan tanda ',' .

Selesai, cobalah program yang telah kita buat tadi sendiri :)

Jumat, 25 September 2015

[TUTORIAL] Cara Mengunduh, Me-Rename, Dan Memindahkan Berkas ke Suatu Direktori Dengan Bash Script Linux

Berikut ini adalah contoh soal yang akan kita bahas.


         Cayza merupakan seorang dokter praktik, dia memiliki 5 pasien yang harus rutin meminum obat. Sebagai dokter yg baik, Cayza ingin terus memantau sudah berapa jumlah obat yang sudah diminum oleh setiap pasien. Cayza harus mengunduh berkas "laporan minum obat pasien" yang berada di kantornya melalui alamat http://10.151.36.201/sisop/jadwal.txt. Setiap berkas yang diunduh otomatis diletakkan pada sebuah direktori yang namanya sesuai dengan tanggal bulan dan tahun saat ini dengan format dd_mm_yyyy (contoh: 11_12_2013). Berkasnya juga otomatis di-rename sesuai dengan jam, menit, dan detik ketika berkas tersebut diunduh dengan format HH_MM_SS (contoh: 17_18_19). Buatlah script untuk membantu Cayza dalam melakukan hal ini agar pekerjaannya berjalan lebih mudah hanya dalam sekali proses!

Solusi:
1. Pertama, pastikan bahwa pada PC anda sudah terinstal Linux, dalam hal ini saya menggunakan Ubuntu.
2. Setelah terinstal, langsung saja buka terminal seperti berikut ini.

3. Ketik "sudo su" (tanpa tanda kutip), masukkan password anda.
4. Lalu ketik "nano" (untuk membuat file baru pada direktori anda sekarang).
5. Setelah muncul layar kosong, mulailah ngoding...

#!/bin/bash
wget http://10.151.36.201/sisop/jadwal.txt  #untuk mendownload file dari internet

dt=`date '+%d_%m_%Y'`         #variabel dt untuk menyimpan data tanggal saat ini
tm=`date '+%H_%M_%S'`        #variabel tm untuk menyimpan data jam saat ini

mv jadwal.txt $tm.txt                  #untuk me-rename file terdownload 

if [ -d "$dt" ]; then                       #untuk mengecek ada tidaknya direktori
     mv $tm.txt ~/$dt/$tm.txt          #jika ada, otomatis memindahkan file ke dir itu
else
     mkdir $dt                              #jika tidak ada, dir dibuat dulu dengan mkdir
     mv $tm.txt ~/$dt/$tm.txt
fi


6. Setelah selesai tekan CTRL+X, lalu tekan Y, masukkan nama file yg anda buat dengan ekstensi .sh (file.sh), agar file dapat dieksekusi.
7. Ketik "chmod +x file.sh" agar kita dapat mengeksekusi file tadi.
8. Untuk mengeksekusinya, ketik "./file.sh" ,pastikan juga pc anda terkoneksi internet untuk mendownload filenya. (web yang ada dalam soal hanya bisa diakses di lingkungan ITS Surabaya)
9. Untuk mengecek kodingan kita tadi, ketik ls untuk melihat direktori yang ada pada /home
10. Cari apakah ada direktori dengan format dd_mm_yy tanggal saat ini.
11. Kalau ada, ketik "cd [nama_direktori]" untuk masuk ke direktori baru itu.
12. Cari file dengan format hh_mm_ss jam saat pengeksekusian tadi, kalau ada itu brarti kodingan anda berhasil berjalan sesuai dengan permintaan soal di atas.

Popular Posts

Blogroll

Tentang Gw / About Me

Pati, Jawa Tengah, Indonesia
Namaku Dito. Lengkapnya Pramudito Hapriarso. Kelahiran 1996. Sekarang menetap di Indonesia.

About

Blogger templates

Blogger news

Pages - Menu

Pengikut