BAB II LANDASAN TEORI
2.1
Sistem Operasi Sistem operasi merupakan perantara antara program aplikasi, utilitas, dan
pengguna di satu pihak, dengan hardware sistem komputer di pihak lain. [Stalling, 2005] Sistem operasi adalah sekumpulan rutin perangkat lunak yang berada di antara program aplikasi dan perangkat keras. [Hariyanto, 2009] Sistem operasi adalah perangkat lunak sistem komputer yang membantu perangkat keras dalam menjalankan fungsi-fungsi manajemen proses. [Denning, 1981] Dari definisi di atas dapat disimpulkan bahwa sistem operasi merupakan perangkat lunak sistem komputer yang bertanggung jawab mengelola sumber daya sistem komputer, baik sumber daya fisik maupun sumber daya abstrak serta menyediakan layanan untuk mengakses sumber daya tersebut.
2.1.2 Arsitektur Sistem Operasi Menurut Hariyanto, Arsitektur perangkat lunak merupakan struktur-struktur yang menjadi landasan untuk menentukan keberadaan komponen-komponen perangkat lunak, cara komponen-komponen saling berinteraksi dan organisasi komponen-komponen dalam membentuk operasi
adalah
arsitektur
perangkat lunak.
perangkat 8
lunak
Arsitektur sistem yang
digunakan
9
dalam membangun perangkat lunak sistem operasi. Arsitektur sistem operasi yang terkenal antara lain: [Hariyanto, 2009]
2.1.2.1 Sistem Monolitik Sistem operasi sebagai kumpulan prosedur bahwa prosedur-prosedur di dalamnya dapat saling memanggil bila perlu. Kernel berisi semua layanan yang disediakan oleh sistem operasi. Seluruh komponen sistem operasi berada di satu ruang alamat. [Hariyanto, 2009]
a.
Kelemahan
1) Pengujian dan penghilangan kesalahan sulit karena tidak dapat dipisahkan dan dilokalisasi, namun praktik pemrograman yang berdisiplin bagus dapat mempermudah pengembangan. 2) Sulit dalam menyediakan fasilitas pengamanan. 3) Merupakan pemborosan apabila setiap komputer harus menjalankan kernel monolitik yang sangat besar sementara sebenarnya tidak memerlukan seluruh layanan yang disediakan kernel. Tidak fleksibel 4) Kesalahan pemrograman di satu bagian kernel dapat menyebabkan matinya seluruh sistem.
b.
Keunggulan Layanan dapat dilakukan sangat cepat karena terdapat di satu ruang alamat.
10
c.
Evolusi Sampai saat ini, sebagian besar UNIX berstruktur monolitik. Meskipun
monolitik bahwa seluruh komponen / subsistem di satu ruang alamat tetapi secara rancangan adalah berlapis / modular. Rancangan berlapis ialah satu komponen / subsistem merupakan lapisan lebih bawah dibanding lainnya secara logis dan menyediakan
layanan-layanan
untuk
lapisan-lapisan
lebih
atas.
Komponen-
komponen tersebut kemudian dikompilasi dan ditautkan (di-link) menjadi satu ruang alamat. Saat ini, untuk mempermudah dalam pengembangan terutamam pengujian dan fleksibilitas, sebagian UNIX menggunakan konsep loadable kernel modules, yaitu: a) Bagian-bagian kernel terpenting berada di memori utama secara tetap. b) Bagian-bagian esensi lain dapat berupa modul yang dapat ditambahkan ke kernel saat diperlukan dan dicabut begitu tidak digunakan lagi diwaktu jalan (run-time). Kernel loadable module yang disisipkan ke kernel akan menjadi satu bagian dengan kernel. Dengan demikian, kesalahan yang terdapat pada loadable kernel module dapat menyebabkan seluruh sistem mati. [Hariyanto, 2009]
2.1.2.2 Sistem Berlapis Sistem operasi dibentuk secara hirarki berdasarkan lapisan-lapisan, dalam hal ini lapisan-lapisan bawah memberi layanan untuk lapisan lebih atas. Masingmasing lapisan di satu ruang alamat tersendiri. Sistem operasi berlapis yang
11
pertama kali memakai sistem berlapis adalah THE. THE dibuat oleh Dijkstra dan mahasiswa-mahasiswanya.
Struktur
kompleksitas
dan
mempunyai
rancangan fungsional
dan
berlapis
implementasi antarmuka
dimaksudkan sistem
input-ouput
untuk
operasi.
mengurangi
Sistem lapisan
dengan
dua
lapisan
bersebelahan yang dapat berfungsi dengan baik. [Hariyanto, 2009]
Tabel 2.1 Lapisan-lapisan pada sistem operasi THE. (Hariyanto, 2009) Lapisan
Nama
0
Processor allocation & multiprogramming
1 2 3 4 5
Memory & drum management Operator process communication I/O management User program Operator
Fungsi Mengatur alokasi pemroses dan switching, multiprogramming dan pengaturan prosessor. Alokasi ruang memori atau drum. Mengatur komunikasi antar proses. Penyederhanaan akses I/O pada level atas. Untuk program pemakai. Untuk operator.
Lapisan n memberi layanan untuk lapisan n+1. Proses-proses di lapisan n dapat meminta layanan lapisan n-1 untuk membangun layanan untuk lapisan n+1. Kebalikan tidak dapat, lapisan n tidak dapat meminta layanan n+1. Masingmasing lapisan berjalan di ruang alamat-nya sendiri.
a.
Keunggulan Sistem berlapis memiliki semua keunggulan rancangan yang modular, yaitu
sistem terbagi dalam beberapa modul. Masing-masing lapisan atau
modul itu
dapat dirancang, dikode, dan diuji secara independen. Pendekatan berlapis menyederhanakan rancangan, spesifikasi, dan implementasi sistem operasi.
12
b.
Kelemahan Fungsi-fungsi sistem operasi yang harus diberikan ke masing-masing
lapisan harus dilakukan secara hati-hati. [Hariyanto, 2009]
2.1.2.3 Sistem Client / Server Sistem operasi merupakan kumpulan proses, dalam hal ini proses-proses dikategorikan menjadi server dan client. Server dan client berinteraksi, saling melayani yaitu: a.
Server adalah proses yang menyediakan layanan
b.
Client adalah proses yang memerlukan/ meminta layanan Proses client yang memerlukan layanan mengirim pesan permintaan ke
server dan menanti pesan jawaban. Proses server melakukan tugas yang diminta. Setelah itu, proses server mengirim hasil dalam bentuk pesan jawaban ke proses client. Proses server hanya menanggapi permintaan client dan tidak memulai percakapan dengan client. Dengan arsitektur client/ server, kode dapat diangkat ke level tinggi sehingga kernel dapat dibuat sekecil mungkin. Hampir semua tugas diangkat menjadi proses level pemakai. Kernel hanya mengatur komunikasi antara client dan server. Kernel yang berukuran kecil ini populer dengan sebutan microkernel. [Hariyanto, 2009]
13
a.
Masalah Tidak semua tugas dapat dijalankan di tingkat pemakai (sebagai proses
pemakai). Kesulitan ini diatasi dengan antara lain: 1) Proses server kritis tetap di kernel, yaitu proses yang biasanya berhubungan dengan perangkat keras. 2) Mekanisme ke
kernel seminimal mungkin sehingga pengaksesan ruang
pemakai dapat dilakukan secara cepat. Untuk sistem-sistem besar dengan banyak proses server dikendaki supaya proses client transparan dalam meminta layanan sehingga tidak menyulitkan pemrogram.
b.
Keunggulan
1) Pengembangan dapat dilakukan secara modular. 2) Kesalahan (bugs) di satu subsistem (diimplementasikan sebagai satu proses tersendiri)
tidak
merusak
subsistem-subsistem
lain
sehingga
mengakibatkan satu sistem mati secara keseluruhan. 3) Mudah diadaptasi untuk sistem tersebar (distibuted system).
c.
Kelemahan
1) Layanan dilakukan secara lambat karena harus melalui pertukaran pesan. 2) Pertukaran pesan dapat menjadi bottleneck. [Hariyanto, 2009]
tidak
14
2.1.2.4 Sistem Mesin Maya (Virtual Machine). Awalnya struktur ini membuat seolah-olah semua pemakai mempunyai seluruh komputer sendirian. Teknik yang digunakan adalah dengan simulasi atas pemroses yang digunakan. Sistem operasi melakukan simulasi dengan banyak mesin nyata. Mesin maya hasil simulasi digunakan pemakai. Mesin maya ini merupakan tiruan seratus persen atas mesin nyata. Satu pemakai diberi satu mesin maya. Semua pemakai diberi ilusi mempunyai satu mesin nyata (maya) yang sama-sama canggih. Pendekatan
ini
memberikan
fleksibilitas
tinggi
sehingga
sampai
memungkinkan sistem operasi - sistem operasi berbeda dapat dijalankan di mesin maya - mesin maya berbeda oleh pemakai - pemakai yang berbeda. Implementasi yang efisien merupakan masalah yang sulit karena sistem menjadi besar dan kompleks. Teknik ini berkembang menjadi operating system emulator sehingga sistem operasi dapat menjalankan aplikasi-aplikasi untuk sistem operasi lain. a.
Sistem operasi MS-Windows NT dapat menjalankan aplikasi untuk MS-DOS, OS/2 mode teks dan aplikasi Win16. Aplikasi tersebut dijalankan sebagai masukan bagi subsistem di MS-Windows NT yang mengemulasikan system calls yang dipanggil aplikasi dengan Win32 API (system calls di MSWindows NT).
b.
IBM mengembangkan WABI yang mengemulasikan Win32 API sehingga diharapkan sistem operasi yang menjalankan WABI dapat menjalankan aplikasi-aplikasi yang diperuntukkan MS-Windows.
15
c.
Para sukarelawan pengembang Linux telah membuat DOSEMU agar aplikasi MS-DOS dapat dijalankan di Linux, WINE agar aplikasi MS-Windows dapat dijalankan di Linux, iBCS agar aplikasi SCO-UNIX dapat dijalankan di Linux, dan sebagainya.
d.
Niklaus Wirth menggagas P-Code Machine agar hasil kompilasi program bahasa Pascal dapat dijalankan di mesin manapun yang mempunyai P-Code Machine. Gagasan ini dilanjutkan oleh Java dengan JVM (Java Virtual Machine) yaitu program hasil kompilasi berupa kelas Java (berkas dengan ekstensi
.class)
dapat
dijalankan
dimanapun
yang
memiliki
JVM.
[Hariyanto, 2009]
2.1.2.5 Sistem Berorientasi Objek Sistem operasi yang merealisasikan layanan sebagai kumpulan proses disebut sistem operasi bermodel proses. Pendekatan lain implementasi layanan adalah sebagai objek-objek. Sistem operasi yang disusun berdasarkan paradigma objek disebut sistem operasi berorientasi objek. Pendekatan ini dimaksudkan untuk mengadopsi keunggulan teknologi berorientasi objek. Pada sistem operasi berorientasi objek, layanan diimplementasikan sebagai kumpulan objek. Objek mengapsulkan struktur data dan sekumpulan operasi pada struktur data itu. Masing-masing objek diberi tipe yang menandai properti objek seperti proses, direktori, berkas, dan sebagainya. Dengan memanggil operasi yang didefinisikan di objek, data yang dikapsulkan di dalamnya dapat diakses dan
16
dimodifikasi. Model ini sungguh terstruktur dan memisahkan antara layanan yang disediakan dan implementasinya. Contoh sistem operasi berorientasi objek, antara lain: Eden, Choices, Xkernel, Medusa, Clouds, Amoeba, Muse, dan sebagainya. Sistem operasi MSWindows NT telah mengadopsi beberapa teknologi berorientasi objek tapi tidak keseluruhannya. [Hariyanto, 2009]
2.2
Linux Menurut Stalling, Linux awalnya merupakan sebuah varian dari UNIX
untuk arsitektur IBM. Versi awal dituliskan oleh Linus Benedict Torvalds, seorang mahasiswa ilmu komputer dari Universitas Helsinki, Finlandia. Torvalds memposting versi awal dari Linux dari Internet tahun 1991. Sejak itu, sejumlah orang
dengan
berkolaborasi
melalui
Internet,
telah
mengkontribusikan
pengembangan Linux, yang seluruhnya di bawah kontrol dari Torvalds. Karena Linux adalah gratis dan sumber kodenya tersedia, menjadi suatu alternatif awal untuk workstation UNIX seperti yang ditawarkan oleh Sun Microsystem, Digital Equipment Corp (sekarang menjadi Compaq), dan Silicon Graphics. Saat ini Linux merupakan sistem UNIX dengan fitur lengkap yang berjalan dalam berbagai platform. Menurut Hariyanto, Seluruh source code Linux termasuk kernel, device drivers, libraries, program dan perkakas pengembangan disebarkan secara bebas dengan lisensi GPL (General Public License) versi kedua.
17
Linux tidak memuat kode UNIXT M, ditulis ulang berdasar standar POSIX (Portable Operating System UNIX). Linus mengelola kernel Linux, menerima penambahan dan modifikasi setiap orang. Linus menerapkan kendali kualitas dan menambahkan semua kode baru ke kernel Linux. Linux telah di-port ke beragam platform antara lain intel x86, alpha AXP, MIPS, Sparc, PowerPC, dan sebagainya. Sekitar 95% source code kernel adalah sama untuk semua platform perangkat keras. Terdapat banyak distribusi Linux, yaitu hasil pemaketan oleh perusahaan sehingga
mempermudah
memperoleh
Linux.
Distribusi
Linux
antara
lain
Slackware, Debian, RedHat, dan S.u.S.e. Distribusi-distribusi Torvald
menggunakan
kernel
Linux
yang
disetujui
Linus
sehingga menjamin kompatibilitas. Perbedaan antara distribusi satu
dengan yang lainnya ialah pada: a.
Paket-paket perangkat lunak yang disertakan di distribusi.
b.
Struktur direktori.
c.
Metode pemaketan perangkat lunak.
d.
Inisialisasi sistem. Banyak distributor menyebabkan persaingan yang meningkatkan layanan ke
pemakai. Linux telah mulai mendukung perusahaan besar seperti IBM, Informix, SyBase, Oracle, Corel, Intel, Sun Microsystem, Compaq, Dell dan sebagainya. Linux telah menjadi sistem operasi terbanyak yang digunakan sebagai server internet.
18
Karena source code Linux diedarkan maka Linux merupakan sarana tepat untuk belajar. Linux bukan sistem operasi kacangan tapi telah dapat dihandalkan sebagai Enterprise Operating System. Setiap orang boleh memberi peningkatan dan mengubahnya sesuai kebutuhan spesifiknya, boleh menguji secara black-box bahkan secara white-box.
2.2.1 Fitur-fitur Sistem Operasi Linux Menurut Hariyanto, Fitur-fitur sistem operasi Linux antara lain: a.
Multitasking Dapat menjalankan beberapa program pada waktu yang bersamaan.
b.
Multiuser Dapat melayani beberapa pemakai di mesin sama pada waktu yang bersamaan.
c.
Multiplatform Dapat berjalan di banyak CPU berbeda, tidak hanya Intel. Terdapat versi Linux untuk Intel x86 dan kompatibel, SPARC, m86k, PowerPC dan Alpha DEC.
d.
Multiprocessor Mendukung SMP (symmetric multiprocessing atau symmetric multiprocessor) untuk Intel dan SPARC, sedang dikembangkan untuk platform lain. Linux telah
digunakan
di beberapa aplikasi multiprocessing
loosely-coupled
termasuk sistem Beowulf dan super komputer berbasis AP1000+SPARC Fujitsu.
19
e.
Memenuhi IEEE POSIX.1 Linux kompatibel dengan banyak standar UNIX di tingkat source code, IEEE POSIX.1, serta fitur- fitur System V dan BSD.
f.
Source code bebas Semua source code tersedia, termasuk seluruh kernel dan driver, perkakas pengembangan dan program pemakai, juga didistribusikan secara bebas.
g.
Mendukung beragam sistem berkas Sistem berkas yang didukung adalah ext2, ext3, serta ext4 (khusus Linux), Minix-1, Xenix, MS-DOS, ISO9660 CD-ROM, VFAT, NTFS, ReiserFS, dan lain-lain.
h.
Implementasi TCP/IP Networking lengkap Impementasi TCP/IP yang lengkap, seperti:SLIP/CSLIP, PLIP, PPP, NFS, FTP, Telnet, NNTP, SMTP, dan sebagainya. Tersedia protokol dasar di kernel termasuk TCP, Ipv4, Ipv6, AX.25, X.25, DDP (AppleTalk), NetBEUI, Netrom, dan sebagainya.
i.
Dan beragam fitur lainnya.
2.2.2 Arsitektur dasar sistem operasi Linux Menurut
Hariyanto,
Bagian
penting
sistem
operasi
adalah
kernel,
merupakan jantung sistem operasi. a.
Kernel menyediakan perkakas di mana semua layanan sistem komputer disediakan.
20
b.
Kernel mencegah proses aplikasi mengakses perangkat keras secara langsung, memaksa proses menggunakan perkakas yang disediakan.
c.
Kernel memberi proteksi kepada pemakai dari gangguan pemakai lain. Perkakas kernel digunakan melalui panggilan sistem (system call). Program
sistem menggunakan perkakas kernel untuk implementasi beragam layanan. Program sistem dan semua program lain berjalan “di atas kernel”. Program pemakai berjalan di mode berbeda dengan kernel, disebut mode pemakai. Kernel
berisi
beberapa
bagian
penting,
yaitu:
manajemen
proses,
manajemen memori, driver perangkat keras, driver sistem berkas, manajemen jaringan, dan beragam subsistem lain. Gambaran lengkap kernel ditunjukan oleh Gambar 2.1.
Gambar 2.1 Bagian-bagian penting kernel Linux (Hariyanto, 2009).
21
Berdasarkan gambar di atas dapat disimpulkan bahwa sistem operasi bertanggung jawab dalam menangani interaksi antara program-program pemakai dan perangkat keras sistem komputer. Oleh karena itu, di dalam sistem operasi terdapat system call yang berfungsi untuk mengelola sumber daya yang ada pada sistem komputer serta menyediakan layanan untuk mengakses sumber daya tersebut. System call yang ada pada sistem operasi diantaranya yaitu manajemen sistem file maya, manajer memori, manajer proses, manajer jaringan, dan lainlain.
2.3
Linux From Scratch Menurut
situs
resminya,
www.linuxfromscratch.org/lfs,
Linux
From
Scratch ialah sebuah proyek yang menyediakan instruksi secara bertahap dalam membangun sistem operasi Linux sesuai dengan keinginan kita yang seluruhnya dari source code. Secara bahasa definisi dari Linux From Scratch ialah Linux dari awal atau dari permulaan atau dari nol. Linux From Scratch ialah sebuah metode pembuatan sistem operasi Linux dari nol hingga menjadi sebuah sistem operasi yang utuh, yang dapat menyediakan fasilitas serta layanan- layanan tertentu. Berikut ini para pengembang Linux From Scratch diantaranya yaitu Gerard Beekmans sebagai Project Leader, Matthew Burgess sebagai Project Co-leader, Jeremy Huntwork, Ken Moffat, Dan Nicholson, Bryan Kadzban dan Alexander Patrakov sebagai Editor,
Manuel Canales Esparcia sebagai XML/XSL Editor,
22
serta berbagai pihak yang ikut berkontribusi baik dalam pembuatan buku panduan maupun pada proyek Linux From Scratch.
2.3.1 Target Arsitektur Linux From Scratch Target arsitektur utama LFS ialah prosesor intel 32-bit yang paling mendukung sistem Linux dan paling kompatibel baik dengan perangkat lunak open source dan proprietary. Namun tidak menutup kemungkinan LFS dapat dijalankan baik pada Power PC dan pada prosesor AMD/Intel 64-bit.
Tabel 2.2 Tabel Perkiraan Waktu Pembuatan LFS (Beekmans, 2011) Arsitektur 32-bit 64-bit
Waktu 198.5 190.6
Ukuran 648 MB 709 MB
2.3.2 LFS dan Standar Struktur LFS mengikuti standar Linux sedekat mungkin. Standar utama ialah: a.
The Single UNIX Specification Version 3 (POSIX)
b.
Filesystem Hierarchy Standard (FHS)
c.
Linux Standard Base (LSB) Core Specification 4.0 LSB mempunyai 5 standar terpisah: Core, C++, Desktop, Runtime Languages, dan Printing.
23
2.4
Model Pengembangan Waterfall Menurut
Pressman,
Model
sekuensial
linier
atau
model
waterfall
mengusulkan sebuah pendekatan kepada perkembangan perangkat lunak yang sistematis dan sekuensial yang mulai pada tingkat dan kemajuan sistem pada seluruh analisis, desain, kode, pengujian, dan pemeliharaan. Dimodelkan setelah siklus rekayasa konvensional, model sekuensial linier atau model waterfall melingkupi aktivitas-aktivitas seperti yang digambarkan pada Gambar 2.2:
Pemodelan Sistem Informasi
Analisis
Desain
Kode
Tes
Gambar 2.2 Model Pengembangan Perangkat Lunak Waterfall (Pressman, 2002)
a.
Rekayasa dan Pemodelan Sistem Informasi Karena perangkat lunak selalu merupakan bagian dari sebuah sistem (bisnis)
yang lebih besar, kerja dimulai dengan membangun syarat dari semua elemen sistem dan mengalokasikan beberapa subset dari kebutuhan ke perangkat lunak tersebut. Pandangan sistem ini penting ketika perangkat lunak harus berhubungan dengan elemen-elemen yang lain seperti perangkat lunak, manusia, dan basis data. Rekayasa dan analisis sistem menyangkut pengumpulan kebutuhan pada tingkat sistem dengan sejumlah kecil analisis serta desain tingkat puncak. Rekayasa
24
informasi mencakup juga pengumpulan kebutuhan pada tingkat bisnis strategis dan tingkat area bisnis.
b.
Analisis Kebutuhan Perangkat Lunak Proses pengumpulan kebutuhan diintensifkan dan difokuskan, khususnya
pada perangkat lunak. Untuk memahami sifat program yang dibangun, perekayasa perangkat lunak (analis) harus memahami domain informasi, tingkah laku, unjuk kerja, dan antarmuka (interface) yang diperlukan. Kebutuhan baik untuk sistem maupun perangkat lunak didokumentasikan dan dilihat lagi dengan pelanggan.
c.
Desain Desain perangkat lunak sebenarnya adalah proses multi langkah yang
berfokus pada empat atribut sebuah program yang berbeda; struktur data, arsitektur
perangkat
lunak,
representasi
interface,
dan
detail (algoritma)
prosedural. Proses desain menerjemahkan syarat/ kebutuhan ke dalam sebuah representasi perangkat lunak yang dapat diperkirakan demi kualitas sebelum dimulai pemunculan kode. Sebagaimana persyaratan, desain didokumentasikan dan menjadi bagian dari konfigurasi perangkat lunak.
d.
Generasi Kode Desain harus diterjemahkan ke dalam bentuk mesin yang bisa dibaca.
Langkah pembuatan kode melakukan tugas ini. Jika desain dilakukan dengan cara yang lengkap, pembuatan kode dapat diselesaikan secara mekanis.
25
e.
Pengujian Sekali kode dibuat, pengujian program dimulai. Proses pengujian berfokus
pada logika internal perangkat lunak, memastikan bahwa semua pernyataan sudah diuji, dan pada eksternal fungsional – yaitu mengarahkan pengujian untuk menemukan kesalahan-kesalahan dan memastikan bahwa input yang dibatasi akan memberikan hasil aktual yang sesuai dengan hasil yang dibutuhkan.
f.
Pemeliharaan Perangkat lunak akan mengalami perubahan setelah disampaikan kepada
pelanggan (perkecualian yang mungkin adalah perangkat lunak yang dilekatkan). Perubahan akan terjadi karena kesalahan-kesalahan ditentukan, karena perangkat lunak harus disesuaikan untuk mengakomodasi perubahan-perubahan di dalam lingkungan eksternalnya (contohnya perubahan yang dibutuhkan sebagai akibat dari perangkat peripheral atau sistem operasi yang baru), atau karena pelanggan membutuhkan
perkembangan
fungsional
atau
unjuk
kerja.
Pemeliharaan
perangkat lunak mengaplikasikan lagi setiap fase program sebelumnya dan tidak membuat yang baru lagi.