Jumat, 06 Maret 2015

ARSITEKTUR DASAR SISTEM OPRASI LINUX



ARSITEKTUR DASAR SISTEM OPRASI LINUX




Hardware Abstraction Layer (HAL)

      HAL (Hardware Abstraction Layer) adalah sebuah daemon yang memungkinkan aplikasi desktop untuk mudah mengakses informasi perangkat keras, untuk mencari dan menggunakan hardware seperti terlepas dari bis atau jenis perangkat. Dengan cara ini desktop GUI dapat hadir semua sumber daya untuk user secara halus dan seragam.
HAL sebagian besar fungsi tumpang tindih dengan udev dan fungsionalitas kernelspace. Oleh karena itu, HAL ini dengan cepat menjadi usang dalam mendukung udev. Saat ini, sejumlah kecil program masih mengandalkan dan menggunakan HAL, meskipun pembangunan menuju menggunakan udev sebagai pengganti dalam waktu dekat.

Sebuah abstraksi perangkat keras layer (HAL) adalah lapisan abstraksi, diimplementasikan dalam perangkat lunak, antara perangkat keras fisik dari sebuah komputer dan perangkat lunak yang berjalan pada komputer itu. Fungsinya adalah untuk menyembunyikan perbedaan perangkat keras dari sebagian dari kernel sistem operasi, sehingga sebagian besar dari kode kernel-mode tidak perlu diubah untuk berjalan pada sistem dengan hardware yang berbeda. Pada PC, HAL pada dasarnya dapat dianggap sebagai driver untuk motherboard dan memungkinkan instruksi dari bahasa tingkat tinggi komputer untuk berkomunikasi dengan komponen tingkat lebih rendah, seperti secara langsung dengan hardware.

Sistem operasi Windows NT memiliki HAL dalam ruang kernel, antara hardware dan kernel, driver, jasa eksekutif. [1] [2] Hal ini memungkinkan portabilitas kode Windows NT kernel-mode untuk berbagai prosesor, dengan manajemen memori yang berbeda unit arsitektur, dan berbagai sistem yang berbeda dengan I / O bus arsitektur; sebagian besar kode yang berjalan tanpa perubahan sistem-sistem, ketika dikompilasi untuk set instruksi untuk sistem tersebut. Sebagai contoh, Intel SGI workstation berbasis x86 tidak IBM PC workstation yang kompatibel, namun karena HAL, Windows NT mampu berjalan pada mereka.

BSD, Mac OS X, Linux, CP / M, DOS, Solaris, dan beberapa sistem operasi portabel lainnya juga memiliki HAL, bahkan jika tidak secara eksplisit ditunjuk sebagai demikian. Beberapa sistem operasi, seperti Linux, memiliki kemampuan untuk satu menyisipkan sambil berlari, seperti Adeos. Sistem operasi NetBSD dikenal luas sebagai memiliki lapisan abstraksi perangkat keras bersih yang memungkinkan untuk sangat portabel. Sebagai bagian dari sistem ini adalah uvm (9) / pmap (9), bus_space (9), bus_dma (9) dan subsistem lainnya. Populer bus yang digunakan pada lebih dari satu arsitektur juga disarikan, seperti ISA, EISA, PCI, PCI-E, dll, memungkinkan driver juga sangat portabel dengan minimal modifikasi kode.

Sebuah "ekstrim" contoh HAL yang dapat ditemukan dalam arsitektur System/38 dan AS/400. Kebanyakan kompiler bagi sistem menghasilkan kode mesin abstrak, sedangkan Berlisensi Kode Internal, atau LIC, menerjemahkan kode mesin virtual ke dalam kode asli untuk prosesor yang sedang berjalan dan mengeksekusi kode asli yang dihasilkan. (Pengecualian adalah compiler yang menghasilkan LIC sendiri;. Mereka compiler tidak tersedia di luar IBM) ini begitu sukses sehingga perangkat lunak aplikasi dan perangkat lunak sistem operasi di atas lapisan LIC yang dikompilasi pada S/38 asli berjalan tanpa modifikasi dan tanpa kompilasi ulang pada sistem AS/400 terbaru, meskipun fakta bahwa hardware yang mendasarinya telah berubah secara dramatis, setidaknya tiga jenis prosesor telah digunakan.

lapisan abstraksi Hardware adalah dari tingkat yang lebih rendah dalam bahasa komputer daripada antarmuka pemrograman aplikasi (API) karena mereka berinteraksi langsung dengan hardware, bukan suatu kernel sistem, maka HAL membutuhkan lebih sedikit waktu pemrosesan dari API. bahasa tingkat tinggi sering menggunakan HAL dan API untuk berkomunikasi dengan komponen tingkat yang lebih rendah.

Operasi sistem yang memiliki HAL pasti, mudah dibawa di hardware yang berbeda. Hal ini sangat penting untuk embedded system yang berjalan di puluhan platform yang berbeda.


SYSTEM SERVICES


Linux lahir pada jaringan jaringan, Internet, jadi tidak mengherankan bahwa kekuatan utama Linux adalah memberikan layanan melalui jaringan. Layanan ini akan mencakup menyediakan lingkungan web, layanan email, file sharing dan layanan cetak, database bersama dengan sistem keamanan untuk memastikan bahwa semuanya tetap kedap udara dalam organisasi Anda


KERNEL

Bagian terpenting sistem operasi adalah kernel, merupakan jantung sistem operasi.

Kernel menyediakan tool dimana semua layanan sistem komputer disediakan.

Kernel mencegah proses aplikasi mengakses mengakses perangkat keras secara langsung, memaksa proses menggunakan tool yang disediakan.Kernel memberi proteksi kepada pemakai dari gangguan pemakai lain.

 Tool Kernel digunakan melalui panggilan sistem (system call). Program sistem menggunakan tool kernel untuk implementasi beragam layanan. Program sistem dan semua program lain berjalan diatas kernel. Program pemakai berjalan di mode berbeda dengan kernel, disebut mode pemakai.

 Kernel berisi beberapa bagian penting, yaitu:

*      Manajemen proses

*      Manajemen memori

*      Driver-driver perangkat keras

*      Driver-driver sistem file

*      Manajemen jaringan

*      Dan beragam subsistem lain

Adalah suatu perangkat lunak yang menjadi bagian utama dari sebuah system operasi. Tugasnya adalah menyali berbagai macam program aplikasi untuk mengakses perangkat keras komputer secara aman. Karena akses terhadap perangkat keras terbatas sedang lebih dari satu program harus dilayani dalam waktu yang bersamaan maka kernel juga bertugas untuk mengatur kapan dan berapa lama suatu program dapat menggunakan suatu bagian perangkat keras tersebut.

dari artikel lain dijelaskan tentang kernel sebagai berikut

1. Pendahuluan
Kernel merupakan inti dari Operating System berisikan instruksi- instruksi yang bertindak sebagai mediator antara hardware dengan software. Kernel baru pada umumnya menawarkan dukungan yang lebih banyak terhadap berbagai jenis hardware, memiliki manajemen proses yang lebih baik, berjalan lebih baik dari versi sebelumnya, dan lebih stabil karena adanya perbaikan pada bug-bug yang ditemukan pada versi sebelumnya.

2. Format Kernel
Kernel sebagai jantungnya sistem operasi menyediakan format yang sesuai dengan kebutuhan anda. Sebelum kita memilih kernel sebaiknya kita dapat menentukan terlebih dahulu, kira-kira format kernel yang bagaimana yang sesuai dengan kebutuhan yang diinginkan. Sistem kernel ada berupa Modular dan Monolitik ,sebagai contoh jika sering gonta-ganti hardware, sistem kernel yang modular akan lebih cocok daripada sistem kernel yang builtin (monolitik). Kedua system ini mempunyai keuntungan dan kelebihan masing-masing,

* Kernel Modular. Seperti pada kernel Linux mempunyai rancangan modular. Pada saat boot time, hanya minimal resident kernel yang di-load ke dalam memori. Ini di karenakan hanya modul-modul yang dibutuhkan saja serta di inginkan user yang akan diproses, sebuah modul kernel dapat secara dinamik di-load ke dalam memori.
Kemudian secara periode spesifik modul tidak ingin di aktifkan maka modul dapat di hapus dari memori. Mekanisme dynamic loading ini dinamakan kmod. Dengan kata lain modul tidak akan di-load apabila tidak diinginkan dan modul akan di gunakan apabila di butuhkan. Salah satu keuntungan kernel yang bersifat modular, onta-ganti hardware menjadi lebih mudah, karena tinggal menge-probe suatu modul, atau jika belum ada hanya tinggal mem-build satu modul saja. Kerugiannya adalah relatif rentan terhadapat masalah security, karena biasanya script kiddies memasukkan suatu modul ke dalam kernel (dengan harapan proses yang dimilikinya tidak diketahui oleh admin sistem yang bersangkutan)
* Kernel buildin(Monolitik). Dengan Kernel monolitik lebih baik dari segi security, sebuah kernel builtin (monolitik) akan relatif aman. Namun dari segi kemudahan, jika kita menambah atau mengganti suatu hardware, maka otomatis harus mengkompilasi ulang kernel .Namun demikian, skema kernel bagaimana yang lebih sesuai, itu bisa diklarifikasi sesuai kebutuhan dan implementasi sistem yang digunakan. Jika kernel monolitik ingin di jadikan modular, itu bisa dilakukan oleh dari kernel monolitik, dengan cara setelah konfigurasi ditetapkan dalam kernel monolitik dan di kompilasi maka dapat di ambil, bagian-bagian mana saja yang akan dipisahkan untuk dijadikan modul-modul.

3. Kompilasi Modul Kernel
Apabila kita akan menambahkan suatu modul ke dalam kernel maka kita dapat melakukan kompilasi ulang kernel. Modul merupakan bagian dari kode kernel yang tidak secara langsung dimasukan kedalam kernel. Modul dapat di masukan atau dihilangkan kedalam kernel yang sedang berjalan kapanpun diperlukan. Modul biasanya digunakan untuk mendukung pekerjaan yg tidak di gunakan terus-menerus. Misal, jika kita tidak membutuhkan dukungan networking sepanjang waktu, seperti ppp, maka lebih baik ppp dijadikan sebagai modul.
Ketika kita memerlukannya (untuk koneksi ke isp) modul kita panggil dan setelah selesai koneksi modul dapat kita matikan. Penerapan modul seperti ini akan mengurangi jumlah memori yang di butuhkan kernel sehingga mempercepat operasi.



LINUX KERNEL


Kernel adalah suatu perangkat lunak yang menjadi bagian utama dari sebuah sistem operasi. Tugasnya melayani bermacam program aplikasi untuk mengakses perangkat keras komputer secara aman.

Karena akses terhadap perangkat keras terbatas, sedangkan ada lebih dari satu program yang harus dilayani dalam waktu yang bersamaan, maka kernel juga bertugas untuk mengatur kapan dan berapa lama suatu program dapat menggunakan satu bagian perangkat keras tersebut. Hal tersebut dinamakan sebagai multiplexing.


Akses kepada perangkat keras secara langsung merupakan masalah yang kompleks, oleh karena itu kernel biasanya mengimplementasikan sekumpulan abstraksi hardware. Abstraksi-abstraksi tersebut merupakan sebuah cara untuk menyembunyikan kompleksitas, dan memungkinkan akses kepada perangkat keras menjadi mudah dan seragam. Sehingga abstraksi pada akhirnya memudahkan pekerjaan programer.

Untuk menjalankan sebuah komputer kita tidak harus menggunakan kernel sistem operasi. Sebuah program dapat saja langsung di- load dan dijalankan diatas mesin komputer 'telanjang', yaitu bilamana pembuat program ingin melakukan pekerjaannya tanpa bantuan abstraksi perangkat keras atau bantuan sistem operasi. Teknik ini digunakan oleh komputer generasi awal, sehingga bila kita ingin berpindah dari satu program ke program lain, kita harus mereset dan meload kembali program-program tersebut.

Ada 4 kategori kernel:

1. Monolithic kernel. Kernel yang menyediakan abstraksi perangkat keras yang kaya dan tangguh.
2. Microkernel. Kernel yang menyediakan hanya sekumpulan kecil abstraksi perangkat keras sederhana, dan menggunakan aplikasi-aplikasi yang disebut sebagai server untuk menyediakan fungsi-fungsi lainnya.
3. Hybrid (modifikasi dari microkernel). Kernel yang mirip microkernel, tetapi ia juga memasukkan beberapa kode tambahan di kernel agar ia menjadi lebih cepat
4. Exokernel. Kernel yang tidak menyediakan sama sekali abstraksi hardware, tapi ia menyediakan sekumpulan pustaka yang menyediakan fungsi-fungsi akses ke perangkat keras secara langsung atau hampir-hampir langsung.

Dari keempat kategori kernel yang disebutkan diatas, kernel Linux termasuk kategori monolithic kernel. Kernel Linux berbeda dengan sistem Linux. Kernel Linux merupakan sebuah perangkat lunak orisinil yang dibuat oleh komunitas Linux, sedangkan sistem Linux, yang dikenal saat ini, mengandung banyak komponen yang dibuat sendiri atau dipinjam dari proyek pengembangan lain.

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 (sistem UNIX kecil yang dikembangkan oleh Andy Tanenbaum). Tetapi, kernel tersebut sudah mengimplementasi proses UNIX secara tepat.

Pada tanggal 14 Maret 1994 dirilis versi 1.0, yang merupakan tonggak sejarah Linux. Versi ini adalah kulminasi dari tiga tahun perkembangan yang cepat dari kernel Linux. Fitur baru terbesar yang disediakan adalah jaringan. Versi 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 juga diberikan terhadap modul kernel yang loadable dan unloadable secara dinamis.

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

Pada bulan Juni 1996, kernel Linux 2.0 dirilis. Versi ini memiliki dua kemampuan baru yang penting, yaitu dukungan terhadap multiple architecture dan multiprocessor architectures. Kode untuk manajemen memori telah diperbaiki sehingga kinerja sistem berkas dan memori virtual meningkat. Untuk pertama kalinya, file system caching dikembangkan ke networked file systems, juga sudah didukung writable memory mapped regions. Kernel 2.0 sudah memberikan kinerja 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.

FILE SYSTEM 
 
Dalam Linux seluruh direktori disusun dalam struktur pohon terbalik yang menurun dan bercabang ke bawah dari satu level tertinggi. Suatu direktori mungkin berisi, atau menjadi induk dari direktori lain yang mungkin berisi file-file atau direktori-direktori di dalamnya.Pada sistem file Linux, segalanya terhubung ke akar, yang disimbolkan sebagai tanda slash (/). Linux menggunakan istilah root (akar) untuk beberapa hal yang berbeda, yang mungkin membingungkan pengguna baru. Ada account root (super user, yang memiliki hal untuk melakukan apapun), direktori login account root (/root) dan direktori root untuk seluruh sistem file (/).
DIREKTORI-DIREKTORI PENTING PADA SISTEM FILE LINUX
Sistem operasi Linux tersusun dari beberapa direktori dan banyak file berbeda. Memahami dan mampu melakukan navigasi sistem file Linux adalah sangan penting, hal ini akan membuat Anda lebihnyaman bekerja di Linux. Linux terdiri dari file-file sederhana yang diaorganisasikan dengan cara yang hamper standar. Bagian ini meringkas direktori-direktori yang penting pada sistem Linux Anda.
/ Direktori / adalah direktori root. Direktori ini berisi program-program Linux yang sesungguhnya. Jangan dicampur dengan file-file Anda. Pada direktori root terdapat beberapa direktori yang terdiri dari sistem file root dan mount point yang disediakan untuk sistem file yang lain.
/bin direktori ini berisi program-program dasar Linux, bin singkatan dari binary, adalah file yang dapat dieksekusi dan berisi tesk yang hanya dimengerti oleh computer.
/boot berisi kernel dan file-file lain yang digunakan selama sistem melakukan startup.
/dev Linux menetapkan segala hal sebagai file. Direktori ini berisi file-file khusus yang dikenal dengan file-file device (peralatan), yang digunakan untuk mengakses semua jenis hardware yang berbeda pada sistem Anda.
/etc direktori ini dan sub-sub direktorinya menyimpan file-file konfigurasi Linux.
/home setiap user pada sistem Linux memiliki derektori home masing-masing untuk menyimpan file-file pribadi dan setting mereka, sebagai contoh /home/firman dan /home/sita. Simbol ~ sering digunakan untuk mewakili direktori home pengguna.
/lib direktori ini menyimpan library-library yang bias digunakan secara bersama saat dijalankan.
/lost+found digunakan oleh fsck untuk menempatkan file-file tanpa induk.
/mnt direktori ini khususnya berisi mount point untuk sistem file yang di-mount setelah sistem melakukan boot.
CATATAN Pada sistem SuSE Linux untuk mengakses file dan folder pada media-media seperti CD, DVD, atau disket yang telah di-mount Anda bisa menemukannya pada direktori/media.
/opt direktori yang menyediakan area yang biasanya besar, tempat menyimpan paket-paket software aplikasi statis.
/proc direktori ini sebenarnya adalah sistem file virtual. Sistem file virtual berisi informasi sistem yang digunakan program-program khusus ini digunakan untuk membaca informasi proses dari memori.
/sbin direktori ini digunakan untuk menyimpan file-file binary sistem (yang biasanya dijalankan secara otomatis oleh sistem Linux). Kebanyakan file-file pada direktori ini digunakan untuk keperluan adminstrasi sistem.Direktori ini hanya bisa dieksekusi dengan user root. Eksekusi pada /sbin hanya digunakan untuk boot dan mount /usr dan menampilkan operasi pemulihan sistem. Paling sedikit, program-program berikut harus ada pada /sbin :
arp, clock, getty, halt, init, fdisk, fsck.*, grub, ifconfig, lilo, mkfs.*, mkswap, reboot, route, shutdown, swapoff, swapon, update.
/tmp direktori ini digunakan untuk menampung file-file sementara (temporary) yang dibuat saat suatu program dijalankan.
/usr direktori ini berisi sejumlah sub direktori dengan beberapa program dan file sistem yang dapat digunakan bersama dan berorientasi pada pengguna.
/var direktori ini menyimpan file-file yang cenderung berubah ukurannya setiap waktu. Berbagai file-file log sistem ditempatkan pada direktori ini. Direktori ini mempunyai beberapa sub direktori.
Tiga jenis file yang ada pada Unix/Linux:
1. File biasa, misalnya file untuk menyimpan dokumen, program ataupun data. File ini dibedakan lagi menjadi file teks (berisi kode-kode yang dapat kita baca) dan file biner (berisi kode-kode mesin).
2. Direktori, file yang berisi daftar file (file biasa ataupun subdirektori lain).
3. File spesial, file yang menyatakan piranti fisik seperti disk, tape, floppy dan printer.
Setiap pemakai yang berhasil login ke sistem Unix/Linux, biasanya memiliki direktori kerja di Home Direktori, dimana setiap pemakai tersebut dapat menciptakan file/direktori, melihat isi file/direktori, serta menghapus file/direktori. Direktori Kerja dari setiap pemakai dapat diketahui dengan perintah pwd.
Penamaan direktori dan file:
1. Semua karakter selain slash(/) boleh digunakan.
2. Beberapa karakter yang sebaiknya tidak dipergunakan adalah:
3. ?@#$^&*()`[]\|;’” spasi tab backspace
4. Huruf kecil dan huruf kapital berbeda arti.
5. Maksimal berdiri dari 14 karakter.
6. Jangan gunakan nama dot (.) dan dot dot (..) sebagai nama file, karena nama itu mempunyai makna khusus.
Perintah-perintah Dasar Stand-alone.
1.ls : melihat isi direktori.
2.Mkdir : menciptakan direktori.
3. Cd : mengubah direktori.
4.rmdir : menghapus direktori.
5.cat : menampilkan isi file dan menciptakan file.
6.cp : menyalin file.
7.rm : menghapus file.
8.mv : mengganti nama file/direktori dan memindah file ke direktori lain.
9.Ln : link ke file lain.
10.Lp : mencetak isi file.
11.Find : mencari file.
12.Chmod : untuk mengubah model akses terhadap file atau direktori.
13.Chgrp : untuk mengubah group dari file.
14.Chown : untuk mengubah kepemilikan dari file.
Perintah Yang berhubungan dengan file
1)Metacharacter, karakter yang mempunyai makna khusus bagi shell. Di antaranya:
a)*, Pencocokan dengan sebarang string (deretan karakter).
b)?, Pencocokan dengan sebuah karakter apa saja.
c)[, Awal dari sebuah kelas karakter.
d)], Akhir dari sebuah kelas karakter.
e)-, Menyatakan kawasan sebuah karakter dalam sebuah kelas.
f)!, Digunakan dalam tanda [] untuk menyatakan “selain karakter” yang mengikutinya (khusus untuk Bourne shell dan Korn Shell).Untuk mematikan fungsi Metacharacter, diantaranya dengan:
a)karakter \ ( backslash), untuk mematikan sebuah metacharacter.
b)sepasang tanda “, digunakan untuk mematikan sejumlah metacharacter.
c)sepasang randa perik tunggal (‘), digunakan untuk mematikan fungsi seluruh metacharacter yang terletak di dalamnya.
2)Titik koma sebagai pemisah antarperintah, dalam hal ini sebelum dan sesudah titik koma tidak boleh ada spasi.
3) Redirection.
a)Output Redirection, keluaran perintah biasanya diarahkan pada terminal layar/monitor. Selain ke layar, dapat juga diarahkan ke file. Dapat dilakukan dengan karakter: > (file yang ada akan tertimpa), >> (menambah file yang sugah ada), dan >! (untuk memaksa penulisan ke file yang sudah ada).
b)Input Redirection, masukan perintah biasanya berupa terminal keyboard. Dengan Unix/Linux, standar masukan tidak hanya dari keyboard, dapat juga dilakukan dengan data dari file. Dilakukan dengan karakter atau 2>>. Angka 2 di depan simbol > dan >> menyatakan kode deskripsi file dari standard error (stderr, merupakan file standar dari Unix/Linux untuk kesalahan. Selain itu adalah stdin, untuk masukan dan stdout, untuk keluaran). Kode deskripsi dari stdin sama dengan nol, sedangkan stdout sama dengan satu.
4)Penggunaan Pipa (Pipe).Digunakan untuk mengarahkan keluaran dari suatu perintah ke perintah lain. Keluaran dari perintah yang satu akan menjadi masukan bagi perintah yang lain. Simbol yang digunakan berupa vertikal bar ( | ). Sebelum dan sesudah tanda ini boleh ada spasi, karena sifatnya yang optional.
5)Filter adalah utilitas yang akan membaca data dari standar input dan biasanya memanipulasi data sebelum melepaskannya ke standar keluaran. Program filter dapat diterapkan yntuk redirection maupun pipa. Yang berfungsi sebagai filter di antaranya: cat, wc, sort, tail, head dan grep.
6)Substitusi Perintah.Dilakukan dengan cara memberikan backquote di awal dan akhir perintah. Contoh : `perintah` (tidak sama dengan ‘perintah’)
7)Pengelompokkan Perintah.Simbol ( ) digunakan untuk mengombinasikan stdout atau stderr dari sejumlah perintah menjadi satu keluaran.

Tidak ada komentar:

Posting Komentar