Jumat, 13 Januari 2017

Algoritma Penjadwalan

Penjadwalan atau Scheduling adalah sebuah metode dalam system operasi yang mengatur proses-proses yang akan berjalan dalam suatu system operasi. Hal ini sangat diperlukan karena pada saat ini komputer berbasiskan multiprogramming. Gagasan multiprogramming adalah sederhana, satu proses dieksekusi sampai proses itu menunggu sesuatu, biasana pelaksaan operasi I/O. pada multiprogramming, beberapa proses disimpan proses dimemori pasa satu waktu. Tujuan dari multiprogramming adalah untuk menjalankan beberapa proses pada waktu tertentu sehingga bisa memaksimalkan penggunaan CPU. Bagian dari sistem operasi yang membuat pilihan dinamakan scheduller, sedangkan algoritma yang digunakan dinamakan schedulling algorithm.
a.       FIFO (First In First Out) atau FCFS (First Come First Serve)
Algoritma ini merupakan algoritma penjadwalan yang paling sederhana yang digunakan CPU. Dengan menggunakan algoritma ini setiap proses yang berada pada status ready dimasukkan kedalam FIFO queue atau antrian dengan prinsip first in first out, sesuai dengan waktu kedatangannya. Proses yang tiba terlebih dahulu yang akan dieksekusi.
Terdapat kelemahan pada saat menggunakan algoritma ini, yaitu:
1.      Waiting time rata-ratanya cukup lama.
2.      Terjadinya convoy effect, yaitu proses-proses menunggu lama untuk menunggu 1 proses besar yang sedang dieksekusi oleh CPU. Algoritma ini juga menerapkan konsep non-preemptive, yaitu setiap proses yang sedang dieksekusi oleh CPU tidak dapat di-interrupt (suatu permintaan khusus pada mikroprocessor untuk melakukan sesuatu) oleh proses yang lain.

b.      SJF (Shortest Job First)
Pada algoritma ini setiap proses yang ada di ready queue akan dieksekusi berdasarkan burst time terkecil. Hal ini mengakibatkan waiting time yang pendek untuk setiap proses dan karena hal tersebut maka waiting time rata-ratanya juga menjadi pendek, sehingga dapat dikatakan bahwa algoritma ini adalah algoritma yang optimal.

c.   Priority Scheduling
Merupakan algoritma penjadwalan yang mendahulukan proses yang memiliki prioritas tertinggi. Setiap proses memiliki prioritasnya masing-masing. Prioritas suatu proses dapat ditentukan melalui beberapa karakteristik antara lain:
  1.  Time limit. 
  2. Memory requirement. 
  3.  Akses file. 
  4. Perbandingan antara burst M/K dengan CPU burst. 
  5. Tingkat kepentingan proses.
Kelemahan pada priority scheduling adalah dapat terjadinya indefinite blocking( starvation). Suatu proses dengan prioritas yang rendah memiliki kemungkinan untuk tidak dieksekusi jika terdapat proses lain yang memiliki prioritas lebih tinggi darinya. Solusi dari permasalahan ini adalah aging, yaitu meningkatkan prioritas dari setiap proses yang menunggu dalam queue secara bertahap.

d. Round Ronin
Algoritma ini menggilir proses yang ada di antrian. Proses akan mendapat jatah sebesar time quantum. Jika time quantum-nya habis atau proses sudah selesai, CPU akan dialokasikan ke proses berikutnya. Tentu proses ini cukup adil karena tak ada proses yang diprioritaskan, semua proses mendapat jatah waktu yang sama dari CPU yaitu (1/n), dan tak akan menunggu lebih lama dari (n-1)q dengan q adalah lama 1 quantum. Algoritma ini sepenuhnya bergantung besarnya time quantum. Jika terlalu besar, algoritma ini akan sama saja dengan algoritma first come first served. Jika terlalu kecil, akan semakin banyak peralihan proses sehingga banyak waktu terbuang. Urutan Kejadian Algoritma Round Robin:

PENJADWALAN PADA SISTEM OPERASI LINUX
            Algortima penjadwalan Linux adalah preemptive, priority based dengan dua range prioritas yang terpisah; range real-time dari 0-99 dan yang lainnya dengan range dari 100-140. Dua range ini memetakan skema prioritas global dimana semakin kecil angka prioritasnya memiliki arti prioritas lebih tinggi. Linux memberikan quantum waktu yang lebih panjang pada proses dengan prioritas tinggi dan sebaliknya. Sebuah proses dapat running pada CPU jika proses tersebut memiliki waktu sisa pada slot waktunya. Saat slot waktunya habis, proses tersebut dianggap kadaluarsa dan tidak akan dieksekusi sampai seluruh proses slot waktunya habis juga. Saat ini terjadi, list proses aktif akan menjadi kosong, maka list proses kadaluarsa akan menjadi aktif dan eksekusi akan dimulai kembali. Penjadwalan real-time Linux mengimplementasikan dua penjadwalan real-time, yaitu: 
  1. FIFO (First In First Out) atau FCFS (First Come First Serve)
2.  Round Robin.
Pada kedua kasus, setiap proses memiliki prioritas. Penjadwal akan memilih proses dengan prioritas paling besar pada penjadwalan real-time. Di antara dua proses dengan prioritas yang sama, penjadwal akan menjalankan proses yang telah menunggu paling lama. Penjadwalan real-time Linux adalah soft real-time. Pada algoritma soft real-time fitur yang paling penting dari adalah merespon dengan segera sebuah proses waktu nyata secepat proses yang membutuhkan CPU. Algoritma penjadwalan berdasarkan prioritas memberikan prioritas kepada masing-masing proses berdasarkan tingkat kepentingannya; proses yang lebih penting di berikan prioritas lebih tinggi daripada proses lain yang dianggap kurang penting. Apabila penjadwalan yang digunakan juga mendukung preemption dan tersedia sebuah proses berprioritas tinggi, maka sebuah proses yang berjalan sekarang ini di CPU akan didahulukan.

PENJADWALAN PADA SISTEM OPERASI WINDOWS XP
Windows XP menggunakan algoritma, prioritas penjadwalan quantum. Jumlah thread yang dibuat oleh process dapat lebih dari satu. Thread-thread yang dibuat oleh process harus dapat dijalankan sesuai dengan kebutuhan process tersebut. Tugas sistem operasi untuk mengatur dan melakukan penjadwalan agar thread-thread yang dibutuhkan mendapat waktu yang cukup untuk dieksekusi oleh CPU.  Windows XP dalam melakukan penjadwalan thread memakai pendekatan prioritas dan bersifat preemptive. Thread dengan prioritas tertinggi pasti dijalankan dan dapat menghentikan/menginterupsi jalannya thread lain yang prioritasnya lebih rendah. Ketika menggunakan CPU thread menghabiskan sejumlah waktu, ini disebut dengan quantum. Quantum adalah sejumlah waktu yang diberikan kepada thread untuk menggunakan CPU. Sifat penjadwalan windows yang preemtive memungkinkan suatu thread untuk diinterupsi, meskipun waktu quantumnya belum habis.
Windows XP menggunakan algoritma, prioritas penjadwalan quantum-based yang berbasis reemptive priority scheduling. Terdapat 6 kemungkinan state dari sebuah thread, yaitu ready, standby, running, waiting, transition dan terminated. Ready state yaitu thread yang siap untuk dieksekusi. Thread yang berada pada ready state dengan prioritas tertinggi akan berpindah menjadi standby state. Ketika thread dieksekusi, thread tersebut berada pada running state. State waiting dimasuki thread ketika thread menunggu untuk dijadwalkan ulang. Ketika thread akan dieksekusi tetapi sumber daya yang diperlukan belum tersedia, maka thread tersebut akan berpindah pada state transition. Terminated state dimasuki thread ketika thread selesai dieksekusi.
Gambar Proses Pada Windows Xp Threads dijadwalkan dalam proses, Karena prioritas preemptive algoritma diimplementasikan dengan beberapa queue, dapat dianggap sebagai algoritma multiple feedback-queue . Namun, masing-masing Threads biasanya terbatas pada kelompok kecil dari 5 level prioritas, Preemption dapat terjadi karena salah satu dari 4 alasan:
  1. thread menjadi prioritas lebih tinggi-siap
  2. thread berakhir
  3. kuantum habis waktu
  4. thread melakukan panggilan sistem pemblokiran, seperti untuk I / O, dalam hal ini meninggalkan keadaan ready menjadi keadaan menunggu.
Gambaran Quatum pada windows XP 32 tingkat prioritas digunakan, di mana prioritas 31 merupakan prioritas tertinggi dan prioritas 0 adalah prioritas terendah,
  1. memori manajemen thread: prioritas 0
  2. variabel kelas prioritas (1-15)
  3. real-time kelas prioritas (16-31)
  4. Threads di kelas real-time telah tetap prioritasnya.
Threads yang berjalan selalu dengan tingkat prioritas tertinggi. Jika tidak ada thread yang ready, Threads idle dijalankan. Ketika waktu quantum thread habis, prioritasnya diturunkan, tetapi prioritasnya tidak pernah diturunkan terlalu jauh. Ketika Threads menjadi ready setelah keadaan menunggu, maka diberikan prioritas tertinggi setiap threads dari proses yang terkait dengan program yang saat ini pengguna gunakan diberikan prioritas lebih.



Sumber:

Deadlock

Deadlock secara harfiah adalah kebuntuan, Di dalam sistem operasi berarti suatu kondisi di mana sekumpulan proses tidak dapat berjalan kembali atau tidak adanya komunikasi antar proses. Definisi lainnya yaitu sekumpulan proses yang terblok yang tiap proses tersebut memegang sumber daya dan menunggu untuk mendapatkan sumber daya yang dipegang oleh proses di dalam kumpulan tersebut.
IlustrasiDeadlock
Penyebab utama terjadinya deadlock adalah terbatasnya sumber daya yang akan digunakan oleh proses-proses. Tiap proses berkompetisi untuk memperebutkan sumber daya yang ada. Jadi deadlock berhubungan erat dengan tersedianya sumber daya dari komputer.
Penyebab utama terjadinya deadlock adalah terbatasnya sumber daya yang akan digunakan oleh proses-proses. Tiap proses berkompetisi untuk memperebutkan sumber daya yang ada. Jadideadlock berhubungan erat dengan tersedianya sumber daya dari
komputer.
Menurut Coffman(1971) ada empat kondisi yang dapat menyebabkan terjadinya deadloock. Keempat kondisi tersebut tidak dapat berdiri sendiri, saling mendukung.
1. Mutual Eksklusif: hanya ada satu proses yang bisa menggunakan sumber daya tersebut. Jika ada proses lain yang meminta sumber daya tersebut, maka proses itu harus menunggu sampai sumber daya dilepaskan.
2. Memegang dan Menunggu: proses yang meminta sumber daya sudah memegang sumber daya lainnya(meminta sumber daya tambahan).
3. Tidak ada Preemption: sumber daya yang sudah dialokasikan untuk sebuah proses tidak bisa diminta oleh proses lain. Sumber daya hanya bisa dilepaskan secara sukarela atau setelah proses tersebut selesai menggunakannya.

4. Circular Wait(menunggu berputar): kondisi seperti rantai yaitu saling menunggu smber daya yang dipakai oleh proses yang menunggu sumber daya tersebut.

Method untuk Menangani Deadlock
Pada prinsipnya kita dapat menangani deadlock dengan beberapa cara:
1. Menggunakan protokol untuk pencegahan atau penghindaran deadlock, memastikan bahwa sistem tidak akan memasuki kondisi deadlock.
2. Kita bisa mendeteksi terjadinya deadlock lalu memperbaiki.
3. Kita juga bisa mengabaikan deadlock, hal ini dilakukan pada sistem operasi berbasis UNIX.
Untuk memastikan sistem tidak memasuki deadlock, sistem dapat menggunakan pencegahan deadlock atau penghindaran deadlock. Penghindaran deadlock membutuhkan informasi tentang sumber daya yang mana yang akan suatu proses meminta dan berapa lama akan digunakan. Dengan informasi tersebut dapat diputuskan apakah suatu proses harus menunggu atau tidak. Hal ini disebabkan oleh keberadaan sumber daya, apakah ia sedang digunakan oleh proses lain atau tidak. Jika sebuah sistem tidak memastikan deadlock akan terjadi, dan juga tidak didukung dengan pendeteksian deadlock serta pencegahannya, maka kita akan sampai pada kondisi deadlock yang dapat berpengaruh terhadap performance system karena sumber daya
tidak dapat digunakan oleh proses sehingga proses-proses yang lain juga terganggu. Akhirnya sistem akan berhenti dan harus direstart.
Pencegahannya sebagai berikut:
  1. Masalah Mutual Eksklusif
Kondisi ini tidak dapat dilarang, jika aksesnya perlu bersifat spesial untuk satu proses,maka hal ini harus didukung oleh kemampuan sistem operasi. Jadi diusahakan agar tidak menggunakan kondisi spesial tersebut sehingga sedapat mungkin deadlock dapat dihindari.
  1. Masalah Kondisi Menunggu dan Memegang Penanggulangan deadlock
dari kondisi ini lebih baik dan menjanjikan, asalkan kita dapat memegang sumber daya untuk menunggu sumber daya lain, kita dapat mencegah deadlock. Caranya ialah dengan meminta semua sumber daya yang ia butuhkan sebelum proses berjalan. Tetapi masalahnya sebagian proses tidak mengetahui keperluannya sebelum ia berjalan. Jadi untuk mengatasi hal ini, kita dapat menggunakan algoritma bankir. Sistem operasi atau sebuah protokol mengatur hal ini. Hasil yang dapat terjadi adalah sumber daya lebih harus dispesifikasikan dan kelaparan sumber daya, atau proses yang membutuhkan sumber daya yang banyak harus menunggu sekian lama untuk mendapatkan sumber daya yang ia butuhkan.
  1. Masalah tidak preemption
Hal ketiga ialah jangan sampai ada preemption pada sumberv daya yang telah dialokasikan. Untuk memastikan hal ini, kita dapat menggunakan protocol. Jadi jika sebuah proses meminta sumber daya yang tidak dapat ia penuhi saat itu juga, maka proses mengalami preempted. Dengan kata lain ada sumber daya dilepaskan dan diberikan ke proses yang menunggu, dan proses itu akan menunggu sampai kebutuhan sumber dayanya dipenuhi. Cara lain yaitu dengan mengecek apakah sumber daya yang dicari proses tersedia atau tidak. Jika ada maka langsung dialokasikan tetapi jika tidak maka kita cek apakah ada proses lain yang sedang menunggu sumber daya juga. Jika ya maka kita ambil sumber daya dari proses yang sedang menunggu tersebut dan memberikan kepada proses yang meminta sumber daya tersebut. Jika tidak tersedia juga maka proses tersebut harus menunggu. Dalam menunggu beberapa dari sumber dayanya dapat saja dipreempted jika ada proses yang memintanya. Cara ini efektif untuk proses yang menyimpan dalam memory atau register.
  1. Masalah lingkaran tunggu
Masalah ini dapat ditangani oleh sebuah protocol yang menjaga agar sebuah proses tidak membuat lingkaran sikus yang dapat mengakibatkan deadlock dengan cara memberikan penomoran kepada sumber daya, dan bila suatu proses meminta sumber daya lagi maka ia hanya dapat meminta sumber daya yang nomornya lebih tinggi dari yang ia minta sebelumnya.

Penghindaran Deadlock
Algoritma Bankir Menurut Djikstra(1965) algoritma penjadwalan dapat menghindari deadlock dan algoritma penjadwalan tersebut dikenal dengan algoritma bankir. Algoritma ini dapat digambarkan, ada seorang bankir yang akan meminjamkan kepada peminjam-peminjamnya. Setiap peminjam memberikan batas pinjaman maksimum. Tentu saja bankir tahu bahwa peminjam tidak akan meminjam dana maksimum secara langsung melainkan bertahap. Bankir memprioritaskan kepada peminjam yang meminjam dana lebih banyak, sedangkan yang lain disuruh menunggu hingga peminjam yang lebih besar mengembalikan dananya, baru setelah itu ia meminjamkan kepada peminjam yang lain. Jadi algoritma bankir disini mempertimbangkan apakah permintaan proses sesuai dengan jumlah sumber daya yang ada dan sekaligus memperkirakan jumlah sumber daya yang mungkin diminta lagi. Jangan sampai ketika ada proses yang meminta sumber daya tetapi sumber dayanya habis atau tidak ada lagi jika tidak maka akan terjadi deadlock.
Secara umum algoritma bankir dibagi menjadi 4 struktur data:

1. Tersedia: jumlah sumber daya yang tersedia

2. Alokasi: jumlah sumber daya yang dialokasikan untuk setiap proses

3. Maksimum: jumlah permintaan sumber daya oleh proses

4. Kebutuhan: maksimum-alokasi(sisa sumber daya yang dibutuhkan oleh proses setelah dikurangi dengan yang dialokasikan)

Pemulihan Deadlock

1. Terminasi Proses
Abort semua proses yang deadlock
Metode ini akan mematahkan deadlock cycle, tetapi bisa saja proses-proses yang deadlock telah dikomputasi dalam waktu yang lama dan hasil-hasil komputasi parsial harus dibuang, sehingga ada kemungkinan harus dikomputasi ulang. Abort satu proses pada satu waktu sampai deadlock tereliminir. Metode ini sangat mungkin mendatangkan overhead, setelah setiap proses di-abort, algoritma pendeteksian deadlock harus diminta kembali untuk menentukan apakah masih ada proses-proses yang deadlock. Jika terminasi parsial digunakan, kita harus menentukan proses-proses deadlock yang mana yang harus diterminasi. Penentuan ini pada dasarnya berkaitan dengan ekonomi. Kita harus abort proses-proses yang terminasinya minimum cost. Sayangnya, minimum cost tidak ditentukan satu hal. Banyak faktor yang mempengaruhi pemilihan proses, mencakup:
- Apa prioritas dari proses
- Berapa lama proses telah mengkomputasi dan berapa lama lagi proses akan mengkomputasi  sebelum menyelesaikan tugasnya
-  Berapa banyak dan apa tipe dari sumber daya yang digunakan oleh proses
-  Berapa sumber daya lagi yang dibutuhkan proses supaya selesai
- Berapa banyak proses yang perlu diterminasi Apakah proses interactive atau batch

2. Preempt Sumber Daya
Mengeliminasi deadlock menggunakan preempt sumber daya berarti kita berturut-turut preempt beberapa sumber daya dari suatu proses dan memberikan sumber daya ini ke proses lain sampai deadlock cycle patah.



Pada preempt sumber daya
- Memilih korban
Seperti pada terminasi proses, kita harus menentukan sumber daya dan proses mana yang akan dipreempt dengan minimum cost. Faktor cost mencakup parameter-parameter seperti jumlah dari sumber daya yang ditahan proses-proses yang deadlock dan jumlah waktu dari proses yang telah digunakan selama eksekusinya.
- Rollback
Jika kita preempt sebuah sumber daya dari sebuah proses, proses tidak dapat berlanjut dengan eksekusi normal karena proses kehilangan beberapa sumber daya yang diperlukan. Kita harus rollback proses ke beberapa safe state dan restart dari state tersebut. Secara umum, sulit untuk menentukan safe state. Solusi termudah adalah dengan total rollback, abort proses, dan restart.

- Starvation
Dalam sebuah sistem di mana pemilihan korban berdasar primer pada faktor cost, dapat terjadi suatu proses tidak pernah menyelesaikan tugasnya karena suatu sumber daya selalu di-preempt pada proses yang sama. Kita harus memastikan bahwa sebuah proses dapat dipilih sebagai korban hanya dengan batasan waktu tertentu. Solusi pada umumnya adalah dengan menambahkan jumlah rollback ke dalam faktor cost.

Sejarah Sistem Operasi

SEJARAH SISTEM OPERASI
Sistem operasi merupakan sebuah penghubung antara pengguna dari komputer dengan perangkat keras komputer. Pengertian sistem operasi secara umum ialah pengelola seluruh sumber-daya yang terdapat pada sistem komputer dan menyediakan sekumpulan layanan (system calls) ke pemakai sehingga memudahkan dan menyamankan penggunaan serta pemanfaatan sumber-daya sistem komputer.
Dalam sejarahnya, sistem operasi mengalami perkembangan yang sangat pesat. Perkembangan tersebut dapat dibagi kedalam lima generasi:
1. Generasi Pertama (1945-1955)
Generasi pertama merupakan awal perkembangan sistem komputasi elektronik sebagai pengganti sistem komputasi mekanik, hal itu disebabkan kecepatan manusia untuk menghitung terbatas dan manusia sangat mudah untuk membuat kecerobohan, kekeliruan bahkan kesalahan. Pada generasi ini belum ada sistem operasi, maka sistem komputer diberi instruksi yang harus dikerjakan secara langsung.
2. Generasi Kedua (1955-1965)
Generasi kedua memperkenalkan Batch Processing System, yaitu Job yang dikerjakan dalam satu rangkaian, lalu dieksekusi secara berurutan.Pada generasi ini sistem komputer belum dilengkapi sistem operasi, tetapi beberapa fungsi sistem operasi telah ada, contohnya fungsi sistem operasi ialah FMS (Fortran Monitoring System) dan IBSYS. Jadi generasi komputer kedua ini merupakan generasi pertama dari sistem Operasi.
3. Generasi Ketiga (1965-1980)
Pada generasi ini perkembangan sistem operasi dikembangkan untuk melayani banyak pemakai
sekaligus, dimana para pemakai interaktif berkomunikasi lewat terminal secara on-line ke komputer, maka sistem operasi menjadi multi-user (di gunakan banyak pengguna sekaligus) dan multi-programming (melayani banyak program sekaligus).
4. Generasi Keempat (Pasca 1980an)
Dewasa ini, sistem operasi dipergunakan untuk jaringan komputer dimana pemakai menyadari
keberadaan komputer-komputer yang saling terhubung satu sama lainnya. Pada masa ini para
pengguna juga telah dinyamankan dengan Graphical User Interface yaitu antar-muka komputer yang berbasis grafis yang sangat nyaman, pada masa ini juga dimulai era komputasi tersebar dimana komputasi-komputasi tidak lagi berpusat di satu titik, tetapi dipecah dibanyak komputer sehingga tercapai kinerja yang lebih baik.
5. Generasi Kelima (Pasca 2001 sampai Sekarang )
Mendefinisikan komputer generasi kelima menjadi cukup sulit karena tahap ini masih dalam perjalanan. Contoh imajinatif komputer generasi kelima adalah komputer fiksi HAL9000 dari novel karya Arthur C. Clarke berjudul 2001:Space Odyssey. HAL menampilkan seluruh fungsi yang diinginkan dari sebuah komputer generasi kelima. Dengan kecerdasan buatan (artificial intelligence), HAL dapat cukup memiliki nalar untuk melakukan percapakan dengan manusia, menggunakan masukan visual, dan belajar dari pengalamannya sendiri. Walaupun mungkin realisasi HAL9000 masih jauh dari kenyataan, banyak fungsi-fungsi yang dimilikinya sudah terwujud. Beberapa komputer dapat menerima instruksi secara lisan dan mampu meniru nalar manusia. Kemampuan untuk menterjemahkan bahasa asing sekarang menjadi mungkin. Fasilitas ini tampak sederhana. Namun fasilitas tersebut menjadi jauh lebih rumit dari yang diduga ketika programmer menyadari bahwa pengertia manusia sangat bergantung pada konteks dan pengertian ketimbang sekedar menterjemahkan katakata secara langsung.

PERJALANAN SISTEM OPERASI DARI DOS, MAC HINGGA WINDOWS
Tahun 1980
  1. QDOS : Tim Paterson dari Seattle Computer menulis QDOS yang dibuat dari OS terkenal pada masa itu, CP/M. QDOS (Quick and Dirty Operating System) dipasarkan oleh Seatle Computer dengan nama 86-DOS karena dirancang untuk prosesor Intel 8086.
  2. Microsoft : Bill Gates dari Microsoft membeli lisensi QDOS dan menjualnya ke berbagai perusahaan komputer.
Tahun 1981
  1. PC DOS : IBM meluncurkan PC DOS yang dibeli dari Microsoft untuk komputernya yang berbasis prosesor Intel 8086.
  2. MS DOS : Microsoft menggunakan nama MS DOS untuk OS ini jika dijual oleh perusahaan diluar IBM.
Tahun 1983
MS DOS 2.0 : Versi 2.0 dari MS DOS diluncurkan pada komputer PC XT.
Tahun 1984
  1. MS DOS 3.0 : Microsoft meluncurkan MS DOS 3.0 untuk PC AT yang menggunakan chip Intel 80286 dan yang mulai mendukung penggunaan hard disk lebih dari 10 MB.
  2. MS DOS 3.1 : Microsoft meluncurkan MSDOS 3.1 yang memberikan dukungan untuk jaringan.
Tahun 1985
MS Windows 1.0 : Microsoft memperkenalkan MSWindows, sistem operasi yang telah menyediakan lingkungan berbasis grafis (GUI) dan kemampuan multitasking. Sayangnya sistem operasi ini sangat buruk performanya dan tidak mampu menyamai kesuksesan Apple.
Tahun 1986
MS DOS 3.2 : Microsoft meluncurkan MS DOS 3.2 yang menambahkan dukungan untuk floppy 3.5 inch 720 KB.
Tahun 1987
  1. OS/2 : IBM memperkenalkan OS/2 yang telah berbasis grafis, sebagai calon pengganti IBM PC DOS.
  2. MS DOS 3.3 : Microsoft meluncurkan MS DOS 3.3 yang merupakan versi paling populer dari MS DOS.
  3. Windows 2.0 : Windows versi 2.0 diperkenalkan.
Tahun 1988
MS DOS 4.0 : Microsoft mengeluarkan MSDOS 4.0 dengan suasana grafis.
Tahun 1990
  1. Windows 3.0 : Microsoft meluncurkan Windows versi 3.0 yang mendapat sambutan cukup baik.
  2. MSOffice : Microsoft membundel Word, Excel, dan PowerPoint untuk menyingkirkan saingannya seperti Lotus 123, Wordstar, Word Perfect dan Quattro.
  3. DR DOS : Digital Research memperkenalkan DR DOS 5.0.
Tahun 1991
MS DOS 5.0 : Microsoft meluncurkan MSDOS 5.0 dengan penambahan fasilitas full-screen editor, undelete, unformat dan Qbasic.
Tahun 1992
Windows 3.1 : Microsoft meluncurkan Windows 3.1 dan kemudian Windows for Workgroups 3.11 di tahun berikutnya.
Tahun 1993
  1. Windows NT : Microsoft meluncurkan Windows NT, OS pertama berbasis grafis tanpa DOS didalamnya yang direncanakan untuk server jaringan.
  2. MS DOS 6.0 : Microsoft memperkenalkan MSDOS 6.0 Upgrade, yang mencakup program kompresi harddisk DoubleSpace.
  3. MS DOS 6.2 : Microsoft meluncurkan MSDOS 6.2.
Tahun 1994
  1. MSDOS 6.22 : Microsoft meluncurkan MSDOS 6.22 dengan program kompresi bernama DriveSpace. Ini merupakan versi terakhir dari MS DOS.
  2. FreeDOS : Jim Hall, mahasiswa dari Universitas WisconsinRiver Falls Development mengembangkan FreeDOS. FreeDOS dibuat setelah Microsoft berniat menghentikan dukungannya untuk DOS dan menggantikannya dengan Windows 95.
Tahun 1995
  1. Windows 95 : Microsoft meluncurkan Windows 95 dengan lagu Start Me Up dari Rolling Stones dan terjual lebih dari 1 juta salinan dalam waktu 4 hari.
  2. PC DOS 7 : IBM memperkenalkan PC DOS 7 yang terintegrasi dengan program populer pengkompres data Stacker dari Stac Electronics. Ini merupakan versi terakhir dari IBM PC DOS.
  3. Windows CE : Versi pertama Windows CE diperkenalkan ke publik.
Tahun 1996
Windows NT 4.0 : Microsoft meluncurkan Windows NT versi 4.0
Tahun 1997
Mac OS : Untuk pertama kalinya Apple memperkenalkan penggunaan nama Mac OS pada Mac OS 7.6.
Tahun 1998
Windows 98 : Web browser Internet Explorer menjadi bagian penting dari Windows 98 dan berhasil menumbangkan dominasi Netscape Navigator.
Tahun 2000
  1. Mac OS/X : Mac OS diganti dengan mesin berbasis BSD Unix dengan kernel yang disebut sebagai Mac OS/X.
  2. Windows 2000: Microsoft meluncurkan Windows 2000 sebagai penerus Windows NT.
  3. Windows Me : Microsoft meluncurkan Windows Me, versi terakhir dari Windows 95.
Tahun 2001
Windows XP : Microsoft memperkenalkan Windows XP.
Tahun 2003
Windows 2003 : Microsoft meluncurkan Windows Server 2003.
Tahun 2007
Vista : Setelah tertunda untuk beberapa lama, Microsoft akhirnya meluncurkan Windows Vista. Windows Vista memperkenalkan fitur 3D Desktop dengan Aero Glass, SideBar, dan Flip 3D. Sayangnya semua keindahan ini harus dibayar mahal dengan kebutuhan spesifikasi komputer yang sangat tinggi.
Tahun 2009
Windows 7: Windows 7 ini adalah perbaikan dari vista, dengan aero vista tetapi kestabilan XP

Manajemen Memori

- Apa itu manajemen memori? Manajemen memori adalah suatu kegiatan untuk mengelola memori pada komputer. Proses manajemen memori menyediakan berbagai cara mengalokasikan memori untuk proses atas permintaan mereka, membebaskan untuk digunakan kembali ketika tidak lagi diperlukan serta menjaga alokasi ruang memori bagi proses.
Manajemen memori utama sangat penting untuk sistem computer dan penting untuk memproses masukan dan keluaran (I/O) secara efisien, sehingga memori dapat menampung sebanyak mungkin proses dan sebagai upaya agar pemogram atau proses tidak dibatasi kapasitas memori fisik di sistem komputer.

Fungsi Manajemen Memori Pada Sistem Komputer

Manajemen memori mempunyai peranan yang sangat penting dalam sistem komputer. Fungsi-fungsi menejemen memori tersebut adalah sebagai berikut :
1. Meningkatkan kinerja CPU. Lebih lengkap baca Pengertian CPU dan Fungsinya
2. Dapat meningkatkan kecepatan akses Central Processor Unit terhadap data dan instruksi. Sehingga data dan instruksi dapat diakses dengan cepat oleh CPU. Lebih lengkap baca ; Pengertian Processor dan Fungsinya
3. Dapat menghemat pemakaian memori  yang terbatas.
4. Menghemat waktu transfer atau perpindahan data dari atau ke memori utama dan dari atau ke CPU.
5. Mengelola informasi yang digunakan dan tidak digunakan.
6. Mengalokasikan memori ke proses yang memerlukan.
7. Mendealokasikan memori dari proses telah selesai.
8. Mengelola swapping atau paging antara memori utama dan disk.

Jenis-Jenis Memori Komputer

Pada prinsipnya memori yang ada dalam sistem komputer dapat dibedakan menjadi memori kerja dan memori backling store.  Memori Kerja mempunyai tugas utama untuk menampung pekerjaan pada saat sebelum atau sesudah pekerjaan itu dilaksanakan oleh prosesor. Memori kerja juga mampu menampung semu hal yang diperlukan prosesor. contohnya sistem operasi, sistem bahasa, catatan.
Beberapa Contoh memori kerja untuk memori tetap adalah:

ROM atau Read Only Memory. Baca Perbedaan RAM dan ROM
PROM atau Programmable ROM
EPROM atau Electrically PROM
EPROM atau Erasable EPROM
Registe mikroproseso
Pengertian Manajemen Memori Pada Sistem Operasi

Sementara itu Contoh memori kerja untuk memori bebas adalah :
1. RAM
RAM adalah singkatan dari Random Access Memory. RAM merupakan memori yang dapat diisi dan dapat  dibaca. Ciri utama RAM adalah dapat diisi dengan informasi terbaru dan isi memori akan hilang jika daya dimatikan. Lebih lengkap baca Pengertian RAM dan Fungsinya.

2. Cache memory
Cache memory adalah Memori yang mempunyai kapasitas kecil namun berkecepatan tinggi. Cache memory dipasang diantara prosesor dan memori utama. Instruksi dan data yang sering diakses oleh prosesor akan ditempatkan dalam chace sehingga dapat lebih cepat diakses oleh prosesor.

Input Output

Pengelolaan petrangkat masukan / keluarkan merupakan aspek perancangan sistem operasi yang terluas di sebabkan sangat  beragamnya perangkat dan begitu banyaknya aplikasi dari perangkat – perangkat itu.
Manajemen perangkat masukan / keluarkan mempunyai beragam fungsi ,diantaranya:
1.mengirim perintah keperangkat masukan / keluarkan agar menyediakan layanan.
2.menangani interuksi perangkat masukan/keluarkan.
3.menangani kesalahan pada perangkat masukan / keluarkan.
4.menyediakan interface ke pemakai.

KLARIFIKASI PERANGKAT MASUKAN / KELUARKAN .
Perangkat masukan/keluarkan merupakan komponen yang paling bnyak jenisnya dan dapat di kelompokan dengan beragam kriteria.antara lain .
1.berdasarkan sifat aliran datanya
2.berdasarkan sasaran komunikasi.

Perangkat masukan/keluarkan berdasarkan sifat aliran data
Aliran data ini dapat terbagi 2 yaitu :
1.Perangkat berorentasi blok (block oriented devices)
Menyimpan informasi dan menukarkan (menerima / mengirim) informasi sebagai blok –blok berukaurn tetap . tiap blok mempunyai alamat tersendiri. ukuran blok dapan beragam bergantung perangkat dari 128byte sampai 1024 byte. Ciri utama prangkat ini adalah memungkinkan membaca atau menulis blok – blok secara independen , yaitu dapat membaca atau menulis sembarang blok tanpa harus melewati blok- blok lain.
Contohnya : disk, tape, CD ROM ,optical disk, dan sebagainya .
2.perangkt berorentasi aliran karakter .(character stream oriented devices ).
Adlah perangkat yg mengantarkan atau menerima aliran karakter  tanpa peduli membentuk aliran suatu aliran blok .
Contohnya : terminal ,line printer , interface jaringan  (perngkat lain yang tidak seperti disk dapat dipandang sebagai perangkat karakter)
Perangkat yang tidak termasuk katagori di atas yaitu : clock , memory mapped screen , sensor , mouse .dsb.

Perangkat masukan / keluarkan berdasarkan sasaran komunikasi .
Klarifikasi :
1.perankat yg terbaca oleh manusia (human readable devices)
Adalah perangkat yang cocok untuk komunikasi dengan manusia.
Contoh : VDT (vidio display terminal ) terdiri dari monitor , keyboard .
2.perangkat yg terbaca oleh mesin ( machine readable devices)
Adlah perangkat yang cocok untuk komunikasi dengan perangkat elektronik.
Contoh: disk tape , sensor controller dan aktuator.
3.untuk komunikasi . adalh perangkat yg cocok untuk komunikasi dengan perangkat jarak jauh.
Contoh : modem
Perbedaan besar antar kelas perangkat .
Terdapat perbedaan besar antar kelas perangkat . perbedaan perbedaan pokok antara lain .
*data rate
*aplikasi
*kompleksitas pengendalian
*unit yg di transfer
*representasi data
*kondisi – kondisi kesalahan.
Kebegaman perangkat masukan /keluarkan yg sangat besar membuat pendekatan yg seragam dan konsisten dalam pandangan sistem maupun proses pemakai sangat sulit diperoleh

Teknik pemrograman perangkat masukan / keluaran .
Terdapan 3 teknik pemrograman m/k berdasarkan mekanisme hbungan pemroses dengan pengendali perangkat m/k yaitu :
1.m/k terprogram (programmed i/o) atau poling sistem
2.m/k dikendalikan interuksi (interupt driven i/o)
3.dengan DMA (direct memory access)
Pengerian :
1.m/k terprogram
Ketika perangkat m/k menangani permintaan , perangkat men-set bit status di register status perangkat . perangkat tidak dapat memberi tahu keproses saat tugas telah selesai dilakukan.pemroses harus selalu memeriksa register status perangkat secara periodik dan melakukan tindakan bedasarkan status yg dibaca .
Perangkat lunak pengendali perangkat (driver) diproses harus mentransfer data ke atau dari pengendali . driver mengeksekusi perintah yg berkomunikasi dengan pengendali adapter di perangkat dan menunggui sampai operasi yg di lakukan perangkat selesai.

Driver harus berisi kumpulan intruksi di tiga katagori yaitu :
1.pengendalian
Intruksi- intruksi untuk mengendalikan operasi perangkat keras.
Intruksi pengendalian untuk mengaktifkan perangkat eksternal dan memberitahu yg perlu di lakukan perangkat .
Contoh ; unit tape magnetik di instruksikan untuk kembLI KEPOSISI AWAL, berangkat ke rekor berikutnya dan sebagainya.
2.pengujian
Instruksi instruksi untuk memeriksa status perangkat keras
Intruksi ini untuk memeriksa kondisi status berkaitan dengan perangkat masukan / keluaran
3.pembacaan / penulisan
Intruksi – intruksi untuk membaca atau menulis dari atau ke perangkat keras .
Untuk transper data antara antara register proses dan perangkat eksternal.
Kelemahanya ; cara ini sangat tidak evisien karena banyak pemborosan waktu pemroses untuk menungguin kejadian perangakt keras dan atau mnungguin selesainya operasi yg dilakuikan perangkat masukan kluaran .

Masukan / keluaran dituntun interuksi
Masalah utama m/k terprogram adalah pemroses duboroskan untuk menunggu dan menjagai seluruh operasi m/k di perlukan teknik lain untuk meningkatkan efisiensi pemroses.
Teknik m/k dituntun interuksi mempunyai mekanisme kerja perangkat m/k sebagai berikut :
*pemroses memberi intruksi ke perangkat m/k kemudian pemroses melanjutkan melakukan kerja berguna yg lain.
*perangkat m/k akan melakukan interuksi meminta layanan berikutnya saat perintah telah siap bertukaran data dengan pemroses.
*saat menerima interupsi perangkat keras( yg memberi tahu siap melakukan transfer ), pemroses segera mengeksekusi transfer data .

Keunggulan :
Pemroses tidak di sibukan menunggui dan menjagai seluruh operasi perangkat m/k untuk memeriksa ststus perangkat . kinerjanya lebih baik di banding dengan teknik m/k terprogram.

DMA (direct memory access)
Perangkat m/k di kendalikan interupsi lebih efisien di banding m/k terprogram, tapi masih memerlukan intervensi aktif pemroses untuk transfer data antara memori dan buffer perangkat m/k . pemroses masih di sebutkan dengan operasi transfer data .
Pemrograman m/k di kendalikan interupsi mempunyai dua kelemahan yaitu:
1.rotata tranfer masukan / keluaran dibatasi kecepatan menguji dan melayani operasi perangkat /
2.pemroses terikat erat dalam pengelula transfer m/k . sejjumlah interuksi harus di eksekusi untuk tiap transfer m/k .

Ketika data berukuran besar di pindahkan maka di perlukan teknik lebih efisien agar tidak menyibukan pemroses untuk mengurangi oeparsi transfer masukan / keluaran sehingga pemroses dapat melakukan kerja berguna yg lain

DMA berguna membebaskan pemroses menunggui transfer data yg di lakukan perangkat m/k . saat pemroses ingin membaca atau menulis data pemroses memerintahkan DMA controller dengan mengirim informasi berikut .
-perintah penulisan /pembacaan
-alamat perangkat m/k
-awal lokasi memori yg ditulis / dibaca

DMA mentransfer seluruh data yg di minta ke / dari memori secara langsung tanpa melewati pemroses . ketika transfer data selesai DMA mengirim sinyal interupsi ke pemroses .pemroses  hanya di lebatkan pada awal dan akhir transfer data .

Operasi tranfer antara perangkat dan memori utama di lakikan sepenuhnya oleh DMA bebas dari pemroses dan hanya melakukan interupsi bila operasi telah selesai.

Keunggulan :
1.penghematan waktu pemroses
2.peningkatan kinerja m/k

Evolusi fungsi perangkat m/k
Evolusi sangat tampak pada fungsi-fungsi m/k sebagai berikut :
1.pemroses mengendalikan perangkat m/k secara langsung
Teknik ini masih di lakukan untuk perangkat sederhana yg dikendalikan mikro sensor untuk menjadi perangkat berintelejen (intelegent device)
 2.perangkat dilengkapi pengendali m/k (i/o controller)
Pemroses masih mengunakan m/k terprogram tanpa interupsi .
3.perangkat di lengkapi fasilitas interupsi
Teknik ini meningkatkan efisiensi pemroses
4.i/o controller mengendalikan memori secara langsung lewat DMA
Pengendali dapat memindahkan blok data ke / dari memori tanpa melibatkan pemroses kecuali di awal dan di akhir transfer .
5.pengendali m/k menjadi pemroses terpisah
Pemroses m/k mengambil dan mengeksekusi intruksi interuksi ini tanpa intervensi pemroses utama (pusat) dimungkinkan pemroses pusat mensfesifikasikan barisan aktifitas m/k dan hanya di interuksi ketika seluruh barisan interuksi di selesaikan .
6.penegndali m/k mempunyai memori lokal
Perangkat m/k dapat dikendalikan dengan keterlibatan pemroses pusat yg minimum . dan untuk pengendalian komunikasi dengan terminal terminal interaktif.

Prinsip manajemen perangkat masukan / keluarkan .
Terdapat dua sasaran perancangan manajemen perangkat m/k yaitu:
1.efisiensi
Efisiensi merupakan aspek penting karena operasi aspek m/k sering merupakan operasi yg menimbulkan bottleneck.
2.generalisasi  (disebut juga device independence ).
Manajemen perangkat m/k selain berkaitan dengan simplisitas bebas kesalahan , jika menangani perangkat secara seragam baik dipandaang dari caraproses memandang maupun cara sistem operasi mengelola perangkat dan operasi m/k.

Perangkat lunak di organisasikan berlapis . lapisan bawah berurutan menyembunyikan kepelikan perangkat keras untuk lapisan lapisan lebih atas . lapisan lebih atas berurutan memberi antar muka yg bagus , bersih nyaman dan seragam ke pemakai .

Masalah maasalah yg pada perancanagan manajemen m/k adalah :
1.penamaan yg seragam (uniform naming )
Nama file atau perangkat adalah string atau integer , tidak bergantung pada perangkat sama sekali
2.penanganan kesalahan ( error handling )
Umumnya penanganan kesalahan di tangani sedekat mungkin dengan perangkat keras .
3.transfer sinkron vs asinkron
Kebanyakan i/o adalah i/o . pemroses memulai tranfer dan mengabaikan untuk melakukan kerja lain sampai interupsi tiba .setelah perintah read , program mulai di tunda secara otomatis sampai data tersebut di buffer .
4.sharable vs dedicated
Beberapa perangkat dapat dipakai bersama seperti disk. Tapi ada juga perangkat yg hanya satu pemakai yg di bolehkan memakai pada satu saat , perangkat itu di sebut dedicated.  Contohnya yaitu printer .




Hirarki manajemmen perangkat masukan / keluaran
1. Interrupt handler
2. Device driver
3. Perangkat lunak device – independen
4. Perangkat lunak level pemakai
125.1 interrupt handler
Interupsi harus disembunyikan agar tidak terlihat oleh rutin pada lapisan-lapisan berikutnya, Device driver di-block  saat perintah masukan/keluaran diberikan dan menunggu interupsi, ketika interiupsi terjadi,produser penangananinterupsi bekerja agar  device driver  keluar dari state Blocked.
12.5.2 device driver
Semua kode bergantung perangkat ditem patkan di device driver.masing-masing device  driver menangani satu tipe  atau kelas perangkat. Device driver bertugas menerima permintaan abstrak perangkat lunak device-independe nt diatasnya dan melakukan layanan sesui pemintaan itu .

Mekanisme kerja device driver
Menerjemahkan perintah abstrak menjadi perintah kongkret.
Begitu telah dapat di tentukan perintah yg harus diberikan ke pengendali .
Device  driver mulai menulis ke register register pengendali perangkat .
*setelah operasi selesai di lakukan perangkat, device driver memeriksa setatus kesalahan yang terjadi.
Jika berjalan baik, device driver melewatkan data ke perangkat lunak device-independent.
Device driver melaporkan setatus operasinya  ke pemanggil.
12.5.3 perangkat lunak  sistem operasi device independent
Fungsi utama perangkat lunak lapisan ini adalah membentuk fungsi-fungsi masukan/keluaran yang berlaku untuk semua perangkat  dan menyediakan  antarmuka yang seragam ke perangkat  lunak tingkat pemakai.
Fungsi-fungsi yang biasa dilakukan antara lain:
Interface seragam untuk seluruh device-driver
Penamaan perangkat
Proteksi perangkat
Memberi ukuran blok perangkat agar bersifat device-independent
Melakukan buffering
Alokasi penyimpanan pada block-devices
Alokasi dan pelepasan dedicated-devices
Pelaporan kesalahan
12.5.4 perangkat lunak level pemakai
Kebanyakan perangkat lunak masukan/keluaran terdapat disistem operasi. Saty bagian kecil berisi pustaka yang ditautkan di program pemakai dan berjalan di luar kernel. System  call masukan/keluaran umunya dibuat sebagai prosedur pustaka. Kumpulan prosedur pustaka masukan/keluaran merupakan bagian sistem masukan/keluaran.
Tidak semua perangkat lunak masukan/keluaran level pemakai berupa prosedur pustaka. Kategori penting adalah spooling. Spooling adalah cara khusus berurusan dengan perangkat masukan/keluaran dedicated (dedicated i/o devices) pada sistem  multiprogramming.
12.6 bufferring masukan/keluaran
Buffering adalah melembutkan lonjakan-lonjakan kebutuhan pengaksesan masukan/keluaran. Buffering meningkatkan efisien sistem operasi dan kinerja proses.
Single buferring
Double buferring
Circular buferring
Single buffering
Single buffering merupakan teknik paling sederhana. Ketika proses  memberi perintah  untuk perangkat masukan/keluaran,sistem operasi menyediakan buffer memori utama milik sistem operasi untuk operasi.
Untuk perangkat berorientasi blok
Transfer masukan dibuat oleh buffer sistem. Ketika transfer selesai, proses memindahkan blok ruang memori sistem  operasi ke ruang memori milik pemakai  dan segera meminta blok lain. Teknik ini disebut reading ahead atau anticipated input.
Teknik ini dilakukan denga harapan blok yang dibaca akan segera dilperlukan . untuik banyak tipe komputasi, asumsi ini berlaku, hanya di akhir pemrosesan maka blok yang dibaca tidak diperlukan.
Keunggulan
Pendekatan ini umunya meningkatkan kecepatan dibanding tanpa buffering. Proses  pemakai dapat mengolah blok data sementara blok berikutnya sedang dibaca. Sistem operasi dapat men-swap keluar proses suspendedblocked atau suspendedready karena operasi masukan berada di memori sistem bukan memori proses pemakai.
kelemahan
teknik ini merumitkan sistem operasi karena harus mencatat pemberian buffering-buffering sistem ke masing-masing proses pemakai.
Logika  swapping juga dipengaruhi. Jika operasi masukan/keluaran melibatkan   disk untuk swapping maka membuat  antrian penulisan  ke disk yang sama yang digunakan  untuk swap-out  proses. Usaha men-swap proses dan melepas memori utama tidak dapat dimulai sampai operasi masukan/keluar selesai dimana waktu swapping ke disk tidak bagus untuk dilaksanakan.
Buffering untuk keluaran serupa buffering untuk masukan. Ketikan data transmisi data lebih dulu dikopi dari ruang pemakai kebuffer sistem. Proses pengirim menjadi bebas untuk melanjutkan eksekusi berikutnya atau di-swap ke disk  jika perlu.
Untuk perangkat berorintasi aliran karakter

Single buffering dapat  diterpakan dengan dua mode, yaitu;
Mode line-at-a-time
Mode byte-at-a-time
Operasi line-at-a-time cocok untuk terminal dengan mode gulung (scroll terminal atau dumb terminal).  Masukan pemakai adalah satu baris perwaktu dengan carriage return menandai akhir baris. Keluaran terminal juga serupa yaitu satu baris  

Proses dan Threads

Proses dan Thread

2.1. Proses
     Satu selingan pada diskusi kita mengenai sistem operasi yaitu bahwa ada sebuah pertanyaan mengenai apa untuk menyebut semua aktivitas CPU. Sistem batch mengeksekusi jobs, sebagaimana suatu sistem time-shared telah menggunakan program pengguna, atau tugas-tugas/ pekerjaan-pekerjaan. Bahkan pada sistem tunggal, seperti Microsoft Windows dan Macintosh OS, seorang pengguna mampu untuk menjalankan beberapa program pada saat yang sama: sebuah Word Processor, Web Browser, dan paket e-mail. 
     Bahkan jika pengguna dapat melakukan hanya satu program pada satu waktu, sistem operasi
perlu untuk mendukung aktivitas program internalnya sendiri, seperti managemen memori. Dalam
banyak hal, seluruh aktivitas ini adalah serupa, maka kita menyebut seluruh program itu proses-proses (processes).

2.1.1. Konsep Dasar dan Definisi Proses
     Secara informal; proses adalah program dalam eksekusi. Suatu proses adalah lebih dari kode program, dimana kadang kala dikenal sebagai bagian tulisan. Proses juga termasuk aktivitas yang sedang terjadi,
     sebagaimana digambarkan oleh nilai pada program counter dan isi dari daftar prosesor/ processor’s register. Suatu proses umumnya juga termasuk process stack, yang berisikan data temporer (seperti parameter metoda, address yang kembali, dan variabel lokal) dan sebuah data section, yang berisikan variabel global.

2.1.2. Keadaan Proses
Sebagaimana proses bekerja, maka proses tersebut merubah state (keadaan statis/ asal). Status dari
sebuah proses didefinisikan dalam bagian oleh aktivitas yang ada dari proses tersebut. Tiap proses
mungkin adalah satu dari keadaan berikut ini:
  • New: Proses sedang dikerjakan/ dibuat.
  • Running: Instruksi sedang dikerjakan.
  • Waiting: Proses sedang menunggu sejumlah kejadian untuk terjadi (seperti sebuah penyelesaian         I/O atau penerimaan sebuah tanda/ signal).
  • Ready: Proses sedang menunggu untuk ditugaskan pada sebuah prosesor.
  • Terminated: Proses telah selsesai melaksanakan tugasnya/ mengeksekusi.
Nama-nama tersebut adalah arbitrer/ berdasar opini, istilah tersebut bervariasi disepanjang sistem
operasi. Keadaan yang mereka gambarkan ditemukan pada seluruh sistem. Namun, sistem operasi
tertentu juga lebih baik menggambarkan keadaan/ status proses. Adalah penting untuk menyadari bahwa hanya satu proses dapat berjalan pada prosesor mana pun pada waktu kapan pun.

2.1.3. Process Control Block
    Tiap proses digambarkan dalam sistem operasi oleh sebuah process control block (PCB) - juga disebut sebuah control block. Sebuah PCB ditunjukkan dalam Gambar 2-2. PCB berisikan banyak bagian dariinformasi yang berhubungan dengan sebuah proses yang spesifik, termasuk ini:
  • Keadaan proses: Keadaan mungkin, new, ready, running, waiting, halted, dan juga banyak lagi.
  • Program counter: Counter mengindikasikan address dari perintah selanjutnya untuk dijalankan           untuk proses ini.
  • CPU register: Register bervariasi dalam jumlah dan jenis, tergantung pada rancangan komputer.
Register tersebut termasuk accumulator, index register, stack pointer, general-puposes register,
ditambah code information pada kondisi apa pun. Besertaan dengan program counter, keadaan/ status
informasi harus disimpan ketika gangguan terjadi, untuk memungkinkan proses tersebut berjalan/
bekerja dengan benar setelahnya (lihat Gambar 2-3).
• Informasi managemen 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 (lihat Bab 4).
• Informasi pencatatan: Informasi ini termasuk jumlah dari CPU dan waktu riil yang digunakan, batas
  waktu, jumlah akun, 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 open berkas dan banyak lagi.
• PCB hanya berfungsi sebagai tempat menyimpan/ gudang untuk informasi apa pun yang dapat
  bervariasi dari prose ke proses.

Gambar 2-2. Process Control Block. Sumber: . . .



Image result for contoh gambar proses control block

2.1.4. Threads
   Model proses yang didiskusikan sejauh ini telah menunjukkan bahwa suatu proses adalah sebuah
program yang menjalankan eksekusi thread tunggal. Sebagai contoh, jika sebuah proses menjalankan
sebuah program Word Processor, ada sebuah thread tunggal dari instruksi-instruksi yang sedang
dilaksanakan.

2.2. Penjadualan Proses
   Tujuan dari multiprogramming adalah untuk memiliki sejumlah proses yang berjalan pada sepanjang waktu, untuk memaksimalkan penggunaan CPU. Tujuan dari pembagian waktu adalah untuk mengganti CPU diantara proses-proses yang begitu sering sehingga pengguna dapat berinteraksi dengan setiap program sambil CPU bekerja. Untuk sistem uniprosesor, tidak akan ada lebih dari satu proses berjalan. Jika ada proses yang lebih dari itu, yang lainnya akan harus menunggu sampai CPU bebas dan dapat dijadualkan kembali.

2.2.1. Penjadualan Antrian
   Ketika proses memasuki sistem, mereka diletakkan dalam antrian job. Antrian ini terdiri dari seluruh proses dalam sistem. Proses yang hidup pada memori utama dan siap dan menunggu/ wait untuk mengeksekusi disimpan pada sebuah daftar bernama ready queue. Antrian ini biasanya disimpan sebagai daftar penghubung. Sebuah header ready queue berisikan penunjuk kepada PCB-PCB awal dan akhir. Setiap PCB memiliki pointer field yang menunjukkan proses selanjutnya dalam ready queue.

2.2.3. Alih Konteks
   Mengganti CPU ke proses lain memerlukan penyimpanan suatu keadaan proses lama (state of old
process) dan kemudian beralih ke proses yang baru. Tugas tersebut diketahui sebagai alih konteks
(context switch). Alih konteks sebuah proses digambarkan dalam PCB suatu proses; termasuk nilai dari CPU register, status proses (lihat Gambar 2-7). dan informasi managemen memori. Ketika alih konteks terjadi, kernel menyimpan konteks dari proses lama kedalam PCB nya dan mengisi konteks yang telah disimpan dari process baru yang telah terjadual untuk berjalan. Pergantian waktu konteks adalah murni overhead, karena sistem melakukan pekerjaan yang tidak perlu. Kecepatannya bervariasi dari mesin ke mesin, bergantung pada kecepatan memori, jumlah register yang harus di copy, dan keberadaan instruksi khusus (seperti instruksi tunggal untuk mengisi atau menyimpan seluruh register). Tingkat kecepatan umumnya berkisar antara 1 sampai 1000 mikro detik

Gambar 2-7. Alih Konteks. Sumber: . . .

Image result for contoh gambar alih konteks

2.3. Operasi-Operasi Pada Proses
   Proses dalam sistem dapat dieksekusi secara bersama-sama, proses tersebut harus dibuat dan dihapus secara dinamis. Maka, sistem operasi harus menyediakan suatu mekanisme umtuk pembuatan proses dan terminasi proses.

Gambar 2-9. Operasi pada Proses. Sumber: . . .

Image result for contoh gambar operasi operasi pada proses

2.3.1. Pembuatan Proses
   Suatu proses dapat membuat beberapa proses baru, melalui sistem pemanggilan pembuatan proses,
selama jalur eksekusi. Pembuatan proses dinamakan induk proses, sebagaimana proses baru di sebut
anak dari proses tersbut. Tiap proses baru tersebut dapat membuat proses lainnya, membentuk suatu
pohon proses (lihat Gambar 2-7).
Secara umum, suatu proses akan memerlukan sumber tertentu (waktu CPU, memori, berkas, perangkat I/O) untuk menyelesaikan tugasnya. Ketika suatu proses membuat sebuah subproses, sehingga subproses dapat mampu untuk memperoleh sumbernya secara langsung dari sistem operasi. Induk mungkin harus membatasi sumber diantara anaknya, atau induk dapat berbagi sebagian sumber (seperti memori berkas) diantara beberapa dari anaknya. Membatasi suatu anak proses menjadi subset sumber daya induknya mencegah proses apa pun dari pengisian sistem yang telalu banyak dengan menciptakan terlalu banyak subproses.

2.3.2. Terminasi Proses
   Sebuah proses berakhir ketika proses tersebut selesai mengeksekusi pernyataan akhirnya dan meminta sistem operasi untuk menghapusnya dengan menggunakan sistem pemanggilan exit. Pada titik itu, proses tersebut dapat mengembalikan data (keluaran) pada induk prosesnya (melalui sistem pemanggilan wait) Seluruh sumber-sumber dari proses-termasuk memori fisik dan virtual, membuka berkas, dan penyimpanan I/O di tempatkan kembali oleh sistem operasi.
Ada situasi tambahan tertentu ketika terminasi terjadi. Sebuah proses dapat menyebabkan terminasi dari proses lain melalui sistem pemanggilan yang tepat (contoh abort). Biasanya, sistem seperti itu dapat dipanggil hanya oleh induk proses tersebut yang akan diterminasi. Bila tidak, pengguna dapat secara sewenang-wenang membunuh job antara satu sama lain. Catat bahwa induk perlu tahu identitas dari anaknya. Maka, ketika satu proses membuat proses baru, identitas dari proses yang baru diberikan kepada induknya.
Induk dapat menterminasi/ mengakhiri satu dari anaknya untuk beberapa alasan, seperti:
• Anak telah melampaui kegunaannya atas sebagaian sumber yang telah diperuntukkan untuknya.
• Pekerjaan yang ditugaskan kepada anak telah keluar, dan sistem operasi tidak memeperbolehkan
sebuah anak untuk meneruskan jika induknya berakhir.

2.4. Hubungan Antara Proses
Sebelumnya kita telah ketahui seluk beluk dari suatu proses mulai dari pengertiannya, cara kerjanya,
sampai operasi-operasinya seperti proses pembentukannya dan proses pemberhentiannya setelah selesai melakukan eksekusi. Kali ini kita akan mengulas bagaimana hubungan antar proses dapat berlangsung, misal bagaimana beberapa proses dapat saling berkomunikasi dan bekerja-sama.
      2.4.1. Proses yang Kooperatif
Proses yang bersifat simultan (concurrent) dijalankan pada sistem operasi dapat dibedakaan menjadi
yaitu proses independent dan proses kooperatif. Suatu proses dikatakan independen apabila proses
tersebut tidak dapat terpengaruh atau dipengaruhi oleh proses lain yang sedang dijalankan pada sistem.
   Berarti, semua proses yang tidak membagi data apa pun (baik sementara/ tetap) dengan proses lain
adalah independent. Sedangkan proses kooperatif adalah proses yang dapat dipengaruhi atau pun
terpengaruhi oleh proses lain yang sedang dijalankan dalam sistem. Dengan kata lain, proses dikatakan kooperatif bila proses dapat membagi datanya dengan proses lain. Ada empat alasan untuk penyediaan sebuah lingkungan yang memperbolehkan terjadinya proses kooperatif:
1. Pembagian informasi: apabila beberapa pengguna dapat tertarik pada bagian informasi yang sama
(sebagai contoh, sebuah berkas bersama), kita harus menyediakan sebuah lingkungan yang
mengizinkan akses secara terus menerus ke tipe dari sumber-sumber tersebut.
2. Kecepatan penghitungan/ komputasi: jika kita menginginkan sebuah tugas khusus untuk
menjalankan lebih cepat, kita harus membagi hal tersebut ke dalam subtask, setiap bagian dari
subtask akan dijalankan secara parallel dengan yang lainnya. Peningkatan kecepatan dapat
dilakukan hanya jika komputer tersebut memiliki elemen-elemen pemrosesan ganda (seperti CPU
atau jalur I/O).
3. Modularitas: kita mungkin ingin untuk membangun sebuah sistem pada sebuah model
modular-modular, membagi fungsi sistem menjadi beberapa proses atau threads.
4. Kenyamanan: bahkan seorang pengguna individu mungkin memiliki banyak tugas untuk dikerjakan
secara bersamaan pada satu waktu. Sebagai contoh, seorang pengguna dapat mengedit, memcetak,
dan meng-compile secara paralel.