Jumat, 29 Juli 2011

Rangkuman LINUX System

Sejarah Linux
Linux adalah sebuah sistem operasi yang sangat mirip dengan sistem-sistem UNIX, karena memang tujuan utama rancangan dari proyek Linux adalah UNIX compatible. Sejarah Linux dimulai pada tahun 1991, ketika mahasiswa Universitas Helsinki, Finlandia bernama Linus Benedict 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 bebas melalui internet. Hasilnya, pengembangan Linux merupakan kolaborasi para pengguna dari seluruh dunia, semuanya dilakukan secara eksklusif melalui internet. Bermula dari kernel awal yang hanya mengimplementasikan subset kecil dari sistem UNIX, kini sistem Linux telah tumbuh sehingga mampu memasukkan banyak fungsi UNIX. Kernel Linux yang dipublikasikan adalah versi 0.01, versi 1.0, versi 1.2 dan versi 2.0.
Sistem Linux
Linux menggunakan banyak alat yang dikembangkan sebagai bagian dari sistem operasi BSD dari Berkeley, X Window System dari MIT, dan proyek GNU dari Free Software Foundation. Sistem perpustakaan utama Linux awalnya dimulai oleh proyek GNU, tetapi perkembangan perpustakaannya diperbaiki melalui kerjasama dari komunitas Linux. Alat administrasi network dibawah Linux berasal dari kode yang dikembangkan untuk 4.3BSD, tetapi BSD yang lebih baru , salah satunya FreeBSD, sebaliknya meminjam kode dari Linux. Sistem Linux secara keseluruhan diawasi oleh network tidak ketat yang terdiri dari para pengembang melalui internet
Distribusi Linux (Distro)
Adalah  linux kernel dengan berbagai macam aplikasi yang siap pakai. Distribusi pertama mengatur paket ini secara sederhana, menyediakan sebuah sarana untuk memindahkan seluruh file ke tempat yang sesuai. Distribusi modern adalah manajemen/pengaturan paket-paket yang lebih baik. Contoh distribusi : distribusi awal termasuk SLS dan Slackware, Red Hat dan Debian adalah distribusi yang terkenal dari perusahaan pendukung Linux komersial & perangkat lunak bebas komunitas Linux. Contoh lain Ubuntu (Indonesia,turunan Debian), Fedora (turunan Red Hat), S.u.S.E. (Jerman&Eropa)
Lisensi Linux
Kernel Linux terdistribusi di bawah Lisensi Publik Umum GNU (GPL), dimana peraturannya disusun oleh Free Software Foundation. Linux adalah perangkat lunak bebas, namun: bebas dalam arti bahwa siapa saja dapat mengkopi, modifikasi, memakainya dengan cara apa pun, dan memberikan kopi mereka kepada siapa pun tanpa larangan atau halangan.
Prinsip Desain
Akibat semakin berkembangnya teknologi PC, kernel Linux juga semakin lengkap dalam mengimplementasikan fungsi UNIX. Cepat dan efisien merupakan tujuan desain yang penting, tetapi akhir-akhir ini konsentrasi perkembangan Linux lebih pada tujuan desain yang ketiga yaitu standarisasi. Standar POSIX terdiri dari kumpulan spesifikasi dari aspek berbeda kelakuan sistem operasi. Ada dokumen POSIX untuk fungsi sistem operasi biasa dan untuk ekstensi seperti proses untuk thread dan operasi real-time. Linux di desain supaya sesuai dengan dokumen POSIX yang relevan; sedikitnya ada dua distribusi Linux yang sudah memperoleh sertifikasi ofisial POSIX.
Karena Linux memberikan interface standar ke programmer dan pengguna, Linux tidak membuat banyak kejutan kepada siapa pun yang sudah terbiasa dengan UNIX. Namun interface pemrograman Linux merujuk pada semantik SVR4 UNIX daripada kelakuan BSD. Kumpulan perpustakaan yang berbeda tersedia untuk mengimplementasi semantik BSD di tempat dimana kedua kelakuan sangat berbeda.
Komponen Sistem Linux
Sistem Linux terdiri dari tiga bagian kode penting:
·      Kernel: Bertanggung jawab memelihara semua abstraksi penting dari sistem operasi, termasuk hal seperti proses- proses dan memori virtual.
·       Perpustakaan sistem: menentukan kumpulan fungsi standar dimana aplikasi dapat berinteraksi dengan kernel, dan mengimplementasi hampir semua fungsi sistem operasi yang tidak memerlukan hak penuh atas kernel.
·         Utilitas Sistem: program yang melakukan pekerjaan manajemen secara individu dan khusus.
Modul Kernel
Modul kernel Linux adalah bagian dari kernel Linux yang dapat dikompilasi, dipanggil dan dihapus secara terpisah dari bagian kernel lainnya saat dibutuhkan. Kernel modul dapat mengimplementasikan antara lain device driver, sistem berkas, protokol jaringan. Kernel modul juga memberikan keuntungan lain yaitu membuat sistem Linux dapat dinyalakan dengan kernel standar yang minimal, tanpa tambahan device driver yang ikut dipanggil. Ketiga komponen untuk menunjang modul kernel Linux  adalah :
1.      Manajemen modul : Manajemen modul akan mengatur pemanggilan modul ke dalam memori dan berkomunikasi dengan bagian lainnya dari kernel. Pemanggilan modul dilakukan dalam dua tahap : (1) Mengelola bagian kode modul dalam memori kernel (2) Penanganan modul simbol-simbol yang diperbolehkan untuk referensi
2.      Registrasi driver : Untuk membuat modul kernel yang baru dipanggil berfungsi, bagian dari kernel yang lain harus mengetahui keberadaan dan fungsi baru tsb. Kernel membuat tabel dinamis yang berisi semua driver yang telah diketahuinya dan menyediakan serangkaian routines untuk menambah dan menghapus driver dari tabel tsb.Hal-hal yang masuk dalam tabel registrasi adalah device driver, sistem berkas, protokol jaringan, dan format binari.
3.      Mekanisme penyelesaian konflik : Mekanisme yang mengijinkan device driver berbeda untuk reservasi sumber daya hardware dan untuk melindungi sumber daya dari penggunaan yang salah oleh driver lain. Tujuan mekanisme penyelesaian masalah :
      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
Managemen Proses
Prinsip dasar dari manajemen proses UNIX adalah memisahkan dua operasi untuk membuat proses dan menjalankan program baru. System call fork() membuat proses baru. Program baru dijalankan setelah memanggil fungsi exec (). Dalam Linux, sifat-sifat proses dibagi menjadi tiga bagian, yakni:
1.   Identitas Proses : memuat beberapa hal penting berikut: Proses ID (PID), Mandat (Credentials) dan Personality.
2.      Lingkungan : Lingkungan proses diturunkan dari orang tuanya dan terdiri atas dua vektor null-terminated sebagai berikut: (1) Vektor argument (2) Vektor lingkungan
3.      Konteks : adalah keadaan (perubahan konstan) dari suatu program yang berjalan pada setiap titik dalam satuan waktu. Konteks proses terdiri atas konteks penjadwalan, accounting, tabel file, konteks file-system, tabel penanganan sinyal, dan konteks virtual-memory.
Proses dan Threads
Linux menggunakan representasi yang sama untuk proses dan thread. Thread dapat dikatakan sebuah proses baru yang berbagi alamat yang sama dengan induknya. Perbedaannnya terletak pada saat pembuatan thread baru oleh system call clone :
      Fork menciptakan sebuah proses baru dengan proses konteks-nya sendiri yang baru
  Clone menciptakan sebuah proses baru dengan identitasnya sendiri, namun diizinkan untuk membagi struktur data induknya.
Scheduling
·         Selain proses scheduling di running & interrupting proses, scheduling juga terjadi di berbagai proses running kernel tasks.
·         Tingkat prioritas di scheduling berdasarkan panjang time-slice, makin panjan maka makin tinggi tingkat prioritasnya.
·         Terdapat dua array, active array dan expired array. Jika suatu task kehabisan time-slice maka task tersebut dianggap expired. Expired array akan berganti menjadi active array semua task active array sudah dieksekusi.
Kernel Synchronization
·         Permintaan eksekusi kernel-mode terjadi saat program yang sedang berjalan meminta service OS atai device driver melakukan interrupt.
·         Kernel synchronization akan menyediakan framework yang membuat kernel’s critical section berjalan tanpa diinterupt critical section lain.
·         Linux memproteksi proses critical section dengan dua teknik yakni, nonpreemtible dan preemtible untuk proses kernel’s critical section.
Schedule’s Process
·         Linux menggunakan dua algoritma yakni, time-sharing algorithm (menggunakan credit based algorithm) dan real-time algorithm (menggunakan FIFO & round-robin).
·         Credit based algorithm berdasarkan process’s history dan prioritas awal.
·         Real-time: jika suatu job kehabisan waktunya maka waktu pengerjaan bisa ditambah
Time-sharing: jika suatu job kehabisan waktunya maka dilanjutkan dengan job selanjutnya
·         Symmetric multiprocessing:hanya mengizinkan satu processor untuk eksekusi kernel mode pada suatu waktu. Linux 2.0 yang merupakan linux pertama yang bisa SMP.
·         Linux 2.2 merupakan linux yang bisa Big Kernel Lock, mengijinkan lebih dari satu processor mengeksekusi kernel mode pada suatu waktu.
Memory management
·         Linux’s physical memory-management system berhubungan dengan pengalokasian dan pembebasan pages, pengkelompokan pages, dan blok kecil memori
·         Mekanisme tambahannya adalah handling virtual memory, memory dipetakan ke address space. Address space yang dimaksud berasal dari running process.
·         Didalam manage physical memory, page allocator bertugas untuk mengalokasikan dan membebaskan semua physical pages, serta allocator menggunakan buddy-heap algorithm untuk tetap menjaga track dari physical pages. Slab allocator juga digunakan untuk kernel’s memory.
Virtual Memory
·         VM system mengelola address space yang terlihat untuk setiap proses
·         VM manager mengelola dua view yang berbeda dari suatu proses address space, yakni local view dan physical view.
·         Kernel membuat address space baru saat proses menjalankan program baru dengan exec system call dan setelah pembuatan proses baru dengan fork system call.
Static and Dynamic Linking
·         Program yang membutuhkan library function akan ditanam program’s executable binary file yang statis terhubung ke librarynya.
·         Kerugian dari static linkage yakni setiap program yang digenerate harus mengandung copies system library function.
·         Dynamic linking lebih efesien di phsycal memory dan disk-space usage karena memuat system library ke memory hanya sekali.
File System
adalah kumpulan dari inode-inode dengan satu inode pembeda yaitu root. Jenis-jenis file system di linux :
·         EXT2 file sistem 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.
·         EXT3 file sistem adalah peningkatan dari EXT2 file sistem yang memiliki beberapa keuntungan: Integritas data, kecepatan, Mudah dilakukan migrasi
·         Reiser file sistem memiliki jurnal yang cepat. Ciri-cirinya mirip EXT3 file sistem. Reiser file sistem dibuat berdasarkan balance tree yang cepat dan lebih efisien dalam pemenfaatan ruang disk.
·         X file sistem 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 dan digunakan pada server-server besar.
·         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 yang ada di dalamnya.
Input dan Output
Perangkat Linux yang berorientasi pada sistem file mengakses penyimpanan disk melalui dua caches:
      Data disembunyikan di page cache, yang terpadu dengan sistem memori virtual
      Metadata disembunyikan di buffer cache, cache terpisah diindeks oleh physical disk block
Linux membagi devices ke tiga kelas: Devices karakter, devices blok dan devices jaringan.
Komunikasi Interprocess
Seperti UNIX, Linux menginformasikan proses bahwa suatu peristiwa telah terjadi melalui sinyal. Ada sejumlah sinyal, dan mereka tidak dapat membawa informasi: Hanya fakta bahwa sinyal terjadi tersedia untuk proses. Kernel Linux tidak menggunakan sinyal untuk berkomunikasi dengan proses yang berjalan di kernel mode, tapi komunikasi dalam kernel dicapai melalui scheduling states dan wait.queue structures
Struktur jaringan
Networking merupakan kunci dari fungsi untuk Linux.
      Ini mendukung protokol standar Internet untuk UNIX ke komunikasi UNIX
      Hal ini juga mengimplementasikan protokol asli sistem operasi nonUNIX, khususnya,protokol yang digunakan pada jaringan PC, seperti Appletalk dan IPX
Secara internal, jaringan di kernel Linux dilakukan dengan tiga lapisan dari perangkat lunak:
      The socket interface
      Protocol drivers
      Network device drivers
Yang paling penting dari protokol dalam sistem jaringan Linux adalah the internet protocol suite
      Ini mengimplementasikan routing antara host yang berbeda di mana saja pada jaringan
      Di atas protokol routing yang dibangun protokol UDP, TCP dan ICMP
Security
Linux menambah mekanisme UNIX setuid mechanism dalam dua cara :
    Ini menerapkan POSIX specification’s saved user-id mechanism, yang memungkinkan proses untuk berulang kali drop dan reacquire uid efektif
    Ini telah menambahkan karakteristik proses yang diberikan hanya subset dari hak-hak uidefektif
Linux menyediakan mekanisme lain yang memungkinkan klien untuk lulus akses secara selektif ke file tunggal untuk beberapa proses server tanpa memberikan privileges
The pluggable authentication modules (PAM) tersedia di Linux
PAM didasarkan pada shared library yang dapat digunakan oleh setiap komponen sistem yang perlu mengotentikasi pengguna
Akses kontrol dalam sistem UNIX, termasuk Linux, dilakukan melalui penggunaan pengidentifikasi numerik yang unik (uid and gid)
Access control dilakukan oleh assigning objects a protections mask, yang menentukan dimana akses mode-membaca, menulis, atau mengeksekusi-harus diberikan kepada proses dengan pemilik, grup, atau akses dunia