Rabu, 19 November 2014

MUTEX

Mutual exclusion adalah jaminan hanya satu proses yang mengakses sumber daya pada satu interval waktu tertentu. Sumber daya yang tidak dapat dipakai bersama pada saat bersamaan.
Sering terjadi pada peralatan pencetakan (printer). Daemon printer adalah proses yang melakukan penjadwalan dan pengendalian pencetakan berkas-berkas di printer. Ruang disk ini disebut direktori spooler. Direktori spooler membagi disk menjadi sejumlah slot. Slot-slot diisi berkas yang akan dicetak. Terdapat variabel in yang menunjuk slot bebas pada ruang disk yang akan dipakai untuk menyimpan berkas yang ingin dijadwalkan untuk dicetak. Bagian program yang sedang mengakses memory atau sumber daya yang dipakai bersama disebut critical section. Jika proses pada critical section memblokir proses-proses lain dalam antrian, maka akan terjadi startvation dan deadlock.
Kesuksesan proses-proses konkurensi memerlukan pendefinisian critical section dan memaksakan mutual exclusion di antara proses-proses konkuren yang sedang berjalan. Pemaksaan mutual exclusion merupakan landasan pemrosesan konkuren. Fasilitas atau kemampuan menyediakan dukungan mutual exclusion harus memenuhi kriteria sbb:
o   Mutual exclusion harus dijamin, bahwa tidak ada proses lain, kecuali dirinya sendiri. Di sini terjadi proses tunggal.
o   Proses yang berada di noncritical section, dilarang mem-blocked proses-proses lain yang ingin masuk critical section. Hal ini bisa terjadi startvation.
o   Harus dijamin bhwa proses yang ingin masuk critical section tidak menunggu selama waktu yang tak terhingga. Ini bisa mengakibatkan masalah deadlock dan antrian proses bertambah panjang.
o   Ketika tidak ada proses pada critical section, maka proses yang ingin masuk critical section harus ijinkan masuk tanpa waktu tunda.
o   Tidak ada asumsi mengenai kecepatan relatif proses atau jumlah yang ada.
o   Proses hanya tinggal pada critical section selama satu waktu yang berhingga
Beberapa metode yang diusulkan untuk menjamin Mutual Exclusion, antara lain:
-       Metode Variable Lock
Locking adalah salah satu mekanisasi pengontrol konkuren. Konsep dasar : pada saat suatu transaksi memerlukan jaminan kalau record yang diinginkan tidak akan berubah secara mendadak, maka diperlukan kunci untuk record tersebut. Fungsi kunci (lock) adalah menjaga record tersebut agar tidak dimodifikasi transaksi lain.
Cara kerja dari kunci :
1.      Pertama kita asumsikan terdapat 2 macam kunci :
-       Kunci X : kunci yang eksklusif.
-       Kunci S : kunci yang digunakan bersama-sama.
2.      Jika transaksi A menggunakan kunci X pada record R, maka permintaan dari transaksi B untuk suatu kunci pada R ditunda, dan B harus menungggu sampai A melepaskan kunci tersebut.
3.      Jika transaksi A menggunakan kunci S pada record R, maka :\
a.       Bila transaksi B ingin menggunakan kunci X, maka B harus menunggu sampai A melepaskan kunci tersebut.
b.      Bila transaksi B ingin menggunakan kunci S, maka B dapat menggunakan kunci S bersama A.
4.      Bila suatu transaksi hanya melakukan pembacaan saja, secara otomatis ia memerlukan kunci S �� baca (S).
Bila transaksi tersebut ingin memodifikasi record maka secara otomatis ia memerlukan kunci X �� memodifikasi (X).
Bila transaksi tersebut sudah menggunakan kunci S, setelah itu ia akan memodifikasi record, maka kunci S akan dinaikan ke level kunci X.
5.      Kunci X dan kunci S akan dilepaskan pada saat synchpoint (synchronization point). Synchpoint menyatakan akhir dari suatu transaksi dimana basis data berada pada state yang konsisten. Bila synchpoint ditetapkan maka :
-       Semua modifikasi program menjalankan operasi commit atau rollback.
-       Semua kunci dari record dilepaskan.
Metode ini sederhana ketika proses masuk critical section lebih dahulu
memeriksa variable lock.
-       Jika variable lock bernilai 0, proses men-set variable locknya menjadi 1 kemudian masuk ke dalam critical section.
-       Jika variable lock bernilai 1, maka proses menunggu sampai nilai variable lock nya menjadi 0.
Metode ini tidak menjamin proses tidak masuk critical section yang telah dimasuki proses lain.
-       Metode bergantian secara ketat
Metode ini mengasumsikan dapat mengalir masuk critical section secara bergantian terus-menerus. Metode ini melakukan refleksi terhadap variabel yang berfungsi untuk memenuhi critical section.

Manajemen Proses dan Thread

Definisi Proses
Proses merupakan program sedang dieksekusi. Menurut Silberschatz proses tidak hanya sekedar suatu kode program (text section), melainkan meliputi beberapa aktivitas yang bersangkutan seperti program counter dan stack. Sebuah proses juga melibatkan stack yang berisi data sementara (parameter fungsi/metode, return address, dan variabel lokal) dan data section yang menyimpan variabel-variabel global. Tanenbaum juga berpendapat bahwa proses adalah sebuah program yang dieksekusi yang mencakup program counter, register, dan variabel di dalamnya [MDGR2006]. Perbedaan antara program dengan proses adalah program merupakan entitas yang pasif, yaitu suatu file yang berisi kumpulan instruksi-instruksi yang disimpan di dalam disk (file executable), sedangkan proses merupakan entitas yang aktif, dengan sebuah program counter yang menyimpan alamat instruksi selanjut yang akan dieksekusi dan seperangkat sumber daya (resource) yang dibutuhkan agar sebuah proses dapat dieksekusi.
Status Proses
Proses yang dieksekusi mempunyai lima status yang terdiri dari:
a. new: Pembentukan suatu proses
b. running: Instruksi-instruksi yang sedang dieksekusi
c. waiting: Proses menunggu untuk beberapa event yang terjadi
d. ready: Proses menunggu untuk dialirkan ke pemroses (processor)
e. terminated: Proses telah selesai dieksekusi.

Process Control Block (PCB)

Setiap proses digambarkan dalam sistem operasi oleh sebuah process control block (PCB), juga disebut sebuah control block. PCB berisikan banyak bagian dari informasi yang berhubungan dengan sebuah proses yang spesifik, termasuk hal-hal di bawah ini:
• Status proses: status yang mungkin adalah new, ready, running, waiting, halted, dan seterusnya.
• Program counter: suatu penghitung yang mengindikasikan alamat dari instruksi selanjutnya yang akan dieksekusi untuk proses tersebut.
• CPU register: Register bervariasi dalam jumlah dan tipenya, tergantung pada arsitektur komputer. Register tersebut termasuk accumulator, index register, stack pointer, general-purposes register, ditambah informasi condition-code. Bersama dengan program counter, keadaan/status informasi harus disimpan ketika gangguan terjadi, untuk memungkinkan proses tersebut berjalan/bekerja dengan benar.
• Informasi manajemen memori: Informasi ini dapat termasuk suatu informasi sebagai nilai dari dasar dan batas register, tabel page/halaman, atau tabel segmen tergantung pada sistem memori yang digunakan oleh sistem operasi.
• Informasi pencatatan: Informasi ini termasuk jumlah dari CPU dan waktu nyata yang digunakan, batas waktu, jumlah account, jumlah job atau proses, dan banyak lagi.
• Informasi status I/O: Informasi termasuk daftar dari perangkat I/O yang di gunakan pada proses ini, suatu daftar berkas-berkas yang sedang diakses dan banyak lagi.
PCB hanya berfungsi sebagai tempat penyimpanan informasi yang dapat bervariasi dari proses yang
satu dengan yang lain.

Thread

Proses merupakan sebuah program yang mengeksekusi thread tunggal. Kendali thread tunggal ini hanya memungkinkan proses untuk menjalankan satu tugas pada satu waktu. Banyak sistem operasi modern telah memiliki konsep yang dikembangkan agar memungkinkan sebuah proses untuk mengeksekusi multi-threads. Misalnya user melakukan pekerjaan secara bersamaan yaitu mengetik dan menjalankan pemeriksaan ejaan didalam proses yang sama. Thread merupakan unit dasar dari penggunaan CPU, yang terdiri dari Thread ID, program counter, register set, dan stack. Sebuah thread berbagi code section, data section, dan sumber daya sistem operasi dengan Thread lain yang dimiliki oleh proses yang sama. Thread juga sering disebut lightweight process. Sebuah proses tradisional atau heavyweight process mempunyai thread tunggal yang berfungsi sebagai pengendali. Perbedaannya ialah proses dengan thread yang banyakmengerjakan lebih dari satu tugas pada satu satuan waktu.
Pada umumnya, perangkat lunak yang berjalan pada komputer modern dirancang secara multithreading. Sebuah aplikasi biasanya diimplementasi sebagai proses yang terpisah dengan beberapa thread yang berfungsi sebagai pengendali. Contohnya sebuah web browser mempunyai thread untuk menampilkan gambar atau tulisan sedangkan thread yang lain berfungsi sebagai penerima data dari network.
Terkadang ada sebuah aplikasi yang perlu menjalankan beberapa tugas yang serupa. Sebagai contohnya sebuah web server dapat mempunyai ratusan klien yang mengaksesnya secara concurrent. Kalau web server berjalan sebagai proses yang hanya mempunyai thread tunggal maka ia hanya dapat melayani satu klien pada pada satu satuan waktu. Bila ada klien lain yang ingin mengajukan permintaan maka ia harus menunggu sampai klien sebelumnya selesai dilayani. Solusinya adalah dengan membuat web server menjadi multi-threading. Dengan ini maka sebuah web server akan membuat thread yang akan mendengar permintaan klien, ketika permintaan lain diajukan maka web server akan menciptakan thread lain yang akan melayani permintaan tersebut [MDGR2006].
Keuntungan Thread

Beberapa keuntungan dari penggunaan thread adalah sebagai berikut:

a. Responsif. Aplikasi interaktif menjadi tetap responsif meski pun sebagian dari program sedang diblok atau melakukan operasi yang panjang kepada pengguna. Umpamanya, sebuah thread dari web browser dapat melayani permintaan pengguna sementara thread lain berusaha menampilkan gambar.

b. Berbagi sumber daya. Thread berbagi memori dan sumber daya dengan thread lain yang dimiliki oleh proses yang sama. Keuntungan dari berbagi kode adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.

c. Ekonomis. Pembuatan sebuah proses memerlukan dibutuhkan pengalokasian memori dan sumber daya. Alternatifnya adalah dengan penggunaan thread, karena thread berbagi memori dan sumber daya proses yang memilikinya maka akan lebih ekonomis untuk membuat dan konteks penukaran thread. Akan susah untuk mengukur perbedaan waktu antara proses dan thread dalam hal pembuatan dan pengaturan, tetapi secara umum pembuatan dan pengaturan proses lebih lama dibandingkan thread. Pada Solaris, pembuatan proses lebih lama 30 kali dibandingkan pembuatan thread, dan konteks penukaran proses lima kali lebih lama dibandingkan konteks penukaran thread.

d. Utilisasi arsitektur multiprocessor. Keuntungan dari multithreading dapat sangat meningkat pada arsitektur multiprocessor, dimana setiap thread dapat berjalan secara pararel di atas processor yang berbeda. Pada arsitektur processor tunggal, CPU menjalankan setiap thread secara bergantian tetapi hal ini berlangsung sangat cepat sehingga menciptakan ilusi pararel, tetapi pada kenyataannya hanya satu thread yang dijalankan CPU pada satu-satuan waktu (satusatuan waktu pada CPU biasa disebut time slice atau quantum).

Model Multithreading
Dukungan thread disediakan pada tingkat user yaitu user threads atau tingka kernel untuk kernel threads. User Threads disediakan oleh kernel dan diatur tanpa dukungan kernel, sedangkan kernel therads didukung dan diatur secara langusng oleh sistem operasi. Hubungan antara user threads dan kernel threads terdiri dari tiga model relasi, yaitu:

Model Many to One: Model Many-to-One memetakan beberapa thread tingkatan pengguna ke sebuah thread tingkatan kernel. Pengaturan thread dilakukan dalam ruang pengguna, sehingga efisien. Hanya satu thread pengguna yang dapat mengakses thread kernel pada satu saat. Jadi, multiple thread tidak dapat berjalan secara paralel pada multiprocessor. Thread tingkat pengguna yang diimplementasi pada sistem operasi yang tidak mendukung thread kernel menggunakan model Many-to-One.

Model One to One: Model One-to-One memetakan setiap thread tingkatan pengguna ke thread kernel. Ia menyediakan lebih banyak concurrency dibandingkan model Many-to-One. Keuntungannya sama dengan keuntungan thread kernel. Kelemahannya model ini ialah setiap pembuatan thread pengguna memerlukan pembuatan thread kernel. Karena pembuatan thread dapat menurunkan kinerja dari sebuah aplikasi maka implmentasi dari model ini, jumlah thread dibatasi oleh sistem. Contoh sistem operasi yang mendukung model One-to-One ialah Windows NT dan OS/2.

Model Many To Many: Model ini me-multipleks banyak thread tingkatan pengguna ke thread kernel yang jumlahnya lebih sedikit atau sama dengan tingkatan pengguna. thread. Jumlah thread kernel spesifik untuk sebagian aplikasi atau sebagian mesin. Many-to-One model mengizinkan developer untuk membuat user thread sebanyak yang ia mau tetapi concurrency (berjalan bersama) tidak dapat diperoleh karena hanya satu thread yang dapat dijadwal oleh kernel pada suatu waktu. One-to-One menghasilkan concurrency yang lebih tetapi developer harus hati-hati untuk tidak menciptakan terlalu banyak thread dalam suatu aplikasi (dalam beberapa hal, developer hanya dapat membuat thread dalam jumlah yang terbatas). Model Many-to-Many tidak mengalami kelemahan dari dua model di atas. Developer dapat membuat user thread sebanyak yang diperlukan, dan kernel thread yang bersangkutan dapat bejalan secara paralel pada multiprocessor. Dan juga ketika suatu thread menjalankan blocking system call maka kernel dapat menjadwalkan thread lain untuk melakukan eksekusi. Contoh sistem operasi yang mendukung model ini adalah Solaris, IRIX, dan Digital UNIX.

Persoalan dalam Thread

System Calls fork() dan exec()

Terdapat dua kemungkinan dalam sistem UNIX jika fork dipanggil oleh salah satu thread dalam proses:
a. Semua thread diduplikasi.
b. Hanya thread yang memanggil fork.
Jika suatu thread memanggil System Call exec maka program yang dispesifikasi dalam parameter exec, akan mengganti keseluruhan proses termasuk thread. Penggunaan dua versi dari fork di atas tergantung dari aplikasi. Kalau exec dipanggil seketika sesudah fork, maka duplikasi seluruh thread tidak dibutuhkan, karena program yang dispesifikasi dalam parameter exec akan mengganti seluruh proses. Pada kasus ini cukup hanya mengganti thread yang memanggil fork. Tetapi jika proses yang terpisah tidak memanggil exec sesudah fork maka proses yang terpisah tersebut hendaknya menduplikasi seluruh thread.

Pembatalan Thread

Pembatalan thread merupakan penghentian tugas sebelum prosesnya selesai, sebagai contoh dalam web page, pemanggilan suatu gambar menggunakan beberapa thread. Jika penggambaran belum sempurna sedangkan user menekan tombol stop, maka seluruh penggambaran oleh tiap-tiap thread tersebut akan dibatalkan secara kesuluruhan. Pembatalan suatu thread dapat terjadi dalam dua skenario yang berbeda, yaitu:

a. Asynchronous cancellation: suatu thread seketika itu juga memberhentikan target thread.

b. Deferred cancellation: target thread secara perodik memeriksa apakah dia harus berhenti, cara ini memperbolehkan target thread untuk memberhentikan dirinya sendiri secara berurutan. Kejaidan yang sulit dari pembatalan suatu thread adalah ketika terjadi situasi dimana sumber daya sudah dialokasikan untuk thread yang akan dibatalkan. Selain itu kesulitan lain adalah ketika thread yang dibatalkan sedang meng-update data yang ia bagi dengan thread lain. Hal ini akan menjadi masalah yang sulit apabila menggunakan asynchronous cancellation. Sistem operasi akan mengambil kembali sumber daya dari thread yang dibatalkan namun seringkali sistem operasi tidak mengambil kembali seluruh sumber daya dari thread tersebut. Alternatifnya adalah dengan menggunakan deffered cancellation. Cara kerja dari deffered cancellation adalah dengan menggunakan satu thread yang berfungsi sebagai pengindikasi bahwa target thread akan dibatalkan. Tetapi pembatalan hanya akan terjadi jika target thread telah memeriksa apakah ia harus batal atau tidak. Hal ini memperbolehkan thread untuk memeriksa apakah ia harus berhenti pada titik tersebut secara aman.

Penanganan Sinyal

Sinyal yang digunakan pada sistem UNIX untuk memberitahukan sebuah proses kalau suatu peristiwa telah terjadi. Sebuah sinyal dapat diterima secara synchronous atau asynchronous tergantung dari sumber dan alasan suatu event memberikan sinyal. Semua sinyal (asynchronous dan synchronous) mengikuti pola yang sama, yaitu:
a. Sebuah sinyal dimunculkan oleh kejadian dari suatu event.
b. Sinyal yang dimunculkan tersebut dikirim ke proses.
c. Sesudah dikirim, sinyal tersebut harus ditangani.
Contoh dari sinyal synchronous adalah ketika suatu proses melakukan pengaksesan memori secara ilegal atau pembagian dengan nol, sinyal dimunculkan dan dikirim ke proses yang melakukan operasi tersebut. Contoh dari sinyal asynchronous misalnya kita mengirimkan sinyal untuk mematikan proses dengan keyboard (CTRL+C) maka sinyal asynchronous dikirim ke proses tersebut. Setiap sinyal dapat ditangani oleh salah satu dari dua penanganan sinyal, yaitu:
1. Penanganan sinyal default.
2. Penanganan sinyal yang didefinisikan sendiri oleh user.
Penanganan sinyal pada program yang hanya memakai thread tunggal cukup mudah yaitu hanya dengan mengirimkan sinyal ke prosesnya. Tetapi mengirimkan sinyal lebih rumit pada program multithreading, karena sebuah proses dapat memiliki beberapa thread. Secara umum ada empat pilihan kemana sinyal harus dikirim, yaitu:
1. Mengirimkan sinyal ke thread yang dituju oleh sinyal tersebut.
2. Mengirimkan sinyal ke setiap thread pada proses tersebut.
3. Mengirimkan sinyal ke thread tertentu dalam proses.
4. Menugaskan thread khusus untuk menerima semua sinyal yang ditujukan pada proses.
Metode untuk mengirimkan sebuah sinyal tergantung dari jenis sinyal yang dimunculkan. Sebagai contoh sinyal synchronous perlu dikirimkan ke thread yang memunculkan sinyal tersebut bukan thread lain pada proses itu. Tetapi situasi dengan sinyal asynchronous menjadi tidak jelas. Beberapa sinyal asynchronous seperti sinyal yang berfungsi untuk mematikan proses (contoh: Alt-F4) harus dikirim ke semua thread. Beberapa versi UNIX yang multithreading mengizinkan thread menerima sinyal yang akan ia terima dan menolak sinyal yang akan ia tolak. Karena itu sinyal asynchronouns hanya dikirimkan ke thread yang tidak memblok sinyal tersebut. Solaris 2 mengimplementasikan pilihan ke-4 untuk menangani sinyal. Windows 2000 tidak menyediakan fasilitas untuk mendukung sinyal, sebagai gantinya Windows 2000 menggunakan asynchronous procedure calls (APCs).

Thread Pools

Dalam situasi web server multithreading ada dua masalah yang timbul, diantaranya adalah:
a. Ukuran waktu yang diperlukan untuk menciptakan thread dalam melayani permintaan yang diajukan akan berlebih. Pada kenyataannya thread dibuang ketika sudah menyelesaikan tugasnya.
b. Pembuatan thread yang tidak terbatas jumlahnya dapat menurunkan performa dari sistem. Solusinya adalah dengan penggunaan Thread Pools, cara kerjanya adalah dengan membuat beberapa thread pada proses startup dan menempatkan mereka ke pools, dimana thread tersebut menunggu untuk bekerja. Jadi ketika server menerima permintaan maka akan membangunkan thread dari pool dan jika thread tersebut tersedia, permintaan akan dilayani. Ketika thread sudah selesai mengerjakan tugasnya maka thread tersebut kembali ke pool dan
menunggu pekerjaan lainnya. Bila tidak thread yang tersedia pada saat dibutuhkan, maka server menunggu sampai ada satu thread yang bebas.

Keuntungan menggunakan thread pool adalah:

• Umumnya lebih cepat dalam melayani permintaan thread yang sudah ada dibandingkan dengan menunggu thread baru yang sedang dibuat.
• Thread pool membatasi jumlah thread yang ada pada suatu waktu. Hal ini penting pada sistem yang tidak dapat mendukung banyak thread yang berjalan secara bersamaan.
Jumlah thread dalam pool dapat tergantung dari jumlah CPU dalam sistem, jumlah memori fisik, dan jumlah permintaan klien yang bersamaan. Thread yang dimiliki oleh suatu proses memang berbagi data tetapi setiap thread mungkin membutuhkan duplikat dari data tertentu untuk dirinya sendiri dalam keadaan tertentu. Data ini disebut thread-specific data.

Minggu, 02 November 2014

Fungsi Pipe

Di dalam UNIX Command, sering dipakai tanda “|”. Tanda “|” adalah pipe, maksudnya stdout dari sebuah program dapat menjadi stdin dari program yang lain. Di dalam C, fitur ini dapat diimplementasikan dengan fungsi pipe(). Di contoh yang ada pada spesifikasi tersebut hanya menangani antara 2 proses.

Fungsi pipe ini akan menyambungkan input dari sebuah filedescriptor menjadi output pada filedescriptor lain. Input/output ini dibaca dengan menggunakan fungsi read() dan write().

Pipe juga dapat digunakan untuk stdin dan stdout layaknya pada penggunaan pipe pada terminal UNIX. Caranya adalah menduplikasikan file descriptor pipe tersebut ke dalam file descriptor dari stdout atau stdin.
Pada penggunaan terminal UNIX sehari-hari sering ditemukan runtunan seperti
$ ls | grep "tes" | less
Untuk penggunaan, file descriptor yang sudah dibuat pada pipe dapat digunakan kembali saat proses yang menggunakannya difork. Jadi tidak perlu langsung diclose. Kodenya:


#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
 
int main()
{
    int i;
    int fildes[2];
    int fdinput = -1;
    for (i = 0; i < 10; i++) {
        pipe(fildes);
        pid_t childpid = fork();
        if (childpid == 0) {
            /* Write */
            char b[255];
            close(fildes[0]);
            dup2(fildes[1], STDOUT_FILENO);
            if (fdinput >= 0) dup2(fdinput, STDIN_FILENO);
            scanf("%s", b);
            printf("c%s");
            close(fildes[1]);
            if (fdinput >= 0) close(fdinput);
            exit(EXIT_SUCCESS);
        }
        else if (childpid > 0) {
            char a[255];
            close(fildes[1]);
            fdinput = fildes[0];
            if (i == 9) {
            dup2(fildes[0], STDIN_FILENO);
            scanf("%s", a);
            printf("%s\n", a);
            }
        }
    }
}

Minggu, 12 Oktober 2014

Penggunaan Perintah Tar

Command tar salah satunya dapat digunakan di  dalam proses pengarsipan dan pengiriman data ke komputer lain, untuk mempercepat proses, file atau direktori di kompres terlebih dahulu. Kita juga dapat menggabungkan semua direktori ke dalam satu file yang dapat mempermudah banyak tugas pengelolaan sebuah server linux.

Command tar berfungsi untuk menyumpan banyak file atau direktori ke dalam 1 buah file archive, dan juga dapat digunakan untuk mengekstrak file / direktori di dalam file archive.

Membuat, Mengurai, dan Melihat Isi File tar

Command tar memiliki diantaranya memiliki parameter;
  • c, untuk membuat file tar
  • t,  print out isi dari sebuah file tar
  • x, mengurai mengekstrak kembali isi dari sebuah file tar
Parameter lainnya untuk proses yang lebih advance dapat dipelajari dengan mengetik tar –help di shell anda.
Contoh perintah tar sederhana;
tar -cf archive.tar file1 file2  # Membuat archive.tar dari file file1 dan file2.
tar -tvf archive.tar             # Melihat isi dari file archive.tar.
tar -xf archive.tar              # Mengekstrak semua isi file archive.tar.

Kompresi dan Verbose

Berikut parameter yang dapat digunakan untuk keperluan kompresi;
  • f, menentukan file archive mana yang akan digunakan di dalam command tersebut
  • z , menggunakan zip/gzip untuk melakukan kompresi atau membaca sebuah file archive
  • v, verbose menampilkan proses yang sedang dijalankan oleh command tar
Contoh penggunaan;

tar cvzf foo.tgz *.cc *.h

Command tersebut akan memasukkan semua file berakhiran .cc dan .h ke dalam file archive foo.tgz (f), file tersebut dibuat ketika command dijalankan (c) dengan  menggunakan kompresi (z), dan prosesnya ditampilkan ke layar shell (v).

tar cvzf foo.tgz cps100

Command di atas akan memasukkan direktori cps100 yang berada di dalam direktori yang sama dengan direktori ketika command dijalankan kedalam file archive bernama foo.tgz (f) yang belum ada sebelumnya (c) dalam format kompresi zip/gzip (z) dan menampilkan prosesnya ke layar (v).

tar tzf foo.tgz

Command tersebut akan menampilkan daftar file dan direktori (t) di dalam file archive foo.tgz (f) yang menggunakan kompresi (z).
tar xvzf foo.tgz

Command di atas akan mengekstrak atau mengurai (x) file dan direktori yang berada di dalam file archive foo.tgz (f) yang menggunakan kompresi (z) dan menampilkan prosesnya ke layar (v).

bila kamu ingin membuka tar ke direktori tertentu, rubah menjadi direktori dan gunakan tar. Untuk contoh, membuka tar kediretori tertentu named newdir.
Kita dapat memilih file apasaja yang ingin kita ekstak dengan menuliskan nama file atau menggunakan filter. Contohnya;

tar xvzf foo.tgz anagram.cc

# Mengekstrak file anagram.cc dari dalam file foo
 


Penggunaan Perintah wget pada shell scripting

GNU Wget, seringkali hanya disebut wget, adalah sebuah program komputer sederhana yang mengambil materi dari web server, dan merupakan bagian dari Proyek GNU. Namanya diturunkan dari World Wide Web dan get, konotatif dari fungsi primernya. Program ini mendukung pengunduhan melalui protokol HTTP, HTTPS, dan FTP, protokol berbasis TCP/IP yang paling luas digunakan untuk penjelajahan web.

Penggunaan dasar GNU wget adalah dengan menjalankannya melalui terminal baris perintah dan menyertakan satu atau lebih URL sebagai argumen.
contoh:

# Mengunduh halaman awal website example.com ke sebuah file
# dengan nama "index.html".
wget http://www.example.com/

Cara install fedora di VMware

Fedora adalah Sistem Operasi berbasis Linux, kumpulan perangkat lunak yang membuat komputer Anda dapat berjalan. Anda dapat menggunakan Fedora sebagai tambahan, atau sebagai pengganti, sistem operasi lainnya seperti Microsoft Windows atau Mac OS X. Sistem operasi Fedora sepenuhnya bebas biaya untuk Anda nikmati dan bagikan.
Project Fedora adalah nama sebuah komunitas tingkat dunia yang orang-orangnya mencintai, menggunakan, dan membangun perangkat lunak bebas. Kami ingin memimpin dalam pembuatan dan penyebaran kode dan konten secara bebas merdeka dengan bekerja bersama sebagai sebuah komunitas. Fedora disponsori olehRed Hat, penyedia teknologi sumber terbuka dunia yang paling terpercaya. Red Hat berinvestasi di Fedora untuk mendorong kolaborasi dan menghasilkan inovasi teknologi perangkat lunak bebas baru.

Pertama buka VMware Workstation 10




Klik Create a New Virtual Machine > Klik Typical > klik next
mudian pilih Installer Disc image file , karena saya menggunakan File Iso , namun jika anda menggunkan CD / DVD pilih lah yang Installer disc.
Kemudian browse file Iso.

 gambar hanya contoh
Kemudian isi nama Personal Linux, Username , dan Password yang anda inginkan > Klik Next
Selanjutnya isi nama Virtual Mesin ini , anda bebas memberi nama yang anda suka, kemudian biarkan folder lokasi penginstallan tetap default untuk mempermudah > klik next



etelah Virtual Mesin siap , klik Finish. Anda dapat merubah spesifikasi ini kapan saja setelah penginstalan.
Kemudian penginstalan akan dilanjutkan di dalam VMware, dan penginstalan sama seperti menginstall OS biasa