Your Ad Here

Pembagian File Sistem Secara Ortogonal

Posted by Rahadian Syarif | 4:19 AM | 0 comments »

Shareable dan Unshareable


1.

Shareable

Isinya dapat dishare (digunakan bersama) dengan sistem lain,
gunanya untuk menghemat tempat.
2.

Unshareable

Isinya tidak dapat dishare(digunakan bersama) dengan sistem lain,
biasanya untuk alasan keamanan.


Variabel dan Static

1.

Variabel

Isinya sering berubah-ubah.
2.

Static

Sekali dibuat, kecil kemungkinan isinya akan berubah. Bisa berubah
jika ada campur tangan sistem admin.

Load dan Eksekusi Program

Posted by Rahadian Syarif | 4:15 AM | 0 comments »

Load dan Eksekusi Program

1.

Penempatan program dalam memori

Linux membuat tabel-tabel fungsi untuk loading program, memberikan kesempatan kepada setiap fungsi untuk meload file yang diberikan saat sistem call exec dijalankan. Pertama-tama file binari dari page ditempatkan pada memori virtual. Hanya pada saat program mencoba mengakses page yang telah diberikan terjadi page fault, maka page akan diload ke memori fisik.
2.

Linking statis dan linking dinamis

1.

Linking statis:

librari-librari yang digunakan oleh program ditaruh secara
langsung dalam file binari yang dapat dieksekusi. Kerugian dari linking
statis adalah setiap program harus mengandung kopi library sistem yang umum.
2.

Linking dinamis:

hanya sekali meload librari sistem menuju memori. Linking dinamis
lebih efisien dalam hal memori fisik dan ruang disk.

Pengaksesan Memori Virtual Bersama dan Efisiensi

Posted by Rahadian Syarif | 4:12 AM | 0 comments »

Pengaksesan memori virtual bersama

Memori virtual mempermudah proses untuk berbagi memori saat semua akses ke memori menggunakan tabel page. Proses yang akan berbagi memori virtual yang sama, page fisik yang sama direference oleh banyak proses. Tabel page untuk setiap proses mengandung anggota page table yang mempunyai PFN fisik yang sama.

Efisiensi

Desainer dari CPU dan sistem operasi berusaha meningkatkan kinerja dari sistem. Disamping membuat prosesor, memori semakin cepat, jalan terbaik adalah manggunakan cache. Berikut ini adalah beberapa cache dalam manajemen memori di linux:

1.

Page Cache

Digunakan untuk meningkatkan akses ke image dan data dalam disk. Saat dibaca dari disk, page dicache di page cache. Jika page ini tidak dibutuhkan lagi pada suatu saat, tetapi dibutuhkan lagi pada saat yang lain, page ini dapat segera diambil dari page cache.

2.

Buffer Cache

Page mungkin mengandung buffer data yang sedang digunakan oleh kernel, device driver dan lain-lain. Buffer cache tampak seperti daftar buffer. Contohnya, device driver membutuhkan buffer 256 bytes, adalah lebih cepat untuk mengambil buffer dari buffer cache daripada mengalokasikan page fisik lalu kemudian memecahnya menjadi 256 bytes buffer-buffer.

3.

Swap Cache

Hanya page yang telah ditulis ditempatkan dalam swap file. Selama page ini tidak mengalami perubahan setelah ditulis ke dalam swap file, maka saat berikutnya page di swap out tidak perlu menuliskan kembali jika page telah ada di swap file. Di sistem yang sering mengalami swap, ini dapat menghemat akses disk yang tidak perlu.

Salah satu implementasi yang umum dari hardware cache adalah di CPU, cache dari anggota tabel page. Dalam hal ini, CPU tidak secara langsung membaca tabel page, tetap mencache terjemahan page yang dibutuhkan.

Swaping

Posted by Rahadian Syarif | 4:11 AM | 0 comments »

Swaping

Jika memori fisik tiba-tiba habis dan proses ingin memindahkan sebuah page ke memori, sistem operasi harus memutuskan apa yang harus dilakukan. Sistem operasi harus adil dalam mambagi page fisik dalam sistem diantara proses yang ada, bisa juga sistem operasi menghapus satu atau lebih page dari memori untuk membuat ruang untuk page baru yang dibawa ke memori. Cara page virtual dipilih dari memori fisik berpengaruh pada efisiensi sistem.

Linux menggunakan tehnik page aging agar adil dalam memilih page yang akan dihapus dari sistem. Ini berarti setiap page memiliki usia sesuai dengan berapa sering page itu diakses. Semakin sering sebuah page diakses, semakin muda page tersebut. Page yang tua adalah kandidat untuk diswap.

Demand Paging

Posted by Rahadian Syarif | 4:09 AM | 0 comments »

Demand Paging

Cara untuk menghemat memori fisik adalah dengan hanya meload page virtual yang sedang digunakan oleh program yang sedang dieksekusi. Tehnik dimana hanya meload page virtual ke memori hanya ketika program dijalankan disebut demand paging.

Ketika proses mencoba mengakses alamat virtual yang tidak ada di dalam memori, CPU tidak dapat menemukan anggota tabel page. Contohnya, dalam gambar, tidak ada anggota tabel page untuk proses x untuk virtual PFN 2 dan jika proses x ingin membaca alamat dari virtual PFN 2, CPU tidak dapat menterjemahkan alamat ke alamat fisik. Saat ini CPU bergantung pada sistem operasi untuk menangani masalah ini. CPU menginformasikan kepada sistem operasi bahwa page fault telah terjadi, dan sistem operasi membuat proses menunggu selama sistem operasi menagani masalah ini.

CPU harus membawa page yang benar ke memori dari image di disk. Akses disk membutuhkan waktu yang sangat lama dan proses harus menunggu sampai page selesai diambil. Jika ada proses lain yang dapat dijalankan, maka sistem operai akan memilihnya untuk kemudian dijalankan. page yang diambil kemudian dituliskan di dalam page fisik yang masih kosong dan anggota dari virtual PFN ditambahkan dalam tabel page proses. Proses kemudian dimulai lagi pada tempat dimana page fault terjadi. Saat ini terjadi pengaksesan memori virtual, CPU membuat penerjemahan dan kemudian proses dijalankan kembali.

Demand paging terjadi saat sistem sedang sibuk atau saat image pertama kali diload ke memori. Mekanisme ini berarti sebuah proses dapat mengeksekusi image dimana hanya sebagian dari image tersebut terdapat dalam memori fisik.

Manajemen Memori Fisik di Linux

Posted by Rahadian Syarif | 4:07 AM | 0 comments »

Manajemen Memori Fisik

Bagian ini menjelaskan bagaimana linux menangani memori
dalam sistem. Memori manajemen merupakan salah satu
bagian terpenting dalam sistem operasi. Karena adanya
keterbatasan memori, diperlukan suatu strategi dalam
menangani masalah ini. Jalan keluarnya adalah dengan
menggunakan memori virtual. Dengan memori virtual,
memori tampak lebih besar daripada ukuran yang sebenarnya.

Dengan memori virtual kita dapat:

1.

Ruang alamat yang besar

Sistem operasi membuat memori terlihat lebih besar
daripada ukuran memori sebenarnya. Memori virtual
bisa beberapa kali lebih besar daripada memori fisiknya.
2.

Pembagian memori fisik yang dil

Manajemen memori membuat pembagian yang adil dalam
pengalokasian memori antara proses-proses.
3.

Perlindungan

Memori manajemen menjamin setiap proses dalam sistem
terlindung dari proses-proses lainnya. Dengan demikian,
program yang crash tidak akan mempengaruhi proses lain
dalam sistem tersebut.
4.

Penggunaan memori virtual bersama

Memori virtual mengijinkan dua buah proses berbagi memori
diantara keduanya, contohnya dalam shared library.
Kode library dapat berada di satu tempat, dan tidak
dikopi pada dua program yang berbeda.

Symmetric Multiprocessing

Posted by Rahadian Syarif | 5:17 AM | 0 comments »

Kernel Linux 2.0 adalah kernel Linux pertama yang stabil untuk mendukung perangkat keras symmetric multiprocessor (SMP). Proses maupun thread yang berbeda dapat dieksekusi secara paralel dengan processor yang berbeda. Tapi bagaimana pun juga untuk menjaga kelangsungan kebutuhan sinkronisasi yang tidak dapat dipreemptive dari kernel, penerapan SMP ini menerapkan aturan dimana hanya satu processor yang dapat dieksekusi dengan kode mode kernel pada suatu saat. SMP menggunakan kernel spinlock tunggal untuk menjalankan aturan ini. Spinlock ini tidak memunculkan permasalahan untuk pekerjaan yang banyak menghabiskan waktu untuk menunggu proses komputasi, tapi untuk pekerjaan yang melibatkan banyak aktifitas kernel, spinlock dapat menjadi sangat mengkhawatirkan.

Sebuah proyek yang besar dalam pengembangan kernel Linux 2.1 adalah untuk menciptakan penerapan SMP yang lebih masuk akal, dengan membagi kernel spinlock tunggal menjadi banyak kunci yang masing - masing melindungi terhadap masuknya kembali sebagian kecil data struktur kernel. Dengan menggunakan teknik ini, pengembangan kernel yang terbaru mengijinkan banyak processor untuk dieksekusi oleh kode mode kernel secara bersamaan.

Sinkronisasi Kernel

Posted by Rahadian Syarif | 5:10 AM | 0 comments »

Sinkronisasi Kernel

Cara penjadwalan kernel pada operasinya secara mendasar berbeda dengan cara penjadwalan suatu proses. Terdapat dua cara agar sebuah permintaan akan eksekusi kernel-mode dapat terjadi. Sebuah program yang berjalan dapat meminta service sistem operasi, dari system call ataupun secara implisit (untuk contoh:ketika page fault terjadi). Sebagai alternatif, device driver dapat mengirim interupsi perangkat keras yang menyebabkan CPU memulai eksekusi kernel-define handler untuk suatu interupsi.

Problem untuk kernel muncul karena berbagai tasks mungkin mencoba untuk mengakses struktur data internal yang sama. Jika hanya satu kernel task ditengah pengaksesan struktur data ketika interupsi service routine dieksekusi, maka service routine tidak dapat mengakses atau merubah data yang sama tanpa resiko mendapatkan data yang rusak. Fakta ini berkaitan dengan ide dari critical section (baca sinkronisasi proses).

Sehagai hasilnya, sinkronisasi kernel melibatkan lebih banyak dari hanya penjadwalan proses saja. sebuah framework dibutuhkan untuk memperbolehkan kernel's critical sections berjalan tanpa diinterupsi oleh critical section yang lain.

Solusi pertama yang diberikan oleh linux adalah membuat normal kernel code nonpreemptible (baca proses). Biasanya, ketika sebuah timer interrupt diterima oleh kernel, membuat penjadwalan proses, kemungkinan besar akan menunda eksekusi proses yang sedang berjalan pada saat itu dan melanjutkan menjalankan proses yang lain. Biar bagaimanapun, ketika timer interrupt diterima ketika sebuah proses mengeksekusi kernel-system service routine, penjadwalan ulang tidak dilakukan secara mendadak; cukup, kernel need_resched flag terset untuk memberitahu kernel untuk menjalankan penjadwalan kembali setelah system call selesai dan control dikembalikan ke user mode.

Sepotong kernel code mulai dijalankan, akan terjamin bahwa itu adalah satu-satunya kernel code yang dijalankan sampai salah satu dari aksi dibawah ini muncul:

*

interupsi
*

page fault
*

kernel code memanggil fungsi penjadwalan sendiri

Interupsi adalah suatu masalah bila mengandung critical section-nya sendiri. Timer interrupt tidak secara langsung menyebabkan terjadinya penjadwalan ulang suatu proses; hanya meminta suatu jadwal untuk dilakukan kemudian, jadi kedatangan suatu interupsi tidak mempengaruhi urutan eksekusi dari noninterrupt kernel code . Sekali interrupt service selesai, eksekusi akan menjadi lebih simpel untuk kembali ke kernel code yang sedang dijalankan ketika interupsi mengambil alih.

Page faults adalah suatu masalah yang potensial; jika sebuah kernel routine mencoba untuk membaca atau menulis ke user memory, akan menyebabkan terjadinyapage fault yang membutuhkan I/O disk untuk selesai, dan proses yang berjalan akan di tunda sampai I/O selesai. Pada kasus yang
hampir sama, jika system call service routine memanggil penjadwalan ketika sedang berada di mode kernel, mungkin secara eksplisit dengan membuat direct call pada code penjadwalan atau secara implisit dengan memanggil sebuah fungsi untuk menunggu I/O selesai, setelah itu proses akan menunggu dan penjadwalan ulang akan muncul. Ketika proses jalan kembali, proses tersebut akan melanjutkan untuk mengeksekusi dengan mode kernel, melanjutkan intruksi setelah call (pemanggilan) ke penjadwalan.

Kernel code dapat terus berasumsi bahwa ia tidak akan diganggu (preemted) oleh proses lainnya dan tidak ada tindakan khusus dilakukan untuk melindungi critical section. Yang diperlukan adalah critical section tidak mengandung referensi ke user memory atau menunggu I/O selesai.

Teknik kedua yang di pakai Linux untuk critical section yang muncul pada saat interrupt service routines . Alat dasarnya adalah perangkat keras interrupt-control pada processor. Dengan meniadakan interupsi pada saat critical section, maka kernel menjamin bahwa ia dapat melakukan proses tanpa resiko terjadinya ketidak-cocokan akses dari struktur data yang di share.

Untuk meniadakan interupsi terdapat sebuah pinalti. Pada arsitektur perangkat keras kebanyakan, pengadaan dan peniadaan suatu interupsi adalah sesuatu yang mahal. Pada prakteknya, saat interupsi ditiadakan, semua I/O ditunda, dan device yang menunggu untuk dilayani akan menunggu sampai interupsi diadakan kembali, sehingga kinerja meningkat. Kernel Linux menggunakan synchronization architecture yang mengijinkan critical section yang panjang dijalankan untuk seluruh durasinya tanpa mendapatkan peniadaan interupsi. Kemampuan secara spesial berguna pada networking code : Sebuah interupsi pada network device driver dapat memberikan sinyal kedatangan dari keseluruhan paket network, dimana akan menghasilkan code yang baik dieksekusi untuk disassemble, route, dan forward paket ditengah interrupt service routine.

Linux mengimplementasikan arsitektur ini dengan memisahkan interrupt service routine menjadi dua seksi: the top half dan the bottom half. The top half adalah interupsi yang normal, dan berjalan dengan rekursif interupt ditiadakan ( interupsi dengan prioritas yang lebih tinggi dapat menginterupsi routine, tetapi interupsi dengan prioritas yang sama atau lebih
rendah ditiadakan). The bottom half service routine berjalan dengan semua interupsi diadakan, oleh miniatur penjadwalan yang menjamin bahwa bottom halves tidak akan menginterupsi dirinya sendiri. The bottom half scheduler dilakukan secara otomatis pada saat interupt service routine ada.

Pemisahan itu berarti bahwa kegiatan proses yang komplek dan harus selesai diberi tanggapan untuk suatu interupsi dapat diselesaikan oleh kernel tanpa kecemasan tentang diinterupsi oleh interupsi itu sendiri. Jika interupsi lain muncul ketika bottom half dieksekusi, maka interupsi dapat meminta kepada bottom half yang sama untuk dieksekusi, tetapi eksekusinya akan dilakukan setelah proses yang sedang berjalan selesai. Setiap eksekusi dari bottom half dapat di interupsi oleh top half tetapi tidak dapat diinterupsi dengan bottom half yang mirip.

Arsitektur Top-half bottom-half komplit dengan mekanisme untuk meniadakan bottom halver yang dipilih ketika dieksekusi secara normal, foreground kernel code. Kernel dapat meng-codekan critical section secara mudah dengan mengunakan sistem ini: penanganan interupsi dapat meng-codekan critical section-nya sebagai bottom halves, dan ketika foreground kernel ingin masuk ke critical section, setiap bottom halves ditiadakan untuk mencegah critical section yang lain diinterupsi. Pada akhir dari critical section, kernel dapat kembali mengadakan bottom halves dan menjalankan bottom half tasks yang telah di masukkan kedalam queue oleh top half interrupt service routine pada saat critical section .

Penjadwalan Proses Linux

Posted by Rahadian Syarif | 5:06 AM | 1 comments »

Penjadwalan Proses Linux

Ketika kernel telah mencapai titik penjadwalan ulang, entah karena terjadi interupsi penjadwalan ulang maupun karena proses kernel yang sedang berjalan telah diblokir untuk menunggu beberapa signal bangun, harus memutuskanproses selanjutnya yang akan dijalankan. Linux telah memiliki dua algoritma penjadwalan proses yang terpisah satu sama lain. Algoritma yang pertama adalah algoritma time-sharing untuk penjadwalan preemptive yang adil diantara sekian banyak proses. Sedangkan algoritma yang kedua didesain untuk tugas real-time dimana proritas mutlak lebih utama daripada keadilan mendapatkan suatu pelayanan.

Bagian dari tiap identitas proses adalah kelas penjadwalan, yang akan menentukan algoritma yang digunakan untuk tiap proses. Kelas penjadwalan yang digunakan oleh Linux, terdapat dalam standar perluasan POSIX untuk sistem komputer waktu nyata.

Untuk proses time-sharing, Linux menggunakan teknik prioritas, sebuah algoritma yang berdasarkan pada kupon. Tiap proses memiliki sejumlah kupon penjadwalan; dimana ketika ada kesempatan untuk menjalankan sebuah tugas, maka proses dengan kupon terbanyaklah yang mendapat giliran. Setiap kali terjadi interupsi waktu, proses yang sedang berjalan akan kehilangan satu kupon; dan ketika kupon yang dimiliki sudah habis maka proses itu akan ditunda dan proses yang lain akan diberikan kesempatan untuk masuk.

Jika proses yang sedang berjalan tidak meiliki kupon sama sekali, linux akan melakukan operasi pemberian kupon, memberikan kupon kepada tiap proses dalam sistem, dengan aturan main: kupon = kupon / 2 + prioritas Algoritma ini cenderung untuk menggabungkan dua faktor yang ada: sejarah proses dan prioritas dari proses itu sendiri. Satu setengah dari kupon yang dimiliki sejak operasi pembagian kupon terakhir akan tetap dijaga setelah algoritma
telah dijalankan, menjaga beberapa sejarah sikap proses. Proses yang berjalan sepanjang waktu akan cenderung untukmenghabiskan kupon yang dimilikinya dengan cepat, tapi proses yang lebih banyak menunggu dapat mengakumulasi kuponnya dari. Sistem pembagian kupon ini, akan secara otomatis memberikan proritas yang tinggi ke proses I/O bound ataupun interaktif, dimana respon yang cepat sangat diperlukan.

Kegunaan dari proses pemberian prioritas dalam menghitung kupon baru, membuat prioritas dari suatu proses dapat ditingkatkan. Pekerjaan background batch dapat diberikan prioritas yang rendah; proses tersebut akan secara otomatis menerima kupon yang lebih sedikit dibandingkan dengan pekerjaan yang interaktif, dan juga akan menerima persentase waktu CPU yang lebih sedikit dibandingan dengan tugas yang sama dengan prioritas yang lebih tinggi. Linux menggunakan sistem prioritas ini untuk menerapkan mekanisme standar pembagian prioritas proses yang lebih baik.

Penjadwalan waktu nyata Linux masih tetap lebih sederhana. Linux, menerapkan dua kelas penjadwalan waktu nyata yang dibutuhkan oleh POSIX 1.b: First In First Out dan round-robin. Pada keduanya, tiap proses memiliki prioritas sebagai tambahan kelas penjadwalannya. Dalam penjadwalan time-sharing , bagaimanapun juga proses dengan prioritas yang berbeda dapat bersaing dengan beberapa pelebaran; dalam penjadwalan waktu nyata, si pembuat jadwal selalu menjalankan proses dengan prioritas yang tinggi. Diantara proses dengan prioritas yang sama, maka proses yang sudah menunggu lama, akan dijalankan. Perbedaan satu - satunya antara penjadwalan FIFO dan round-robin adalah proses FIFO akan melanjutkan prosesnya sampai keluar ataupun diblokir, sedangkan proses round-robin akan dipreemptivekan setelah beberapa saat dan akan dipindahkan ke akhir antrian, jadi proses round-robin dengan prioritas yang sama akan secara otomatis membagi waktu jalan antar mereka sendiri.

Perlu diingat bahwa penjadwalan waktu nyata di Linux memiliki sifat yang lunak. Pembuat jadwal Linux menawarkan jaminan yang tegas mengenai prioritas relatif dari proses waktu nyata, tapi kernel tidak menjamin seberapa cepat penjadwalan proses waktu-nyata akan dijalankan pada saat proses siap dijalankan. Ingat bahwa kode kernel Linux tidak akan pernah bisa dipreemptive oleh kode mode pengguna. Apabila terjadi interupsi yang membangunkan proses waktu nyata, sementara kernel siap untuk mengeksekusi sebuah sistem call sebagai bagian proses lain, proses waktu nyata harus menunggu sampai sistem call yang sedang dijalankan selesai atau diblokir.

Penjadwalan

Posted by Rahadian Syarif | 5:04 AM | 0 comments »

Penjadwalan

Penjadwalan adalah suatu pekerjaan yang dilakukan untuk mengalokasikan CPU time untuk tasks yang berbeda-beda dalam sistem operasi. Pada umumnya, kita berfikir penjadwalan sebagai menjalankan dan menginterupsi suatu proses, untuk linux ada aspek lain yang penting dalam penjadwalan: seperti menjalankan dengan berbagai kernel tasks . Kernel tasks meliputi task yang diminta oleh proses yang sedang dijalankan dan tasks yand dieksekusi internal menyangkut device driver yang berkepentingan.

Virtual Memory di Linux

Posted by Rahadian Syarif | 4:10 AM | 0 comments »

Memori Virtual di Linux..??


Memori fisik dan memori virtual dibagi menjadi bagian-bagian yang disebut page. Page ini memiliki ukuran yang sama besar. Tiap page ini punya nomor yang unik, yaitu Page Frame Number (PFN). Untuk setiap instruksi dalam program, CPU melakukan mapping dari alamat virtual ke memori fisik yang sebenarnya.

Penerjemahan alamat di antara virtual dan memori fisik dilakukan oleh CPU menggunakan tabel page untuk proses x dan proses y. Ini menunjukkan virtial PFN 0 dari proses x dimap ke memori fisik PFN 1. Setiap anggota tabel page mengandung informasi berikut ini:

1. Virtual PFN
2. PFN fisik
3. informasi akses page dari page tersebut


Untuk menerjemahkan alamat virtual ke alamat fisik, pertama-tama CPU harus menangani alamat virtual PFN dan offsetnya di virtual page. CPU mencari tabel page proses dan mancari anggota yang sesuai degan virtual PFN. Ini memberikan PFN fisik yang dicari. CPU kemudian mengambil PFN fisik dan mengalikannya dengan besar page untuk mendapat alamat basis page tersebut di dalam memori fisik. Terakhir, CPU menambahkan offset ke instruksi atau data yang dibutuhkan. Dengan cara ini, memori virtual dapat dimap ke page fisik dengan urutan yang teracak.

Resolusi Konflik Linux

Posted by Rahadian Syarif | 4:07 AM | 0 comments »

Resolusi Konflik

Keanekaragaman konfigurasi perangkat keras komputer serta driver yang mungkin terdapat pada sebuah komputer pribadi telah menjadi suatu masalah tersendiri. Masalah pengaturan konfigurasi perangkat keras tersebut menjadi semakin kompleks akibat dukungan terhadap device driver yang modular, karena device yang aktif pada suatu saat bervariasi.

Linux menyediakan sebuah mekanisme penyelesaian masalah untuk membantu arbitrasi akses terhadap perangkat keras tertentu. Tujuan mekanisme tersebut adalah untuk mencegah modul berebut akses terhadap suatu perangkat keras, mencegah autoprobes mengusik keberadaan driver yang telah ada, menyelesaikan konflik di antara sejumlah driver yang berusaha mengakses perangkat keras yang sama.

Kernel membuat daftar alokasi sumber daya perangkat keras. Ketika suatu driver hendak mengakses sumber daya melalui Input-Output port, jalur interrupt, ataupun kanal DMA, maka driver tersebut diharapkan mereservasi sumber daya tersebut pada basis data kernel terlebih dahulu. Jika reservasinya ditolak akibat ketidaktersediaan sumber daya yang diminta, maka modul harus memutuskan apa yang hendak dilakukan selanjutnya. Jika tidak dapat melanjutkan, maka modul tersebut dapat dihapus.

Modul Kernel Linux

Posted by Rahadian Syarif | 4:04 AM | 0 comments »

Apakah Modul Kernel Linux itu?

Modul kernel Linux adalah bagian dari kernel Linux yang dapat dikompilasi, dipanggil dan dihapus secara
terpisah dari bagian kernel lainnya saat dibutuhkan. Modul kernel dapat menambah fungsionalitas kernel tanpa perlu me-reboot sistem. Secara teori tidak ada yang dapat membatasi apa yang dapat dilakukanoleh modul kernel. Kernel modul dapat mengimplementasikan antara lain device driver, sistem berkas, protokol jaringan.

Modul kernel Linux memudahkan pihak lain untuk meningkatkan fungsionalitas kernel tanpa harus membuat sebuah kernel monolitik dan menambahkan fungsi yang mereka butuhkan langsung ke dalam image dari kernel. Selain hal tersebut akan membuat ukuran kernel menjadi lebih besar, kekurangan lainnya adalah mereka harus membangun dan me-reboot kernel setiap saat hendak menambah fungsi baru. Dengan adanya modul maka setiap pihak dapat dengan mudah menulis fungsi-fungsi baru dan bahkan mendistribusikannya sendiri, di luar GPL.

Kernel modul juga memberikan keuntungan lain yaitu membuat sistem Linux dapat dinyalakan dengan kernel standar yang minimal, tanpa tambahan device driver yang ikut dipanggil. Device driver yang dibutuhkan dapat dipanggil kemudian secara eksplisit maupun secara otomatis saat dibutuhkan.

Terdapat tiga komponen untuk menunjang modul kernel Linux. Ketiga komponen tersebut adalah manajemen modul, registrasi driver, dan mekanisme penyelesaian konflik. Berikut akan dibahas ketiga komponen pendukung tersebut.

Registrasi Driver

Posted by Rahadian Syarif | 3:44 AM | 0 comments »

Untuk membuat modul kernel yang baru dipanggil berfungsi, bagian dari kernel yang lain harus mengetahui keberadaan dan fungsi baru tersebut. Kernel membuat tabel dinamis yang berisi semua driver yang telah diketahuinya dan menyediakan serangkaian routines untuk menambah dan menghapus driver dari tabel tersebut. Routines ini yang bertanggungjawab untuk mendaftarkan fungsi modul baru tersebut.

Hal-hal yang masuk dalam tabel registrasi adalah:

* device driver
* sistem berkas
* protokol jaringan
* format binari

Manajemen Kernel Linux

Posted by Rahadian Syarif | 3:19 AM | 0 comments »

Manajemen modul akan mengatur pemanggilan modul ke dalam memori dan berkomunikasi dengan bagian
lainnya dari kernel. Memanggil sebuah modul tidak hanya memasukkan isi binarinya ke dalam memori kernel, namun juga harus dipastikan bahwa setiap rujukan yang dibuat oleh modul ke simbol kernel ataupun titik masukan diperbaharui untuk menunjuk ke lokasi yang benar di alamat kernel. Linux membuat tabel simbol internal di kernel. Tabel ini tidak memuat semua simbol yang didefinisikan di kernel saat kompilasi, namun simbol-simbol tersebut harus diekspor secara eksplisit oleh kernel. Semua hal ini diperlukan untuk penanganan rujukan yang dilakukan oleh modul terhadap simbol-simbol.

Pemanggilan modul dilakukan dalam dua tahap. Pertama, utilitas pemanggil modul akan meminta kernel untuk mereservasi tempat di memori virtual kernel untuk modul tersebut. Kernel akan memberikan alamat memori yang dialokasikan dan utilitas tersebut dapat menggunakannya untuk memasukkan kode mesin dari modul tersebut ke alamat pemanggilan yang tepat. Berikutnya system calls akan membawa modul, berikut setiap tabel simbol yang hendak, ke kernel. Dengan demikian modul tersebut akan berada di alamat yang telah dialokasikan dan tabel simbol
milik kernel akan diperbaharui.

Komponen manajemen modul yang lain adalah peminta modul. Kernel mendefinisikan antarmuka komunikasi yang dapat dihubungi oleh program manajemen modul. Saat hubungan tercipta, kernel akan menginformasikan proses manajemen kapanpun sebuah proses meminta device driver, sistem berkas,atau layanan jaringan yang belum terpanggil dan memberikan manajer kesempatan untuk memanggil layanan tersebut. Permintaan layanan akan selesai saat modul telah terpanggil.
Manajer proses akan memeriksa secara berkala apakah modul tersebut masih digunakan, dan akan menghapusnya saat tidak diperlukan lagi.

Pembuatan Proses dan Thread

Posted by Rahadian Syarif | 12:35 AM | 0 comments »

Pembuatan Proses Dan Thread

Linux menggunakan representasi yang sama untuk proses dan thread.
Secara sederhana thread dapat dikatakan sebuah proses baru yang
berbagi alamat yang sama dengan induknya. Perbedaannnya terletak
pada saat pembuatannya. Thread baru dibuat dengan system call
clone yang membuat proses baru dengan identitas sendiri, namun
diizinkan untuk berbagi struktur data dengan induknya.

Secara tradisional, sumber daya yang dimiliki oleh proses induk
akan diduplikasi ketika membuat proses anak. Penyalinan ruang
alamat ini berjalan lambat, sehingga untuk mengatasinya, salinan
hanya dibuat ketika salah satu dari mereka hendak menulis di
alamat tersebut. Selain itu, ketika mereka akan berbagi alamat
tersebut ketika mereka hanya membaca. Inilah proses ringan yang
dikenal juga dengan thread.

Thread dibuat dengan __clone(). __clone() merupakan rutin dari
library system call clone(). __clone memiliki 4 buah argumen yaitu:

*

fn

fungsi yang akan dieksekusi oleh thread baru
*

arg

pointer ke data yang dibawa oleh fn
*

flags

sinyal yang dikirim ke induk ketika anak berakhir dan
pembagian sumber daya antara anak dan induk.
*

child_stack

pointer stack untuk proses anak.

clone() mengambil argumen flags dan child_stack yang dimiliki oleh __clone
kemudian menentukan id dari proses anak yang akan mengeksekusi
fn dengan argumen arg.

Pembuatan anak proses dapat dilakukan dengan fungsi fork() dan vfork().
Implementasi fork() sama seperti system call clone() dengan sighandler
SIGCHLD di-set, semua bendera clone di-clear yang berarti tidak ada
sharing dan child_stack dibuat 0 yang berarti kernel akan membuat stack
untuk anak saat hendak menulis. Sedangkan vfork() sama seperti fork()
dengan tambahan bendera CLONE_VM dan CLONE_VFORK di-set. Dengan vfork(),
induk dan anak akan berbagi alamat, dan induk akan di-block hingga
anak selesai.

Untuk memulai pembuatan proses baru, clone() akan memanggil fungsi do_fork().
Hal yang dilakukan oleh do_fork() antara lain:

*

memanggil alloc_task_struct() yang akan menyediakan tempat di memori
dengan ukuran 8KB untuk deskriptor proses dan stack modus kernel.
*

memeriksa ketersediaan sumber daya untuk membuat proses baru.
*

find_empty_procees() memanggil get_free_taskslot() untuk mencari
sebuah slot di array task untuk pointer ke deskriptor proses yang baru.
*

memanggil copy_files/fm/sighand/mm() untuk menyalin sumber daya untuk
anak, berdasarkan nilai flags yang ditentukan clone().
*

copy_thread() akan menginisialisasi stack kernel dari proses anak.
*

mendapatkan PID baru untuk anak yang akan diberikan kembali
ke induknya ketika do_fork() selesai.

Beberapa proses sistem hanya berjalan dalam modus kernel di belakang layar.
Untuk proses semacam ini dapat digunakan thread kernel. Thread kernel hanya
akan mengeksekusi fungsi kernel, yaitu fungsi yang biasanya dipanggil oleh
proses normal melalui system calls. Thread kernel juga hanya dieksekusi dalam
modus kernel, berbeda dengan proses biasa. Alamat linier yang digunakan oleh
thread kernel lebih besar dari PAGE_OFFSET proses normal yang dapat berukuran
hingga 4GB. Thread kernel dibuat sebagai berikut: int kernel_thread(int (*fn) (void *),
void *arg, unsigned long flags); flags=CLONE_SIGHAND, CLONE_FILES, etc

Deskriptor Proses

Posted by Rahadian Syarif | 11:57 PM | 0 comments »

Guna keperluan manajemen proses, kernel memelihara informasi tentang
setiap proses di sebuah deskriptor proses dengan tipe task_struct.
Setiap deskriptor proses mengandung informasi antara lain
status proses, ruang alamat, daftar berkas yang dibuka,
prioritas proses, dan sebagainya. Berikut gambaran isinya:

Isi deskriptor proses :


struct task_struct{
volatile long state;
/*-1 unrunnable,
0 runnable,
>0 stopped*/
unsigned long flags;
/* 1 untuk setiap flag proses */
mm_segment_t_addr_limit;
/* ruang alamat untuk thread */
struct exec_domain *exec_domain;
long need_resched;
long counter;
long priority;
/* SMP and runqueue state */
struct task_struct *next_task, *prev_task;
struct task_struct *next_run, *prev_run;
...
/* task state */
/* limits */
/* file system info */
/* ipc stuff */
/* tss for this task */
/* filesystem information */
/* open file information */
/* memory management info */
/* signal handlers */
...
};





Setiap proses di Linux memiliki status. Status proses merupakan array dari
flag yang mutually exclusive. Setiap proses memiliki tepat satu keadaan
(status) pada suatu waktu. Status tersebut adalah:

*

TASK_RUNNING

Pada status ini, proses sedang ataupun siap dieksekusi oleh CPU.
*

TASK_INTERRUPTIBLE

Pada status ini, proses sedang menunggu sebuah kondisi. Interupsi,
sinyal, ataupun pelepasan sumber daya akan membangunkan proses.
*

TASK_UNINTERRUPTIBLE

Pada status ini, proses sedang tidur dan tidak dapat dibangunkan
oleh suatu sinyal.
*

TASK_STOPPED

Pada status ini proses sedang dihentikan, misalnya oleh sebuah debugger.
*

TASK_ZOMBIE

Pada status ini proses telah berhenti, namun masih memiliki struktur
data task_struct di task vector dan masih memegang sumber daya yang sudah
tidak digunakan lagi.

Setiap proses ataupun eksekusi yang terjadwal secara independen memiliki
deskriptor prosesnya sendiri. Alamat dari deskriptor proses digunakan
untuk mengindentifikasi proses. Selain itu, nomor ID proses (PIDs) juga
digunakan untuk keperluan tersebut. PIDs adalah 32-bit bilangan yang
mengidentifikasikan setiap proses dengan unik. Linux membatasi PIDs
berkisar 0-32767 untuk menjamin kompatibilitas dengan sistem UNIX
tradisional.

Karena proses merupakan sesuatu yang dinamis, maka deskriptor proses
disimpan dalam memori yang dinamis pula. Untuk itu dialokasikan juga
memori sebesar 8KB untuk setiap proses untuk menyimpan proses deskriptornya
dan stack proses dari modus kernel. Keuntungan dari dal ini adalah pointer
dari deskriptor proses dari proses yang sedang berjalan (running) dapat
diakses dengan cepat menggunakan stack pointer. Selain itu,
8KB (EXTRA_TASK_STRUCT) dari memori akan di-cache untuk mem-bypass
pengalokasi memori kernel ketika sebuah proses dihapus dan sebuah proses
baru dibuat. Kedua perintah free_task_struct() dan alloc_task_struct()
akan digunakan untuk melepaskan atau mengalokasikan memori
seukuran 8KB sebagai cache.

Deskriptor proses juga membangun sebuah daftar proses dari semua proses
yang ada di sistem. Daftar proses tersebut merupakan sebuah doubly-linked
list yang dibangun oleh bagian next_task dan prev_task dari deskriptor
proses. Deskriptor init_task(mis:swapper) berada di awal daftar tersebut
dengan prev_task-nya menunjuk ke deskriptor proses yang paling akhir
masuk dalam daftar. Sedangkan makro for_each_task() digunakan untuk
memindai seluruh daftar.

Proses yang dijadwalkan untuk dieksekusi dari doubly-linked list dari
proses dengan status TASK_RUNNING disebut runqueue. Bagian prev_run dan
next_run dari deskriptor proses digunakan untuk membangun runqueue,
dengan init_task mengawali daftar tersebut. Sedangkan untuk memanipulasi
daftar di deskriptor proses tersebut, digunakan fungsi-fungsi:
add_to_runqueue(), del_from_runqueue(), move_first_runqueue(),
move_last_runqueue(). Makro NR_RUNNING digunakan untuk menyimpan
jumlah proses yang dapat dijalankan, sedangkan fungsi wake_up_process
membuat sebuah proses menjadi dapat dijalankan.

Untuk menjamin akurasinya, array task akan diperbarui setiap kali ada
proses baru dibuat ataupun dihapus. Sebuah daftar terpisah akan melacak
elemen bebas dalam array task itu. Ketika suatu proses dihapus, entrinya
ditambahkan di bagian awal dari daftar tersebut.

Proses dengan status task_interruptible dibagi ke dalam kelas-kelas yang
terkait dengan suatu event tertentu. Event yang dimaksud misalnya:
waktu kadaluarsa, ketersediaan sumber daya. Untuk setiap event ataupun
kelas terdapat antrian tunggu yang terpisah. Proses akan diberi sinyal
bangun ketika event yang ditunggunya terjadi. Berikut contoh dari
antrian tunggu tersebut:



void sleep_on(struct wait_queue **wqptr) {
struct wait_queue wait;
current_state=TASK_UNINTERRUPTIBLE;
wait.task=current;
add_wait_queue(wqptr, &wait);
schedule();
remove_wait_queue(wqptr, &wait);
}




Fungsi sleep_on() akan memasukkan suatu proses ke dalam antrian
tunggu yang diinginkan dan memulai penjadwal. Ketika proses itu
mendapat sinyal untuk bangun, maka proses tersebut akan dihapus
dari antrian tunggu.

Bagian lain konteks eksekusi proses adalah konteks perangkat keras,
misalnya: isi register. Konteks dari perangkat keras akan disimpan
oleh task state segment dan stack modus kernel. Secara khusus tss
akan menyimpan konteks yang tidak secara otomatis disimpan oleh
perangkat keras tersebut. Perpindahan antar proses melibatkan
penyimpanan konteks dari proses yang sebelumnya dan proses berikutnya.
Hal ini harus dapat dilakukan dengan cepat untuk mencegah terbuangnya
waktu CPU. Versi baru dari Linux mengganti perpindahan konteks
perangkat keras ini menggunakan piranti lunak yang mengimplementasikan
sederetan instruksi mov untuk menjamin validasi data yang disimpan
\serta potensi untuk melakukan optimasi.

Untuk mengubah konteks proses digunakan makro switch_to(). Makro
tersebut akan mengganti proses dari proses yang ditunjuk oleh prev_task
menjadi next_task. Makro switch_to() dijalankan oleh schedule() dan
merupakan salah satu rutin kernel yang sangat tergantung pada perangkat
keras (hardware-dependent). Lebih jelas dapat dilihat pada kernel/sched.c
dan include/asm-*/system.h.

Manajemen Proses

Posted by Rahadian Syarif | 11:53 PM | 0 comments »

Linux mengatur semua proses di dalam sistem melalui pemeriksaan
dan perubahan terhadap setiap struktur data task_struct yang
dimiliki setiap proses. Sebuah daftar pointer ke semua struktur
data task_struct disimpan dalam task vector. Jumlah maksimum
proses dalam sistem dibatasi oleh ukuran dari task vector.
Linux umumnya memiliki task vector dengan ukuran 512 entries.
Saat proses dibuat, task_struct baru dialokasikan dari memori
sistem dan ditambahkan ke task vector. Linux juga mendukung
proses secara real time. Proses semacam ini harus bereaksi
sangat cepat terhadap event eksternal dan diperlakukan berbeda
dari proses biasa lainnya oleh penjadwal.

Modul Kernel Linux

Posted by Rahadian Syarif | 2:06 AM | 0 comments »

Apakah Modul Kernel Linux itu?

Modul kernel Linux adalah bagian dari kernel Linux yang dapat dikompilasi, dipanggil dan dihapus secara
terpisah dari bagian kernel lainnya saat dibutuhkan. Modul kernel dapat menambah fungsionalitas kernel tanpa perlu me-reboot sistem. Secara teori tidak ada yang dapat membatasi apa yang dapat dilakukanoleh modul kernel. Kernel modul dapat mengimplementasikan antara lain device driver, sistem berkas, protokol jaringan.

Modul kernel Linux memudahkan pihak lain untuk meningkatkan fungsionalitas kernel tanpa harus membuat sebuah kernel monolitik dan menambahkan fungsi yang mereka butuhkan langsung ke dalam image dari kernel. Selain hal tersebut akan membuat ukuran kernel menjadi lebih besar, kekurangan lainnya adalah mereka harus membangun dan me-reboot kernel setiap saat hendak menambah fungsi baru. Dengan adanya modul maka setiap pihak dapat dengan mudah menulis fungsi-fungsi baru dan bahkan mendistribusikannya sendiri, di luar GPL.

Kernel modul juga memberikan keuntungan lain yaitu membuat sistem Linux dapat dinyalakan dengan kernel standar yang minimal, tanpa tambahan device driver yang ikut dipanggil. Device driver yang dibutuhkan dapat dipanggil kemudian secara eksplisit maupun secara otomatis saat dibutuhkan.

Terdapat tiga komponen untuk menunjang modul kernel Linux. Ketiga komponen tersebut adalah manajemen modul, registrasi driver, dan mekanisme penyelesaian konflik. Berikut akan dibahas ketiga komponen pendukung tersebut.

Pembagian Filesystem Secara Ortogonal

Posted by Rahadian Syarif | 2:13 AM | 0 comments »

Shareable dan Unshareable


1. Shareable
Isinya dapat dishare (digunakan bersama) dengan sistem lain,
gunanya untuk menghemat tempat.
2. Unshareable
Isinya tidak dapat dishare(digunakan bersama) dengan sistem lain,
biasanya untuk alasan keamanan.


Variabel dan Static

1. Variabel
Isinya sering berubah-ubah.
2. Static
Sekali dibuat, kecil kemungkinan isinya akan berubah. Bisa berubah
jika ada campur tangan sistem admin.

Proses Filesystem

Posted by Rahadian Syarif | 2:12 AM | 0 comments »

proc file sistem menunjukkan bagaimana hebatnya virtual
file sistem yang ada pada linux. Proc file sistem sebenarnya
tidak ada secara fisik, baik subdirektorinya, maupun file-file
yang ada di dalamnya. Proc file sistem diregister oleh linux
virtual file sistem, jika virtual file sistem memanggilnya dan
meminta inode-inode dan file-file, proc file sistem membuat file
tersebut dengan informasi yang ada di dalam kernel. Contohnya,

"/proc/devices"

milik kernel dibuat dari data struktur kernel yang
menjelaskan device tersebut

X Filesystem

Posted by Rahadian Syarif | 2:10 AM | 0 comments »

X file sistem juga merupakan jurnaling file sistem. X file sistem
dibuat oleh SGI dan digunakan di sistem operasi SGI IRIX. X file
sistem juga tersedia untuk linux dibawah lisensi GPL. X file sistem
mengunakan B-tree untuk menangani file yang sangat banyak. X file
sistem digunakan pada server-server besar.

Resizer Filesystem

Posted by Rahadian Syarif | 2:09 AM | 0 comments »

Resizer file sistem memiliki jurnal yang cepat. Ciri-cirinya mirip EXT3
file sistem. Reiser file sistem dibuat berdasarkan balance tree yang
cepat. Balance tree unggul dalam hal kinerja, dengan algoritma yang
lebih rumit tentunya.

Reiser file sistem lebih efisien dalam pemenfaatan ruang disk.
Jika kita menulis file 100 bytes, hanya ditempatkan dalam satu blok.
File sistem lain menempatkannya dalam 100 blok. Reiser file sistem
tidak memiliki pengalokasian yang tetap untuk inode. Resier file
sistem dapat menghemat disk sampai dengan 6 persen.

EXT3 File Sistem

Posted by Rahadian Syarif | 2:05 AM | 0 comments »

EXT3 adalah peningkatan dari EXT2 file sistem.
Peningkatan ini memiliki beberapa keuntungan, diantaranya:


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.


Integritas data

EXT3 menjamin adanya integritas data setelah terjadi kerusakan atau
"unclean shutdown". EXT3 memungkinkan kita memilih jenis dan tipe
proteksi dari data.


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.


Mudah dilakukan migrasi

Kita dapat berpindah dari EXT2 ke sistem EXT3 tanpa melakukan format ulang.


Reiser file sistem

Reiser file sistem memiliki jurnal yang cepat. Ciri-cirinya mirip
EXT3 file sistem. Reiser file sistem dibuat berdasarkan balance tree
yang cepat. Balance tree unggul dalam hal kinerja, dengan algoritma
yang lebih rumit tentunya.

Reiser file sistem lebih efisien dalam pemenfaatan ruang disk.
Jika kita menulis file 100 bytes, hanya ditempatkan dalam satu blok.
File sistem lain menempatkannya dalam 100 blok. Reiser file sistem
tidak memiliki pengalokasian yang tetap untuk inode. Resier file
sistem dapat menghemat disk sampai dengan 6 persen.


X file sistem

X file sistem juga merupakan jurnaling file sistem. X file sistem
dibuat oleh SGI dan digunakan di sistem operasi SGI IRIX.
X file sistem juga tersedia untuk linux dibawah lisensi GPL.
\X file sistem mengunakan B-tree untuk menangani file yang sangat banyak.
X file sistem digunakan pada server-server besar.


Proc file sistem

proc file sistem menunjukkan bagaimana hebatnya virtual file sistem yang
ada pada linux. Proc file sistem sebenarnya tidak ada secara fisik,
baik subdirektorinya, maupun file-file yang ada di dalamnya. Proc file
sistem diregister oleh linux virtual file sistem, jika virtual file
sistem memanggilnya dan meminta inode-inode dan file-file, proc file
sistem membuat file tersebut dengan informasi yang ada di dalam kernel.
Contohnya, /proc/devices milik kernel dibuat dari data struktur kernel
yang menjelaskan device tersebut.



Pembagian file sistem secara ortogonal

Shareable dan Unshareable

1. Shareable
Isinya dapat dishare (digunakan bersama) dengan
sistem lain, gunanya untuk menghemat tempat.
2. Unshareable
Isinya tidak dapat dishare(digunakan bersama)
dengan sistem lain, biasanya untuk alasan keamanan.


Variabel dan Static

1. Variabel
Isinya sering berubah-ubah.
2. Static
Sekali dibuat, kecil kemungkinan isinya akan berubah.
Bisa berubah jika ada campur tangan sistem admin.

EXT2 file sistem

Posted by Rahadian Syarif | 1:59 AM | 0 comments »

A. Keterangan

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.

B. Inode dalam EXT2

Inode adalah kerangka dasar yang membangun EXT2. Inode dari setiap
kumpulan blok disimpan dalam tabel inode bersama dengan peta bit yang
menyebabkan sistem dapat mengetahui inode mana yang telah teralokasi
dana inode mana yang belum. MODE: mengandung 2 informasi, inode apa dan
ijin akses yang dimiliki user. OWNER INFO: user atau grop yang memiliki
file atau direktori SIZE: besar file dalam bytes TIMESTAMPS: kapan waktu
pembuatan inode dan waktu terakhir dimodifikasi. DATABLOKS: pointer ke
blok yang mengandung data.

EXT2 inode juga dapat menunjuk pada device khusus, yang mana device
khusus ini bukan merupakan file, tatapi dapat menangani program sehingga
program dapat mengakses ke device. Semua file device di dalam drektori
/dev dapat membantu program mengakses device.

C. Superblok dalam EXT2

Superblok mengandung informasi tentang ukuran dasar dan bentuk file sistem.
Informasi di dalamnya memungkinkan file sistem manager untuk menggunakan
dan merawat file sistem. Biasanya, hanya superblok di blok group 0 saat
file sistem di-mount tetapi setiap blok grup mengandung duplikatnya
untuk menjaga jika file sistem menjadi rusak. Informasi yang dikandung adalah:

1. Magic Number
meyakinkan software bahwa ini adalah superblok dari EXT2 file sistem.
2. Revision Level
menunjukkan revisi mayor dan minor dari file sistem.
3. Mount Count dan Maksimum Mount Count
menunjukkan pada sistem jika harus dilakukan pengecekan dan
maksimum mount yang diijikan sebelum e2fsck dijalankan.
4. Blocks per Size
besar blok dalam file sistem, contohnya 1024 bytes.
5. Blocks per Group
banyaknya blok per group.
6. Block Group Number
nomor blok group yang mengadung copy dari superblok.
7. Free Blocks
banyaknya blok yang kosong dalam file sistem.
8. Free Inode
banyak inode kosong dalam file sistem.
9. First Inode
nomor inode dalam inode pertama dalam file sistem, inode pertama
dalam EXT2 root file sistem adalah direktori "/".

Operasi-operasi dalam inode

Posted by Rahadian Syarif | 1:58 AM | 0 comments »

Linux menyimpan cache dari inode aktif maupun dari inode yang
telah terakses sebelumnya. Ada 2 path dimana inode ini dapat
diakses. Yang pertama telah disebutkan sebelumnya, setiap entri
dalam cache menunjuk pada suatu inode dan menjaga inode tetap
dalam cache. Yang kedua melalui inode hash table. Setiap inode
mempunyai alamat 8 bit sesuai dengan alamat dari file sistem
superblok dan nomor inode. Inode dengan nilai hash yang sama
kemudian dirangkai di doubly linked list.

Perubahan pada cache melibatkan penambahan dan penghapusan
entri-entri dari cache itu sendiri. Entri-entri yang tidak
dibutuhkan lagi akan di unhash sehingga tidak akan tampak
dalam pencarian berikutnya.

Operasi diperkirakan akan mengubah struktur cache harus
dikunci selama melakukan perubahan. Unhash tidak memerlukan
semaphore karena ini bisa dilakukan secara atomik dalam kernel lock.
Banyak operasi file memerlukan 2 langkah proses. Yang pertama adalah
melakukan pencarian nama di dalam direktori. Langkah kedua adalah
melakukan operasi pada file yang telah ditemukan. Untuk menjamin
tidak terdapatnya proses yang tidak kompatibel diantara kedua
proses itu, setelah proses kedua, virtual file sistem protokol
harus memeriksa bahwa parent entry tetap menjadi parent dari entri
childnya. Yang menarik dari cache locking adalah proses rename,
karena mengubah 2 entri dalam sekali operasi.

Filesystem di Linux

Posted by Rahadian Syarif | 1:54 AM | 0 comments »

Linux virtual file sistem

Objek dasar dalam layer-layer virtual file system
1.
File

File adalah sesuatu yang dapat dibaca dan ditulis.
File ditempatkan pada memori. Penempatan pada memori
tersebut sesuai dengan konsep file deskriptor yang dimiliki unix.
2.
Inode

Inode merepresentasikan objek dasar dalam file sistem. Inode bisa
saja file biasa, direktori, simbolik link dan lain sebagainya.
Virtual file sistem tidak memiliki perbedaan yang jelas di antara
objek, tetapi mengacu kepada implementasi file sistem yang
menyediakan perilaku yang sesuai. Kernel tingkat tinggi menangani
objek yang berbeda secara tidak sama.

File dan inode hampir mirip diantara keduanya. Tetapi terdapat perbedaan
yang penting diantara keduanya. Ada sesuatu yang memiliki inode tetapi
tidak memiliki file, contohnya adalah simbolik link. Ada juga file
yang tidak memiliki inode seperti pipes dan socket.
3.
File sistem

File system adalah kumpulan dari inode-inode dengan satu inode pembeda
yaitu root. Inode lainnya diakses mulai dari root inode dan pencarian
nama file untuk menuju ke inode lainnya.

File sistem mempunyai beberapa karakteristik yang mencakup seluruh
inode dalam file sistem. Salah satu yang terpenting adalah blocksize.
4.
Nama inode

Semua inode dalam file sistem diakses melalui namanya. Walaupun
pencarian nama inode bisa menjadi terlalu berat untuk beberapa
sistem, virtual file sistem pada linux tetap memantau cache
dan nama inode yang baru saja terpakai agar kinerja meningkat.
Cache terdapat di memori sebagai tree, ini berarti jika sembarang
inode dari file terdapat di dalam cache, maka parent dari inode
tersebut juga terdapat di dalam cache.

Virtual file system layer menangani semua pengaturan nama path dari
file dan mengubahnya menjadi masukan di dalam cache sebelum mengijinkan
file sistem untuk mengaksesnya. Ada pengecualian pada target dari
simbolik link, akan diakses file sistem secara langsung. File sistem
diharapkan untuk menginterpretasikannya.

Linux Untuk Umat Manusia

Posted by Rahadian Syarif | 2:00 AM | 0 comments »

Ubuntu berasal dari bahasa kuno Afrika, yang berarti "rasa
perikemanusian terhadap sesama manusia". Ubuntu juga bisa berarti
"aku adalah aku karena keberadaan kita semua". Tujuan dari distribusi
Linux Ubuntu adalah membawa semangat yang terkandung di dalam
Ubuntu ke dalam dunia perangkat lunak.

Ubuntu adalah sistem operasi lengkap berbasis Linux, tersedia secara bebas
dan mempunyai dukungan baik yang berasal dari komunitas maupun tenaga ahli
profesional. Ubuntu sendiri dikembangkan oleh komunitas sukarelawan Ubuntu
dan kami mengundang Anda untuk turut serta berpartisipasi mengembangkan Ubuntu!

Komunitas Ubuntu dibentuk berdasarkan gagasan yang terdapat di dalam filosofi
Ubuntu: bahwa perangkat lunak harus tersedia dengan bebas biaya, bahwa aplikasi
perangkat lunak tersebut harus dapat digunakan dalam bahasa lokal masing-masing
dan untuk orang-orang yang mempunyai keterbatasan fisik, dan bahwa pengguna harus
mempunyai kebebasan untuk mengubah perangkat lunak sesuai dengan apa yang mereka
butuhkan.

Perihal kebebasan inilah yang membuat Ubuntu berbeda dari perangkat lunak
berpemilik (proprietary); bukan hanya peralatan yang Anda butuhkan tersedia
secara bebas biaya, tetapi Anda juga mempunyai hak untuk memodifikasi perangkat
lunak Anda sampai perangkat lunak tersebut bekerja sesuai dengan yang Anda inginkan.

Berikut ini adalah komitmen publik tim Ubuntu untuk para penggunanya:

* Ubuntu akan selalu bebas dari biaya, maka dari itu tidak akan ada biaya tambahan
untuk "edisi enterprise", kami akan membuat semua pekerjaan terbaik Ubuntu tersedia
untuk semua orang dengan istilah Bebas yang sama.
* Ubuntu juga menyediakan dukungan komersial dari ratusan perusahaan di seluruh dunia.
Ubuntu dirilis secara tetap dan dapat Anda prediksikan; rilis Ubuntu terbaru
tersedia setiap enam bulan. Setiap rilis akan didukung oleh Ubuntu dengan perbaikan
pada keamanan dan perbaikan lainnya secara bebas selama sekurangnya 18 bulan.
* Ubuntu akan menyertakan terjemahan dan prasarana aksesibilitas terbaik yang dimiliki
oleh komunitas Perangkat Lunak Bebas, hal ini berguna untuk membuat Ubuntu dapat
dipergunakan oleh banyak orang. Kami juga bekerja sama dengan seluruh komunitas
Perangkat Lunak Bebas dalam hal perbaikan bug dan saling membagi kode.
* Ubuntu berkomitmen secara penuh terhadap prinsip-prinsip dari pengembangan perangkat
lunak bebas; untuk ini kami mendorong masyarakat untuk menggunakan perangkat lunak bebas
dan open source, lalu memperbaikinya dan kemudian menyebarkannya kembali.

Ubuntu cocok digunakan baik untuk desktop maupun server. Ubuntu saat ini mendukung
berbagai arsitektur komputer seperti PC (Intel x86), PC 64-bita (AMD64), PowerPC
(Apple iBook dan Powerbook, G4 dan G5), Sun UltraSPARC dan T1 (Sun Fire T1000 dan T2000).

Ubuntu menyertakan lebih dari 16.000 buah perangkat lunak, dan untuk instalasi
desktop dapat dilakukan dengan menggunakan satu CD saja. Ubuntu menyertakan semua
aplikasi standar untuk desktop mulai dari pengolah kata, aplikasi lembar sebar
(spreadsheet) hingga aplikasi untuk mengakses internet, perangkat lunak untuk
server web, peralatan untuk bahasa pemrograman dan tentu saja beragam permainan.

Linux Dan Prinsip Desain

Posted by Rahadian Syarif | 4:45 AM | 0 comments »

Dalam desain keseluruhan, Linux menyerupai implementasi UNIX
nonmicrokernel yang lain. Ia adalah sistem yang multi-user,
multi-tasking dengan alat-alat UNIX-compatible yang lengkap.
Sistem berkas Linux mengikuti semantik tradisional UNIX, dan
model jaringan standar UNIX diimplementasikan secara keseluruhan.
Ciri internal desain Linux telah dipengaruhi oleh sejarah
perkembangan sistem operasi ini.

Walaupun Linux dapat berjalan pada berbagai macam platform, pada
awalnya dia dikembangkan secara eksklusif pada arsitektur PC.
Sebagian besar dari pengembangan awal tersebut dilakukan oleh
peminat individual, bukan oleh fasilitas riset yang berdana besar,
sehingga dari awal Linux berusaha untuk memasukkan fungsionalitas
sebanyak mungkin dengan dana yang sangat terbatas. Saat ini, Linux
dapat berjalan baik pada mesin multi-prosesor dengan main memory
yang sangat besar dan ukuran disk space yang juga sangat besar,
namun tetap mampu beroperasi secara berguna dengan jumlah
RAM yang lebih kecil dari 4 MB.

Linux Saat Ini

Posted by Rahadian Syarif | 3:15 AM | 0 comments »

Saat ini, Linux merupakan salah satu sistem operasi yang perkembangannya
paling cepat. Kehadiran sejumlah kelompok pengembang, tersebar di seluruh
dunia, yang selalu memperbaiki segala fiturnya, ikut membantu kemajuan
sistem operasi Linux. Bersamaan dengan itu, banyak pengembang yang sedang
bekerja untuk memindahkan berbagai aplikasi ke Linux (dapat berjalan di Linux).

Masalah utama yang dihadapi Linux dahulu adalah interface yang berupa teks
(text based interface). Ini membuat orang awam tidak tertarik menggunakan
Linux karena harus dipelajari terlebih dahulu untuk dapat dimengerti cara
penggunaannya (tidak user-friendly). Tetapi keadaan ini sudah mulai berubah
dengan kehadiran KDE dan GNOME. Keduanya memiliki tampilan desktop yang
menarik sehingga mengubah persepsi dunia tentang Linux.

Linux di negara-negara berkembang mengalami kemajuan yang sangat pesat.
Harga perangkat lunak (misalkan sebuah sistem operasi) bisa
mencapai US $100 atau lebih. Di negara yang rata-rata penghasilan per
tahun adalah US $200-300, US $100 sangatlah besar. Dengan adanya Linux,
semua berubah. Karena Linux dapat digunakan pada komputer yang kuno, dia
menjadi alternatif cocok bagi komputer beranggaran kecil. Di negara-negara
Asia, Afrika, dan Amerika Latin, Linux adalah jalan keluar bagi penggemar
komputer.

Pemanfaatan Linux juga sudah diterapkan pada supercomputer. Diberikan
beberapa contoh:

*

The Tetragrid, sebuah mega computer dari Amerika yang dapat menghitung
lebih dari 13 trilyun kalkulasi per detik (13.6 TeraFLOPS). Tetragrid
dapat dimanfaatkan untuk mencari solusi dari masalah matematika kompleks
dan simulasi, dari astronomi dan riset kanker hingga ramalan cuaca.
*

Evolocity, juga dari Amerika, dapat berjalan dengan kecepatan maksimum 9.2
TeraFLOPS(FLoating Operations Per Second), menjadikannya sebagai salah
satu dari lima supercomputer tercepat di dunia.

Jika melihat ke depan, kemungkinan Linux akan menjadi sistem operasi yang
paling dominan bukanlah suatu hal yang mustahil. Karena semua kelebihan yang
dimilikinya, setiap hari semakin banyak orang di dunia yang mulai berpaling ke Linux.

Distribusi Linux

Posted by Rahadian Syarif | 3:07 AM | 0 comments »

Siapapun dapat menginstall sistem Linux, ia hanya perlu mengambil revisi terakhir
dari komponen sistem yang diperlukan melalui situs ftp lalu dicompile . Pada awal
keberadaan Linux, operasi seperti di atas persis seperti yang dilaksanakan oleh
pengguna Linux. Namun, dengan semakin dewasanya Linux, berbagai individu dan
kelompok berusaha membuat pekerjaan tersebut lebih mudah dengan cara menyediakan
sebuah set bingkisan yang standar dan sudah dicompile terlebih dahulu supaya dapat
diinstall secara mudah.

Koleksi atau distribusi ini, mengandung lebih dari sistem Linux dasar. Mereka
mengandung instalasi sistem ekstra dan utilitas manajemen, juga paket yang sudah
di compile dan siap diinstall dari banyak alat UNIX yang biasa, seperti news servers,
web browsers, text-processing dan alat mengedit, termasuk juga games.

Distribusi pertama mengatur paket-paket ini secara sederhana menyediakan sebuah
sarana untuk memindahkan seluruh file ke tempat yang sesuai. Salah satu kontribusi
yang penting dari distribusi modern adalah manajemen/ pengaturan paket-paket yang
lebih baik. Distribusi Linux pada saat sekarang ini melibatkan database packet

tracking yang memperbolehkan suatu paket agar dapat diinstal, di upgrade, atau
Siapapun dapat menginstall sistem Linux, ia hanya perlu mengambil revisi terakhir
dari komponen sistem yang diperlukan melalui situs ftp lalu dicompile . Pada awal
keberadaan Linux, operasi seperti di atas persis seperti yang dilaksanakan oleh
pengguna Linux. Namun, dengan semakin dewasanya Linux, berbagai individu dan
kelompok berusaha membuat pekerjaan tersebut lebih mudah dengan cara menyediakan
sebuah set bingkisan yang standar dan sudah dicompile terlebih dahulu supaya
dapat diinstall secara mudah.

Distribusi SLS adalah koleksi pertama dari bingkisan Linux yang dikenal sebagai
distribusi komplit. Walaupun SLS dapat diinstall sebagai entitas tersendiri,
dia tidak memiliki alat-alat manajemen bingkisan yang sekarang diharapkan dari
distribusi Linux. Distribusi Slackware adalah peningkatan yang besar dalam
kualitas keseluruhan (walaupun masih memiliki manajemen bingkisan yang buruk);
Slackware masih merupakan salah satu distribusi yang paling sering diinstall
dalam komunitas Linux.

Sejak dirilisnya Slackware, sejumlah besar distribusi komersil dan non-komersil
Linux telah tersedia. Red Hat dan Debian adalah distribusi yang terkenal dari
perusahaan pendukung Linux komersil dan perangkat lunak bebas komunitas Linux.
Pendukung Linux komersil lainnya termasuk distribusi dari Caldera, Craftworks,
Siapapun dapat menginstall sistem Linux, ia hanya perlu mengambil revisi terakhir
dari komponen sistem yang diperlukan melalui situs ftp lalu dicompile . Pada awal
keberadaan Linux, operasi seperti di atas persis seperti yang dilaksanakan oleh
pengguna Linux. Namun, dengan semakin dewasanya Linux, berbagai individu dan
kelompok berusaha membuat pekerjaan tersebut lebih mudah dengan cara menyediakan
sebuah set bingkisan yang standar dan sudah dicompile terlebih dahulu supaya
dapat diinstall secara mudah.

Arti Logo Linux

Posted by Rahadian Syarif | 3:03 AM | 1 comments »

Logo Linux adalah sebuah pinguin. Tidak sepert produk komersil
sistem operasi lainnya, Linux tidak memiliki simbol yang terlihat
hebat. Melainkan Tux, nama pinguin tersebut, memperlihatkan sikap
santai dari gerakan Linux. Logo yang lucu ini memiliki sejarah yang
unik. Awalnya, tidak ada logo yang dipilih untuk Linux, namun pada
waktu Linus (pencipta Linux) berlibur, ia pergi ke daerah selatan.
Disanalah dia bertemu seekor pinguin yang pendek cerita menggigit
jarinya. Kejadian yang lucu ini merupakan awal terpilihnya pinguin
sebagai logo Linux.

Tux adalah hasil karya seniman Larry Ewing pada waktu para
pengembang merasa bahwa Linux sudah memerlukan sebuah logo (1996),
dan nama yang terpilih adalah dari usulan James Hughes yaitu:
"(T)orvolds (U)ni(X) -- TUX!". Lengkaplah sudah logo dari
Linux, yaitu seekor pinguin bernama Tux.

Hingga sekarang logo Linux yaitu Tux sudah terkenal ke berbagai
penjuru dunia. Orang lebih mudah mengenal segala produk yang
berbau Linux hanya dengan melihat logo yang unik nan lucu hasil
kerjasama seluruh komunitas Linux di seluruh dunia.

Kernel Linux

Posted by Rahadian Syarif | 3:00 AM | 0 comments »

Kernel Linux pertama yang dipublikasikan adalah versi 0.01,
pada tanggal 14 Maret, 1991. Sistem berkas yang didukung hanya sistem
berkas Minix - kernel pertama dibuat berdasarkan kerangka Minix.
Tetapi, kernel tersebut sudah mengimplementasi proses UNIX secara tepat.

Tanggal 14 Maret, 1994, versi yang merupakan tonggak sejarah Linux yaitu
versi 1.0 keluar. Rilis ini adalah kulminasi dari tiga tahun perkembangan
yang cepat dari kernel Linux. Fitur baru terbesar yang disediakan adalah
jaringan: 1.0 mampu mendukung protokol standar jaringan TCP/IP. Kernel 1.0
juga memiliki sistem berkas yang lebih baik tanpa batasan-batasan sistem berkas Minix.
Sejumlah dukungan perangkat keras ekstra juga dimasukkan ke dalam rilis ini.
Dukungan perangkat keras telah berkembang termasuk diantaranya floppy-disk,

CD-ROM, sound card, berbagai mouse, dan keyboard internasional. Dukungan buat
Kernel Linux pertama yang dipublikasikan adalah versi 0.01, pada tanggal 14 Maret, 1991.
Sistem berkas yang didukung hanya sistem berkas Minix - kernel pertama dibuat berdasarkan
kerangka Minix. Tetapi, kernel tersebut sudah mengimplementasi proses UNIX secara tepat.

Tanggal 14 Maret, 1994, versi yang merupakan tonggak sejarah Linux yaitu versi 1.0 keluar.
Rilis ini adalah kulminasi dari tiga tahun perkembangan yang cepat dari kernel Linux.
Fitur baru terbesar yang disediakan adalah jaringan: 1.0 mampu mendukung protokol standar
jaringan TCP/IP. Kernel 1.0 juga memiliki sistem berkas yang lebih baik tanpa batasan-
batasan sistem berkas Minix. Sejumlah dukungan perangkat keras ekstra juga dimasukkan ke-
dalam rilis ini. Dukungan perangkat keras telah berkembang termasuk diantaranya floppy-disk,
CD-ROM, sound card, berbagai mouse, dan keyboard internasional. Dukungan buat modul kernel
yang dynamically loadable dan unloadable juga diberikan.

Satu tahun setelah dirilis versi 1.0, kernel 1.2 keluar. Kernel versi 1.2 mendukung
variasi perangkat keras yang lebih luas. Pengembang telah memperbaharui networking
stack untuk menyediakan support bagi protokol IPX, dan membuat implementasi IP lebih
komplit dengan memberikan fungsi accounting dan firewalling . Kernel 1.2 juga
merupakan kernel Linux terakhir yang PC-only. Konsentrasi lebih diberikan pada
dukungan perangkat keras dan memperbanyak implementasi lengkap pada fungsi-fungsi yang ada.

Akhirnya pada bulan Juni 1996, Linux 2.0 dirilis. Versi 2.0 memiliki dua kemampuan baru yang
penting, yaitu: dukungan terhadap multiple architectures dan multiprocessor architectures.
Kode untuk manajemen memori telah diperbaiki sehingga performa sistem berkas dan memori
virtual meningkat. Untuk pertama kalinya, file system caching dikembangkan ke networked
file systems , writable memory mapped regions juga sudah didukung. Kernel 2.0 sudah
memberikan performa TCP/IP yang lebih baik, ditambah dengan sejumlah protokol jaringan baru.
Kemampuan untuk memakai remote Netware dan SMB (Microsoft LanManager) network volumes juga
telah ditambahkan pada versi terbaru ini. Tambahan lain adalah dukungan internal kernel threads
penanganan dependencies antara modul-modul loadable, dan loading otomatis modul berdasarkan
permintaan (on demand). Konfigurasi dinamis dari kernel pada run time telah diperbaiki melalui
konfigurasi interface yang baru dan standar.

Sejarah Linux

Posted by Rahadian Syarif | 10:42 AM | 0 comments »

Linux sangat mirip dengan sistem-sistem UNIX, hal ini dikarenakan kompatibilitas
dengan UNIX merupakan tujuan utama desain dari proyek Linux. Perkembangan Linux
dimulai pada tahun 1991, ketika mahasiswa Finlandia bernama Linus Torvalds menulis
Linux, sebuah kernel untuk prosesor 80386, prosesor 32-bit pertama dalam kumpulan
CPU intel yang cocok untuk PC.

Pada awal perkembangannya, source code Linux disediakan secara gratis di Internet.
Hasilnya, sejarah Linux merupakan kolaborasi banyak user dari seluruh dunia, semuanya
dilakukan secara eksklusif melalui Internet. Dari kernel awal yang hanya
mengimplementasikan subset kecil dari sistem UNIX, sistem Linux telah bertumbuh dimana
sudah mampu memasukkan banyak fungsi UNIX.

Kernel Linux perlu dibedakan dari sebuah sistem Linux: kernel Linux merupakan sebuah
perangkat lunak orisinil yang dibuat oleh komunitas Linux sedangkan sistem Linux, yang
diketahui saat ini, mengandung banyak komponen yang dibuat sendiri atau dipinjam dari
proyek lain.

Your Ad Here