Abstract: 16-bit operating systems worth studying because it can be a reference for understanding the
machine instructions on computer hardware and microcontroller devices. This research aims to develop
a 16-bit operating system with functions essentially: the execution process, memory allocation, and file
management. Posts in this study discusses how to manufacture core programs such as the operating
system bootloader, kernel, shell, system calls, file management, and handling input-output on the
keyboard, the mouse, disk, and memory using Assembly language programming with NASM compiler.
Therefore, this study also discusses the workings of computer hardware as a knowledge base. The
Waterfall method is used to create an application that meets the basic functions of the operating system.
VirtualBox software is used as a container for additional operating systems so that the operating system
is made to run on existing operating systems.
Keywords: hardware, programs, kernel, system calls, process, memory
Abstrak: Sistem operasi 16 bit layak diteliti karena dapat menjadi acuan untuk memahami instruksi
mesin pada perangkat keras komputer dan perangkat microcontroller. Penelitian ini bertujuan
mengembangkan sistem operasi 16 bit dengan fungsi-fungsi dasarnya yaitu eksekusi proses,
pengalokasian memory, dan manajemen file. Tulisan dalam penelitian ini membahas cara pembuatan
program-program inti sistem operasi seperti bootloader, kernel, shell, system calls, file management,
dan penanganan input-output pada keyboard, mouse, disk, dan memory menggunakan bahasa
pemrograman Assembly dengan compiler NASM. Oleh karena itu, penelitian ini juga membahas
cara kerja perangkat keras komputer sebagai pengetahuan dasarnya. Untuk membuat aplikasi yang
memenuhi fungsi-fungsi dasar sistem operasi tersebut digunakan metode Waterfall. Software VirtualBox
digunakan sebagai penampung sistem operasi tambahan sehingga sistem operasi yang dibuat dapat
berjalan pada sistem operasi yang sudah ada.
Kata Kunci: perangkat keras, program, kernel, system calls, proses, memory
2
Pembuatan Sistem Operasi Komputer Sederhana dengan ....
3
Kalbiscentia,Volume 2 No.1 Februari 2015
dengan prosesor 32 bit, prosesor 16 bit yang hanya e. Terminated: Proses telah selesai mengeksekusi
mendukung real-mode dimana tidak ada proteksi
memory sehingga memungkinkan ada dua proses
yang bisa mempunyai alamat memory yang sama.
Oleh karena itu, dalam prosesor 16 bit, harus dibuat
sistem operasi yang bersifat single-tasking.
3. Manajemen File
Sebuah sistem berkas (file system) normalnya
membentuk direktori-direktori untuk memudahkan
pencarian. Direktori ini biasanya memiliki berkas- Gambar 3 Fase-fase proses
berkas (files) dan direktori-direktori lainnya. Sistem
operasi melakukan beberapa aktifitas berikut untuk
sebuah manajemen berkas: 6. Kernel
a. Menjaga setiap informasi, lokasi, dan isi suatu file Secara program, sistem operasi adalah sebuah
tetap pada tempatnya kernel, yaitu program yang terus berjalan selama
b. Memutuskan berkas mana yang akan komputer dijalankan. Kernel merupakan jantung dari
mendapatkan sumber daya, sehingga pengguna sistem operasi. Semua proses input dan output yang
dapat membuka dan menjalankan file yang berlangsung selama komputer berjalan diatur oleh
dipilih kernel, seperti pembacaan dan penulisan terhadap
disk, manajemen memory, dan penjadwalan program
c. Memberikan sumber daya kepada file yang aplikasi [6].
membutuhkan
Semua aplikasi yang berjalan di atas kernel harus
d. Mengambil sumber daya apabila sudah tidak mendapat izin dari kernel agar aplikasi tersebut dapat
membutuhkan berjalan di komputer. Contohnya, ketika seorang
pengguna membuka sebuah web browser, maka
4. Layanan-layanan dalam sistem operasi yang terjadi sebenarnya adalah kernel mengecek
Beberapa layanan yang biasa diberikan oleh input dari pengguna, bisa berupa input keyboard atau
sistem operasi adalah sebagai berikut: mouse, lalu kernel mengecek sumber daya yang ada
pada komputer untuk menentukan apakah program
a. Eksekusi program
ini boleh dijalankan, jika boleh maka kernel akan
b. Operasi input-output memanggil alamat instruksi awal yang terdapat pada
c. Manupulasi sistem file browser tersebut lalu browser akan berjalan.
4
Pembuatan Sistem Operasi Komputer Sederhana dengan ....
perilaku dari mesin virtual. Programmer dapat operasi tersebut adalah Unix, maka akan memanggil
menulis program mereka untuk berjalan di atas mesin fungsi open() pada library POSIX (bahasa C memang
virtual ini tanpa perlu memperhatikan perangkat sengaja dibuat untuk membuat sistem operasi Unix,
keras di mana aplikasi tersebut sebenarnya berjalan. jadi banyak kesamaan sintaks), lalu jika sistem operasi
Hal ini selain mempermudah penulisan program tersebut adalah Windows, maka akan memanggil
juga memudahkan porting ke perangkat keras secara fungsi CreateFile() pada Win32 API. Dari system
langsung [6]. calls, maka selanjutnya kernel yang akan mengambil
Bila sebuah fungsi dalam system calls dipanggil, alih untuk melaksanakan tugas yang dimaksud.
maka system akan mengeksekusi instruksi trap, yaitu
interrupt yang dihasilkan oleh perangkat lunak, yang 9. Bootloader
akan mengubah mode operasi dari user mode ke kernel Bootloader adalah bagian sistem operasi yang
mode dan memindahkan kontrol ke sistem operasi. melakukan pengambil alihan tugas dari BIOS ke sistem
Sistem operasi akan menentukan call mana yang operasi, selanjutnya bootloader akan menjalankan
dipanggil dan memanggil kode kernel yang tepat. kernel sehingga tugas pun beralih kepada kernel. Pada
System calls sendiri merupakan kumpulan libray yang bootloader juga tersimpan informasi-informasi yang
sudah disediakan oleh sistem operasi. Pada UNIX, dibutuhkan oleh sistem operasi [7]. Ketika seorang
system calls ini dinamakan POSIX, sedangkan pada pengguna menekan tombol power pada komputer,
Windows dinamakan Win32 API. Pada sistem-sistem kabel yang terhubung ke tombol akan mengirim
operasi tersebut, system calls dibuat dengan bahasa sinyal elektronik ke motherboard, lalu motherboard
C atau C++. Tabel 1 adalah beberapa perbandingan akan meneruskan sinyal ke Power Supply. Sinyal
antara system calls POSIX dan Win32: elektronik tersebut mempunyai rangkaian data byte
[8]. BIOS sendiri berisi program yang sudah dibuat
Tabel Perbandingan system
Tabel1 1Perbandingan callsPOSIX
system calls POSIX dan
dan Win32
Win32
sebelumnya di pabrik dimana komputer tersebut
POSIX Win32 Deskripsi dibuat untuk melakukan beberapa tugas. BIOS
fork() CreateProcess() Menciptakan proses baru tersimpan di dalam ROM (Read Only Memory).
open() CreateFile() Membuka file untuk baca dan tulis
BIOS akan menjalankan beberapa tugas seperti
close() CloseHandle() Menutup file yang sudah dibuka
read() ReadFile() Membaca data dari file ke buffer
menciptakan Interrupt Vector Tabel, memberikan
write() WriteFile() Menulis data dari buffer ke file beberapa interrupt services, dan menjamin semua
mkdir() CreateDirectory() Membuat direktory baru perangkat keras dalam keadaan baik.
rmdir() RemoveDirectory() Menghapus directory yang kosong Selanjutnya BIOS akan mencari bootable device
unlink() DeleteFile() Menghapus file seperti floppy disk, harddisk, USB Removable Disk,
atau CD. Lalu BIOS akan mencari program bootloader
Tabel 2 Perangkat keras yang dibutuhkan
Selain memudahkan menulis program dengan pada device yang sesuai dengan pengaturan menu
adanya system calls, system calls
No. Jenis juga membuat
Spesifikasi boot di BIOS dan memuatnya di memory pada
1. Processor Intel Pentium
bahasa-bahasa program tingkat tinggi yang berjalan IV 2,6 alamat 0x07C0. Jika pada device tersebut tidak
GHz atau lebih
di atas sistem operasi menjadi portable. Sebagai ditemukan program bootloader, maka BIOS akan
2. RAM 2 GB atau lebih, 192
contoh, dalam bahasa programMB C, kita tahu bahwa
untuk mesin
memberikan pesan “No Operating System Found”
untuk membuka suatu file kita perlu
virtualmembuat objek lalu akan menghentikan sistem. Program bootloader
dari
3. kelas ofstream, misalnya output,
Motherboard - kemudian kita harus berada dalam keadaan real-mode yang masih
4. filePS/2
buka denganmouse atau -
fungsi open(). didukung prosesor 16 bit.
touchpad pada laptop
Gambaran jelasnya seperti berikut:
atau notebook Syarat sebuah program bisa menjadi program
Keyboard bootloader adalah program tersebut harus memuat
5. ofstream output; -
6. Monitor - instruksi awalnya di alamat 0x07C0, lalu program
output.open(“D:\berkas.txt”);
7. USB Removable Disk - tersebut maksimal berukuran 512 byte, dimana 2 byte
Pada penggalan source code di atas, kita akan terakhir harus bernilai 0AA55h. Program bootloader
membuka file berkas.txt
Tabel 3 Perangkat yang ada di drive D. Fungsi
lunak yang dibutuhkan akan melaksanakan beberapa tugas seperti me-
iniNo.berlaku
Jenis untuk bahasa C,Keterangan tak masalah sistem reset disk yang menjadi bootloader device tersebut,
1. Sistem Operasi
operasi yang digunakan, sintaks di atasSebagai sistem operasi
akan selalu membaca sector-sector pada disk tersebut, lalu
Windows XP awal untuk membuat
sama. Pada saat source codesistem itu di-compile,
operasi FROSmaka
ini akan mencari file kernel.bin untuk kemudian tugas
compiler
2. C akan
Oracle VirtualBox system calls
memanggil Sebagai mesinyang ada
virtual selanjutnya akan diberikan file kernel.bin tersebut,
di sistem operasi yang bersangkutan. penampung Jika sistem
Guest dan disitulah sistem operasi mulai berjalan.
Operating System
3. Notepad++ Sebagai text-editor 5
untuk bahasa
pemrograman Assembly
4. Netwide Assembler Sebagai Assembler
Kalbiscentia,Volume 2 No.1 Februari 2015
10. Struktur Komputer dari semua cluster yang ada di disk. Jika FAT hilang
atau rusak, maka isi disk tak akan bisa dibaca oleh
sistem operasi. Ada beberapa tipe FAT, yaitu FAT12,
FAT16, dan FAT32 [10]. Dalam sistem operasi ini,
FAT12 yang akan dipakai. FAT12 ini juga dipakai
oleh sistem operasi DOS.
Struktur harddisk mirip dengan floppy disk,
hanya saja harddisk bisa terdiri dari banyak kepingan
yang disebut platter, dan floppy hanya ada satu. Untuk
pembuatan sistem operasi FROS ini, penulis hanya
membahas struktur dari perangkat keras floppy disk.
Gambar 4 Struktur komputer [9] Meski sistem operasi ini juga bisa berjalan
pada media USB, itu disebabkan karena media USB
Gambar 4 adalah garis besar dari struktur tersebut nantinya akan diformat menjadi seperti floppy
perangkat keras komputer. CPU atau prosesor, RAM, disk dengan aplikasi flashnul. Dengan begitu, struktur
dan peralatan-peralatan lainnya seperti keyboard, pada USB tersebut akan memiliki struktur yang
mouse, monitor, dan harddisk, semuanya saling seolah-olah mirip dengan struktur floppy. Gambaran
terhubung dengan system bus yang terdapat pada struktur floppy sdapat dilihat pada Gambar 5:
motherboard.
System bus mempunyai 3 jalur bus, yaitu data
bus, control bus, dan address bus. Pada saat CPU
melakukan sebuah tugas atau instruksi, misalnya ingin
membaca data pada alamat 2000:0010h, maka CPU
akan mengirimkan nilai 2000:0010h melalui address
bus menuju memory controller dan memberi sinyal
bahwa ini adalah read operation pada control bus.
Kemudian memory controller akan mengerti bahwa
CPU ingin membaca data pada alamat 2000:0010h,
maka memory controller akan mengambil data dari
alamat memory 2000:0010h dan mengirimkan balik
ke CPU melalui data bus. Jika yang terjadi adalah
write operation, maka memory controller akan
menulis data pada memory yang berasal dari data bus.
Jika CPU ingin membaca data dari harddisk,
maka CPU juga akan mengirimkan ke disk Gambar 5 Struktur floppy [11]
controller. Disk controller akan membaca sector-
sector yang diminta CPU agar kemudian bisa di-load Floppy Disk 1,44 MB mempunyai rincian
ke memory. Pada dasarnnya CPU hanya akan bisa sebagai berikut:
memproses data yang berada pada memory, tetapi l Floppy Disk mempunyai 2 sisi, dan setiap sisi
karena memory bersifat volatile, yang artinya isi dinamakan head
memory akan hilang jika tak ada arus listrik, maka
komputer membutuhkan media penyimpanan kedua l Drive head bergerak di atas permukaan kedua
seperti harddisk, floppy disk, USB, dan sebagainya. sisi
Sedangkan pada monitor, sudah mempunyai graphic l Jarak drive head dengan permukaan sangat
controller yang akan menerjemahkan setiap byte data kecil, bisa 5000-10000 mikron
yang dikirim kepadanya. l Setiap sisi mempunyai 80 track (nomor 0-79)
11. File Allocation Table l Setiap track mempunyai 18 track (nomor 1-18)
FAT (File Allocation Tabel) adalah tabel yang l Setiap sector mempunyai 512 byte
diletakkan di media penyimpanan seperti harddisk, l Total ukuran floppy adalah 2 x 80 x 18 x 512 =
USB atau floppy yang menunjukkan lokasi dan data 1.472.560 byte atau setara 1,44 MB
6
Pembuatan Sistem Operasi Komputer Sederhana dengan ....
Ruang penempatan untuk file dalam floppy Nama-nama file dalam FAT12 membatasi 8
dibagi ke dalam unit-unit yang disebut sector. Dalam karakter untuk nama dan 3 karakter untuk ekstensi.
device yang lebih besar, seperti harddisk, sekumpulan Aturan-aturan untuk penamaan file dalam FAT12
sector membentuk cluster. Khusus untuk floppy adalah sebagai berikut:
disk, jumlah sector dalam setiap cluster hanya satu. l Nama file, directory, atau ekstensi tidak diakhiri
Dengan demikian, ukuran cluster untuk floppy disk dengan karakter null.
adalah 512 byte.
l Nama file dan directory selalu menempati 8
Struktur FAT12 pada floppy mempunyai 4 sector byte, jika nama file atau directory lebih pendek
utama, yaitu : boot sector, FAT tabels, root directory, dari 8 byte, maka sisa byte diisi dengan spasi
dan data area. (dengan kode ASCII 20). Ini juga berlaku untuk
3 karakter extensi file.
l Nama file, directory, atau ekstensi selalu huruf
besar. Bila pengguna membuat nama file
dengan huruf kecil, maka sistem operasi akan
mengubahnya menjadi besar.
Gambar 6 Struktur FAT12
l Nama directory juga bisa memiliki ekstensi.
Masing-masing penjelasan sector adalah l “FILE1” dan FILE1.TXT” adalah 2 nama yang
sebagai berikut [12]: berbeda.
l Boot sector terdapat pada sector pertama l File dan directory tidak boleh memiliki nama
(sector 1) pada disk. Boot sector mengandung yang sama, meskipun atributnya berbeda.
informasi spesifik tentang struktur dari sistem
file, termasuk berapa banyak salinan dari FAT
tabels yang ada, seberapa besar masing-masing B. TAHAP PENGEMBANGAN SISTEM
sector, berapa banyak sector yang ada dalam OPERASI
cluster dan lain-lain.
1. Analisis Tingkat Kebutuhan Sistem
l FAT tables mengandung pointer untuk setiap
cluster pada disk, dan mengindikasikan nomor Sistem operasi yang dikembangkan dalam
Tabel 1 Perbandingan system calls POSIX dan Win32
dari cluster berikutnya dalam sebuah rantai penelitian ini bertujuan untuk dapat berjalan pada
cluster, akhir dari rantai cluster, apakah cluster semua
POSIX komputer
Win32 dengan prosesorDeskripsi tipe x-86 atau x-64.
fork() CreateProcess() Menciptakan proses baru
dalam keadaan kosong atau dalam keadaaan
2.open()
Analisis KebutuhanMembuka
CreateFile() Perangkat Keras
file untuk baca dan tulis
error. FAT tables adalah satu-satunya metode
close() CloseHandle() Menutup file yang sudah dibuka
untuk menemukan lokasi file dan direktori read()Prosesor tipe x-86 atau
ReadFile() x-64data
Membaca umumnya
dari file ke berasal
buffer
dalam disk. Biasanya ada 2 salinan FAT tables, dari keluarga
write() Intel
WriteFile() dan AMD.
Menulis data dariprosesor
Untuk buffer ke fileyang
yang satu berguna untuk keamanan data dan bukan
mkdir() x-86 atau x-64, sistem
CreateDirectory() Membuatoperasi
direktoryini
baru tak akan
satu lagi untuk tujuan recover data. Pada floppy, bisa berjalan
rmdir() karena mempunyai
RemoveDirectory() Menghapusbahasa
directorymesin yang
yang kosong
karena hanya ada satu cluster untuk satu sector, berbeda.
unlink() DeleteFile() Menghapus file
maka ada FAT entry pointer untuk setiap sector
pada disk. Tabel
Tabel22Perangkat kerasyang
Perangkat keras yangdibutuhkan
dibutuhkan
l Root directory adalah directory utama pada disk. No. Jenis Spesifikasi
Tidak seperti directory lainnya yang berada 1. Processor Intel Pentium IV 2,6
GHz atau lebih
dalam data area, root directory mempunyai
2. RAM 2 GB atau lebih, 192
ukuran yang terbatas (untuk FAT12, 14 sector * MB untuk mesin
16 directory = 224 possible entries), angka 224 virtual
ini menunjukkan jumlah maksimum file dan 3. Motherboard -
directory yang dapat ditampung oleh floppy disk 4. PS/2 mouse atau -
touchpad pada laptop
dalam struktur FAT12. atau notebook
l Data Area mengandung data isi file dan 5. Keyboard -
directory dan mengisi sisa seluruh sector yang 6. Monitor -
7. USB Removable Disk -
ada di floppy.
8
Pembuatan Sistem Operasi Komputer Sederhana dengan ....
programmer lain juga dapat membuat suatu aplika- dengan byte 0 dan 2 byte terakhir adalah 0AA55h. Ini
si dengan bahasa BASIC sehingga aplikasinya dapat terlihat pada baris program:
berjalan dalam sistem operasi ini. Terakhir, pengguna times 510-($-$$) db 0
bisa memilih warna sesuai keinginan pengguna untuk
dw 0AA55h
layar halaman dekstop dimana default-nya adalah hi-
jau muda.
b. Membuat Kernel
6. Tahapan Coding Untuk membuat program kernel ini, penulis
a. Membuat Bootloader membutuhkan beberapa file yang berisi source code
bahasa Assembly. File-file tersebut adalah kernel.asm,
Untuk membuat bootloader, penulis menuliskan
basic.asm, disk.asm, keyboard.asm, math.asm, misc.
programnya di Notepad++, lalu merubahnya menjadi
asm, ports.asm, sound.asm, string.asm, dan screen.
file biner dengan NASM. Setelah source code program
asm. Selain file kernel.asm, simpan file-file lainnya
dibuat dengan nama file boot.asm, simpan file tersebut
dalam directory features.
di folder instalasi NASM. Default-nya adalah C:\
Program Files\Nasm. Lalu ketikkan perintah “nasm Untuk menghasilkan file kernel.bin, maka
boot.asm –o boot.bin” untuk merubahnya menjadi file penulis perlu meng-compile file kernel.asm. Caranya
boot.bin di Command Prompt. adalah membuka file nasm.bat dan ketikkan “nasm
kernel.asm –o kernel.bin”. File-file yang terdapat
Tahap selanjutnya adalah menyimpan file boot.
dalam directory features sudah di-include dalam file
bin di Floppy Disc Image. Penulis tidak bisa menyalin
kernel.asm. Jika tidak ada pesan yang muncul, maka
begitu saja karena file boot.bin harus diletakkan di
proses compile sukses. Setelah itu cukup salin file
sector pertama floppy disk. Maka langkah yang harus
kernel.bin ke floppy virtual.
dilakukan adalah membuka Command Prompt dan
mengetikkan perintah-perintah berikut: Program kernel yang merupakan program
inti dari sistem operasi akan melakukan banyak
debug = untuk memanggil program debug.com
tugas penting seperti mengeksekusi sebuah
yang terdapat pada Windows.
proses, mengalokasi memory untuk program yang
n boot.bin = untuk memanggil file boot.bin yang berjalan, membuat, menyalin, dan menghapus
akan diproses. file, menerjemahkan instruksi bahasa BASIC, dan
l 0 = untuk memuat isi file boot.bin ke dalam memberikan pesan jika ada suatu kesalahn.
memory.
c. Membuat Shell, Interpreter Basic, Paint,
w 0 0 0 1 = untuk menyalin file boot.bin ke dan Editor
sector pertama floppy virtual.
Untuk membuat program Shell, Interpreter
Instruksi awal dalam file boot.asm adalah
BASIC, Paint, Editor, dan lain-lain cukup dengan
memastikan program memulai alamat awal memory
meng-compile file-file paint.asm, editor.asm, dan
di 07C0h. Ini bisa dilihat pada bagian kode:
command.asm tersebut dengan program NASM. File
mov ax, 07C0h basic.asm sudah di-include dalam kernel.asm. Proses
mov ds, ax compile sama dengan meng-compile file kernel.asm.
Setelah itu prosedur 12hts akan membaca
cluster-cluster untuk bisa mencari lokasi file kernel. d. Pengujian Sistem
bin. Jumlah sector yang pertama dibaca adalah 14
Selama tahap pembuatan coding, banyak
sector. Terlihat pada baris program
pengujian yang terjadi untuk mengecek error dan
mov ah, 2
mengira-ngira bagian mana yang salah jika terjadi
mov al, 14 error run-time. Dalam level ini, tidak ada debugger
Setelah file kernel.bin ditemukan, langkah untuk mengecek error pada saat run-time. Karena
selanjutnya adalah memuat file kernel.bin ke alamat penulis membuat pada VirtualBox, maka cukup me-
memory 2000h yang merupakan alamat awal file restart VirtualBox tersebut dengan memilih menu
kernel.bin. Untuk memastikan ukuran program restart. Jika terjadi error, maka penulis kembali ke
bootloader sebesar 512 byte dan 2 byte terakhir sistem operasi Windows XP pada VirtualBox dan
adalah 0AA55h, maka sisa dari program akan diisi melakukan coding lagi.
9
Kalbiscentia,Volume 2 No.1 Februari 2015
10
Pembuatan Sistem Operasi Komputer Sederhana dengan ....
Tabel44Data
Data pengujian
pengujian sistem
sistemoperasi FROS pada beberapa PC PC
Tabel operasi FROS pada beberapa untuk memuat isi file ke dalam memory, os_create_
No. Merek PC Spesifikasi file yang berguna untuk membuat file baru, os_
1. Acer Processor – Intel coreI3 32 bit remove_file yang berguna untuk menghapus file dan
RAM – 2 GB masih banyak yang lainnya.
2. Asus Processor – Intel coreI3 32 bit
RAM – 4 GB Prosedur-prosedur tersebut disimpan di file-
3. Lenovo Processor – Intel coreI5 64 bit file terpisah yang berada di directory feature. Di
RAM – 4 GB akhir bagian file kernel.asm penulis menambahkan
4. Acer Processor –Intel dual core 32 directive %include agar prosedur-prosedur tersebut
bit
RAM – 1 GB bisa dikenali oleh assembler NASM.
5. Apple Processor –Intel coreI3 32 bit Pada awal bagian file kernel.asm terdapat
RAM – 4 GB penggalan source code seperti jmp os_main, jmp os_
print_string, jmp os_move_cursor dan seterusnya.
Diharapkan sistem operasi ini dapat berjalan
Tabel 5 Paket byte pertama pada saat mouse event terjadi Instruksi-instruksi tersebut tak akan melakukan
pada jenis-jenis PC yang ada pada tahun 1980-an,
Y X Y X Selalu Middle Right apa-apa,
Left tetapi NASM akan mencatat setiap alamat
tetapi karena
overflow penulissign
overflow sulitsign
mendapatkannya,
1 Button maka
Button dari
Button
instruksi tersebut pada saat file kernel.asm di-
hanya data yang terdapat bit pada
bit tabel 3.3 yang penulis
compilasi menjadi kernel.bin. Alamat-alamat dari
dapat.
Bit 7 Untuk Bit 6jenis Bit komputer
Bit Bit Apple,
3 sebenarnya
Bit 2 Bit 1 Bit 0
prosesor yang digunakan 5 4 Apple bukan prosesor instruksi tersebut tidak lain adalah alamat masing-
masing prosedur yang terdapat pada kernel.bin yang
tipe x-86 atau x-64 seperti Intel dan AMD sebelum
di-load ke memory pada saat sistem operasi mulai
tahun
Tabel 62006. Prosesor
Paket byte kedua saatyang
mouse terdapat
event terjadipada komputer
berjalan.
Apple sebelum tahun 2006 adalah PowerPC yang
X movement Hal ini akan mempermudah programmer lainnya
mempunyai bahasa mesin yang berbeda. Tetapi,
sekarang Apple
Tabel 7 Paket sudah
byte ketiga membuat
saat mouse komputer dengan yang ingin membuat program yang akan berjalan
event terjadi
prosesor Intel sehingga sistem operasi FROS ini juga pada sistem operasi ini. Misalnya, programmer ingin
Y movement membuat prosedur untuk mencetak kalimat “Hello
dapat berjalan pada jenis komputer Apple [13].
People”, maka source code yang dia harus buat
adalah :
e. Analisis Sistem Operasi
BITS 16
Setelah program bootloader berhasil
ORG 32768
menemukan lokasi sector program kernel, maka
program kernel akan di-load di memory pada alamat %INCLUDE ‘mikedev.inc’
2000h:000h, dan akan menempati 32 KB, lalu 32 KB
sisanya digunakan untuk program-program lainnya start:
yang dijalankan oleh pengguna. Total memory yang mov si, teks
digunakan adalah 64 KB karena sistem operasi ini
call os_print_string
hanya akan menempati satu segment. 32 KB milik
kernel terdiri dari 24 KB untuk kernel executabel
code dan 8 KB untuk operasi disk seperti membaca mov ah,0
dan menulis isi file. Konsekuensi dari kecilnya jumlah int 16h
memory ini adalah ukuran program kernel tidak boleh
melebihi 24 KB, dan ukuran program external atau
ret
program pengguna tidak boleh lebih dari 32 KB.
Seperti disebutkan pada BAB II, pembatasan jumlah
memory yang dipakai ini untuk mempermudah teks db ‘Hello People’, 0
pembuatan sistem operasi. Dengan source code ini, akan bisa menampilkan
Dalam program kernel ini terdapat banyak kalimat “Hello People”. Sebagaimana kita lihat,
prosedur yang berguna untuk mempersingkat source prosedur os_print_string belum didefinisikan sama
code program. Prosedur-prosedur itu antara lain os_ sekali, tetapi program ini tetap bisa berjalan untuk
print_string yang berguna untuk mencetak string, menampilkan kalimat “Hello People”. Ini disebabkan
os_move_cursor yang berguna untuk memindahkan karena pada file mikedev.inc berisi alamat-alamat
cursor, os_speaker_tone yang berguna untuk instruksi dari prosedur-prosedur yang ada pada file
menyalakan speaker, os_load_file yang berguna kernel.bin. Alamat-alamat tersebut adalah alamat
11
Kalbiscentia,Volume 2 No.1 Februari 2015
yang berada di memory. Dengan begitu, program Setelah itu, pastikan segment berada pada lokasi
pengguna akan dapat memanggil prosedur-prosedur 2000h yang menjadi lokasi memory sistem operasi ini
tersebut. berjalan. Kemudian sistem operasi akan menampilkan
Jika ingin membuat program tanpa prosedur splash screen. File rizky.pcx merupakan file gambar
yang ada di kernel, maka source code yang harus yang terdapat dalam disk dan digunakan untuk splash
dibuat adalah seperti ini : screen. Prosedur splash_screen akan membaca byte
data pada file rizky.pcx dan akan menampilkan
BITS 16
di video memory. Dalam prosedur splash_screen
ORG 32768
tersebut, penulis menggunakan interrupt timer untuk
menunda proses selama 4 detik sehingga gambar
start: yang ditampilkan hanya berlangsung 4 detik.
mov si, teks Halaman command adalah program terpisah
call os_print_string yang berada pada file command.bin. Halaman
command.bin akan di-load ke memory dengan
mov ah,0
prosedur os_load_file. Setelah di-load ke memory,
int 16h baru progam bisa dieksekusi oleh CPU.
Pada halaman command, pengguna bisa
ret mengetikkan perintah-perintah yang sudah disediakan
sistem operasi agar bisa dieksekusi oleh sistem
os_print_string:
operasi. Misalnya pengguna mengetikkan “jam”,
maka program command.bin akan menampilkan
pusha
waktu jam saat ini. Perintah ataupun segala macam
mov ah,0Eh instruksi dalam sistem operasi ini tidak bersifat case
.ulang: sensitive, yang berarti tidak membedakan huruf besar
lodsb dan kecil karena segala macam instruksi akan diubah
menjadi uppercase sebelum dieksekusi. Ilustrinya
cmp al,0
seperti berikut:
je .done
l Misal, pengguna mengetikkan “jam”, “Jam”,
int 10h
ataupun “JAM” pada halaman command.
jmp .ulang
l Lalu program akan merubah “jam”, “Jam”,
.done:
ataupun “JAM” menjadi “JAM” dengan
popa prosedur os_string_uppercase.
ret
l Setelah terbentuk instruksi “JAM”, program
akan membandingkan apakah perintah termasuk
teks db ‘Hello People’, 0 dari salah satu daftar perintah yang disediakan
dengan prosedur os_string_compare.
Seperti kita lihat source code tersebut menjadi
lebih panjang dan tentu menjadi tidak efektif dalam l Jika termasuk dari salah satu daftar perintah
menulis program. Ini adalah prinsip dasar system calls maka program akan melakukan tugas sesuai
yang telah dibahas pada BAB II. Hanya saja ini dibuat daftar perintah tersebut.
dengan bahasa Assembly. Prosedur yang dipanggil l Jika tidak termasuk dari salah satu daftar
adalah prosedur yang berasal dari kernel yang berada perintah, maka program akan menampilkan
pada alamat memory yang sudah ditentukan. kalimat “Tak ada instruksi seperti itu”.
Program-program yang ingin berjalan di sistem
l Jika pengguna mengetikkan “keluar”, maka
operasi ini harus memulai alamat awalnya pada
program akan kembali ke halaman sebelumnya.
lokasi 32768. Hal itu terlihat pada penggalan source
code org 32768. Alamat 0-32767 adalah milik kernel Pada halaman desktop, jika pengguna menekan
dan alamat 32768-65531 adalah milik program yang tombol enter, maka sistem operasi akan menampilkan
sedang dijalankan pengguna. Hal ini dilakukan untuk daftar program dan file yang ada di disk dengan
mempermudah manajemen memory dalam sistem prosedur os_file_selector. Dengan prosedur os_file_
operasi ini. selector pengguna dapat memilih program yang
12
Pembuatan Sistem Operasi Komputer Sederhana dengan ....
13
Kalbiscentia,Volume 2 No.1 Februari 2015
Sebenarnya ada beberapa metode yang dipakai bergerak sejauh 10 pixel ke kiri. Posisi sebelumnya
untuk menangani masalah ini oleh sistem operasi lalu dikurangi dengan 10 untuk mengetahui lokasi
modern saat ini. Tetapi, itu tidak dibahas disini karena koordinat mouse sekarang. Selanjutnya kernel akan
akan menjadi lebih kompleks dan rumit. Untuk sistem menggambar pointer pada lokasi yang ditunjukkan.
operasi sederhana ini, proses yang dilakukan pada Karena sistem operasi ini bersifat text-mode,
saat mouse event terjadi tidaklah terlalu banyak dan hanya mendukung 80 kolom dan 25 baris, maka jika
tidak memakan waktu, hanya beberapa milisecond. posisi mouse sudah melebihi 80, maka jarak pointer
Kecepatan paket data mouse adalah 100 paket dibatasi tak boleh lebih dari 80. Dan untuk alasan
per detik yang setara dengan 10 milisecond untuk kemudahan, maka jarak baris atau sumbu Y hanya
setiap paket. Proses yang terjadi pada saat mouse sampai 5 baris ke bawah.
event terjadi tidak selama itu, sehingga kernel bisa
memastikan untuk menerima urutan paket dengan Pointer yang digambar disini adalah gambar
benar. Pada sesaat sebelum menerima 3 paket ini, love dengan kode ASCII 3. Pointer akan ditempatkan
kernel tetap akan mengecek apakah keyboard dalam pada baris dan kolom yang telah dihitung sebelumnya
keadaan kosong atau tidak. Selanjutnya jika kosong dari perpindahan gerak mouse. Sebelum menggambar
maka kernel akan mematikan keyboard terlebih pointer, maka harus me-reset kembali layout menu
dahulu. Kemudian kembali mengaktifkan keyboard untuk menghapus jejak yang ditinggalkan dari
untuk berjaga-jaga jika penggguna menekan gambar pointer sebelumnya. Sistem operasi juga
keyboard sewaktu-waktu. Jika ya, maka keyboard akan mengecek menu apa saja yang sudah diklik
akan diaktifkan dan mouse dimatikan.Jika tidak, dengan mencocokkan posisi koordinat mouse saat ini
maka kernel akan mengambil 3 paket byte tersebut dengan posisi menu. Jika sesuai dengan posisi, maka
kemudian memproses mouse event. Selanjutnya terus proses selanjutnya bisa dilakukan.
seperti itu berulang-ulang sampai pengguna menekan Dari keterangan tentang mouse di atas, pena-
keyboard. Jika pengguna tidak menggerakkan mouse ganan mouse dan keyboard yang hampir bersamaan
atau mengklik, maka tidak ada paket yang dikirim. merupakan contoh dari salah satu manajemen proses
Tetapi, tetap mengecek keadaan keyboard untuk dan context-switching untuk berpindah antara mouse
memastikan apakah pengguna menekan keyboard dan keyboard.
sewaktu-waktu. Pada saat pengguna mengedit suatu file .TXT atau
Untuk mengetahui informasi dari paket data .BAS, maka proses yang terjadi pada keyboard sangat
mouse yang dikirim, maka kernel perlu mengambil kompleks. Program catatan.bin tidak hanya sekedar
bit 0, bit 1, bit 2 dari byte pertama untuk mengecek menerima input keyboard dan menampilkannya di
tombol mana yang diklik. Jika bit 0 bernilai 1, maka layar. Program catatan.bin akan mengecek dulu,
tombol kiri diklik, jika bit 1 bernilai 1, maka tombol apakah tombol yang ditekan merupakan tombol
kanan diklik, jika bit 2 bernilai 1, maka tombol penting seperti F2 untuk mensimpan hasil editan
tengah diklik. Bit 4 dan 5 dari byte pertama untuk file, Esc untuk keluar dari program editor dan lain-
menentukan apakah mouse bergerak ke atas, ke lain. Setelah itu akan mengecek apakah tombol yang
bawah, ke kiri atau ke kanan. Jika bit ke 4 bernilai 1, ditekan tombol backspace. Jika ya, maka program
maka mouse bergerak ke kiri, jika 0 maka bergerak catatan.bin akan mengecek apakah cursor berada
ke kanan. Jika bit 5 bernilai 1, maka mouse bergerak pada kolom pertama. Jika tidak, maka sistem akan
ke bawah, jika 0 maka bergerak ke atas. Byte kedua menghapus karakter sebelumnya. Tidak ada interrupt
menunjukkan jarak perpindahan X, dan byte ketiga atau instruksi dalam Assembly yang berguna untuk
menunjukkan jarak perpindahan Y. menghapus karakter. Yang ada hanyalah, karakter
Sebagai contoh, jika byte kedua bernilai 10 dan sebelumnya akan diganti dengan karakter null.
bit ke-4 dari byte pertama bernilai 0, maka mouse telah Lalu jika pengguna menekan tombol enter, maka
bergerak sejauh 10 pixel ke kanan. Posisi sebelumnya program akan memberikan karakter dengan bilangan
lalu ditambahkan dengan 10 untuk mengetahui lokasi hexadesimal 0Dh untuk pindah baris berikutnya dan
koordinat mouse sekarang. Selanjutnya kernel akan karakter dengan bilangan hexadesimal 0Ah untuk
menggambar pointer pada lokasi yang ditunjukkan. kembali ke kolom awal. Selama proses input keyboard
Jika byte kedua bernilai 246 dan bit ke-4 dari byte terjadi, selain menampilkan karakter yang di-input,
pertama bernilai 1, maka perhitungannya adalah juga setiap karakter yang di-input akan langsung
256 dikurang 246 yang hasilnya 10. Karena bit disimpan ke dalam memory. Setiap alamat memory
ke-5 bernilai 1, maka menandakan mouse telah ini akan bertambah atau berkurang sesuai dengan
14
Pembuatan Sistem Operasi Komputer Sederhana dengan ....
posisi cursor. Pada saat pengguna menekan tombol yang terdapat dalam system calls. Jika sintaks adalah
panah kiri, maka cursor akan berpindah satu kolom variable, maka interpreter akan mengalokasikan
ke kiri. Pada saat menekan tombol panah kanan, ruang memory untuk variable tersebut. Jika sintaks
maka cursor akan berpindah satu kolom ke kanan. termasuk keyword seperti IF, THEN, FOR, DO dan
Pada saat menekan tombol panah atas, maka cursor lain-lain maka interpreter akan melakukan operasi
akan berpindah satu baris ke atas. Pada saat menekan logika dan pengulangan.
tombol panah bawah, maka cursor akan berpindah Programmer dapat membuat program dengan
satu baris ke bawah. Jika sudah mencapai baris bahasa Assembly atau dengan bahasa BASIC dalam
terbawah pada saat menekan tombol panah bawah, sistem operasi FROS ini. Bahasa Assembly tidak bisa
maka setiap baris karakter akan naik 1 baris karakter ditulis dalam sistem operasi ini, melainkan harus
ke atas agar menampilkan karakter di bagian bawah ditulis di sistem operasi lainnya karena sistem operasi
yang tidak terlihat. Jika sudah mencapai baris teratas ini tidak menyediakan Assembler. Sedangkan bahasa
pada saat menekan tombol panah atas, maka setiap BASIC bisa ditulis dalam sistem operasi ini karena
baris karakter akan turun 1 baris karakter ke bawah sistem operasi ini sudah menyediakan interpreter
agar menampilkan karakter di bagian atas yang tidak untuk bahasa BASIC. Tetapi, tidak semua instruksi
terlihat. Untuk menampilkan karakter yang tidak dalam bahasa BASIC bisa diterjemahkan.
terlihat sebelumnya, maka program akan mengambil
Sistem operasi yang dihasilkan bersifat text-
data karakter yang tersimpan dalam memory.
mode, kecuali untuk aplikasi paint yang bersifat
Setelah pengguna selesai menulis datanya graphic-mode. Dalam tampilan yang text-mode
pada text-editor, maka pengguna cukup menekan F2 ini, pengguna hanya bisa menggunakan alat input
untuk menyimpan file ke dalam disk. Pada saat file keyboard, hanya operasi pemilihan menu pada
disimpan ke dalam disk, maka program catatan.bin halaman explorer yang bisa menerima input mouse.
akan membaca ulang FAT12 untuk mengecek sector- Interface yang dihasilkan sudah disesuaikan dengan
sector mana saja yang masih kosong untuk bisa keadaan saat ini, sehingga pengguna akan cepat
ditempati oleh data pengguna agar bisa disimpan di memahaminya.
dalam disk. FAT12 mempunyai pointer-pointer untuk
Petunjuk menu ataupun semua instruksi
menunjuk sector-sector mana saja yang masih bisa
memakai Bahasa Indonesia, sehingga pengguna
ditempati. Lalu program catatan.bin akan menyimpan
di Indonesia akan cepat memahami menggunakan
data file pengguna pada sector-sector yang ditunjuk
sistem operasi ini. Hanya satu program yang bisa
oleh FAT12. Kemudian program catatan akan menulis
dijalankan sekali eksekusi, sehingga jika ingin
nama file pengguna pada tabel yang ada dalam FAT12.
menjalankan program lainnya, program sebelumnya
Untuk membaca data file pengguna ketika harus dikeluarkan dulu. Program tersebut menempati
pengguna membuka suatu file, program catatan akan seluruh layar komputer. Program tak bisa di-resize,
membaca tabel yang ada dalam FAT12 dan mencari di-minimize atau maximize, semuanya menempati
nama file yang dimaksud. Setelah program catatan satu layar komputer. Pengguna dapat membuat file
menemukan file yang dimaksud, maka program baru, menghapus file, menyalin file dengan nama
akan membaca data dari sector-sector yang ditunjuk berbeda, menamai ulang suatu file dan membuka
oleh FAT12 dan menyimpannya dalam memory agar suatu file. Nama-nama file tidak boleh ada yang sama.
selanjutnya bisa diproses oleh CPU.
Selain bisa menjalankan file .BIN, sistem
operasi juga bisa menjalankan file .BAS. Sistem IV. SIMPULAN
operasi sudah mempunyai interpreter-nya sendiri
Berdasarkan analisis dari penelitian pembuatan sistem
untuk menerjemahkan setiap instruksi pada file .BAS.
operasi ini, bisa diperoleh beberapa kesimpulan untuk
Membuat interpreter, pada dasarnya mirip dengan
pembaca. Kesimpulan-kesimpulan tersebut adalah:
membuat shell, hanya saja lebih kompleks. Interpreter
akan mengecek setiap sintaks apakah termasuk l Dengan membuat program menggunakan
sintaks yang valid. Jika tidak sah, maka interpreter bahasa Assembly, semua instruksi yang terjadi
akan berhenti memproses dan menampilkan pesan pada mesin komputer bisa dipahami dengan
error pada baris dimana terjadi error tersebut. Jika sangat baik.
sintaks adalah sebuah fungsi yang sudah dikenal, l Program bootloader adalah program di luar
maka interpreter akan langsung melakukan prosedur BIOS yang akan pertama kali dijalankan ketika
15
Kalbiscentia,Volume 2 No.1 Februari 2015
komputer dinyalakan untuk memanggil program [4]. S. Abraham et. al. Operating System Concepts with
inti sistem operasi, yaitu kernel. JAVA 6th Edition. Asia: WILLEY. 2004. Hlm 6.
l Program kernel adalah program inti dari sistem [5]. S. Abraham et. al. Operating System Concepts 8th
operasi, yang akan melakukan semua operasi Edition. Asia:WILEY. 2010.Hlm 89-90.
penting sistem operasi seperti menjalankan [6]. S. Abraham Silberschatz et. al. Operating System
program pengguna, mengalokasikan memory Concepts 6th Edition. Asia: WILLEY. 2005. Hlm 56-
untuk program yang sedang berjalan, mendeteksi 61, 63, 95-97.
input keyboard dan mouse, menampilkan output
[7]. Operating System Tutorial. [Online]. Diakses 1
ke layar monitor, memuat system calls ke dalam
September 2013 dari http://www.tutorialspoint.com/
memory, dan menjalankan tugas dari menu-
operating_system/pdf/index.pdf
menu yang dipilih pengguna.
[8]. Operating Systems Development. [Online]. Diakses 5
l Program Shell yang terpisah dari program kernel
Mei 2013 dari http://www.brokenthorn.com/Resources/
juga dapat menjalankan instruksi yang di-input
OSDev3.html
oleh pengguna seperti layaknya program kernel.
[9]. Computer Tutorial. [Online]. Diakses 21 Juni 2013
l Interpreter BASIC yang berguna untuk
dari http://www.coval.net/ teach/emu8086/helpfiles/
menerjemahkan instruksi-instruksi yang
computer_structures.html
terdapat pada bahasa BASIC dapat dijalankan
dalam sistem operasi ini, sehingga programmer [10]. What is FAT12 ?. [Online]. Diakses 29 Oktober 2013
lain dapat menuliskan programnya untuk dari http://www.easeus.com/resource/drive/fat12.htm
dijalankan di sistem operasi ini. [11]. What is FAT12 and its features ?. [Online]. Diakses
29 Oktober dari http://www.data-recovery-app.com/
datarecovery/fat12.html
V. DAFTAR RUJUKAN
[12]. An overview of FAT12. [Online]. Diakses 6 Juli 2013
[1]. B.H. Santoso. Perancangan Sistem Operasi. dari http://students.cs.byu.edu/cs345ta/labs/fall03_
Yogyakarta: Andi .2005. Hlm 1-2. specs/lab_fat_help.htm
[2]. Mike OS x086 Operating System. [Online]. Diakses 14 [13] Apple to Use Intel Microprocessors Beginning in
Januari 2013 dari http://mikeosberlios.de 2006. [Online]. Diakses 7 Maret 2014 dari http://www.
apple.com/pr/library/2005/06/06Apple-to-Use-Intel-
[3]. A. C. Michael & S. Stanley. Beyond the Waterfall:
Microprocessor-Beginning-in-2006.htm
Sotware Development at Microsoft. 1995. [Online].
Diakses 30 Agustus 2013 dari http://dspace.mit.edu/
bitstream/handle/1721.1/2593/SWP-3844-33836288.
pdf
16