Sistem Operasi

37
SISTEM OPERASI IMPLEMENTASI PROSES DAN PENJADWALAN PROSES” Disusun Oleh : Azthika Suhartina 14050974014 M.Syarifuddin 14050974016 Hajar Nopin Artika 14050974018 S1 PENDIDIKAN TEKNOLOGI INFORMASI-A TEKNIK INFORMATIKA / FAKULTAS TEKNIK UNIVERSITAS NEGERI SURABAYA

description

Sistem Operasi

Transcript of Sistem Operasi

SISTEM OPERASI

“IMPLEMENTASI PROSES DAN PENJADWALAN PROSES”

Disusun Oleh :

Azthika Suhartina 14050974014

M.Syarifuddin 14050974016

Hajar Nopin Artika 14050974018

S1 PENDIDIKAN TEKNOLOGI INFORMASI-A

TEKNIK INFORMATIKA / FAKULTAS TEKNIK

UNIVERSITAS NEGERI SURABAYA

2015

KATA PENGANTAR

Syukur alhamdulilah senantiasa terhantar kepada Allah SWT, karena atas berkah,

rahmat, taufik serta hidayah-nya. Sehingga laporan ini dapat terselesaikan dengan baik.

Shalawat serta salam senantiasa tercurah limpahnya kejunjungan kita Baginda Rasullah

SAW, karena beliau merupakan pencerah bagi semua umat.

Selama penyusunan makalah ini penulis tidak lepas dari uluran tangan dari beberapa

pihak antara lain :

1. Bapak Rahardian Bisma dan Dedy Rahman, sebagai dosen mata kuliah Sistem

Operasi yang selalu memotivasi dan memberi masukan-masukan yang sangat berarti

bagi makalah ini.

2. Para petugas perpustakaan yang memberikan fasilitas dalam pencarian referensi yang

dibutuhkan .

Penulis menyadari bahwa laporan ini masih jauh dari kesempurnaan, meskipun sudah

diupayakan semaksimal mungkin. Oleh karena itu, kritik dan saran yang bersifat membangun

senantiasa di harapkan demi kesempurnaan Makalah ini.

Surabaya, 03 Oktober 2015

Tim Penyusun

DAFTAR ISI

Kata Pengantar...................................................................................................................i

Daftar Isi.............................................................................................................................ii

BAB I PENDAHULUAN

1.1 Latar Belakang.......................................................................................................1

1.2 Rumusan Masalah...................................................................................................1

1.3 Tujuan.....................................................................................................................2

BAB II PEMBAHASAN

2.1 Pengertian Ilmu........................................................................................................3

2.2 Pengertian Pendidikan.............................................................................................3

2.3 Kaidah-kaidah Pendidikan.......................................................................................4

2.4 Pendidikan Sebagai Ilmu.........................................................................................5

2.5 Paradigma Pendidikan.............................................................................................6

2.6 Pendekatan Ilmu Pendidikan.................................................................................11

2.7 Metodologi Pendidikan.........................................................................................14

BAB III PENUTUP

3.1 Kesimpulan...........................................................................................................16

Daftar Pustaka..................................................................................................................17

IMPLEMENTASI PROSES

1. KONSEP PROSESSebuah pertanyaan yang timbul dalam membahas sistem operasi yaitu alat

atau perantara apa yang digunakan untuk memanggil. Pada awalnya semua kegiatan

berasal dari CPU. Sebuah sistem batch mengeksekusi pekerjaan, sedangkan a time-

shared system adalah memiliki program pengguna, atau tugas. Bahkan pada sistem

single-user, pengguna dapat menjalankan beberapa program pada satu waktu yaitu

pengolah kata, web browser, dan e-mail. Bahkan jika pengguna dapat mengeksekusi

program dalam satu waktu, seperti pada perangkat embedded yang tidak mendukung

multitasking, sistem operasi dapat mendukung kegiatan alam program internal. Seperti

manajemen memori. Semua kegiatan tersebut dalapat disebut dengan proses.

Syarat kerja dan proses digunakan hampir bergantian dalam hal ini. Banyak

sistem operasi teori dan terminologi dikembangkan selama aktivitas utama. Sistem

operasi adalah pengolahan pekerjaan. Itu untuk menghindari penggunaan istilah

umum diterima bahwa termasuk pekerjaan kata (seperti pekerjaan

penjadwalan) hanya karena proses telah digantikan kerja.

1.1 Proses

Proses adalah program dalam eksekusi. Suatu proses adalah lebihh dari kode

Program dimana kadang kala disebut dengan tulisan. Suatu proses umunya juga

termasuk proses stack, yang berisikan data temporer (seperti parameter metoda,

address yang kembali, dan variabel lokal) dan sebuah sebuah data section yang

berisikan variabel global.1

Sistem operasi mengeksekusi berbagai jenis program. Pada sistem batch

program tersebut biasanya disebut dengan job, sedangkan pada sistem time sharing,

program disebut dengan program user atau task. Beberapa buku teks menggunakan

istilah job atau proses. Proses adalah program yang sedang dieksekusi. Eksekusi

proses dilakukan secara berurutan. Dalam suatu proses terdapat program counter,

stack dan daerah data. Struktur proses dalam memori ditunjukkan pada Gambar.

Suatu program adalah entitas pasif, seperti file yang berisi daftar instruksi yang

tersimpan pada disk (sering disebut file executable). Sebaliknya, proses adalah suatu

entitas aktif, dengan program counter menentukan instruksi berikutnya untuk

mengeksekusi dan set

dari sumber terkait. Sebuah program menjadi suatu proses ketika file eksekusi1

dimuat ke memori. Dua teknik umum untuk file executable memuat yang

mengklik dua kali ikon yang mewakili file eksekusi dan memasukkan nama file

executable pada baris perintah (seperti dalam prog.exe atau a.out). Meskipun dua

proses dapat dikaitkan dengan program yang sama, mereka tetap dianggap dua

urutan eksekusi yang terpisah. Contohnya, beberapa pengguna dapat menjalankan

salinan yang berbeda dari program mail, atau sama pengguna dapat memanggil

banyak salinan dari program web browser. Masing-masing adalah proses yang

terpisah; dan meskipun bagian teks adalah sama, data, heap, dan bagian tumpukan

bervariasi. Hal ini juga umum untuk memiliki proses yang memunculkan banyak

proses seperti berjalan. Bahwa proses itu sendiri dapat menjadi lingkungan

eksekusi untuk lainnya kode. Lingkungan pemrograman Java memberikan contoh

yang baik. Di sebagian besar situasi, program Java dieksekusi dalam Java Virtual

Mesin (JVM). JVM mengeksekusi sebagai proses yang menafsirkan Java dimuat

kode dan mengambil tindakan (melalui instruksi mesin asli) atas nama kode

tersebut. Misalnya, untuk menjalankan program Java dikompilasi Program.class,

kami akan masuk Program java Perintah java menjalankan JVM sebagai proses

biasa, yang pada gilirannya mengeksekusi Program program Java dalam mesin

virtual.

1.2 Status Proses

Meskipun tiap-tiap proses terdiri dari suatu kesatuan yang terpisah namun adakalanya

proses-proses tersebut butuh untuk saling berinteraksi. Satu proses bisa dibangkitkan

dari output proses lainnya sebagai input. Pada saat proses dieksekusi, akan terjadi

perubahan status. Status proses didefiniskan sebagai bagian dari aktivitas proses yang

sedang berlangsung saat itu. Gambar menunjukkan diagram status proses. Status proses

terdiri dari :

a. New: proses sedang dibuat.

b. Running: proses sedang dieksekusi.

c. Waiting: proses sedang menunggu beberapa event yang akan terjadi (seperti

menunggu untuk menyelesaikan I/O atau menerima sinyal).

d. Ready: proses menunggu jatah waktu dari CPU untuk diproses.

e. Terminated: proses telah selesai dieksekusi.

1.3 PCB

Setiap proses direpresentasikan dalam sistem operasi dengan blok kontrol proses

(PCB) -juga disebut blok kontrol tugas. Sebuah PCB ditunjukkan pada Gambar

banyak potongan informasi yang terkait dengan proses tertentu, termasuk ini:

State Proses. State mungkin baru, siap, berjalan, menunggu, dihentikan, dan

seterusnya.

Program counter. Counter menunjukkan alamat dari instruksi berikutnya

untuk dieksekusi untuk proses ini.

Register CPU. Register bervariasi dalam jumlah dan jenis, tergantung pada

arsitektur komputer. Mereka termasuk akumulator, register indeks,

tumpukan pointer, dan register tujuan umum, ditambah kondisi-kode

Informasi. Seiring dengan program counter, informasi negara ini harus

menjadi disimpan ketika interupsi terjadi, untuk memungkinkan proses untuk

dilanjutkan

benar sesudahnya (Gambar 3.4).

CPU-penjadwalan informasi. Informasi ini mencakup prioritas proses,

pointer ke antrian penjadwalan, dan setiap parameter penjadwalan lainnya.

(Bab 6 menjelaskan proses penjadwalan.)

informasi Memory-manajemen. Informasi ini mungkin termasuk seperti

item sebagai nilai dasar dan batas register dan tabel halaman, atau

tabel segmen, tergantung pada sistem memori yang digunakan oleh operasi

sistem (Bab 8).

Informasi akuntansi. Informasi ini meliputi jumlah CPU dan real time yang

digunakan, batas waktu, nomor rekening, nomor pekerjaan atau proses, dan

sebagainya.

I / O informasi status. Informasi ini mencakup daftar perangkat I / O

dialokasikan untuk proses, daftar file yang terbuka, dan sebagainya.

Secara singkat, PCB hanya berfungsi sebagai repositori untuk informasi yang

mungkin bervariasi dari proses untuk memproses.

2. PENJADWALAN PROSESTujuan dari multiprogramming adalah untuk memiliki beberapa proses yang berjalan secara bersamaan untuk memaksimalkan penggunaan CPU. Tujuan dari pembagian waktu adalah untuk menggantiCPU antara proses begitu sering bahwa pengguna dapat berinteraksi dengan setiap program Tujuan dari multiprogramming adalah untuk memiliki beberapa proses yang berjalan sama sekalikali, untuk memaksimalkan penggunaan CPU. Tujuan dari pembagian waktu adalah untuk menggantiCPU antara proses begitu sering bahwa pengguna dapat berinteraksi dengan setiap programketika sedang berjalan. Untuk memenuhi tujuan tersebut, yang ditunjuk oleh proses schedulerproses yang tersedia (mungkin dari serangkaian beberapa proses yang tersedia) untukpelaksanaan program pada CPU. Untuk sistem prosesor tunggal, ada tidak akan pernahlebih dari satu proses yang berjalan. Jika ada proses yang lebih, sisanya akan

harus menunggu sampai CPU bebas dan dapat dijadwalkan kembali.2.1 Scheduling Queues

Sebagai proses memasuki sistem, mereka dimasukkan ke dalam antrian pekerjaan, yang terdiridari semua proses dalam sistem. Proses yang berada di memori utamadan siap dan menunggu untuk mengeksekusi disimpan pada daftar yang disebut antrian siap.Antrian ini umumnya disimpan sebagai linked list. Sebuah sundulan siap antrian mengandungpointer ke tingkat pertama dan terakhir PCB dalam daftar. Setiap PCB memiliki pointer fieldyang menunjuk ke PCB berikutnya dalam antrian siap.Sistem ini juga mencakup antrian lainnya. Ketika suatu proses dialokasikanCPU, dijalankan untuk sementara waktu dan akhirnya berhenti, terganggu, atau menungguterjadinya peristiwa tertentu, seperti selesainya suatu permintaan I / O.Misalkan proses membuat permintaan I / O ke perangkat bersama, seperti disk.Karena ada banyak proses dalam sistem, disk mungkin sibuk denganI / O permintaan beberapa proses lain. Oleh karena itu proses tersebut mungkin harus menunggudisk. Daftar proses menunggu tertentu I / O perangkat yang disebutperangkat antrian. Setiap perangkat memiliki perangkat antrian sendiri (Gambar 3.5).Sebuah representasi umum dari penjadwalan proses adalah diagram antrian,seperti yang pada Gambar 3.6. Setiap kotak persegi panjang mewakili antrian. Dua jenisantrian yang hadir: antrian siap dan satu set antrian perangkat. Lingkaranmewakili sumber yang melayani antrian, dan panah menunjukkan alirandari proses dalam sistem.Sebuah proses baru awalnya dimasukkan ke dalam antrian siap. Ini menunggu di sana sampai itukarena adanya eksekusi, atau dikirim. Setelah proses ini dialokasikan CPUdan mengeksekusi, salah satu dari beberapa peristiwa bisa terjadi:• Proses bisa mengeluarkan permintaan I / O dan kemudian ditempatkan dalam sebuah I / O antrian.• Proses dapat menciptakan proses anak baru dan menunggu anakterminasi.• Proses dapat dihapus secara paksa dari CPU, sebagai hasil dariinterupsi, dan diletakkan kembali antrian siap.Dalam dua kasus pertama, proses akhirnya beralih dari negara menungguke status siaga dan kemudian dimasukkan kembali dalam antrian siap. Sebuah proses terussiklus ini sampai berakhir, pada waktu itu dihapus dari semua antrian danmemiliki PCB nya dan sumber daya deallocated.

2.2 Penjadwal Sebuah proses migrasi antara berbagai antrian penjadwalan seluruh nyaseumur hidup. Sistem operasi harus memilih, untuk tujuan penjadwalan, prosesdari antrian ini dalam beberapa mode. Proses seleksi dilakukan olehscheduler yang tepat.Seringkali, dalam sistem batch, proses lebih banyak disampaikan daripada yang dapat dieksekusisegera. Proses ini spooled ke perangkat penyimpanan massal (biasanyadisk), di mana mereka disimpan untuk eksekusi nanti. Scheduler jangka panjang, atau pekerjaanscheduler, memilih proses dari kolam ini dan beban mereka ke dalam memori untukeksekusi. Scheduler jangka pendek, atau CPU scheduler, memilih dari antaraproses yang siap untuk mengeksekusi dan mengalokasikan CPU untuk salah satu dari mereka.Perbedaan utama antara kedua penjadwal terletak pada frekuensi inieksekusi. Scheduler jangka pendek harus memilih proses baru untuk CPUsering. Sebuah proses dapat mengeksekusi untuk hanya beberapa milidetik sebelum menungguuntuk permintaan I / O. Seringkali, scheduler jangka pendek menjalankan setidaknya sekali setiap100 milidetik. Karena waktu pendek antara eksekusi, jangka pendekscheduler harus cepat. Jika dibutuhkan 10 milidetik untuk memutuskan untuk melaksanakan prosesuntuk 100 milidetik, maka 10 / (100 + 10) = 9 persen dari CPU sedang digunakan(terbuang) hanya untuk penjadwalan pekerjaan.Scheduler jangka panjang mengeksekusi lebih jarang; menit dapat memisahkan penciptaan satu proses baru dan berikutnya. Scheduler jangka panjangmengontrol derajat multiprogramming (jumlah proses dalam memori). Jika tingkat multiprogramming stabil, maka tingkat rata-ratapenciptaan proses harus sama dengan tingkat kepergian rata-rata prosesmeninggalkan sistem. Dengan demikian, scheduler jangka panjang mungkin perlu dipanggilhanya ketika proses meninggalkan sistem. Karena semakin lama interval antaraeksekusi, scheduler jangka panjang bisa mengambil lebih banyak waktu untuk memutuskanproses yang harus dipilih untuk eksekusi.Hal ini penting bahwa scheduler jangka panjang membuat pilihan hati-hati. Diumum, sebagian besar proses dapat digambarkan sebagai salah I / O terikat atau CPU terikat.Sebuah I / O proses terikat adalah salah satu yang menghabiskan lebih dari waktu melakukan I / O daripadaitu dihabiskan melakukan perhitungan. Sebuah proses CPU-terikat, sebaliknya, menghasilkan

I / O permintaan jarang, menggunakan lebih banyak waktu melakukan perhitungan nya. inipenting bahwa scheduler jangka panjang pilih campuran proses yang baik dari I / O-bounddan proses CPU-terikat. Jika semua proses adalah I / O bound, ready queue akanhampir selalu kosong, dan scheduler jangka pendek akan memiliki sedikit untuk melakukan.Jika semua proses yang CPU terikat, I antrian / O tunggu akan hampir selalukosong, perangkat akan terpakai, dan lagi sistem akan tidak seimbang. TheSistem dengan kinerja terbaik sehingga akan memiliki kombinasi CPU-bounddan I / O proses terikat.Pada beberapa sistem, scheduler jangka panjang mungkin tidak ada atau minimal.Sebagai contoh, sistem time-sharing seperti UNIX dan Microsoft Windowssistem sering tidak scheduler jangka panjang tetapi hanya menempatkan setiap proses baru dalammemori untuk scheduler jangka pendek. Stabilitas sistem ini tergantungbaik pada keterbatasan fisik (seperti jumlah terminal yang tersedia)atau pada sifat menyesuaikan diri dari pengguna manusia. Jika kinerja menurun ketingkat yang tidak dapat diterima pada sistem multiuser, beberapa pengguna hanya akan berhenti.Beberapa sistem operasi, seperti sistem time-sharing, dapat memperkenalkan sebuahtambahan, tingkat menengah penjadwalan. Ini scheduler jangka menengah adalahdigambarkan pada Gambar 3.7. Ide kunci di balik scheduler jangka menengah adalahyang kadang-kadang dapat menguntungkan untuk menghapus proses dari memori(dan dari pertikaian aktif untuk CPU) dan dengan demikian mengurangi tingkatmultiprogramming. Kemudian, proses dapat diperkenalkan kembali ke dalam memori, dan yangeksekusi dapat dilanjutkan di mana ia tinggalkan. Skema ini disebut swapping.Proses swap out, dan kemudian bertukar di, dengan jangka menengahscheduler. Swapping mungkin diperlukan untuk meningkatkan campuran proses atau karenaperubahan dalam persyaratan memori telah overcommitted memori yang tersedia,membutuhkan memori yang akan dibebaskan. Swapping dibahas dalam Bab 8.

2.3 Konteks SwitchSeperti disebutkan dalam Bagian 1.2.1, menyela menyebabkan sistem operasi untuk mengubahCPU dari tugas saat ini dan untuk menjalankan rutin kernel. Operasi tersebut terjadisering pada sistem tujuan umum. Ketika interupsi terjadi, sistemperlu menyimpan konteks saat ini proses berjalan pada CPU sehinggadapat mengembalikan konteks bahwa ketika pengolahannya dilakukan, pada dasarnya menangguhkan

proses dan kemudian melanjutkan itu. Konteks direpresentasikan dalam PCB dariproses. Ini termasuk nilai dari CPU register, status proses (lihat Gambar3.2), dan memori-manajemen informasi. Genetik, kita melakukan suatu negaramenyimpan dari keadaan saat CPU, baik itu di kernel atau mode pengguna, dan kemudiannegara mengembalikan kembali beroperasi.Beralih CPU kepada proses lain memerlukan melakukan sebuah negara Hemat dariproses saat ini dan negara restore dari proses yang berbeda. Tugas ini dikenalsebagai saklar konteks. Ketika context switch terjadi, kernel menyimpan konteksdari proses yang lama di PCB dan beban konteks disimpan dari proses barudijadwalkan untuk berjalan. Konteks-switch waktu murni overhead, karena sistemtidak melakukan kerja yang berguna saat beralih. Beralih kecepatan bervariasi dari mesin kemesin, tergantung pada kecepatan memori, jumlah register yang harusdisalin, dan keberadaan instruksi khusus (seperti instruksi tunggaluntuk memuat atau menyimpan semua register). Sebuah kecepatan khas adalah beberapa milidetik.Konteks-switch kali sangat tergantung pada dukungan hardware. UntukMisalnya, beberapa prosesor (seperti Sun UltraSPARC) menyediakan beberapa setregister. Sebuah switch konteks di sini hanya memerlukan perubahan pointer kesaat set register. Tentu saja, jika ada proses lebih aktif dari adamendaftar set, resor sistem untuk menyalin data mendaftar ke dan dari memori,seperti sebelumnya. Juga, semakin kompleks sistem operasi, semakin besar jumlahpekerjaan yang harus dilakukan selama context switch. Seperti yang kita akan melihat dalam Bab8, teknik manajemen memori canggih mungkin mengharuskan data tambahan menjadiberalih dengan setiap konteks. Misalnya, ruang alamat dari saat iniProses harus dipertahankan sebagai ruang tugas selanjutnya adalah siap untuk digunakan.Bagaimana ruang alamat yang diawetkan, dan apa jumlah pekerjaan yang dibutuhkanuntuk melestarikannya, tergantung pada metode manajemen memori dari operasisistem.

3. OPERASI PADA PROSESProses dalam sebagian besar sistem dapat mengeksekusi secara bersamaan, dan mereka mungkindibuat dan dihapus secara dinamis. Dengan demikian, sistem ini harus menyediakanmekanisme untuk proses penciptaan dan terminasi. Pada bagian ini, kami mengeksplorasimekanisme yang terlibat dalam menciptakan proses dan menggambarkan proses penciptaan

pada UNIX dan Windows sistem.3.1 Proses Penciptaan

Selama eksekusi, suatu proses dapat membuat beberapa proses baru. Sebagaidisebutkan sebelumnya, proses menciptakan disebut proses induk, dan baruproses yang disebut anak-anak proses tersebut. Masing-masing proses barupada gilirannya menciptakan proses lainnya, membentuk pohon proses.Sebagian besar sistem operasi (termasuk UNIX, Linux, dan Windows) mengidentifikasiproses menurut identifikasi unik proses (atau pid), yang biasanyaangka integer. Pid memberikan nilai unik untuk setiap proses dalamsistem, dan dapat digunakan sebagai indeks untuk mengakses berbagai atribut dari sebuah prosesdalam kernel.Gambar 3.8 menggambarkan pohon proses khas untuk sistem operasi Linux,menampilkan nama setiap proses dan pid-nya. (Kami menggunakan proses jangka agaklonggar, seperti Linux lebih menyukai tugas jangka gantinya.) Proses init (yang selalumemiliki pid dari 1) berfungsi sebagai proses induk root untuk semua proses pengguna. Setelahsistem telah boot, proses init juga dapat membuat berbagai proses pengguna, sepertisebagai web atau server cetak, server ssh, dan sejenisnya. Pada Gambar 3.8, kita melihat duaanak init-kthreadd dan sshd. Proses kthreadd bertanggung jawabuntuk menciptakan proses tambahan yang melakukan tugas atas nama kernel(dalam situasi ini, khelper dan pdflush). Proses sshd bertanggung jawab untukmengelola klien yang terhubung ke sistem dengan menggunakan ssh (yang merupakan kependekanshell aman). Proses login bertanggung jawab untuk mengelola klien yang secara langsungmasuk ke sistem. Dalam contoh ini, klien telah login dan menggunakanshell bash, yang telah ditetapkan pid 8416. Menggunakan bash command-lineantarmuka, pengguna ini telah menciptakan ps proses serta editor emacs.Pada UNIX dan Linux sistem, kita dapat memperoleh daftar proses dengan menggunakanperintah ps. Sebagai contoh, perintahps elakan daftar informasi lengkap untuk semua proses yang sedang aktif dalam sistem.Sangat mudah untuk membangun pohon proses yang sama dengan yang ditunjukkan dalam Gambar 3.8 olehrekursif melacak orangtua memproses semua jalan ke proses init.

Secara umum, ketika proses menciptakan proses anak, proses anak akanmembutuhkan sumber daya tertentu (waktu CPU, memori, file, I / O perangkat) untuk mencapaitugasnya. Sebuah proses anak mungkin dapat memperoleh sumber daya langsung darisistem operasi, atau mungkin dibatasi untuk subset dari sumberdari proses induk. Orangtua mungkin harus partisi sumber daya di antaraanak-anaknya, atau mungkin dapat berbagi beberapa sumber (seperti memori ataufile) antara beberapa dari anak-anaknya. Membatasi proses anak untuk subsetsumber daya orangtua mencegah proses apapun dari overloading sistem denganmenciptakan terlalu banyak proses anak.Selain menyediakan berbagai sumber daya fisik dan logis, orang tuaProses dapat menyampaikan data yang inisialisasi (input) untuk proses anak. UntukMisalnya, pertimbangkan proses yang berfungsi untuk menampilkan isi dari file-say, Image.jpg-pada layar terminal. Ketika proses ini dibuat,itu akan mendapatkan, sebagai masukan dari proses induknya, nama file image.jpg.Menggunakan bahwa nama file, maka akan membuka file dan menulis isi keluar. Mungkinjuga mendapatkan nama dari perangkat output. Atau, beberapa sistem operasilulus sumber daya untuk proses anak. Pada sistem tersebut, proses baru bisa mendapatkandua file yang terbuka, image.jpg dan perangkat terminal, dan hanya dapat mentransferdatum antara keduanya.Ketika proses membuat proses baru, dua kemungkinan eksekusi ada:1. Orangtua terus melaksanakan bersamaan dengan anak-anaknya.2. Orangtua menunggu sampai beberapa atau semua anak-anaknya telah diakhiri.Ada juga dua kemungkinan alamat-ruang untuk proses baru:

1. Proses anak merupakan duplikat dari proses induk (memiliki samaProgram dan data sebagai orangtua).2. Proses anak memiliki program baru dimuat ke dalamnya.Untuk menggambarkan perbedaan-perbedaan ini, mari kita pertama mempertimbangkan sistem operasi UNIX.Dalam UNIX, seperti yang kita lihat, setiap proses diidentifikasi oleh pengidentifikasi proses nya,yang merupakan bilangan bulat unik. Sebuah proses baru dibuat oleh fork () systemmenelepon. Proses baru terdiri dari salinan ruang alamat asliproses. Mekanisme ini memungkinkan proses induk untuk berkomunikasi dengan mudah denganProses anaknya. Kedua proses (induk dan anak) melanjutkan eksekusidi instruksi setelah fork (), dengan satu perbedaan: kode imbalangarpu () adalah nol untuk proses baru (anak), sedangkan (nol) prosesidentifier dari anak dikembalikan ke orangtua.Setelah fork () system call, salah satu dari dua proses biasanya menggunakanexec () system call untuk menggantikan ruang memori proses dengan program baru.Exec () system call beban file biner ke memori (menghancurkangambar memori dari program yang berisi exec () system call) dan mulaipelaksanaannya. Dengan cara ini, dua proses dapat berkomunikasi dankemudian berpisah. Orang tua kemudian dapat membuat anak-anak lebih; atau, jikatidak ada lagi yang harus dilakukan saat anak berjalan, dapat mengeluarkan menunggu () system call kebergerak sendiri dari antrian siap sampai penghentian anak. Karena

panggilan untuk exec () overlay ruang alamat proses ini dengan program baru,panggilan untuk exec () tidak mengembalikan kontrol kecuali terjadi kesalahan.Program C ditunjukkan pada Gambar 3.9 menggambarkan sistem panggilan UNIXdijelaskan sebelumnya. Kami sekarang memiliki dua proses yang berbeda menjalankan salinandari program yang sama. Satu-satunya perbedaan adalah bahwa nilai pid (prosesidentifier) untuk proses anak adalah nol, sedangkan untuk orang tua adalah integernilai lebih besar dari nol (pada kenyataannya, itu adalah pid sebenarnya dari proses anak). Theproses anak mewarisi hak dan atribut penjadwalan dari orangtua,serta sumber daya tertentu, seperti file terbuka. Proses anak kemudian melapisinyaruang alamat dengan UNIX perintah / bin / ls (digunakan untuk mendapatkan sebuah direktoridaftar) menggunakan execve () system call (execlp () adalah versi dari exec ()system call). The menunggu orang tua untuk proses anak untuk menyelesaikan dengan menunggu ()

system call. Ketika proses anak selesai (dengan baik secara implisit maupun eksplisitmemohon exit ()), proses induk dilanjutkan dari panggilan menunggu (), di mana iamelengkapi menggunakan exit () system call. Ini juga diilustrasikan pada Gambar 3.10.Tentu saja, tidak ada yang mencegah anak dari tidak memohon exec ()dan bukannya terus mengeksekusi sebagai salinan proses induk. Didalamskenario, orang tua dan anak adalah proses konkuren menjalankan kode yang sama

petunjuk. Karena anak adalah salinan dari orang tua, setiap proses memiliki sendirisalinan data.Sebagai contoh alternatif, kita selanjutnya mempertimbangkan proses penciptaan pada Windows.Proses yang dibuat dalam Windows API menggunakan CreateProcess () fungsi, yang mirip dengan fork () karena orangtua menciptakan proses anak baru.Namun, sedangkan fork () memiliki proses anak mewarisi ruang alamatdari induknya, CreateProcess () memerlukan memuat program tertentu ke dalamruang alamat dari proses anak di proses penciptaan. Selanjutnya, sedangkanfork () dilewatkan tanpa parameter, CreateProcess () mengharapkan tidak kurang dari sepuluhparameter.Program C ditunjukkan pada Gambar 3.11 menggambarkan CreateProcess yang ()fungsi, yang menciptakan proses anak yang memuat mspaint.exe aplikasi.Kami memilih untuk banyak nilai-nilai default sepuluh parameter yang dilewatkan keCreateProcess (). Pembaca tertarik dalam mengejar rincian prosespenciptaan dan manajemen di Windows API didorong untuk berkonsultasicatatan bibliografi pada akhir bab ini.Dua parameter yang dikirimkan ke CreateProcess () fungsi adalah contohdari STARTUPINFO dan PROSES struktur INFORMASI. STARTUPINFOmenentukan banyak properti dari proses baru, seperti ukuran jendela danpenampilan dan menangani standar input dan output file. Struktur INFORMASI PROSES mengandung pegangan dan pengidentifikasi kebaru dibuat proses dan benang nya. Kami memohon ZeroMemory () fungsi untuk mengalokasikan memori untuk masing-masing struktur sebelum melanjutkan dengan

CreateProcess ().Dua parameter pertama dikirimkan ke CreateProcess () adalah aplikasiNama dan baris perintah parameter. Jika nama aplikasi adalah NULL (karenadalam kasus ini), parameter baris perintah menentukan aplikasi untuk memuat. Dihal ini, kita memuat aplikasi mspaint.exe Microsoft Windows.Di luar dua parameter awal ini, kita menggunakan parameter default untukProses dan benang mewarisi menangani serta menetapkan bahwa tidak akan adabendera penciptaan. Kami juga menggunakan orang tua yang ada blok lingkungan dan mulaidirektori. Terakhir, kami menyediakan dua pointer ke STARTUPINFO dan PROSES -Struktur INFORMASI dibuat pada awal program. Pada Gambar3.9, proses induk menunggu anak untuk menyelesaikan dengan menerapkan menunggu ()system call. Setara ini di Windows WaitForSingleObject (),yang melewati pegangan anak proses-pi.hProcess-dan menungguproses ini untuk menyelesaikan. Setelah keluar proses anak, kontrol kembali dariWaitForSingleObject () fungsi dalam proses induk.

3.2 Penghentian prosesSebuah proses berakhir ketika selesai mengeksekusi pernyataan akhirnya dan memintasistem operasi untuk menghapusnya dengan menggunakan exit () system call. Pada titik itu,Proses dapat kembali nilai status (biasanya integer) untuk proses induknya(melalui tunggu () system call). Semua sumber daya dari proses-termasukmemori fisik dan virtual, membuka file, dan I / O buffer-dialokasikanoleh sistem operasi.Terminasi dapat terjadi pada keadaan lain juga. Sebuah proses dapat menyebabkanpenghentian proses lain melalui sistem panggilan yang sesuai (misalnya,TerminateProcess () pada Windows). Biasanya, seperti sistem panggilan dapat dipanggil3.3 Operasi pada Proses 121hanya oleh induk proses yang akan dihentikan. Jika tidak, pengguna bisasewenang-wenang membunuh pekerjaan masing-masing. Perhatikan bahwa orangtua perlu mengetahui identitas

anak-anak yang jika ingin menghentikan mereka. Jadi, ketika satu proses menciptakan baruproses, identitas dari proses yang baru dibuat akan diteruskan ke orangtua.Orang tua dapat mengakhiri eksekusi salah satu anak untuk berbagaialasan, seperti ini:• Anak telah melampaui penggunaannya dari beberapa sumber yang telahdialokasikan. (Untuk menentukan apakah ini telah terjadi, orangtua harus memilikimekanisme untuk memeriksa keadaan anak-anaknya.)• Tugas ditugaskan kepada anak tidak lagi diperlukan.• orang tua ini keluar, dan sistem operasi tidak memungkinkan anak untukmelanjutkan jika induknya berakhir.Beberapa sistem tidak memungkinkan anak untuk eksis jika induknya telah dihentikan. Disistem seperti ini, jika suatu proses berakhir (baik normal atau tidak normal), makasemua anak-anaknya juga harus dihentikan. Fenomena ini, disebut sebagaiCascading pemutusan, biasanya dimulai oleh sistem operasi.Untuk menggambarkan proses eksekusi dan terminasi, menganggap bahwa, di Linuxdan sistem UNIX, kita bisa menghentikan proses dengan menggunakan exit () sistemmemanggil, memberikan status keluar sebagai parameter:/ * Exit status 1 * /exit (1);Bahkan, di bawah terminasi normal, exit () dapat disebut baik secara langsung (sebagaiditunjukkan di atas) atau tidak langsung (oleh pernyataan kembali dalam main ()).Sebuah proses induk dapat menunggu untuk terminasi dari proses anak dengan menggunakanmenunggu () system call. Menunggu () system call dilewatkan parameter yangmemungkinkan orang tua untuk mendapatkan status keluar anak. System call ini jugamengembalikan identifier proses anak dihentikan sehingga orang tua dapat memberitahuyang anak-anaknya telah dihentikan:pid t pid;Status int;pid = menunggu (& status);Ketika proses berakhir, sumber daya yang deallocated oleh operasisistem. Namun, masuknya dalam tabel proses harus tetap ada sampaipanggilan orang tua menunggu (), karena tabel proses berisi status exit proses ini.Sebuah proses yang telah dihentikan, namun yang orangtuanya belum disebut menunggu (), adalah

dikenal sebagai proses zombie. Semua proses transisi ke negara ini ketika merekamenghentikan, tetapi umumnya mereka ada sebagai zombie hanya sebentar. Setelah orang tuapanggilan tunggu (), identifier proses proses zombie dan masuk dalamtabel proses dilepaskan.Sekarang perhatikan apa yang akan terjadi jika orang tua tidak memanggil menunggu () danbukannya dihentikan, sehingga meninggalkan proses anak sebagai anak yatim. Linux danUNIX mengatasi skenario ini dengan menetapkan proses init sebagai orangtua baru untuk122 Bab 3 Prosesproses yatim. (Ingat dari Gambar 3.8 bahwa proses init adalah akar dariproses hirarki di UNIX dan Linux sistem.) Proses init berkalamemanggil menunggu (), sehingga memungkinkan status keluar dari setiap proses yatim menjadidikumpulkan dan melepaskan anak yatim proses identifier dan proses-meja entri.

4. KOMUNIKASI ANTARPROSESProses mengeksekusi secara bersamaan dalam sistem operasi dapat berupaproses independen atau proses bekerja sama. Proses adalah independenjika tidak dapat mempengaruhi atau dipengaruhi oleh proses lainnya melaksanakan dalam sistem.Setiap proses yang tidak berbagi data dengan proses lain adalah independent. SEBUAHProses bekerja sama jika dapat mempengaruhi atau dipengaruhi oleh proses lainnyamengeksekusi dalam sistem. Jelas, setiap proses yang berbagi data dengan lainnyaproses adalah proses bekerja sama.Ada beberapa alasan untuk menyediakan lingkungan yang memungkinkan proseskerjasama:• Berbagi informasi. Sejak beberapa pengguna mungkin tertarik pada yang samasepotong informasi (misalnya, file bersama), kita harus memberikanlingkungan untuk memungkinkan akses bersamaan ke informasi tersebut.• Perhitungan speedup. Jika kita ingin tugas tertentu untuk menjalankan lebih cepat, kita harusmemecahnya menjadi sub-tugas, masing-masing yang akan mengeksekusi secara paralel denganlain. Perhatikan bahwa speedup tersebut dapat dicapai hanya jika komputermemiliki beberapa core pengolahan.• Modularity. Kita mungkin ingin membangun sistem dalam mode modular,membagi fungsi sistem ke dalam proses atau benang yang terpisah, seperti yang kitadibahas dalam Bab 2.• Kenyamanan. Bahkan pengguna individu dapat bekerja pada banyak tugas diwaktu yang sama. Misalnya, pengguna dapat mengedit, mendengarkan musik, dankompilasi secara paralel.

Proses bekerja sama memerlukan mekanisme komunikasi interprocess (IPC) yang akan memungkinkan mereka untuk bertukar data dan informasi. Ada duamodel dasar komunikasi interprocess: memori bersama dan pesan lewat. Dalam model shared-memori, sebuah wilayah memori yang dibagioleh proses bekerja sama didirikan. Proses kemudian dapat bertukar informasi dengan membaca dan menulis data ke daerah bersama. Dalam pesan-passingModel, komunikasi terjadi dengan cara pesan yang dipertukarkan antarayang bekerja sama proses. Kedua komunikasi model dikontraskan diGambar 3.12.Kedua model hanya disebutkan yang umum dalam sistem operasi,dan banyak sistem menerapkan keduanya. Pesan lewat berguna untuk bertukarjumlah yang lebih kecil dari data, karena tidak ada konflik perlu dihindari. Pesanpassing juga lebih mudah untuk menerapkan dalam sistem terdistribusi dari memori bersama.(Meskipun ada sistem yang menyediakan didistribusikan memori bersama, kita tidakmenganggap mereka dalam teks ini.) Memori bersama bisa lebih cepat dari pesan lewat,karena sistem pesan-lewat biasanya diimplementasikan dengan menggunakan sistem panggilan sehingga membutuhkan lebih memakan waktu tugas intervensi kernel. disistem bersama-memori, sistem panggilan yang diperlukan hanya untuk membangun shared-

daerah memori. Setelah memori bersama didirikan, semua akses diperlakukansebagai memori rutin mengakses, dan tidak ada bantuan dari kernel diperlukan.Penelitian terbaru pada sistem dengan beberapa core pengolahan menunjukkan bahwapesan lewat memberikan kinerja yang lebih baik dari shared memory pada sepertisistem. Memori bersama menderita masalah koherensi cache, yang timbulkarena data bersama bermigrasi antara beberapa cache. Karena jumlahcore processing pada sistem meningkat, adalah mungkin bahwa kita akan melihat pesanmelewati sebagai mekanisme yang lebih disukai untuk IPC.Dalam sisa bagian ini, kami mengeksplorasi bersama-memori dan pesan

lewat sistem secara lebih rinci.4.1 Shared-Memory Systems

Interprocess komunikasi menggunakan memori bersama memerlukan berkomunikasiproses untuk membangun daerah memori bersama. Biasanya, bersama-memoriwilayah berada di ruang alamat dari proses menciptakan memori bersama-segmen. Proses lain yang ingin berkomunikasi menggunakan ini bersama-memorisegmen harus melampirkan ke ruang alamat mereka. Ingat bahwa, biasanya, yangsistem operasi mencoba untuk mencegah satu proses mengakses proses lainmemori. Memori bersama mengharuskan dua atau lebih proses setuju untuk menghapuspembatasan ini. Mereka kemudian dapat bertukar informasi dengan membaca dan menulisData di daerah bersama. Bentuk data dan lokasi ditentukan olehproses ini dan tidak berada di bawah kendali sistem operasi. Prosesjuga bertanggung jawab untuk memastikan bahwa mereka tidak menulis ke lokasi yang samasecara bersamaan.Untuk menggambarkan konsep proses bekerja sama, mari kita pertimbangkanprodusen-konsumen masalah, yang merupakan paradigma umum untuk bekerja samaproses. Sebuah proses produser menghasilkan informasi yang dikonsumsi olehProses konsumen. Sebagai contoh, kompiler dapat menghasilkan kode assembly yangdikonsumsi oleh assembler. Assembler, pada gilirannya, dapat menghasilkan objekmodul yang dikonsumsi oleh loader. Masalah produsen-konsumen

.juga menyediakan metafora yang berguna untuk paradigma client-server. Kita umumnyaberpikir dari sebuah server sebagai produsen dan klien sebagai konsumen. Misalnya, webServer menghasilkan (yaitu, memberikan) file HTML dan citra, yang dikonsumsi(yaitu, membaca) oleh web browser klien meminta sumber daya.

Salah satu solusi untuk masalah produsen-konsumen menggunakan memori bersama. Untukmemungkinkan produsen dan konsumen proses untuk menjalankan secara bersamaan, kita harus memilikitersedia penyangga item yang dapat diisi oleh produser dan dikosongkan olehkonsumen. Buffer ini akan berada di wilayah memori yang dimiliki olehprodusen dan konsumen proses. Seorang produser dapat memproduksi satu item sementarakonsumen mengkonsumsi item lain. Produsen dan konsumen harusmenjadi disinkronkan, sehingga konsumen tidak mencoba untuk mengkonsumsi item yangbelum diproduksi.Dua jenis buffer dapat digunakan. Tempat penyangga terbatas tidak praktismembatasi pada ukuran buffer. Konsumen mungkin harus menunggu untuk item baru,namun produsen selalu dapat menghasilkan item baru. Buffer dibatasi mengasumsikanukuran penyangga tetap. Dalam hal ini, konsumen harus menunggu jika buffer kosong,dan produser harus menunggu jika buffer penuh.Mari kita lihat lebih dekat bagaimana buffer dibatasi menggambarkan interprocesskomunikasi menggunakan memori bersama. Variabel-variabel berikut berada didaerah memori bersama oleh produsen dan konsumen proses:#define BUFFER UKURAN 10typedef struct {. . .} barang;Item penyangga [BUFFER SIZE];int di = 0;int out = 0;Buffer bersama diimplementasikan sebagai array melingkar dengan dua pointer logis:masuk dan keluar. Variabel dalam poin ke posisi bebas berikutnya dalam buffer; di luarmenunjuk ke posisi penuh pertama dalam buffer. Buffer kosong ketika di ==keluar; buffer sudah penuh saat ((dalam + 1)% BUFFER SIZE) == keluar.Kode untuk proses produsen ditunjukkan pada Gambar 3.13, dan kodeuntuk proses konsumen ditunjukkan pada Gambar 3.14. Proses produser memiliki126 Bab 3 Prosesitem berikutnya dikonsumsi;sementara (benar) {sementara (di == keluar); /* tidak melakukan apa-apa */selanjutnya dikonsumsi = penyangga [keluar];

out = (keluar + 1)% UKURAN BUFFER;/ * Mengkonsumsi item di depan dikonsumsi * /}Gambar 3.14 Proses konsumen menggunakan memori bersama.variabel lokal berikutnya diproduksi di mana item baru yang akan diproduksi disimpan.Proses konsumen memiliki variabel lokal berikutnya dikonsumsi di mana itemuntuk dikonsumsi disimpan.Skema ini memungkinkan paling BUFFER UKURAN - 1 item dalam buffer diwaktu yang sama. Kami meninggalkan sebagai latihan bagi Anda untuk memberikan solusi di manaBUFFER UKURAN item dapat di buffer pada saat yang sama. Dalam Bagian 3.5.1, kamimenggambarkan API POSIX untuk memori bersama.Salah satu isu ilustrasi ini tidak mengatasi masalah situasi di manakedua proses produsen dan upaya proses konsumen untuk mengaksesbersama penyangga bersamaan. Dalam Bab 5, kita membahas bagaimana sinkronisasiantara proses bekerja sama dapat diimplementasikan secara efektif dalam lingkungan sharedmemory.

4.2 SJHVCBDSFK4.3 FCHBJJFDF4.4 FJKDKVHN

5. KOMUNIKASI ANTARPROSES6. THREAD7. KONDISI-KONDISI PERKECUALIAN