Cara belajar cepat konversi bilangan desimal
-
Upload
kevin-ricardo -
Category
Data & Analytics
-
view
502 -
download
2
Transcript of Cara belajar cepat konversi bilangan desimal
Cara Belajar Cepat Konversi Bilangan Desimal, Biner, Oktal dan
Heksadesimal
Desimal Biner Oktal Heksadesimal BCD
0 0000 0000 00 00 0000 0000
1 0000 0001 01 01 0000 0001
2 0000 0010 02 02 0000 0010
3 0000 0011 03 03 0000 0011
4 0000 0100 04 04 0000 0100
5 0000 0101 05 05 0000 0101
6 0000 0110 06 06 0000 0110
7 0000 0111 07 07 0000 0111
8 0000 1000 10 08 0000 1000
9 0000 1001 11 09 0000 1001
10 0000 1010 12 0A 0001 0000
11 0000 1011 13 0B 0001 0001
12 0000 1100 14 0C 0001 0010
13 0000 1101 15 0D 0001 0011
14 0000 1110 16 0E 0001 0100
15 0000 1111 17 0F 0001 0101
16 0001 0000 20 10 0001 0110
17 0001 0001 21 11 0001 0111
18 0001 0010 22 12 0001 1000
19 0001 0011 23 13 0001 1001
20 0001 0100 24 14 0010 0000
Table. Tabel BCD
Konversi Bilangan Desimal, Biner, Oktal dan Heksadesimal
Pada momen yang berbahagia ini, saya ingin coba menjabarkan
tahap2 sederhana proses konversi bilangan desimal, biner, oktal
dan heksadesimal
Bilangan desimal adalah bilangan yang menggunakan 10 angka
mulai 0 sampai 9 berturut2. Setelah angka 9, maka angka
berikutnya adalah 10, 11, 12 dan seterusnya. Bilangan desimal
disebut juga bilangan berbasis 10. Contoh penulisan bilangan
desimal : 1710. Ingat, desimal berbasis 10, maka angka 10-lah
yang menjadisubscript pada penulisan bilangan desimal.
Bilangan biner adalah bilangan yang hanya menggunakan 2
angka, yaitu 0 dan 1. Bilangan biner juga disebut bilangan
berbasis 2. Setiap bilangan pada bilangan biner disebut bit,
dimana 1 byte = 8 bit. Contoh penulisan : 1101112.
Bilangan oktal adalah bilangan berbasis 8, yang menggunakan
angka 0 sampai 7. Contoh penulisan : 178.
Bilangan heksadesimal, atau bilangan heksa, atau bilangan basis
16, menggunakan 16 buah simbol, mulai dari 0 sampai 9,
kemudian dilanjut dari A sampai F. Jadi, angka A sampai F
merupakan simbol untuk 10 sampai 15. Contoh penulisan : C516.
Hmm.. Sepertinya prolognya sudah cukup. Lanjut ke proses
kalkulasi… 8)
Saya langsung saja ambil sebuah contoh bilangan desimal yang
akan dikonversi ke biner. Setelah itu, akan saya lakukan konversi
masing2 bilangan desimal, biner, oktal dan heksadesimal.
Misalkan bilangan desimal yang ingin saya konversi adalah 2510.
Maka langkah yang dilakukan adalah membagi tahap demi tahap
angka 2510 tersebut dengan 2, seperti berikut :
25 : 2 = 12,5
Jawaban di atas memang benar, tapi bukan tahapan yang kita
inginkan. Tahapan yang tepat untuk melakukan proses konversi
ini sebagai berikut :
25 : 2 = 12 sisa 1. —–> Sampai disini masih mengerti kan?
Langkah selanjutnya adalah membagi angka 12 tersebut dengan
2 lagi. Hasilnya sebagai berikut :
12 : 2 = 6 sisa 0. —–> Ingat, selalu tulis sisanya.
Proses tersebut dilanjutkan sampai angka yang hendak dibagi
adalah 0, sebagai berikut :
25 : 2 = 12 sisa 1.
12 : 2 = 6 sisa 0.
6 : 2 = 3 sisa 0.
3 : 2 = 1 sisa 1.
1 : 2 = 0 sisa 1.
0 : 2 = 0 sisa 0…. (end)
Nah, setelah didapat perhitungan tadi, pertanyaan berikutnya
adalah, hasil konversinya yang mana? Ya, hasil konversinya
adalah urutan seluruh sisa-sisa perhitungan telah diperoleh,
dimulai dari bawah ke atas.
Maka hasilnya adalah 0110012. Angka 0 di awal tidak perlu
ditulis, sehingga hasilnya menjadi 110012. Sip?
Lanjut…..sekarang saya akan menjelaskan konversi bilangan
desimal ke oktal.
Proses konversinya mirip dengan proses konversi desimal ke
biner, hanya saja kali ini pembaginya adalah 8. Misalkan angka
yang ingin saya konversi adalah 3310. Maka :
33 : 8 = 4 sisa 1.
4 : 8 = 0 sisa 4.
0 : 8 = 0 sisa 0….(end)
Hasilnya? Coba tebak…418!!!
Sekarang tiba waktunya untuk mengajarkan proses konversi
desimal ke heksadesimal…
Seperti biasa, langsung saja ke contoh. Hehe…
Misalkan bilangan desimal yang ingin saya ubah adalah 24310.
Untuk menghitung proses konversinya, caranya sama saja
dengan proses konversi desimal ke biner, hanya saja kali ini
angka pembaginya adalah 16. Maka :
243 : 16 = 15 sisa 3.
15 : 16 = 0 sisa F. —-> ingat, 15 diganti jadi F..
0 : 16 = 0 sisa 0….(end)
Nah, maka hasil konversinya adalah F316. Mudah, bukan? 8)
Fiuh..Lanjut lagi…
Sekarang kita beralih ke konversi bilangan biner ke desimal.
Proses konversi bilangan biner ke bilangan desimal adalah proses
perkalian setiap bit pada bilangan biner dengan perpangkatan 2,
dimana perpangkatan 2 tersebut berurut dari kanan ke kiri bit
bernilai 2o sampai 2n.
Langsung saja saya ambil contoh bilangan yang merupakan hasil
perhitungan di atas, yaitu 110012. Misalkan bilangan tersebut
saya ubah posisinya mulai dari kanan ke kiri menjadi seperti ini.
1
0
0
1
1
Nah, saatnya mengalikan setiap bit dengan perpangkatan 2.
Ingat, perpangkatan 2 tersebut berurut mulai dari 2o sampai 2n,
untuk setiap bit mulai dari kanan ke kiri. Maka :
1 ——> 1 x 2o = 1
0 ——> 0 x 21 = 0
0 ——> 0 x 22 = 0
1 ——> 1 x 23 = 8
1 ——> 1 x 24 = 16 —> perhatikan nilai perpangkatan 2 nya
semakin ke bawah semakin besar
Maka hasilnya adalah 1 + 0 + 0 + 8 + 16 = 2510.
Nah, bandingkan hasil ini dengan angka desimal yang saya ubah
ke biner di awal tadi. Sama bukan?
Sudah ini, sudah itu, sekarang….nah, konversi bilangan biner ke
oktal. hehe…siap?
Untuk merubah bilangan biner ke bilangan oktal, perlu
diperhatikan bahwa setiap bilangan oktal mewakili 3 bitdari
bilangan biner. Maka jika kita memiliki bilangan biner 1101112
yang ingin dikonversi ke bilangan oktal, langkah pertama yang
kita lakukan adalah memilah-milah bilangan biner tersebut,
setiap bagian 3 bit, mulai dari kanan ke kiri, sehingga menjadi
seperti berikut :
110 dan 111
Sengaja saya buat agak berjarak, supaya lebih mudah
dimengerti. Nah, setelah dilakukan proses pemilah2an seperti ini,
dilakukan proses konversi ke desimal terlebih dahulu secara
terpisah. 110 dikonversi menjadi 6, dan 111 dikonversi menjadi 7.
Hasilnya kemudian digabungkan, menjadi 678, yang merupakan
bilangan oktal dari 1101112… 8)
“Tapi, itu kan kebetulan bilangan binernya pas 6 bit. Jadi
dipilah2 3 pun masih pas. Gimana kalau bilangan binernya,
contohnya, 5 bit?” Hehe…Gampang..Contohnya 110012. 5 bit
kan? Sebenarnya pemilah2an itu dimulai dari kanan ke kiri. Jadi
hasilnya 11 dan 001. Ini kan sebenarnya sudah bisa masing2
diubah ke dalam bentuk desimal. Tapi kalau mau menambah
kenyamanan di mata, tambahin aja 1 angka 0 di depannya. Jadi
0110012. Tidak akan merubah hasil perhitungan kok. Tinggal
dipilah2 seperti tadi. Okeh?
Selanjutnya adalah konversi bilangan biner ke heksadesimal.
Hmm…sebagai contoh, misalnya saya ingin ubah 111000102 ke
bentuk heksadesimal. Proses konversinya juga tidak begitu rumit,
hanya tinggal memilahkan bit2 tersebut menjadi kelompok2 4 bit.
Pemilahan dimulai dari kanan ke kiri, sehingga hasilnya sbb :
1110 dan 0010
Nah, coba lihat bit2 tersebut. Konversilah bit2 tersebut ke
desimal terlebih dahulu satu persatu, sehingga didapat :
1110 = 14 dan 0010 = 2
Nah, ingat kalau 14 itu dilambangkan apa di heksadesimal? Ya,
14 dilambangkan dengan E16.
Dengan demikian, hasil konversinya adalah E216.
Seperti tadi juga, gimana kalau bilangan binernya tidak
berjumlah 8 bit? Contohnya 1101012? Yaa…Seperti tadi juga,
tambahin aja 0 di depannya. Tidak akan memberi pengaruh apa2
kok ke hasilnya. Jadi setelah ditambah menjadi 001101012.
Selanjutnya, sudah gampang kan?
Selanjutnya, konversi bilangan oktal ke desimal. Hal ini tidak
terlalu sulit. Tinggal kalikan saja setiap bilangan dengan
perpangkatan 8. Contoh, bilangan oktal yang akan dikonversi
adalah 718. Maka susunannya saya buat menjadi demikian :
1
7
dan proses perkaliannya sbb :
1 x 8o = 1
7 x 81 = 56
Maka hasilnya adalah penjumlahan 1 + 56 = 5710.
Habis konversi oktal ke desimal, maka saat ini giliran oktal ke
biner. Hehe..
Langsung ke contoh. Misalkan saya ingin mengubah bilangan
oktal 578 ke biner. Maka langkah yang saya lakukan adalah
melakukan proses konversi setiap bilangan tersebut masing2 ke 3
bit bilangan biner. Nah, angka 5 jika dikonversi ke biner
menjadi….? 1012. Sip. Nah, 7, jika dikonversi ke biner
menjadi…? 1112. Mantap. Maka hasilnya adalah 1011112. Jamin
benar deh….
Hmm…berarti…sekarang giliran konversi oktal ke
heksadesimal.
Untuk konversi oktal ke heksadesimal, kita akan membutuhkan
perantara, yaitu bilangan biner. Maksudnya? Maksudnya adalah
kita konversi dulu oktal ke biner, lalu konversikan nilai biner
tersebut ke nilai heksadesimalnya. Nah, baik yang konversi oktal
ke biner maupun biner ke heksadesimal kan udah dijelaskan.
Coba buktikan, bahwa bilangan oktal 728 jika dikonversi ke
heksadesimal menjadi 3A16. Bisa kan? Bisa dong…
Selanjutnya adalah konversi bilangan heksadesimal ke desimal.
Untuk proses konversi ini, caranya sama saja dengan proses
konversi biner ke desimal, hanya saja kali ini perpangkatan yang
digunakan adalah perpangkatan 16, bukan perpangkatan 2.
Sebagai contoh, saya akan melakukan konversi bilangan heksa
C816 ke bilangan desimal. Maka saya ubah dulu susunan
bilangan heksa tersebut, mulai dari kanan ke kiri, sehingga
menjadi sebagai berikut :
8
C
dan kemudian dilakukan proses perkalian dengan perpangkatan
16, sebagai berikut :
8 x 16o = 8
C x 161 = 192 ——> ingat, C16 merupakan lambang dari 1210
Maka diperolehlah hasil konversinya bernilai 8 + 192 = 20010.
Tutorial berikutnya, konversi dari heksadesimal ke biner.
Dalam proses konversi heksadesimal ke biner, setiap simbol
dalam heksadesimal mewakili 4 bit dari biner. Misalnya saya
ingin melakukan proses konversi bilangan heksa B716 ke
bilangan biner. Maka setiap simbol di bilangan heksa tersebut
saya konversi terpisah ke biner. Ingat, B16 merupakan simbol
untuk angka desimal 1110. Nah, desimal 1110 jika dikonversi ke
biner menjadi 10112, sedangkan desimal 710 jika dikonversi ke
biner menjadi 01112. Maka bilangan binernya adalah 101101112,
atau kalau dibuat ilustrasinya seperti berikut ini :
B 7 —-> bentuk heksa
11 7 —-> bentuk desimal
1011 0111 —-> bentuk biner
Hasilnya disatukan, sehingga menjadi 101101112. Understood?
Yang terakhir adalah konversi heksadesimal ke oktal.
Nah, sama seperti konversi oktal ke heksadesimal, kita
membutuhkan bantuan bilangan biner. Lakukan terlebih dahulu
konversi heksadesimal ke biner, lalu konversikan nilai biner
tersebut ke oktal. Sebagai latihan, buktikan bahwa nilai
heksadesimal E716 jika dikonversi ke oktal menjadi 3478.
Hehe…Kamu bisa!!!
1. Konversi Bilangan Desimal ke Biner
Gunakan pembagian dengan 2 secara suksesif sampai sisanya = 0.
Sisa-sisa pembagian membentuk jawaban, yaitu sisa yang
pertama akan menjadi least significant bit (LSB) dan sisa yang
terakhir menjadi most significant bit (MSB).
Contoh:
*) 179(D)=. . . . . . .(B)
179 / 2 = 89 sisa 1 (LSB)
/ 2 = 44 sisa 1
/ 2 = 22 sisa 0
/ 2 = 11 sisa 0
/ 2 = 5 sisa 1
/ 2 = 2 sisa 1
/ 2 = 1 sisa 0
/ 2 = 0 sisa 1 (MSB)
Hasil: 10110011(B)
2. Konversi Bilangan Desimal ke Oktal
Konversi bilangan desimal bulat ke bilangan oktal: pembagian
dengan 8 secara suksesif sampai sisanya = 0
Contoh:
*) 179 (D)=. . . . . .(O)
179 / 8 = 22 sisa 3 (LSB)
/ 8 = 2 sisa 6
/ 8 = 0 sisa 2 (MSB)
Hasilnya : 263(O)
3. Konversi Bilangan Desimal ke Hexadesimal
Konversi bilangan desimal bulat ke bilangan hexadesimal:
Gunakan pembagian dengan 16 secara suksesif sampai sisanya =
0. Sisa-sisa pembagian membentuk jawaban.
Contoh:
*) 179 (D)=. . . . . . (H)
179 / 16 = 11 sisa 3
/ 16 = 0 sisa 11
Hasilnya : 11 dan 3, Dalam Bilangan Hexa 11=B jadi --> B3(H)
4. Konversi Bilangan Biner ke Desimal
Proses konversi bilangan biner ke bilangan desimal adalah proses
perkalian setiapdigit pada bilangan biner dengan perpangkatan
2, dimana perpangkatan 2 tersebut berurut dari kanan ke kiri
digit bernilai 20 sampai 2n.
Langsung saja saya ambil contoh yaitu 11001. Misalkan bilangan
tersebut saya ubah posisinya mulai dari kanan ke kiri menjadi
seperti ini.
1
0
0
1
1
Nah, saatnya mengalikan setiapdengan perpangkatan 2. Ingat,
perpangkatan 2 tersebut berurut mulai dari 2sampai 2, untuk
setiapmulai dari kanan ke kiri. Maka :
1 ——> 1 x 2= 1
0 ——> 0 x 2= 0
0 ——> 0 x 2= 0
1 ——> 1 x 2= 8
1 ——> 1 x 2= 16 —> perhatikan nilai perpangkatan 2 nya
semakin ke bawah semakin besar
Maka hasilnya adalah 1 + 0 + 0 + 8 + 16 = 2510.
5. Konversi Bilangan Oktal ke Desimal
Hal ini tidak terlalu sulit. Tinggal kalikan saja setiap bilangan
dengan perpangkatan 8. Contoh, bilangan oktal yang akan
dikonversi adalah 71. Maka susunannya saya buat menjadi
demikian :
1
7
dan proses perkaliannya sbb :
1 x 80= 1
7 x 81= 56
Maka hasilnya adalah penjumlahan 1 + 56 = 57.
6. Konversi Bilangan Hexadesimal ke Desimal
Untuk proses konversi ini, caranya sama saja dengan proses
konversi biner ke desimal, hanya saja kali ini perpangkatan yang
digunakan adalah perpangkatan 16, bukan perpangkatan 2.
Sebagai contoh, saya akan melakukan konversi bilangan heksa
C8ke bilangan desimal. Maka saya ubah dulu susunan bilangan
heksa tersebut, mulai dari kanan ke kiri, sehingga menjadi
sebagai berikut :
8
C
dan kemudian dilakukan proses perkalian dengan perpangkatan
16, sebagai berikut :
8 x 160= 8
C x 161= 192 ——> ingat, Cmerupakan lambang dari 1210
Maka diperolehlah hasil konversinya bernilai 8 + 192 = 20010.
7. Konversi Bilangan Biner ke Oktal
Untuk mengkonversi bilangan biner ke bilangan oktal, lakukan
pengelompokan 3 digit bilangan biner
Contoh:
konversikan 101100112 ke bilangan oktal
Jawab : 10 | 110 | 011
2 6 3
Jadi 101100112 = 2638
8. Konversi Bilangan Oktal ke Biner
Sebaliknya untuk mengkonversi Bilangan Oktal ke Biner yang
harus dilakukan adalah terjemahkan setiap digit bilangan oktal
ke 3 digit bilangan biner.
Contoh:
Konversikan 2638 ke bilangan biner.
Jawab: 2 6 3
010 110 011
Jadi 2638 = 0101100112 Karena 0 didepan tidak ada artinya kita
bisa menuliskan 101100112
9. Konversi Bilangan Biner ke Hexadesimal
Untuk mengkonversi bilangan biner ke bilangan hexadesimal,
lakukan pengelompokan 4 digit bilangan
biner dari posisi LSB sampai ke MSB
Contoh:
konversikan 10110011(B) ke bilangan heksadesimal
Jawab : 1011 0011
B 3
Jadi 10110011(B) = B3(H)
10. Konversi Bilangan Hexadesimal ke Biner
Dalam proses konversi heksadesimal ke biner, setiap simbol
dalam heksadesimal mewakili 4dari biner. Misalnya saya ingin
melakukan proses konversi bilangan heksa B7ke bilangan biner.
Maka setiap simbol di bilangan heksa tersebut saya konversi
terpisah ke biner. Ingat, Bmerupakan simbol untuk angka
desimal 1110. Nah, desimal 11jika dikonversi ke biner menjadi
1011, sedangkan desimal 7jika dikonversi ke biner menjadi 0111.
Maka bilangan binernya adalah 101101112, atau kalau dibuat
ilustrasinya seperti berikut ini :
B 7 —-> bentuk heksa
11 7 —-> bentuk desimal
1011 0111 —-> bentuk biner
Hasilnya disatukan, sehingga menjadi 10110111.
11. Konversi Bilangan Oktal ke Hexadesimal
Untuk konversi bilangan ini kita konversikan dulu ke biner, baru
kemudian dari biner ke Hexa.
Contoh:
472(O)= ..............(H)
4 7 2
100 | 111 | 010 ==> 100111010 (B)
==> 1 | 0011 | 1010
1 3 10 ==> 13A(H)
12. Konversi Bilangan Hexadesimal ke Oktal
Sama halnya dengan konversi dari Oktal ke Hexadesimal, kita
konversikan ke biner terlebih dahulu. Contoh:
7FD(H)=.............(O)
7 F=15 D=13 111 | 1111 | 1101 ==> 11111111101 (B)
==> 11 | 111 | 111 | 101 3 7 7 5 ==> 3775
Perangkat Keras Komputer (Hardwere) Pengertian dan
Fungsi
Pengertian perangkat keras komputer dan fungsi-fungsinya.
Menurut wikipedia perangkat keras komputer atau hardware
adalah perangkat pada komputer yang berbentuk fisik (dapat
disentuh). Perangkat komputer sendiri dibedakan menjadi dua
yaitu perangkat keras dan perangkat lunak istilah asingnya yaitu
Hardware (perangkat keras) dan Software (Perangkat lunak).
Harware sendiri berfungsi dengan baik dikarenakan adanya
software sebagai sistem yang menjalankanya.
Agar proses pembelajaran mengenai komputer lebih terarah
adapun pengelompokan harware agar lebih mudah sesuai dengan
fungsinya pada komputer. Berikut ini pengelompokan perangkat
keras komputer agar lebih mudah dipahami:
1. Input Device : Perangkat input / masukan
2. Process Device : Perangkat yang menjalankan proses sistem
komputer
3. Output Device : Perangkat output / keluaran, menghubungkan
sistem keluar
4. Storage Device : Perangkat untuk menyimpan
Berikut ini adalah penjelasan lebih lengkap masing-masing
pengelompokan tersebut:
INPUT DEVICE
Input device merupakan perangkat komputer yang memiliki fungsi
sebagai input atau masukan, baik itu perintah maupun koneksi
kedalam sistem komputer. Ada beberapa perangkat yang masuk
kategori input device, diantaranya adalah:
Keyboard : berfungsi untuk mengetik huruf an angka serta
perintah pada komputer Mouse : berfungsi untuk menjalankan perintah klik kiri dan
klik kanan, menggerakkan pointer, serta menjalankan perintah dengan klik
Touchpad : Touchpad berfungsi layaknya mouse, touchpad ini biasanya sebagai pengganti mouse dan biasa di jumpai pada laptop.
Masih banyak lagi perangkat lainya seperti joystik, scanner, voice
recognizer, dan lain-lain.
PROCESS DEVICE
Perangkat ini merupakan perangkat yang berhubungan dengan
fungsi pemrosesan dalam komputer itu sendiri.
CPU / Processor : merupakan singkatan dari central processing unit atau yang juga dikenal dengan istilah processor adalah bagian terpenting yang menjalankan sistem komputer. Bisa di ibaratkan sebagai otak pada komputer.
Memori / RAM (random access Memory) : Memori merupakan perangkat yang menyimpan proses kinerja komputer untuk sementara. Sehingga membuat pengaksesan data yang sama lebih cepat. Maka dari itu RAM besar berpegaruh pada kecepatan komputer.
Motherboard : Merupakan perangkat yang menghubungkan perangkat keras komputer antara satu dan yang lain.
VGA Card (Video Graphic Array) : Biasa juga disebut kartu grafis yang berfugsi untuk memberikan tampilan berkualitas pada layar komputer. Biasanya setiap mainbord sudah
memiliki VGA bawaan, namun untuk kualitas beresolusi tinggi yang jernih VGA Card sangat diperlukan.
Power Supply: berfungsi untuk menghantarkan aruslistrik sebagai pengontrol besarnya voltasi yang masuk ke komputer.
Casing Unit: Merupakan tempat dimana semua perangkat disatukan.
OUTPUT DEVICE
Output device merupakan perangkat komputer yang memberikan
output/keluaran, baik berupa tampilan visual, suara, maupun
tampilan cetak, dan lain sebagainya. Adapun yang termasuk output
device adalah:
Monitor/ Lcd Monitor : berfungsi untuk menampilkan proses
komputer dalam bentuk visual/ gambar Speaker : befungsi untuk mengeluarkan suara dari komputer Printer : untuk mencetak pada media kertas, dan sebagainya
STORAGE DEVICE
Peragkat keras komputer yang berfungsi sebagai media
penyimpanan untuk menyimpan data-data komputer.
Hardisk : Perangkat penyimpanan utama pada komputer,
biasanya tampil di komputer dengan sebutad Drive :C, Drive D, dan seterusnya. Tergantung pembagian partisinya.
Floppy Disk : Biasa dikenal dengan sebutan disket, merupakan penyimpanan luar pertama, sangat populer semasa sitem DOS, lotus123, sistem komputer jaman dulu. Sekarang sudah jarang dijumpai dan mulai tergantikan oleh CD/DVD dan Flashdisk.
CD/DVD : Penyimpanan ekternal berbentuk piringan yang bisa menyimpan data.
Flashdisk : Perangkat penyimpanan eksternal yang saatini paling banyak digunakan karena bisa menyimpan dan menghapus data.
Kernel (ilmu komputer)
Dalam ilmu komputer, 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 diload dan dijalankan di atas mesin 'telanjang'
komputer, 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.
== Beberapa desain kernel ==
Beberapa desain kernel sistem operasi
Sebuah kernel sistem operasi tidak harus ada dan dibutuhkan
untuk menjalankan sebuah komputer. Program dapat langsung
dijalankan secara langsung di dalam sebuah mesin (contohnya
adalah CMOS Setup) sehingga para pembuat program tersebut
membuat program tanpa adanya dukungan dari sistem operasi
atau hardware abstraction. Cara kerja seperti ini, adalah cara
kerja yang digunakan pada zaman awal-awal dikembangkannya
komputer (pada sekitar tahun 1950). Kerugian dari
diterapkannya metode ini adalah pengguna harus melakukan
reset ulang komputer tersebut dan memuatkan program lainnya
untuk berpindah program, dari satu program ke program
lainnya. Selanjutnya, para pembuat program tersebut membuat
beberapa komponen program yang sengaja ditinggalkan di dalam
komputer, seperti halnya loader atau debugger, atau dimuat dari
dalam ROM (Read-Only Memory). Seiring dengan
perkembangan zaman komputer yang mengalami akselerasi yang
signifikan, metode ini selanjutnya membentuk apa yang disebut
dengan kernel sistem operasi.
Selanjutnya, para arsitek sistem operasi mengembangkan kernel
sistem operasi yang pada akhirnya terbagi menjadi empat bagian
yang secara desain berbeda, sebagai berikut:
Kernel monolitik. Kernel monolitik mengintegrasikan banyak
fungsi di dalam kernel dan menyediakan lapisan abstraksi perangkat keras secara penuh terhadap perangkat keras yang berada di bawah sistem operasi.
Mikrokernel. Mikrokernel menyediakan sedikit saja dari abstraksi perangkat keras dan menggunakan aplikasi yang berjalan di atasnya—yang disebut dengan server—untuk melakukan beberapa fungsionalitas lainnya.
Kernel hibrida. Kernel hibrida adalah pendekatan desain microkernel yang dimodifikasi. Pada hybrid kernel, terdapat beberapa tambahan kode di dalam ruangan kernel untuk meningkatkan performanya.
Exokernel. Exokernel menyediakan hardware abstraction secara minimal, sehingga program dapat mengakses hardware secara langsung. Dalam pendekatan desain exokernel, library yang dimiliki oleh sistem operasi dapat melakukan abstraksi
yang mirip dengan abstraksi yang dilakukan dalam desain monolithic kernel.
Kernel monolitik
Pendekatan kernel monolitik didefinisikan sebagai sebuah
antarmuka virtual yang berada pada tingkat tinggi di atas
perangkat keras, dengan sekumpulan primitif atau system call
untuk mengimplementasikan layanan-layanan sistem operasi,
seperti halnya manajemen proses, konkurensi (concurrency), dan
manajemen memori pada modul-modul kernel yang berjalan di
dalam mode supervisor.
Meskipun jika setiap modul memiliki layanan operasi-operasi
tersebut terpisah dari modul utama, integrasi kode yang terjadi
di dalam monolithic kernel sangatlah kuat, dan karena semua
modul berjalan di dalam address space yang sama, sebuah bug
dalam salah satu modul dapat merusak keseluruhan sistem. Akan
tetapi, ketika implementasi dilakukan dengan benar, integrasi
komponen internal yang sangat kuat tersebut justru akan
mengizinkan fitur-fitur yang dimiliki oleh sistem yang berada di
bawahnya dieksploitasi secara efektif, sehingga membuat sistem
operasi dengan monolithic kernel sangatlah efisien—meskipun
sangat sulit dalam pembuatannya.
Pada sistem operasi modern yang menggunakan monolithic
kernel, seperti halnya Linux, FreeBSD, Solaris, dan Microsoft
Windows, dapat memuat modul-modul yang dapat dieksekusi
pada saat kernel tersebut dijalankan sehingga mengizinkan
ekstensi terhadap kemampuan kernel sesuai kebutuhan, dan
tentu saja dapat membantu menjaga agar kode yang berjalan di
dalam ruangan kernel (kernel-space) seminim mungkin.
Di bawah ini ada beberapa sistem operasi yang menggunakan
Monolithic kernel:
Kernel sistem operasi UNIX tradisional, seperti halnya kernel dari sistem operasi UNIX keluarga BSD (NetBSD, BSD/I, FreeBSD, dan lainnya).
Kernel sistem operasi GNU/Linux, Linux. Kernel sistem operasi Windows (versi 1.x hingga 4.x; kecuali
Windows NT).
Mikrokernel
Pendekatan mikrokernel berisi sebuah abstraksi yang sederhana
terhadap hardware, dengan sekumpulan primitif atau system call
yang dapat digunakan untuk membuat sebuah sistem operasi
agar dapat berjalan, dengan layanan-layanan seperti manajemen
thread, komunikasi antar address space, dan komunikasi antar
proses. Layanan-layanan lainnya, yang biasanya disediakan oleh
kernel, seperti halnya dukungan jaringan, pada pendekatan
microkernel justru diimplementasikan di dalam ruangan
pengguna (user-space), dan disebut dengan server.
Server atau disebut sebagai peladen adalah sebuah program,
seperti halnya program lainnya. Server dapat mengizinkan sistem
operasi agar dapat dimodifikasi hanya dengan menjalankan
program atau menghentikannya. Sebagai contoh, untuk sebuah
mesin yang kecil tanpa dukungan jaringan, server jaringan
(istilah server di sini tidak dimaksudkan sebagai komputer pusat
pengatur jaringan) tidak perlu dijalankan. Pada sistem operasi
tradisional yang menggunakan monolithic kernel, hal ini dapat
mengakibatkan pengguna harus melakukan rekompilasi
terhadap kernel, yang tentu saja sulit untuk dilakukan oleh
pengguna biasa yang awam.
Dalam teorinya, sistem operasi yang menggunakan microkernel
disebut jauh lebih stabil dibandingkan dengan monolithic kernel,
karena sebuah server yang gagal bekerja, tidak akan
menyebabkan kernel menjadi tidak dapat berjalan, dan server
tersebut akan dihentikan oleh kernel utama. Akan tetapi, dalam
prakteknya, bagian dari system state dapat hilang oleh server
yang gagal bekerja tersebut, dan biasanya untuk melakukan
proses eksekusi aplikasi pun menjadi sulit, atau bahkan untuk
menjalankan server-server lainnya.
Sistem operasi yang menggunakan microkernel umumnya secara
dramatis memiliki kinerja di bawah kinerja sistem operasi yang
menggunakan monolithic kernel. Hal ini disebabkan oleh adanya
overhead yang terjadi akibat proses input/output dalam kernel
yang ditujukan untuk mengganti konteks (context switch) untuk
memindahkan data antara aplikasi dan server.
Beberapa sistem operasi yang menggunakan microkernel:
IBM AIX, sebuah versi UNIX dari IBM Amoeba, sebuah kernel yang dikembangkan untuk tujuan
edukasi Kernel Mach, yang digunakan di dalam sistem operasi
GNU/Hurd, NexTSTEP, OPENSTEP, dan Mac OS/X Minix, kernel yang dikembangkan oleh Andrew Tanenbaum
untuk tujuan edukasi Symbian OS, sebuah sistem operasi yang populer digunakan
pada hand phone, handheld device, embedded device, dan PDA Phone.
Kernel hibrida
Kernel hibrida aslinya adalah mikrokernel yang memiliki kode
yang tidak menunjukkan bahwa kernel tersebut adalah
mikrokernel di dalam ruangan kernel-nya. Kode-kode tersebut
ditaruh di dalam ruangan kernel agar dapat dieksekusi lebih
cepat dibandingkan jika ditaruh di dalam ruangan user. Hal ini
dilakukan oleh para arsitek sistem operasi sebagai solusi awal
terhadap masalah yang terjadi di dalam mikrokernel: kinerja.
Beberapa orang banyak yang bingung dalam membedakan
antara kernel hibrida dan kernel monolitik yang dapat memuat
modul kernel setelah proses booting, dan cenderung
menyamakannya. Antara kernel hibrida dan kernel monolitik
jelas berbeda. Kernel hibrida berarti bahwa konsep yang
digunakannya diturunkan dari konsep desain kernel monolitik
dan mikrokernel. Kernel hibrida juga memiliki secara spesifik
memiliki teknologi pertukaran pesan (message passing) yang
digunakan dalam mikrokernel, dan juga dapat memindahkan
beberapa kode yang seharusnya bukan kode kernel ke dalam
ruangan kode kernel karena alasan kinerja.
Di bawah ini adalah beberapa sistem operasi yang menggunakan
kernel hibrida:
BeOS, sebuah sistem operasi yang memiliki kinerja tinggi untuk aplikasi multimedia.
Novell NetWare, sebuah sistem operasi yang pernah populer sebagai sistem operasi jaringan berbasis IBM PC dan kompatibelnya.
Microsoft Windows NT (dan semua keturunannya).
Exokernel
Sebenarnya, Exokernel bukanlah pendekatan kernel sistem
operasi yang umum—seperti halnya microkernel atau monolithic
kernel yang populer, melainkan sebuah struktur sistem operasi
yang disusun secara vertikal.
Ide di balik exokernel adalah untuk memaksa abstraksi yang
dilakukan oleh developer sesedikit mungkin, sehingga membuat
mereka dapat memiliki banyak keputusan tentang abstraksi
hardware. Exokernel biasanya berbentuk sangat kecil, karena
fungsionalitas yang dimilikinya hanya terbatas pada proteksi dan
penggandaan sumber daya.
Kernel-kernel klasik yang populer seperti halnya monolithic dan
microkernel melakukan abstraksi terhadap hardware dengan
menyembunyikan semua sumber daya yang berada di bawah
hardware abstraction layer atau di balik driver untuk hardware.
Sebagai contoh, jika sistem operasi klasik yang berbasis kedua
kernel telah mengalokasikan sebuah lokasi memori untuk sebuah
hardware tertentu, maka hardware lainnya tidak akan dapat
menggunakan lokasi memori tersebut kembali.
Exokernel mengizinkan akses terhadap hardware secara
langsung pada tingkat yang rendah: aplikasi dan abstraksi dapat
melakukan request sebuah alamat memori spesifik baik itu
berupa lokasi alamat physical memory dan blok di dalam hard
disk. Tugas kernel hanya memastikan bahwa sumber daya yang
diminta itu sedang berada dalam keadaan kosong—belum
digunakan oleh yang lainnya—dan tentu saja mengizinkan
aplikasi untuk mengakses sumber daya tersebut. Akses hardware
pada tingkat rendah ini mengizinkan para programmer untuk
mengimplementasikan sebuah abstraksi yang dikhususkan untuk
sebuah aplikasi tertentu, dan tentu saja mengeluarkan sesuatu
yang tidak perlu dari kernel agar membuat kernel lebih kecil,
dan tentu saja meningkatkan performa.
Exokernel biasanya menggunakan library yang disebut dengan
libOS untuk melakukan abstraksi. libOS memungkinkan para
pembuat aplikasi untuk menulis abstraksi yang berada pada level
yang lebih tinggi, seperti halnya abstraksi yang dilakukan pada
sistem operasi tradisional, dengan menggunakan cara-cara yang
lebih fleksibel, karena aplikasi mungkin memiliki abstraksinya
masing-masing. Secara teori, sebuah sistem operasi berbasis
Exokernel dapat membuat sistem operasi yang berbeda seperti
halnya Linux, UNIX, dan Windows dapat berjalan di atas sistem
operasi tersebut.
Contoh implementasi kernel
Windows
Pada sistem operasi Windows, kernel ditangani oleh file
kernel32.dll. Kernel ini menangani manajemen memori, operasi
masukan / keluaran dan interrupt. Ketika boot Windows,
kernel32.dll di-load ke dalam spasi protected memory sehingga
spasi memorinya tidak digunakan oleh aplikasi lain. Apabila ada
aplikasi yang mencoba mengambil spasi memori kernel32.dll,
akan muncul pesan kesalahan "invalid page fault".
Sistem operasi
Kernel
Mikrokernel, Kernel monolitik, Kernel hibrida, Ruang
kernel, Modul kernel, Nanokernel, Device driver,
Ruang pengguna
Manajemen
proses
Proses, Multiprogramming, Interupsi (perangkat
keras), Protected mode, Supervisor mode, Tugas ganda
(multitasking), Manajemen proses, Penjadwalan
(komputasi), Context switch, Cooperative multitasking,
Preemptive multitasking, CPU modes
Manajemen
memori
Memory protection, Segmentation, Paging, Memory
management unit, Segmentation fault, General
protection fault
Contoh
Zeath OS,AmigaOS, Microsoft Windows, Linux, GNU,
UNIX, Mac OS, MS-DOS, TogOS
Konsep
lainnya
Boot loader, API, VFS, Jaringan komputer, GUI, Sejarah
sistem operasi, HAL