Senin, 24 Maret 2014

Memori dalam Sistem Operasi

"Memori dalam Sistem Operasi"

Pengertian

Memori adalah pusat dari operasi pada sistem komputer modern, berfungsi sebagai tempat penyimpanan informasi yang harus diatur dan dijaga sebaik - baiknya. Memori adalah array besar dari word atau byte yang disebut alamat. CPU mengambil instruksi dari memory berdasarkan nilai dari program counter.

Sedangkan manajemen memori adalah suatu kegiatan mengelola memori komputer. Proses ini menyediakan cara mengalokasikan memori untuk proses atas permintaan mereka, mebebaskan untuk digunakan kembali ketika tidak lagi diperlukan serta menjaga alokasi ruang memori bagi proses. Pengelolaan memori utama sangat penting untuk sistem komputer, penting untuk memproses dan fasilitas masukan/keluaran secara efisien, sehingga memori dapat menampung sebanyak mungkin proses dan sebagai upaya agar pemrogram atau proses tidak dibatasi kapasitas memori fisik di sistem komputer.

Jenis Memori

Memori pada suatu sistem operasi dibagi menjadi dua yaitu :


  • Memori Kerja
  1. ROM/PROM/EPROM/EEPROM
  2. RAM
  3. Cache Memory
  • Memori Dukung
  1. Floppy
  2. Harddisk
  3. Compact Disk

Penjadwalan / Scheduling dalan Sistem Operasi

"Penjadwalan / Scheduling dalan Sistem Operasi"

Dalam suatu sistem operasi, operasi yang membuat pilihan dinamakan scheduler (penjadwalan), sedangkan algoritma yang digunakan dinamakan schedulling algorithm (algoritma penjadwalan). Penjadwalan atau scheduling adalah sebuah metode dalam sistem operasi yang mengatur proses-proses yang akan berjalan dalam suatu sistem operasi. Hal ini sangat diperlukan karena pada saat ini komputer berbasiskan multiprogramming.

Multiprogramming bertujuan untuk memaksimalkan penggunaan CPU dengan cara mengatur alokasi waktu yang digunakan oleh CPU, sehingga proses berjalan sepanjang waktu dan memperkecil waktu idle. Akibatnya sistem operasi dapat membuat komputer lebih produktif. Oleh karena itu perlu adanya penjadwalan proses-proses yang ada pada system. 

Penjadwalan CPU adalah suatu proses pengaturan atau penjadwalan proses-proses yang ada di dalam computer. Dimana proses-proses tersebut berjalan dalam pola yang disebut Siklus Burst. Keberhasilan dari penjadwalan CPU tergantung dari beberapa properti prosesor. Pengeksekusian dari proses tersebut terdiri atas siklus CPU ekskusi dan I/O Wait. Proses hanya akan bolak-balik dari dua state ini, inilah yang disebut Siklus Burst CPU-I/O. Jika dalam suatu proses Burst CPU jauh lebih besar daripada Burst I/O maka disebut CPU Bound. Demikian juga sebaliknya disebut dengn I/O Bound.  

Penjadwalan CPU mungkin akan dijalankan ketika proses dalam keadaan: 
  • berubah dari running ke waiting state
  • berubah dari running ke ready state
  • berubah dari waiting ke ready state atau terminates
Proses running ke waiting state dan  terminates adalah  proses Non Preemptive, dimana proses tersebut tidak bisa di- interrupt, sedangkan proses running ke ready state dan waiting ke ready state adalah proses Preemptive, dimana proses boleh di interrupt.

Bagian dari sistem Komponen yang lain yang terlibat dalam penjadwalan CPU adalah dispatcher. Dispatcher adalah modul yang memberikan kontrol CPU kepada proses yang sedang terjadwal. Fungsinya adalah sebagai Context switching yaitu mengganti state dari suatu proses dan mengembalikannya untuk menghindari monopoli CPU time. Context switching dilakukan untuk menangani suatu interrupt (misalnya menunggu waktu I/O). Untuk menyimpan state dari proses-proses yang terjadwal sebuah Process Control Block harus dibuat untuk mengingat proses-proses yang sedang diatur scheduler. 

Selain state suatu proses, PCB juga menyimpan process ID, program counter(posisi saat ini pada program), prioritas proses dan data-data tambahan lainnya. Fungsi lain dari dispatcher adalah sebagai Switching to user mode dari kernel mode dan lompat dari suatu bagian di progam user untuk mengulang program. Waktu yang diperlukan oleh dispatcher untuk menghentikan suatu proses dan memulai proses yang lain disebut dengan dispatch latency.
 
A. Tipe Penjadwalan
Terdapat 3 tipe penjadwal berada secara bersama-sama pada sistem operasi yang kompleks, yaitu:

1. Penjadwal jangka pendek (short term scheduller)

Bertugas menjadwalkan alokasi pemroses di antara proses-proses ready di memori.   Penjadwalan dijalankan setiap terjadi pengalihan proses untuk memilih proses berikutnya yang harus dijalankan.

2. Penjadwal jangka menengah (medium term scheduller)
 
Setelah eksekusi selama suatu waktu, proses mungkin menunda sebuah eksekusi karena membuat permintaan layanan masukan/keluaran atau memanggil suatu system call. Proses-proses tertunda tidak dapat membuat suatu kemajuan menuju selesai sampai kondisi-kondisi yang menyebabkan tertunda dihilangkan. Agar ruang memori dapat bermanfaat, maka proses dipindah dari memori utama ke memori sekunder agar tersedia ruang untuk proses-proses lain. Kapasitas memori utama terbatas untuk sejumlah proses aktif.

Aktivitas pemindahan proses yang tertunda dari memori utama ke memori sekunder disebut swapping. Proses-proses mempunyai kepentingan kecil saat itu sebagai proses yang tertunda. Tetapi, begitu kondisi yang membuatnya tertunda hilang dan proses dimasukkan kembali ke memori utama dan ready.

3. Penjadwal jangka panjang (long term scheduller)
 
Penjadwal ini bekerja terhadap antrian batch dan memilih batch berikutnya yang harus dieksekusi. Batch biasanya adalah proses-proses dengan penggunaan sumber daya yang intensif (yaitu waktu pemroses, memori, perangkat masukan/keluaran), program-program ini berprioritas rendah, digunakan sebagai pengisi (agar pemroses sibuk) selama periode aktivitas job-job interaktif rendah.

B. Strategi penjadwalan

Terdapat dua strategi penjadwalan, yaitu :

1. Penjadwalan nonpreemptive (run to completion)

         Proses diberi jatah waktu oleh pemroses, maka pemroses tidak dapat diambil alih oleh proses lain sampai proses itu selesai.

2. Penjadwalan preemptive

           Proses diberi jatah waktu oleh pemroses, maka pemroses dapat diambil alih proses lain, sehingga proses disela sebelum selesai dan harus dilanjutkan menunggu jatah waktu pemroses tiba kembali pada proses itu. Berguna pada sistem dimana proses-proses yang mendapat perhatian/tanggapan pemroses secara cepat


         Penjadwalan berkaitan dengan permasalahan memutuskan proses mana yang akan dilaksanakan dalam suatu sistem. Proses yang belum mendapat jatah alokasi dari CPU akan mengantri di ready queue. Algoritma penjadwalan berfungsi untuk menentukan proses manakah yang ada di ready queue yang akan dieksekusi oleh CPU.  Terdapat berbagai macam algoritma, antara lain :

a. First Come First Serve.
 
         Algoritma ini mendahulukan proses yang lebih dulu datang. Kelemahannya, waiting time rata-rata cukup lama.

b. Shortest Job First. 

     Algoritma ini mendahulukan proses dengan CPU burst terkecil sehingga akan mengurangi waiting time rata-rata.
 
c. Priority Scheduling. 

       Algoritma ini mendahulukan prioritas terbesar. Kelemahannya, prioritas kecil tidak mendapat jatah CPU Hal ini dapat diatasi dengan aging yaitu semakin lama lama menunggu, prioritas semakin tinggi.

d. Round Robin. 

         Algoritma ini menggilir proses-proses yang ada diantrian dengan jatah time quantum yang sama. Jika waktu habis, CPU dialokasikan ke proses selanjutnya.

e. Multilevel Queue. 

     Algoritma ini membagi beberapa antrian yang akan diberi prioritas berdasarkan tingkatan. Tingkatan lebih tinggi menjadi prioritas utama.

f. Multilevel Feedback Queue. 

      Pada dasarnya sama dengan Multilevel Queue, yang membedakannya adalah pada algoritma ini diizinkan untuk pindah antrian.


Round Robin Scheduling.
Penjadwalan Round Robin (RR) ini dilakukan secara bergiliran berdasarkan antrian, prosessor mengerjakan sesaat setiap proses berturut-turut. Proses yang telah dieksekusi prosessor dan belum selesai akan kembali ke antrian terakhir yang ada pada saat itu sehingga penggiliran untuk eksekusi tersebut seperti gelang.
Semua proses di anggap penting dan diberi sejumlah waktu pemroses yang disebut kwanta (quantum) atau time-slice dimana prose situ berjalan.
- Konsep dasar algoritma ini menggunakan time sharing
- Pada dasarnya, prinsip hampir sama dengan FCFS, tapi bersifat preemptive
- proses akan dibatasi waktu prosesnya, yang disebut quantum time
Keuntungan algoritma round robin :
  • Adanya keseragaman waktu
- Kelemahannya :
  • Jika quantum time sangat besar à switching yang terjadi akan semakin sedikit (seperti FCFS)
  • Jika quantum time terlalu kecil à switching yang terjadi akan semakin banyak, sehingga banyak waktu yang terbuang
- Ketentuan Algoritma Round Robin adalah :
  • Jika proses memiliki CPU Burst < Quantum Time, maka proses akan melepaskan CPU, jika telah selesai digunakan à CPU dapat segera digunakan oleh proses selanjutnya
  • Jika proses memiliki CPU Burst > Quantum Time, maka proses tersebut akan dihentikan jika sudah mencapai quantum time dan selanjutnya mengantri kembali pada posisi tail queue (ekor dari ready queue), CPU kemudian menjalankan proses berikutnya
Jika quantum time belum habis dan proses menunggu suatu kejadian (selesainya operasi I/O), maka proses menjadi blocked dan CPU dialihkan ke proses lain

Thread dan Proses

"Thread dan Process"

Proses adalah konsep pokok dari sistem operasi. Berbagai macam defnisi mengenai proses telah dicetuskan. Secara sederhana, proses adalah sebuah program yang dieksekusi. Proses merupakan unit kerja terkecil yang secara individu memiliki sumber daya-sumber daya dan dijadwalkan sistem operasi. Sistem operasi mengelola semua proses di sistem dan mengalokasikan sumber daya ke proses sesuai kebutuhan. 

Status Proses 
Proses yang dieksekusi mempunyai lima status yang terdiri dari: 
a. new: Pembentukan suatu proses 
b. running: Instruksi-instruksi yang sedang dieksekusi 
c. waiting: Proses menunggu untuk beberapa event yang terjadi 
d. ready: Proses menunggu untuk dialirkan ke pemroses (processor) 
e. terminated: Proses telah selesai dieksekusi


Process Control Block (PCB) 
Setiap proses digambarkan dalam sistem operasi oleh sebuah process control block(PCB), juga disebut sebuah control block. PCB berisikan banyak bagian dari informasi yang berhubungan dengan sebuah proses yang spesifik, termasuk hal-hal di bawah ini: 

  • Status proses: status yang mungkin adalah new, ready, running, waiting, halted, dan seterusnya.
  • Program counter: suatu penghitung yang mengindikasikan alamat dari instruksi selanjutnya yang akan dieksekusi untuk proses tersebut. 
  • CPU register: Register bervariasi dalam jumlah dan tipenya, tergantung pada arsitektur komputer. Register tersebut termasuk accumulator, index register, stack pointer,general-purposes register, ditambah informasi condition-code. Bersama dengan program counter, keadaan/status informasi harus disimpan ketika gangguan terjadi, untuk memungkinkan proses tersebut berjalan/bekerja dengan benar. 
  • Informasi manajemen memori: Informasi ini dapat termasuk suatu informasi sebagai nilai dari dasar dan batas register, tabel page/halaman, atau tabel segmen tergantung pada sistem memori yang digunakan oleh sistem operasi. 
  • Informasi pencatatan: Informasi ini termasuk jumlah dari CPU dan waktu nyata yang digunakan, batas waktu, jumlah account, jumlah job atau proses, dan banyak lagi. 
  • Informasi status I/O: Informasi termasuk daftar dari perangkat I/O yang di gunakan pada proses ini, suatu daftar berkas-berkas yang sedang diakses dan banyak lagi. 

Diagram PCB

Thread merupakan unit dasar dari penggunaan CPU, yang terdiri dari Thread ID, program counter, register set, dan stack. Sebuah threadberbagi code section, data section, dan sumber daya sistem operasi dengan Thread lain yang dimiliki oleh proses yang sama. Thread juga sering disebut lightweight process. Sebuah proses tradisional atau heavyweight process mempunyai thread tunggal yang berfungsi sebagai pengendali. Perbedaannya ialah proses dengan thread yang banyakmengerjakan lebih dari satu tugas pada satu satuan waktu.

a. Single thread dan multi thread 
1.Single thread: process hanya mengeksekusi satu thread saja pada satu waktu
2.Multi thread: process dapat mengeksekusi sejumlah thread dalam satu waktu

Gambar Single Thread dan Multi Thread

b. Model Multithreading 
Dukungan thread disediakan pada tingkat user yaitu user threads atau tingka kernel untuk kernel threads. User Threads disediakan oleh kernel dan diatur tanpa dukungan kernel, sedangkan kernel therads didukung dan diatur secara langusng oleh sistem operasi.

Kaitan Kernel dan Sistem Operasi

"Kaitan Kernel dan Sistem Operasi"

Kernel merupakan komponen utama sistem komputer yang paling penting yang merupakan jembatan antara aplikasi  dan pengolahan data yang sebenarnya dilakukan pada bagian hardware. Biasanya sebagai komponen dasar dari suatu sistem operasi, kernel dapat menyediakan lapisan abstraksi terendah-level untuk sumber daya. bahwa perangkat lunak aplikasi harus terkontrol untuk melakukan fungsinya. Kernel biasanya membuat fasilitas tersebut untuk proses aplikasi melalui interprocess communication mechanism dan system calls.

Tugas sistem Operasi dilakukan secara berbeda oleh kernel yang berbeda pula, tergantung pada desain dan implementasi. Meskipun kernel monolitik mengeksekusi semua kode sistem operasi di ruang alamat yang sama untuk meningkatkan kinerja sistem, microkernels menjalankan sebagian besar layanan pengguna sistem operasi di ruang sebagai server, yang bertujuan untuk meningkatkan pemeliharaan dan modularitas dari sistem operasi.

Fungsi utama kernel adalah untuk mengelola sumber daya komputer dan memungkinkan program lain untuk menjalankan dan menggunakan sumber daya komputer tersebut. Kernel juga biasanya menyediakan metode untuk sinkronisasi dan komunikasi antar proses. Kernel dapat mengimplementasikan fitur - fitur itu sendiri, atau bergantung pada beberapa proses dijalankan untuk menyediakan fasilitas untuk proses lainnya, meskipun dalam hal ini harus menyediakan beberapa cara untuk memungkinkan proses IPC untuk mengakses fasilitas yang disediakan oleh masing - masing lain.

Pengertian Kernel


"Pengertian Kernel"

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


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

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

Untuk menjalankan sebuah komputer kita tidak harus menggunakan kernel sistem operasi. Sebuah program dapat saja langsung di- load dan dijalankan diatas mesin '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. Kernel yang menyediakan abstraksi perangkat keras yang kaya dan tangguh.

2. Microkernel. Kernel yang menyediakan hanya sekumpulan kecil abstraksi perangkat keras sederhana, dan menggunakan aplikasi-aplikasi yang disebut sebagai server untuk menyediakan fungsi-fungsi lainnya.

3. Hybrid (modifikasi dari microkernel). Kernel yang mirip microkernel, tetapi ia juga memasukkan beberapa kode tambahan di kernel agar ia menjadi lebih cepat.

4. Exokernel. Kernel yang tidak menyediakan sama sekali abstraksi hardware, tapi ia menyediakan sekumpulan pustaka yang menyediakan fungsi-fungsi akses ke perangkat keras secara langsung atau hampir-hampir langsung.

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

Kernel Linux pertama yang dipublikasikan adalah versi 0.01, pada tanggal 14 Maret 1991. Sistem berkas yang didukung hanya sistem berkas Minix. Kernel pertama dibuat berdasarkan kerangka Minix (sistem UNIX kecil yang dikembangkan oleh Andy Tanenbaum). Tetapi, kernel tersebut sudah mengimplementasi proses UNIX secara tepat.

Pada tanggal 14 Maret 1994 dirilis versi 1.0, yang merupakan tonggak sejarah Linux. Versi ini adalah kulminasi dari tiga tahun perkembangan yang cepat dari kernel Linux. Fitur baru terbesar yang disediakan adalah jaringan. Versi 1.0 mampu mendukung protokol standar jaringan TCP/IP. Kernel 1.0 juga memiliki sistem berkas yang lebih baik tanpa batasan-batasan sistem berkas Minix. Sejumlah dukungan perangkat keras ekstra juga dimasukkan ke dalam rilis ini. Dukungan perangkat keras telah berkembang termasuk diantaranya floppy-disk, CD-ROM, sound card, berbagai mouse, dan keyboard internasional. Dukungan juga diberikan terhadap modul kernel yang loadable dan unloadable secara dinamis.

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

Pada bulan Juni 1996, kernel Linux 2.0 dirilis. Versi ini memiliki dua kemampuan baru yang penting, yaitu dukungan terhadap multiple architecture dan multiprocessor architectures. Kode untuk manajemen memori telah diperbaiki sehingga kinerja sistem berkas dan memori virtual meningkat. Untuk pertama kalinya, file system caching dikembangkan ke networked file systems, juga sudah didukung writable memory mapped regions. Kernel 2.0 sudah memberikan kinerja TCP/IP yang lebih baik, ditambah dengan sejumlah protokol jaringan baru. Kemampuan untuk memakai remote netware dan SMB (Microsoft LanManager) network volumes juga telah ditambahkan pada versi terbaru ini. Tambahan lain adalah dukungan internal kernel threads, penanganan dependencies antara modul-modul loadable, dan loading otomatis modul berdasarkan permintaan (on demand). Konfigurasi dinamis dari kernel pada run time telah diperbaiki melalui konfigurasi interface yang baru dan standar.

Semenjak Desember 2003, telah diluncurkan Kernel versi 2.6, yang dewasa ini (2008) telah mencapai patch versi 2.6.26.1 ( http://kambing.ui.edu/kernel-linux/v2.6/). Hal-hal yang berubah dari versi 2.6 ini ialah:

* Subitem M/K yang dipercanggih.

* Kernel yang pre-emptif.

* Penjadwalan Proses yang dipercanggih.

* Threading yang dipercanggih.

* Implementasi ALSA (Advanced Linux Sound Architecture) dalam kernel.

* Dukungan sistem berkas seperti: ext2, ext3, reiserfs, adfs, amiga ffs, apple macintosh hfs, cramfs, jfs, iso9660, minix, msdos, bfs, free vxfs, os/2 hpfs, qnx4fs, romfs, sysvfs, udf, ufs, vfat, xfs, BeOS befs (ro), ntfs (ro), efs (ro).