alamsyahnoer.files.wordpress.com … · web viewfitur hibernasi (suspend-to-disk) menulis keluar...
TRANSCRIPT
Tugas individu
SISTEM OPERASI
Disusun oleh:
NUR ALAMSYAH NURDIN102 904 056
Laboratorium Pendidikan Teknik Informatika dan KomputerJurusan Pendidikan Teknik Elektro
Universitas Negeri Makassar2011
Kelas
C
1. Swap pada memori
SWAP adalah suatu area pada harddisk yang merupakan bagian dari
Virtual Memory. Disebut sebagai suatu area pada harddisk karena kita
mengalokasikan/membuat partisi khusus pada harddisk pada saat penginstalan
Linux. Swap menangani halaman memory yang tidak aktif untuk sementara
waktu.
Swap akan digunakan ketika system telah membutuhkan memory fisik
(RAM) untuk menangani proses aktif tetapi memory fisik (RAM) yang tidak
terpakai (free) tidak mencukupi. Jika system membutuhkan lebih banyak sumber
daya memori atau ruang maka halaman yang tidak aktif pada memory fisik
(RAM) akan dipindahkan ke swap agar dapat memberi ruang pada memory fisik
(RAM) untuk menangani proses lainnya.
Dikarenakan disk (swap berada pada harddisk) lebih lambat daripada
RAM, waktu respon untuk system dan aplikasi menjadi lambat jika seandainya
terjadi perpindahan yang terlalu besar dari memori fisik. Terdapat
parameter swappiness untuk mengontrol kecenderungan kernel untuk
memindahkan proses dari memory ke swap.
Nilainya antara 0 -100, ketika swappiness=0 maka itu akan memberitahu kernel
untuk menghindari prosses swapping (ram ke swap) selama mungkin, saat
swappiness=100 maka itu akan memberitahu kernel untuk melakukan proses
swapping secara agresif
Sebagaimana akan kita lihat, pada dasarnya ada empat tujuan yang berbeda untuk
swap:
Beberapa program benar-benar memakan memori.
Memori tambahan mungkin akan berguna.
Mengoptimalkan penggunaan memori.
Hibernasi (suspend-to-disk)
Untuk mulai dengan, mari kita mengatakan bahwa komputer telah berubah banyak
sejak swap yang pertama kali digunakan:
Pada awalnya, swap diperlukan untuk memperluas kapasitas memori nyata. Anda
akan menggunakan swap sehingga memori yang tersedia akan penambahan ruang
RAM dan ruang swap.
Saat ini, RAM sering cukup besar sehingga kita bisa menggunakan komputer
tanpa swap sama sekali.
Beberapa program benar-benar memakan memori:
Kadang-kadang, sesuatu yang besar (seperti MySQL, Apache, PHP dll Handler)
membuat seluruh sistem perlu memori tambahan.
Dalam kasus ini, swap akan digunakan untuk membuat sistem mampu menangani
beban tambahan.
Memori tambahan mungkin akan berguna:
Kejadian tidak terduga, mungkin dan akan terjadi (program akan gila, beberapa
tindakan membutuhkan ruang lebih banyak dari yang Anda pikir, atau kombinasi
yang luar biasa lain dari peristiwa).
Dalam kasus ini, swap akan memberikan penundaan ekstra untuk mencari tahu
apa yang terjadi atau untuk menyelesaikan sesuatu.
Swap dapat mengoptimalkan penggunaan memori:
Hard drive jauh lebih lambat dari RAM. Jadi, ketika Anda memerlukan file (baik
itu file data, seperti video ini. Anda sedang menonton lagi dan lagi, executable,
seperti Firefox, atau perpustakaan), kernel Linux membaca file ke dalam RAM
dan menyimpannya di sana sehingga dari waktu berikutnya Anda
membutuhkannya lagi, itu sudah dalam RAM dan akses data jauh lebih cepat
(ribuan kali lebih cepat). Kita menyebut ini bagian dari RAM yang mempercepat
hard disk membaca. Mereka membuat perbedaan besar dalam hal respon "memori
cache.".
Kernel Linux secara otomatis bergerak RAM dilindungi oleh program tetapi tidak
benar-benar digunakan di swap sehingga RAM ini dapat melayani tujuan yang
lebih baik memiliki lebih banyak memori cache.
Hibernasi membutuhkan swap:
Fitur hibernasi (suspend-to-disk) menulis keluar isi memori untuk partisi swap
sebelum mematikan mesin. Oleh karena itu, partisi swap Anda harus setidaknya
sama besar dengan ukuran RAM Anda. Pelaksanaan hibernasi saat ini digunakan
di Ubuntu, swsusp, membutuhkan partisi swap atau menangguhkan, dan tidak
dapat menggunakan swap file pada sistem file yang aktif.
Apakah saya Perlu Partisi Swap dan Jika Jadi, Berapa Besar?
Sebuah komputer yang menjalankan GNU / Linux umumnya memiliki beberapa
partisi yang berbeda di atasnya (tidak termasuk Windows atau OS lain skenario
dual boot). Biasanya ada Master Boot Record kecil (MBR) partisi yang
menampung boot loader (GRUB atau Lilo biasanya), sebuah partisi sistem yang
menampung OS anda yang sebenarnya (biasanya cukup besar), dan biasanya ada
partisi swap.
Saya memiliki paritition yang saya gunakan sebagai direktori rumah saya, tapi itu
semacam, khusus belum umum, mengatur.
Partisi swap digunakan untuk membantu menjalankan sistem Anda lebih cepat.
Ketika sistem anda kehabisan RAM fisik selama operasi, menggunakan partisi
swap sebagai RAM dan menulis sedikit dari hal-hal yang saat ini dalam RAM,
tetapi tidak diperlukan, untuk partisi swap. Hal ini memungkinkan Anda untuk
menjalankan lebih banyak program sekaligus. Alternatif untuk memiliki swap
adalah ... baik ... tidak memiliki swap. Dalam skenario ini, ketika Anda sudah
membuka aplikasi cukup memori fisik Anda mengisi, tidak ada tempat untuk
menulis overflow dan sistem Anda akan rawa turun cukup sedih.
OS paling modern memiliki semacam fasilitas swap. Pada Windows ini disebut
sebagai pagefile, dan aku tidak yakin apa itu disebut sebagai pada Mac.
Swap adalah baik. Anda harus memiliki swap.
Swap adalah baik, tetapi dalam banyak sistem itu tidak perlu. Saya menemukan
ini sama sekali dengan kecelakaan satu hari. Aku muffed up partisi ketika saya
menginstal Kubuntu dan tidak mengalokasikan partisi swap. Yang lucu adalah
bahwa aku tidak menyadari selama berbulan-bulan dan ketika aku melihat hal itu
adalah dengan berbicara dengan seseorang yang menanyakan sesuatu tentang
swap, bukan karena masalah apapun kinerja sistem. Sebelum kejadian ini, saya
tidak berpikir hal itu mungkin untuk menjalankan kotak GNU / Linux tanpa swap,
tetapi ternyata bahwa tidak hanya mungkin, beberapa orang melakukannya
dengan sengaja.
Dalam dunia rumah / desktop, jika Anda memiliki GB RAM atau lebih, sistem
Anda mungkin tidak pernah menukar apa pun. Rekomendasi untuk
mengalokasikan swap mana saja 1,5-2 kali jumlah RAM fisik di sistem anda.
Pada beberapa sistem, kehilangan 2 sampai 3 GB ruang disk mungkin menjadi
kerugian cukup besar dan karena itu tidak layak. Di dunia server, berjalan tanpa
swap propbably bunuh diri. Jangan lakukan itu.
Jika Anda penasaran, periksa penggunaan swap Anda sekarang dan lagi. Dengan
KDE Anda dapat menggunakan Sistem Guard KDE dan ada beberapa gDesklets
tersedia untuk Gnome (dan mungkin dibangun dalam aplikasi juga, tidak yakin)
untuk melihat penggunaan swap anda.
2. Parent and child dalam sistem operasi
Berikut beberapa definisi proses pada sistem operasi adalah :
1. Program yang sedang dalam keadaan dieksekusi.
2. Unit kerja terkecil yang secara individu memiliki sumber daya dan dijadwalkan
oleh sistem operasi.
Sistem operasi mengolah seluruh proses yang ada di sistem dan bertugas
mengalokasikan sumber daya – sumber daya ke proses yang membutuhkan sesuai
dengan kebijaksanaan tertentu. Sumber daya yang dibutuhkan proses diantaranya
CPU, memori, file serta I/O device.
Keadaan Proses
Proses – proses yang dikelola oleh sistem operasi akan melalui
serangkaian keadaan yang merupakan
Bagian dari aktivitasnya. Keadaan proses ini disebut sebagai status proses
yang terdiri dari:
Status New yaitu status dimana proses sedang dibuat.
Status Ready yaitu status dimana proses siap dieksekusi tetapi CPU belum
tersedia karena sedang mengerjakan proses lain.
Status Waiting yaitu status dimana proses sedang menunggu suatu kejadian
tertentu. Misalnya sedang menunggu operasi I/O selesai, menunggu signal
dari proses lain, tersedianya memori, dsb.
Status Running yaitu status dimana proses dieksekusi. Pada status ini CPU
sedang mengeksekusi instruksi – instruksi pada proses.
Status Terminated yaitu status dimana proses diakhiri.
Sebuah proses menjadi Waiting karena proses tersebut menunggu suatu
kejadian tertentu seperti selesainya operasi I/O, misalnya perekaman data ke disk
karena pada saat perekaman dilakukan proses sedang tidak menggunakan CPU
maka scheduler segera mengalokasikan CPU ke proses lain yang telah Ready.
Apabila kejadian yang ditunggu telah selesai maka proses dipindahkan kembali ke
antrian Ready dan siap dijadwalkan.
Sebuah proses dari keadaan Running dapat menjadi Ready kembali karena
diinterupsi oleh proses lain. Interupsi dapat disebabkan karena jatah waktu yang
diberikan CPU ke proses tersebut telah habis sementara proses masih memerlukan
sejumlah waktu untuk selesai. Jatah waktu yang diberikan sering disebut sebagai
quantum time (time slice) yang dapat berkisar antara 1 hingga 100 milidetik.
Interupsi suatu proses terkait erat dengan strategi penjadwalan proses yang
digunakan sistem operasi yaitu strategi preemptive dimana suatu proses dapat saja
disela oleh proses lain pada saat Running.
Sebuah proses menjadi Terminated disebabkan oleh beberapa hal
diantaranya:
Proses memang sudah sele sai mengerjakan tugasnya, sehingga diakhiri
secara normal
Melewati batas waktu yang telah diberikan.
Terjadi kesalahan perhitungan misalnya mengerjakan instruksi pembagian
dengan nol (division by zero), atau menyimpan angka yang lebih besar
daripada yang dapat diakomodasi oleh perangkat keras.
Terjadi kegagalan I/O seperti kegagalan pembacaan dan penulisan file.
Proses induknya berakhir, pada kasus ini suatu proses dibuat oleh proses lain,
proses pembuat disebut sebagai parent, sedangkan proses yang dibuat disebut
sebagai child . Sistem dirancang untuk mengakhiri secara otomatis proses –
proses childnya bila proses parent berakhir.
Proses child diakhiri atas permintaan proses parentnya. Pada kasus ini parent
mengirim signal tertentu untuk mengakhiri childnya misalnya mengirim
signal SIGQUIT, SIGKILL atauSIGTERM.
Konsep Pembuatan dan Penghentian Proses
Konsep pembuatan proses pada sistem operasi linux :
Setiap proses diberi nomor khusus sebagai identifikasi yang disebut process
identification atau PID berupa angka integer unik.
Jika proses selesai (Terminated) maka semua sumber daya yang digunakan
termasuk PID dibebaskan kembali.
Proses dibuat menggunakan system call fork() yang sering disebut forking
proses
System call fork() mengkopi proses pemanggil sehingga akan terdapat 2
proses yaitu :
1. Proses pemanggil disebut PARENT
2. Proses hasil kopian disebut CHILD
Proses CHILD identik dengan proses PARENT-nya tetapi memiliki PID yang
berbeda.
Setelah proses baru (child) berhasil dibuat eksekusi dilanjutkan secara normal di
masing –masing proses pada aris setelah pemanggilan system call fork().
Proses pemanggil (PARENT) dapat melakukan forking proses lebih dari satu kali
sehingga memungkinkan terdapat banyak proses CHILD yang dieksekusi.
Proses CHILD dapat melakukan forking proses seperti halnya PARENT sehingga
dapat terbentuk struktur pohon proses.
Sedangkan pada proses penghentian pada OS linux, jika telah
menyelesaikan pernyataan terakhir, dan meminta pada sistem operasi untuk
menghapusnya dengan menggunakan system call exit. Proses mengembalikan
semua data (output) ke parent proses melalui system call wait. Kemudian proses
dihapus dari list atau tabel sistem, dilanjutkan dengan menghapus PCB.
Penghapusan proses ini akan menjadi sangat kompleks jika ternyata proses
yang akan dihentikan tersebut membuat proses-proses yang lain. Pada beberapa
sistem, proses-proses anak akan dihentikan secara otomatis jika proses induknya
berhenti. Namun, ada beberapa sistem yang menganggap bahwa proses anak ini
terpisah dengan induknya, sehingga proses anak tidak ikut dihentikan secara
otomatis pada saat proses induk dihentikan.
Parent dapat menghentikan eksekusi proses child dengan menggunakan
system call abort. Proses anak dihentikan parent karena beberapa alasan, antara
lain :
Child mengalokasikan sumber daya melampaui batas
Tugas child tidak dibutuhkan lebih lanjut
Parent berhenti, karena system operasi tidak mengijinkan child untuk
melanjutkan jika parent berhenti dan terminasi dilanjutkan
Alasan lain adalah:
Proses selesai mengerjakan tugasnya(selesai normal)
Proses berjalan melebihi batas waktu
Memory tidak tersedia
Proses mengakses kawasan memori yang tidak boleh diakses
Terjadi kesalahan karena pelanggaran proteksi
Terjadi kesalahan perhitungan
Proses menunggu terlalu lama
Terjadi kegagalan I/O
Proses mengeksekusi instruksi yang tidak ada
Proses mengguinakan instruksi yang disimpan untuk SO
Terjadi kesalahan penggunaan data
Terjadi intervensi dari operator atau SO (contoh : deadlock)
Proses induk berahir
Atas permintaan proses induk
3. Kernel
Kernel adalah suatu perangkat lunak yang menjadi bagian utama dari
sebuah sistem operasi. Tugasnya melayani bermacam program aplikasi untuk
mengakses perangkat keras komputer secara aman. Karena akses terhadap
perangkat keras terbatas, sedangkan ada lebih dari satu program yang harus
dilayani dalam waktu yang bersamaan, maka kernel juga bertugas untuk mengatur
kapan dan berapa lama suatu program dapat menggunakan satu bagian perangkat
keras tersebut. Hal tersebut dinamakan sebagaimultiplexing. Akses kepada
perangkat keras secara langsung merupakan masalah yang kompleks, oleh karena
itu kernel biasanya mengimplementasikan sekumpulan abstraksihardware.
Abstraksi-abstraksi tersebut merupakan sebuah cara untuk menyembunyikan
kompleksitas, dan memungkinkan akses kepada perangkat keras menjadi mudah
dan seragam. Sehingga abstraksi pada akhirnya memudahkan pekerjaan
programer. Untuk menjalankan sebuah komputer kita tidak harus menggunakan
kernel sistem operasi. Sebuah program dapat saja langsung di- load dan
dijalankan diatas mesin '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.
Ada 4 kategori kernel:
1. Monolithic kernel.
Merupakan kernel yang menyediakan abstraksi perangkat keras yang kaya
dan tangguh. 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).
2. Microkernel.
Merupakan kernel yang menyediakan hanya sekumpulan kecil abstraksi
perangkat keras sederhana, dan menggunakan aplikasi-aplikasi yang disebut
sebagai server untuk menyediakan fungsi-fungsi lainnya.
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.
3. Hybrid (modifikasi dari microkernel).
Kernel yang mirip microkernel, tetapi ia juga memasukkan beberapa kode
tambahan di kernel agar ia menjadi lebih cepat. 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).
4. Exokernel
Merupakan kernel yang tidak menyediakan sama sekali abstraksi
hardware, tapi ia menyediakan sekumpulan pustaka yang menyediakan fungsi-
fungsi akses ke perangkat keras secara langsung atau hampir-hampir langsung.
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.
Salah satu contoh implementasi kernel ialah pada system operasi
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”.
DAFTAR PUSTAKA
http://sinaubuntu.blogspot.com/
ftp://komo.padinet.com/free/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi-4.X-1/
ch09s02.html
http://blog.unand.ac.id/abieaqedas/2011/03/28/mengenal-kernel-ntldr-dan-system32/