Rabu, 08 Desember 2010

File System Pada Windows dan LINUX




Akhirnya nulis kembali nih di blog, pada edisi kali ini hal yang akan diusut-usut ialah mengenai beberapa file system yang sering kita jumpai dikala kita menggunakan komputer. Disini akan sedikit dijelaskan mengenai beberapa file system yang ada di sistem operasi windows dan linux.
Pada sistem operasi windows, kita akan disuguhi tiga file system yang sampai saat ini dimiliki oleh windows. File system tersebut ialah FAT 16, FAT 32, dan NTFS.

•FAT 16 (File Allocation Table 16)

Sebenarnya sebelum FAT16, telebih dahulu sistem file di MS-DOS FAT12, tapi karena banyak kekurangan makanya muncul FAT16, FAT16 sendiri sudah dikenalkan oleh MS-DOS pada tahun 1981. Awalnya, sistem ini didesain umtuk mengatur file fi floppy disk, dan sudah mengalami beberapa kali perubahan, sehingga digunakan untuk mengatur file harddisk. Keuntungan FAT16 adalah kompatibel hampir di semua sistem operasi, baik Windows 95/98/ME, OS/2, Linux dan bahkan Unix. Namun dibalik itu semua masalah paling besar dari FAT16 adalah mempunyai kapasitas tetap jumlah cluster dalam partisi, jadi semakin besar harddisk, maka ukuran cluster akan semakin besar. selain itu kekurangan FAT16 salah satunya tidak mendukung kompresi, enkripsi dan kontrol akses dalam partisi.

•FAT 32 (File Allocation Table 32)
Setelah FAT 16 dikenali oleh para pengguna sistem operasi, muncul kembali file system berikutnya yang diberi nama FAT 32. FAT32 mulai di kenal pada sistim Windows 95 SP2, dan merupakan pengembangan lebih dari FAT16. FAT32 menawarkan kemampuan menampung jumlat cluster yang lebih besar dalam partisi. Selain itu juga mengembangkan kemampuan harddisk menjadi lebih baik dibanding FAT16. Namun FAT32 memiliki kelemahan yang tidak di miliki FAT16 yaitu terbatasnya Operating System yang bisa mengenal FAT32. Tidak seperti FAT16 yang bisa di kenal oleh hampir semua system operasi, namun itu bukan masalah apabila anda menjalankan FAT32 di Windows XP karena Windows XP tidak peduli file sistim apa yang di gunakan pada partisi.

•NTFS (New Technology File System)
NTFS di kenalkan pertama pada Windows NT dan merupakan file system yang benar benar berbeda di banding teknologi FAT. NTFS menawarkan security yang jauh lebih baik , kompresi file , cluster dan bahkan support enkripsi data. NTFS merupakan file system standar untuk Windows Xp dan apabila anda melakukan upgrade Windows biasa anda akan di tanyakan apakah ingin mengupgrade ke NTFS atau tetap menggunakan FAT. Namun jika anda sudah melakukan upgrade pada Windows Xp dan tidak melakukan perubahan NTFS itu bukan masalah karena anda bisa mengkonversinya ke NTFS kapanpun. Namun ingat bahwa apabila anda sudah menggunakan NTFS akan muncul masalah jika ingin downgrade ke FAT tanpa kehilangan data.
Pada Umumnya NTFS tidak kompatibel dengan Operating System lain yang terinstall di komputer yang sama (Double OS) bahkan juga tidak terdetek apabila anda melakukan StartUp Boot menggunakan floopy. Untuk itu sangat disarankan kepada anda untuk menyediakan partisi yang kecil saja yang menggunakan file system FAT di awal partisi. Partisi ini dapat anda gunakan untuk menyimpan Recovery Tool apabila mendapat masalah.

Sedangkan pada sistem operasi LINUX kita akan menjumpai tipe file system seperti Ext 2, Ext 3, Ext 4. Sekarang kita akan bahas mengenai file system pada LINUX seperti yang sudah dijabarkan tadi. Ok kita lanjutkan membahas file system pada LINUX ini, untuk lebih jelasnya kita baca-baca aja keterangan dibawah ini.

•Ext 2 (2rd Extended)
EXT2 adalah file sistem yang ampuh di linux. EXT2 juga merupakan salah satu file sistem yang paling ampuh dan menjadi dasar dari segala distribusi linux. Pada EXT2 file sistem, file data disimpan sebagai data blok. Data blok ini mempunyai panjang yang sama dan meskipun panjangnya bervariasi diantara EXT2 file sistem, besar blok tersebut ditentukan pada saat file sistem dibuat dengan perintah mk2fs. Jika besar blok adalah 1024 bytes, maka file dengan besar 1025 bytes akan memakai 2 blok. Ini berarti kita membuang setengah blok per file.
EXT2 mendefinisikan topologi file sistem dengan memberikan arti bahwa setiap file pada sistem diasosiasiakan dengan struktur data inode. Sebuah inode menunjukkan blok mana dalam suatu file tentang hak akses setiap file, waktu modifikasi file, dan tipe file. Setiap file dalam EXT2 file sistem terdiri dari inode tunggal dan setiap inode mempunyai nomor identifikasi yang unik. Inode-inode file sistem disimpan dalam tabel inode. Direktori dalam EXT2 file sistem adalah file khusus yang mengandung pointer ke inode masing-masing isi direktori tersebut.

•Ext 3 (3rd Extended)
EXT3 adalah peningkatan dari EXT2 file sistem. Peningkatan ini memiliki beberapa keuntungan, diantaranya:

1.Setelah kegagalan sumber daya, “unclean shutdown”, atau kerusakan sistem,
EXT2 file sistem harus melalui proses pengecekan dengan program e2fsck.
Proses ini dapat membuang waktu sehingga proses booting menjadi sangat lama,
khususnya untuk disk besar yang mengandung banyak sekali data. Dalam proses
ini, semua data tidak dapat diakses.

Jurnal yang disediakan oleh EXT3 menyebabkan tidak perlu lagi dilakukan
pengecekan data setelah kegagalan sistem. EXT3 hanya dicek bila ada kerusakan
hardware seperti kerusakan hard disk, tetapi kejadian ini sangat jarang.
Waktu yang diperlukan EXT3 file sistem setelah terjadi “unclean shutdown”
tidak tergantung dari ukuran file sistem atau banyaknya file, tetapi
tergantung dari besarnya jurnal yang digunakan untuk menjaga konsistensi.
Besar jurnal default memerlukan waktu kira-kira sedetik untuk pulih,
tergantung kecepatan hardware.

2.Integritas data
EXT3 menjamin adanya integritas data setelah terjadi kerusakan atau “unclean
shutdown”. EXT3 memungkinkan kita memilih jenis dan tipe proteksi dari data.
3.Kecepatan
Daripada menulis data lebih dari sekali, EXT3 mempunyai throughput yang lebih
besar daripada EXT2 karena EXT3 memaksimalkan pergerakan head hard disk. Kita
bisa memilih tiga jurnal mode untuk memaksimalkan kecepatan, tetapi
integritas data tidak terjamin.
4.Mudah dilakukan migrasi
Kita dapat berpindah dari Ext2 ke sistem Ext3 tanpa melakukan format ulang.

•Ext 4 (4rd Extended)
Ext4 dirilis secara komplit dan stabil berawal dari kernel 2.6.28 jadi apabila distro anda yang secara default memiliki versi kernel tersebuat atau di atas nya otomatis system anda sudah support ext4 (dengan catatan sudah di include kedalam kernelnya) selain itu versi e2fsprogs harus mengunakan versi 1.41.5 atau lebih.
Apabila anda masih menggunakan fs ext3 dapat mengkonversi ke ext4 dengan beberapa langkah yang tidak terlalu rumit.
Keuntungan yang bisa didapat dengan mengupgrade filesystem ke ext4 dibanding ext3 adalah mempunyai pengalamatan 48-bit block yang artinya dia akan mempunyai 1EB = 1,048,576 TB ukuran maksimum filesystem dengan 16 TB untuk maksimum file size nya,Fast fsck,Journal checksumming,Defragmentation support.

Segitu aja dulu deh yang ditulis pada kesempatan kali ini, terimakasih atas perhatian dan partisipasi serta apresiasi.

referensi : http://firstiawan.student.fkip.uns.ac.id/2010/08/28/file-format-sistem-windows/

powered by : keykaka.blogspot.com

Selasa, 23 November 2010

Sistem Operasi : Proses pada LINUX

Abstract : Apa yang ada dalam tulisan ini merupakan suatu konsep dasar proses pada sistem operasi khususnya sistem operasi linux seperti identifikasi proses, pembuatan proses dan komunikasi proses menggunakan signal. Setelah membaca tulisan ini diharapkan pembaca memiliki gambaran yang cukup jelas tentang konsep dasar proses pada sistem operasi linux.

1.Pendahuluan
Sebelum kita memasuki konsep proses dalam linux, alangkah lebih baiknya kita mengenal dahulu apa itu proses. Proses merupakan konsep pokok pada sistem operasi, karena salah satu tugas utama sistem operasi adalah bagaimana mengatur proses-proses yang berjalan di sistem. Sebenarnya apakah proses itu ?
Inilah beberapa definisi proses pada sistem operasi :
a.Program yang sedang dalam keadaan dieksekusi
b.Unit kerja terkecil yang secara individu memiliki sumber daya dan dijadwalkan oleh sistem operasi.
Sistem operasi mengolah seluruh proses yang ada di sistem dan bertugas mengalokasikan sumber daya – sumber daya ke proses yang membutuhkan sesuai dengan kebijaksanaan tertentu. Sumber daya yang dibutuhkan proses diantaranya CPU, memori, file serta I/O device.

2.Keadaan Proses
Keadaan proses disebut sebagai status proses yang terdiri dari :
a.Status New yaitu status dimana proses sedang dibuat.
b.Status Ready yaitu status dimana proses dieksekusi tetapi CPU belum tersedia karena sedang mengerjakan prses lain.
c.Status Waiting yaitu status dimana proses sedang menunggu suatu kejadian tertentu.
d.Status Running yaitu status dimana proses dieksekusi. Pada status ini CPU sedang mengeksekusi intruksi-intruksi pada proses.
e.Status Terminated yaitu status dimana proses diakhiri.

3.Konsep Pembuatan Proses
Konsep pembuatan Proses pada sistem operasi linux :
a.Setiap proses diberi nomor khusus sebagai identifikasi yang disebut process identification atau PID berupa angka integer unik.
b.Jika proses selesai maka semua sumber daya yang digunakan termasuk PID dibebaskan kembali.
c.Proses dibuat menggunakan sistem call fork() yang sering disebut forking proses.
d.System call fork() mengkopi proses pemanggil sehingga akan terdapat 2 proses yaitu:
•Proses pemanggil disebut PARENT
•Proses hasil kopian disebut CHILD
e.Proses CHILD identik dengan proses PARENT-nya tetapi memiliki PID yang berbeda.
f.Setelah proses baru berhasil dibuat eksekusi dilanjutkan secara normal di masing-masing proses pada baris setelah pemanggilan call fork().
g.Proses pemanggil dapat melakukan forking proses lebih dari satu kali sehingga memnugkinkan terdapat banyak proses CHILD yang dieksekusi.
h.Proses CHILD dapat melakukan forking proses seperti halnya PARENT sehingga dapat terbentuk struktur pohon proses.

4.Identifikasi Proses
Untuk melihat PID setiap proses di sistem, dapat digunakan perintah ps seperti
terlihat pada gambar berikut:













Gambar 1. Output ps
Pustaka GNU C telah menyediakan beberapa tipe dan fungsi untuk membaca ID proses, diantaranya:
-Tipe Data : pid_t
Tipe yang merepresentasikan ID proses, tipe data pid_t merupakan signed integer, dalam pustaka GNU tipe ini adalah int.
-Fungsi : pid_t getpid (void)
Fungsi 'getpid' mengembalikan ID proses aktif dan tidak membutuhkan argumen
-Fungsi : pid_t getppid (void)
Fungsi `getppid' (get parent pid) mengembalikan ID parent proses aktif dan tidak membutuhkan argumen
Untuk menggunakan tipe data dan fungsi diatas perlu disertakan file header types.h dan unistd.h Berikut contoh program yang yang membaca ID proses aktif dan ID proses parent-nya.
/* contoh1.c */
#include /* standard I/O */
#include /* getpid(), getppid() */
#include /* pid_t */
main() {
pid_t mypid, myparentpid; /* deklarasi variabel penampung */
mypid=getpid(); /* ambil ID proses ini */
myparentpid=getppid(); /* ambil ID parent proses ini */
/* tampilkan ID proses ini */
printf("PID Saya = %d\n",mypid);
/* tampilkan ID parent */
printf("PID PARENT Saya = %d\n",myparentpid);
}

Lakukan proses kompilasi dan Link program contoh1.c
gcc contoh1.c –o contoh1

Apabila proses kompilasi dan link sukses eksekusi program
./contoh1

PID Saya = 1028
PID PARENT Saya = 1027
Jika anda mencoba program ini maka output diatas tentunya dapat saja berbeda dengan output sistem anda. Pemanggilan fungsi pada bahasa C dapat disederhanakan dengan cara berikut:

printf("PID Saya = %d\n",getpid()); /* tampilkan PID proses ini */
printf("PID PARENT Saya = %d\n",getppid()); /* tampilkan PID parent */

5.Membuat Proses
Untuk membuat proses baru di sistem, GNU C menyediakan sistem call fork() yang disertakan pada pustaka unistd.h dengan bentuk prototype sebagai berikut :
pid_t fork (void);

fork() mengembalikan suatu besaran bertipe pidt_t yang dapat bernilai :
-1 menandakan pembuatan proses baru (child) gagal
0 menandakan proses child
selain itu merupakan proses parent dan jika variabel PID diakses berisi PID child.
Apabila operasi sukses akan terdapat 2 proses yang dieksekusi yaitu proses parent dan proses child, eksekusi akan dilanjutkan pada kedua proses setelah fork() sampai selesai. Seperti yang telah dijelaskan bahwa proses parent dan child dapat membuat proses parent dan child dapat membuat proses-proses baru yang lain sehingga terdapat banyak proses yang berjalan pada waktu bersamaan (multitasking). Berikut contoh program yang melakukan forking sebuah proses tanpa memeriksa nilai yang dikembalikan.

/* contoh2.c */
#include /* standard I/O */
#include /* fork() */
#include /* pid_t */
int main() {
printf("Hello\n"); /* tampilkan Hello */
fork(); /* buat proses child */
printf("Bye-Bye\n"); /* dieksekusi oleh parent dan child */
}

gcc contoh2.c –o contoh2

./contoh2
Hello
Bye-Bye
Bye-Bye

String “Hello” di tampilkan oleh parent sedangkan “Bye-Bye” masing- masing dieksekusi oleh parent dan child. Biar lebih jelas lagi sobat-sobat semua, ini dia ilustrasi forking proses pada program contoh2.c di atas.


Setelah menampilkan string “Hello” kelayar, eksekusi berikutnya adalah statement fork() yang akan membuat proses child, jika statement ini sukses dieksekusi maka akan terdapat 2 proses yang identik dengan PID yang berbeda. Seperti gambar berikut.

Eksekusi proses PARENT dan proses CHILD dilanjutkan di baris sesudah statement fork(), yaitu masing – masing parent dan child menampilkan string “Bye-Bye “. Demikian seterusnya sampai seluruh statement pada parent dan child dieksekusi dan kedua proses berakhir. Berikut contoh program pembuatan proses baru yang melakukan pemeriksaan nilai kembalian dari fork().

/* contoh3.c */
#include /* standard I/O */
#include /* standard library */
#include /*fork(), getpid(), getppid() */
#include /* pid_t */

int main(){
pid_t pid;
pid=fork(); /* buat proses child */
if (pid==-1){
print(“Fork gagal\n”);
exit(EXIT_FAILURE); /* exit jika gagal */
}
if (pid==0){
/* proses child */
print(“CHILD: Ini proses Child\n”);
print(“CHILD: PID saya = %d\n”,getpid());
print(“CHILD: PID parent saya = %d\n”,getppid());
} else {
/* proses parent */
print(“PARENT: Ini proses Parent\n”);
print(“PARENT: PID saya = %d\n”,getpid());
print(“PARENT: PID parent saya = %d\n”,getppid());
print(“PARENT: PID child saya = %d\n”,pid);
}
}

Blok if dapat digantikan dengan struktur switch case seperti berikut :
switch(pid) {
case -1 : print(“Fork gagal\n”);
exit(EXIT_FAILURE); /* exit jika gagal */
case 0 : /* proses child */
print(“CHILD: Ini proses Child\n”);
print(“CHILD: PID saya = %d\n”,getpid());
print(“CHILD: PID parent saya = %d\n”,getppid());
exit(EXIT_SUCCESS); /* child berakhir */
default : /* proses parent */
print(“PARENT: Ini proses Parent\n”);
print(“PARENT: PID saya = %d\n”,getpid());
print(“PARENT: PID parent saya = %d\n”,getppid());
print(“PARENT: PID child saya = %d\n”,pid);
exit(EXIT_SUCCESS); /* parent berakhir */
}

Setelah dikompilasi dan link didapat output berikut:
./contoh3

PARENT: Ini proses Parent
PARENT: PID saya = 1021
PARENT: PID parent saya = 1019
PARENT: PID child saya = 1022
CHILD : Ini proses Child
CHILD : PID saya = 1022
CHILD : PID parent saya = 1021

Output diatas memperlihatkan forking proses sukses dilakukan, sehingga terdapat 2 proses yang dieksekusi, pada proses parent variabel pid berisi PID child, sedangkan fungsi getppid() pada parent menghasilkan PID parent-nya yaitu PID dari program tempat contoh3 dieksekusi yaitu prompt shell bash. Output diatas dapat saja tidak berurutan dikarenakan quantum time suatu proses telah habis. Sistem operasi linux menggunakan quantum time untuk membatasi setiap proses yang dieksekusi. Ini terkait erat dengan algoritma penjadwalan yang digunakan yaitu Round Robin.
Nah segitu dulu deh tulisan-tulisan yang bisa aku tulis pada kesempatan kali ini, semoga bermanfaat untuk semua khalayak ramai. ^_^

Referensi :
Kuliah Umum IlmuKomputer.Com - Copyright © 2004 IlmuKomputer.Com
fajarmks@yahoo.com