Sabtu, 08 Mei 2010

Sistem Operasi (SO)
Posted on September 30, 2007 by panjitapen

Apa itu Sistem Operasi ?

Untuk memahami sistem operasi, terdapat dua pendekatan fungsi :

1.
1.
1.

Sistem Operasi sebagai Extended Machine ( Perluasan Mesin )

*

Pendekatan fungsi ditinjau dari arah pengguna atau top down view
*

Dilakukan berdasarkan pada kenyataan bahwa struktur internal sistem komputer pada aras bahasa mesin sangat primitif dan tidak fleksibel untuk pemrograman terutama untuk proses input/output
*

Sistem operasi dibuat untuk menyembunyikan keadaan sesungguhnya dari perangkat keras dengan tampilan yang menyenangkan dan mudah digunakan
*

Disini sistem operasi berperan sebagai penyedia interface yang sesuai berupa perluasan mesin (extended machine) atau mesin semu (virtual machine)

1.1.2. Sistem Operasi sebagai Resources Manager ( Pengelola Sumberdaya )

*

Pendekatan fungsi ditinjau dari arah perangkat keras atau bottom up view
*

Sistem operasi beperan untuk mengatur , mengorganisasikan, mengoperasikan secara keseluruhan bagian sistem yang kompleks
*

Sistem operasi mengontrol alokasi sumberdaya sistem komputer (pemroses, memori, piranti I/O) untuk berbagai program yang akan memakainya

1.
1.

Sejarah Perkembangan Sistem Operasi

1.
1.
1.

Generasi Pertama ( 1945 -1955 ) : Tabung Hampa dan Plugboard

*

belum ada bahasa pemrograman selain bahasa mesin
*

satu pekerjaan menggunakan satu mesin

1.
1.
1.

Generasi Kedua ( 1955 -1956 ) : Transisteor dan Sistem Batch

*

bahasa pemrograman Fortran atau Assembler
*

system batch : mengumpulkan sejumlah job (program) dibaca ke dalam suatu tape melalui computer tertentu ( IBM 1401), kemudian tape tersebut menjadi masukan untuk computer berikutnya (IBM 7094) yang akan menjalankan program dan melakukan komputasi, hasilnya dituliskan kembali kedalam tape dan menjadi masukan computer pertama untuk dicetak
*

system operasi : FMS ( Fortran Monitor System ), IBSYS

1.
1.
1.

Generasi Ketiga ( 1965 -1980 ) : IC dan Multiprograming

*

multiprogramming : dimaksudkan untuk mengoptimasi semua sumberdaya system computer yang tersedia, karena adanya kesenjangan proses terutama antara CPU dengan piranti I/O.

Beberapa proses berada pada saat yang sama, dengan cara mempartisi memori kedalam beberapa bagian dan menempatkan job yang berbeda pada setiap setiap partisi.

*

time sharing : variant dari multiprogramming dimana tiap pengguna mempunyai online terminal, jadi dimungkinkan adanya banyak penggunayang dapat log-in ke dalam suatu system computer.

Pengguna dialokasikan pada selang waktu yang singkat secara bergantian

*

spooling : simultaneous peripheral operation on line dimaksudkan untuk meningkatkan proses I/O yang berkaitan dengan proses baca dan tulis
*

system operasi: UNIX

1.
1.
1.

Generasi Keempat ( 1980 -1990 ) : Personal Komputer

*

system operasi

single user : MS-DOS

multi user : UNIX

*

network operating system
*

distributed operating system



1.
1.

Konsep Sistem Operasi

1.
1.
1.

Proses : program yang sedang berjalan /dieksekusi

Tiap proses terdiri dari bagian program, data dan stack program, program counter, stack pointer dan beberapa register yang lain, serta informasi lain yang dibutuhkan

Sistem timesharing : secara periodik sistem operasi akan memeriksa proses-proses yang sedang berjalan dan mengatur waktu penggunaan prosessor bagi proses-proses tersebut

System call untuk pengelolaan proses, berkaitan erat dengan pembentukan pembentukan proses serta akhir suatu proses

1.
1.
1.

File

System calls juga berhubungan dengan pengelolaan sistem file.

System calls ini harus dapat membuat file, menghapus file, membaca file, dan menulis file.

System calls harus mendukung pembuatan dan penghapusan direktori

Organisai file dibuat dala bentuk pohon (tree)

1.
1.
1.

System Calls

Program pengguna dapat berkomunikasi dengan sistem operasi untuk meminta pelayanannya melalui system calls.

Penghubung ke setiap system calls ini adalah suatu prosedur pustaka yang dapat dipanggil oleh program pengguna.

System calls memberikan layanan untuk :

*
o

Manajemen proses
o

Manajemen file
o

Manajemen directory

1.
1.
1.

Shell

Sistem operasi adalah pengelola system calls dan sebagai antarmuka antara pengguna dengan perangkat keras.

Antarmuka antara pengguna dengan sistem operasi disebut shell (Unix) atau command interpreter (MS-DOS)

Aktifnya shell ditandai dengan munculnya tanda prompt $ (UNIX) atau karakter > (MS-DOS)

1.
1.

Struktur Sistem Operasi
1.

Sistem Monolitik

*

Terdiri atas kumpulan beberapa prosedur
*

Terdapat dua mode operasi yang disediakan :

*
o

Mode kernel : seluruh instruksi boleh dipanggil
o

Mode pengguna : beberapa instruksi I/O dan instruksi tertentu tidak boleh dipanggil

*

Struktur dasar sistem monolitik :

*
o

Program utama yang menghubungi prosedur pelayanan yang diminta
o

Kumpulan prosedur pelayanan yang menyediakan system calls
o

Kumpulan prosedur utilitas yang membantu prosedur pelayanan

1.
1.
1.

Sistem Berlapis (Layered)

*
o
+

Sistem operasi diorganisasikan sebagai hirarki layer
+

Sistem pertama yang dibuat denga struktur ini adalah strukrut THE oleh E.W Dijkstra
+

Direalisasikan dengan 6 layer
o

Layer 0 : berhubungan dengan alokasi prosesor, pemindahan proses ketika terjadi interupsi atau alokasi waktu habis dan multiprogramming
o

Layer 1 : melakukan pengelolaan memori. Proses, baik dimemori utamaatau dalam drum akan segera ditransfer ke memori utama pada saat diperlukan
o

Layer 2 : menangani komunikasi antara proses dengan operator
o

Layer 3 : mengelola piranti I/O, dan menyimpan aliran informasi antar piranti ke dalam buffer
o

Layer 4 : tempat program pengguna berada, tanpa memikirkan pengelolaan proses, memori console dan piranti I/O
o

Layer 5 : tempat proses sistem operator

1.
1.
1.

Virtual Machine

*

Sistem timesharing : Menyediakan kemampuan untuk multiprogramming dan perluasan mesin dengan antarmuka yang lebih mudah
*

Struktur virtual machine ( CP/CMS, VM/370 ) terdiri atas komponen dasar utama :

*
o

Control Program, yaitu virtual machine monitor yang mengatur fungsi ari prosessor, memori dan piranti I/O. Komponen ini berhubungan langsung dengan perangkat keras
o

Conventional Monitor System, yaitu sistem operasi sederhanayang mengatur fungsi dari proses, pengelolaan informasi dan pengelolaan piranti.

1.
1.
1.

Model Client-Server

*

Kecenderungan SO modern adalah menyederhanakan struktur sistem operasi dengan menaikkan sebanyank mungkin fungsi so ke layer yang lebih atas dan meninggalkan mode kernel yang seminimal mungkin
*

Mengimplementasikansebagian besar fungsi SO pada proses pengguna
*

Dengan membagi SO dalam bagian-bagian yang menangani pelayanan file, pelayanan proses, pelayanan terminal, pelayanan memori menjadikan SO mudah dikelola
*

Untuk melayani suatu permintaan, proses pengguna sebagai proses client mengirimkan permintaan ke server proses, yang kemudian akan mengerjakan dan mengirimkan kembali jawaban
*

Pada model ini kernel hanya menangani komunikasi antar client dan server
*

Semua server dijalankan sebagai proses pada mode pengguna, tidak pada mode kernel , maka tidak ada akses langsung terhadap perangkat keras sehingga misalnya jika ada kerusakan pada file server, maka pelayanan file tidak dapat diberikan tetapi tidak menyebabkan seluruh sistem berhenti



KONSEP PROSES

2.1. Model Proses dan Implementasinya

Dalam model ini seluruh software yang berjalan di komputer diorganisasikan dalam sejumlah proses sekuensial (proses).

Secara konseptual, setiap proses mempunyai virtual CPU, namun dalam kenyataan CPU akan berpindah dari satu proses ke proses yang lain (multiprogramming)

1.

Terdapat 4 program di memori yang berjalan secara multiprogramming
2.

Program-program tersebut diabstraksikan menjadi 4 proses, yang masing-masing mempunyai flow kontrol dam berjalan secara independen
3.

Dari grafik waktu terhadap proses terlihat selama interval waktu tertentu, seluruh proses berjalan tapi dalam satu interval waktu hanya ada satu proses yang berjalan

2.1.1. Hirarki Proses

Sistem operasi yang mendukung konsep mengenai proses harus menyediakan suatu cara untuk mengcreate semua proses yang diperlukan

Untuk system yang sederhana sangat mungkin bahwa semua proses yang akan diperlukan harus sudah ada pada saat system dihidupkan.

Pada kebanyakan system , perlu suatu cara tertentu untuk dapat menciptakan dan menghapus proses yang diperlukan selama operasi.

Suatu proses dapat membentuk sub proses dan subproses dapat membentuk subproses yang lain, sehingga secara keseluruhan membentuk struktur pohon.

2.1.2. Status Proses

Pada suatu saat proses akan berada dalam status tertentu yang menggambarkan keadaan proses tersebut .

Status Proses :

1.

Running : proses sedang menggunakan CPU
2.

Blocked : proses tidak dapat berjalan sampai terjadinya event eksternal
3.

Ready : proses siap dijalankan, sementara dihentikan agar proses yang lain berjalan

Transisi yang mungkin terjadi antara status proses :

1.

Running ke blocked : transisi terjadi ketika sebuah proses tidak dapat dilanjutkan, misalnya karena sedang menunggu proses eksternal
2.

Running ke ready : terjadi ketika Scheduler memutuskan bahwa proses yang sedang berjalan telah cukup lama dijalankan, dan sudah waktunya untuk memberi kesempatan proses yang lain berjalan
3.

Ready ke running : terjadi ketika seluruh proses telah mendapat kesempatan menggunakan prosesor dan sudah waktunya proses yang pertama berjalan kembali
4.

Blocked ke ready : terjadi ketika event eksternal yang ditunggu proses terjadi (contoh proses menunggu kedatangan sejumlah input). Jika tidak ada proses yang berjalan, maka transisi 3 akan segera terjadi dan proses akan mulai berjalan

Selain model diatas terdapat pula model model sebagai berikut :

*

Model Dua Status
*

Model Lima Status
*

Penambahan status Suspend pada model Lima Status

2.1.3. Implementasi Proses

1.
1.

Tabel Proses
2.

Penerapan Mekanisme Interupsi pada Sistem Multi Programming

2.2. Penjadwalan Proses

Untuk meminimalkan waktu tanggap pengguna interaktif, penjadwal sama sekali tidak dapat menjalankan proses batch, umumnya algoritma yang mementingkan salah satu kelas proses akan merugikan kelas proses yang lain

Kesulitan yang lain yang ditemui pada penjadwalan proses adalah setiap proses bersifat unik dan tidak dapat diduga sehingga membutuhkan suatu strategi yang tetap untuk mengatasinya

Preemptive Scheduling : strategi penjadwalan yang memungkinkan proses yang sedang berjalan dihentikan

Non Preemptive Scheduling / run to complete : tidak memungkinkan proses yang sedang berjalan dihentikan

2.2.1. Algoritma Penjadwalan

1.

Penjadwalan Round Robin
2.

Penjadwalan dengan Prioritas ( Priority Scheduling )
3.

Penjadwalan Antrian Ganda ( Multiple Queues Scheduling )
4.

Penjadwalan Job Terpendek lebih dahulu ( Shortest Job First Scheduling )
5.

Penjadwalan Policy Driven ( Policy Driven Scheduling )
6.

Penjadwalan Dua Tingkat ( Two Level Scheduling )

2.2.2. Implementasi dan Evaluasi Algoritma Penjadwalan Proses

2.2.3. Mekanisme vs Kebijakan

2.3. Komunikasi Antar Proses

KONGKURENSI

KONGKURENSI

*

Proses-proses disebut kongkuren jika proses-proses berada / berjalan pada saat yang sama.
*

Proses-proses kongkuren dapat sepenuhnya tidak bergantung dengan lainnya, tetapi dapat juga saling berinteraksi
*

Proses-proses yang berinteraksi memerlukan sinkronisasi agar terkendali dengan baik.

Masalah-masalah yang dapat muncul pada proses-proses kongkuren yang saling berinteraksi :

*

Mutual Exclusion
*

Deadlock
*

Starvation
*

Sinkronisasi

Prinsip-prinsip Kongkurensi

*

Alokasi waktu pemroses untuk proses-proses
*

Pemakaian bersama dan persaingan untuk mendapatkan sumber daya
*

Komunikasi antar proses
*

Sinkronisasi aktivitas banyak proses

Mutual Exclusion

*

Terdapat sumber daya yang tak dapat dipakai bersama pada saat bersamaan

Sumber daya ini disebut critical section/region

*

Hanya satu proses pada suatu saat yang diijinkan untuk masuk critical section
*

Terdapat beberapa mekanisme yang menjamin Mutual Exclusion
*

Pemaksaan adanya mutual exclusion menimbulkan deadlock dan starvation

Deadlock

*

Ilustrasi Deadlock

Misalnya :

*

dua proses P1 dan P2
*

dua sumber daya kritis R1 dan R2
*

Proses P1 dan P2 harus mengakses kedua sumber daya

Kondisi berikut dapat terjadi : R1 diberikan ke P1, sedang R2 diberikan ke P2.

Karena untuk melanjutkan eksekusi memerlukan kedua sumber daya sekaligus maka kedua proses akan saling menunggu sumber daya lain selamanya.

Tidak ada proses yang dapat melepaskan sumber daya yang telah dipegangnya karena menunggu sumber daya lain yang tak pernah diperolehnya. Kedua proses dalam kondisi deadlock, tidak dapat membuat kemajuan apapun

Kondisi deadlock adalah kondisi terparah Karen banyak proses dapat terlibat dan semuanya tidak dapat mengakhiri prosesnya secara benar

Starvation

*

Ilustrasi Starvation

Misalnya

*

Terdapat tiga proses P1, P2 dan P3
*

P1, P2 dan P3 memerlukan pengaksesan sumber daya R secara periodik

Skenario berikut dapat terjadi :

*

P1 sedang diberi sumber dayaR, P2 dan P3 blocked menunggu sumber daya R
*

Ketika P1 keluar dari critical section, P2 dan P3 diijinkan mengakses R
*

Asumsi P3 diberi hak akses, kemudian setelah selesai, hak akses kembali diserahkan ke P1 yang saat itu kembali membutuhkan sumber daya R

Jika pemberian hak akses bergantian terus-menerus antara P1 dan P3, maka P2 tidak pernah memperoleh pengaksesan sumber daya R, meski tidak deadlock.

Pada situsasi ini P2 mengalami starvation

Mutual Exclusion

*

Mutual exclusion adalah jaminan bahwa hanya ada satu proses yang mengakses sumber daya pada suatu interval waktu tertentu.

*

Ilustrasi eksekusi daemon printer

*

Ilustrasi aplikasi tabungan

*

Kriteria Penyelesaian Mutual Exclusion

*
o

Mutual Exclusion harus dijamin : hanya satu proses yang diijinkan masuk critical section
o

Proses yang berada di non critical section dilarang memblocke proses proses lain yang ingin masuk critical section
o

Harus dijamin proses yang ingin masuk critical section tidak menunggu selama waktu yang tak terhingga, atau tidak boleh terdapat deadlock atau starvation
o

Ketika tidak ada proses pada critical section maka proses yang ingin masuk critical section harus diijinkan masuk tanpa waktu tunda
o

Tidak ada asumsi mengenai kecepata relatif proses atau jumlah proses yang ada

*
o
+

Metode-metode Penjaminan Mutual Exclusion

*

Metode naïf
o

metode variable lock sederhana

*

Metode untuk situasi tertentu
o

metode bergantian secara ketat

*

Metode menggunakan busy waiting
o

metode penyelesaian Dekker
o

metode penyelesaian Peterson
o

metode berbantuan perangkat keras menggunakan instruksi pematian interupsi
o

metode berbantuan perangkat keras menggunakan instruksi khusus
*

Metode penyelesaian level tinggi
o

metode semaphore

Metode-metode Penjaminan Mutual Exclusion

*

Metode naïf
o

metode variable lock sederhana : meniru mekanisme penguncian pintu dengan kunci pintu diganti variabel lock

variabel lock bernilai 0 : pintu tidak terkunci

variabel lock bernilai 1 : pintu terkuncigint

*

Metode untuk situasi tertentu
o

metode bergantian secara ketat

*

Metode menggunakan busy waiting
o

metode penyelesaian Dekker
o

metode penyelesaian Peterson
o

metode berbantuan perangkat keras menggunakan instruksi pematian interupsi
o

metode berbantuan perangkat keras menggunakan instruksi khusus

*

Metode penyelesaian level tinggi
o

metode semaphore

Program Mutual Exclusion dengan Lock

Program Mutex_with_lock;

Var

lock : Integer;

Procedure enter_critical_section;

{ mengerjakan kode-kode kritis }

Procedure ProsesA;

Begin

While lock <> 0 Do Begin End;

lock := 1;

enter_critical_section;

lock :=0;

End;

Procedure ProsesB;

Begin

While lock <> 0 Do Begin End;

lock := 1;

enter_critical_section;

lock :=0;

End;

Begin

lock := 0;

Repeat

Parbegin

ProsesA;

ProsesB;

Parend

Forever

End;



Mekanisme program :

Ketika proses hendak masuk critical section, proses lebih dulu memeriksa variabel lock dengan ketentuan sbb:

*
o

Jika variabel lock bernilai 0, proses men-set variabel lock menjadi 1 dan kemudian masuk critical section
o

Jika variabel lock bernilai 1, proses menunggu sampai nilai variabel lock menjadi nol (situasi ini berarti terdapat proses lain pada critical section)

Skenario yang membuat situasi kacau :

Proses A Proses B

{ lock = 0 }

membaca lock

{lock = 0 }

{ keluar dari While lock <> 0 Do ..} { lock = 0 }

{ penjadwal menjadwalkan proses B berjalan } membaca lock lock <- 1

enter critical section

{ lock = 1 } {penjadwal menjadwalkan

proses A berjalan}

lock <- 1

enter critical section



{ Dua proses secara bersamaan berada pada critical section }

Metoda melanggar kriteria mutual exclusion : hanya ada satu proses yang berada pada critical section

Pada saat proses A telah membaca variabel lock dan sebelum menset variabel lock menjadi 1, penjadwal dapat menjadwalkan proses B.

Proses B pun membaca variabel yang bernilai nol dan masuk pada critical section.

Penjadwal menggilir proses A, karena telah membaca variabel lock bernilai 0 maka proses A pun segera masuk critical section yang sedang dimasuk B.

Proses A dan Proses B berada pada critical section pada saat yang sama

*

Metode bergantian Secara Ketat

Metode ini mengasumsikan dapat menggilir masuk critical section secara bergantian.



Variable Turn : digunakan untuk mencatat nomor proses yang sedang masuk critical section



Skenario yang terjadi :

*
o

Proses 0, memeriksa variabel turn bernilai 0 dan segera memasuki critical section

*
o

Proses 1, menemukan variabel turn bernilai 0 melakukan loop memeriksa variabel turn terus menerus apakah turn telah bernilai 1



Busy Waiting

Kondisi memeriksa variabel terus-menerus, menunggu sampai suatu nilai muncul.

Jika busy waiting terjadi lama maka akan akan menyia-nyiakan waktu proses.

Metode ini bisa digunakan jika lama menunggu singkat

Program Mutex_with_strict_alternation;

Var

turn : Integer;

Procedure enter_critical_section;

{ mengerjakan kode-kode kritis }

Procedure enter_noncritical_section;

{ mengerjakan kode-kode tidak kritis }

Procedure Proses0;

Begin

Repeat

While turn <> 0 Do Begin End;

enter_critical_section;

turn := 1;

enter_noncritical_section;

Forever

End;

Procedure Proses1;

Begin

Repeat

While turn <> 1 Do Begin End;

enter_critical_section;

turn := 0;

enter_noncritical_section;

Forever

End;

Begin

turn := 0;

Parbegin

Proses0;

Proses1;

Parend

End

Skenario yang Membuat Situasi Kacau



Misal proses0 adalah prose cepat, proses1 adalah proses lambat :

Proses 0 Proses 1

{ turn = 0 }

While turn<> 0 Do ..}

enter_critical_section

turn <- 1

{ turn = 1} { turn = 1}

{ penjadwal menjadwalkan proses 1 } While turn<> 0 Do ..} enter_critical_section

turn <- 0

{ turn = 0 }

enter_non_critical_section

{penjadwal menjadwalkan

proses 0}

lock <- 1

enter critical section



{ Dua proses secara bersamaan berada pada critical section }

Metode Dengan Semaphore

Semaphore dikemukakan oleh Dijkstra

Prinsip semaphore :

*
o

Dua proses atau lebih dapat bekerja sama dengan menggunakan penanda-penanda sederhana
o

Proses dipaksa berhenti sampai proses memperoleh penanda tertentu
o

Variabel khusus untuk penandaan ini disebut semaphore

Semaphore mempunyai 2 properti, yaitu :

*
o

semaphore dapat diinisialisasi dengan nilai non negatif
o

terdapat dua operasi terhadap semaphore yaitu Down dan Up. Nama aslinya : P dan V

Operasi Down (P)

*
o

operasi ini menurunkan nilai semaphore
o

jika nilai semaphore menjadi non positif maka proses yang mengeksekusinya diblocked
o

operasi down adalah atomik artinya tidak dapat diinterupsi sebelum selesai

Type

Semaphore = Integer;

Procedure Down ( Var s : semaphore);

Begin

s := s – 1;

If s <= 0 then

Begin

Tempatkan proses pada antrian semaphore s

Proses di blocked

End;

End;

Operasi Up (V)

*
o

operasi ini menaikkan nilai semaphore
o

jika satu proses atau lebih telah di blocked pada suatu semaphore tak dapat menyelesaikan operasi Down, maka salah satu dipilih oleh sistem dan dibolehkan menyelesaikan operasi Down-nya
o

urutan proses yang dipilih tidak ditentukan oleh Dijkstra dapat dipilih secara acak, FIFO dll sesuai kepentingan
o

operasi UP menaikkan nilai semaphore, memindahkan dari antrian dan menempatkan proses ke antrian.

Type

Semaphore = Integer;

Procedure Up ( Var s : semaphore);

Begin

s := s + 1;

If s <= 0 then

Begin

Pindahkan satu proses P dari antrian untuk semaphore s

Tempatkan proses P di antrian ready

End;

End;

Mutual Exclusion dengan semaphore

*
o

Sebelum masuk critical section, proses melakukan Down
o

Bila berhasil maka prose masuk critical section
o

Bila tidak berhasil maka proses diblocked pada semaphore itu
o

Proses yang diblocked akan dapat melanjutkan kembali proses bila proses di critical section keluar dan melakukan operasi UP sehingga menjadikan proses yang diblocked menjadi ready dan berlanjut sehingga operasi Down-nya berhasil

Program Mutual_exclusion_with_semaphore

Const

N = 2;

Var

s : semaphore;

Procedure enter_critical_section;

{ mengerjakan kode-kode kritis}

Procedure enter_noncritical_section;

{ mengerjakan kode-kode non kritis}

Procedure Proses (i : integer);

Begin

Repeat

Down(s);

enter_critical_section;

Up(s);

Enter_non_critical_section;

Forever

End

Begin

s:=1;

Parbegin

Proses(0);

Proses(1);

Parend

End.

DIarsipkan di bawah: IT

Tidak ada komentar:

Posting Komentar