PROSES DAN ANCAMAN
SISTEM OPERASI MULTIMEDIA
Disusun oleh :
RICKY EKA KURNIA SUSPRASETYA
Nim: 1614311020
PROGAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK
UNIVERSITAS BHAYANGKARA
2019
PENDAHULUAN
Kami sekarang akan memulai studi rinci tentang bagaimana sistem operasi dirancang dan dibangun. Konsep paling sentral dalam sistem operasi apa pun adalah proses: abstraksi dari program yang sedang berjalan. Segala sesuatu yang lain bergantung pada konsep ini, dan penting bahwa perancang sistem operasi (dan siswa) memiliki pemahaman menyeluruh tentang apa proses sedini mungkin. Proses adalah salah satu abstraksi tertua dan paling penting yang disediakan sistem operasi. Mereka mendukung kemampuan untuk melakukan operasi (pseudo) bersamaan bahkan ketika hanya ada satu CPU yang tersedia. Mereka mengubah satu CPU menjadi beberapa CPU virtual. Tanpa abstraksi proses, komputasi modem tidak akan ada.
PROSES
Semua komputer modern sering melakukan beberapa hal pada saat bersamaan. Orang yang terbiasa bekerja dengan komputer pribadi mungkin tidak sepenuhnya menyadari fakta ini, jadi beberapa contoh mungkin memperjelas hal ini. Pertama pertimbangkan server Web. Permintaan datang dari seluruh meminta halaman Web. Ketika permintaan masuk, server memeriksa untuk melihat apakah halaman yang dibutuhkan ada dalam cache. Jika ya, itu dikirim kembali; jika tidak, permintaan disk mulai mengambilnya. Namun, dari sudut pandang CPU, permintaan disk tetap selamanya. Sambil menunggu permintaan disk selesai, lebih banyak lagi dilihat dalam interval waktu yang cukup lama, semua proses telah membuat kemajuan, tetapi pada saat tertentu hanya satu proses yang benar-benar berjalan. Seperti Gambar dibawah ini.
Dalam bab ini, kita akan mengasumsikan hanya ada satu CPU. Namun, semakin banyak anggapan itu tidak benar, karena chip baru seringkali multicore, dengan dua, empat, atau lebih CPU. Kita akan melihat chip multicore dan multiprosesor, tetapi untuk saat ini, lebih mudah hanya memikirkan satu CPU pada satu waktu. Jadi ketika kita mengatakan bahwa CPU hanya dapat menjalankan satu proses pada satu waktu, jika ada dua core (atau CPU), masing-masing dari mereka hanya dapat menjalankan satu proses pada satu waktu.
Dengan CPU yang beralih dengan cepat bolak-balik di antara proses-proses tersebut, laju di mana suatu proses melakukan komputasinya tidak akan seragam dan bahkan mungkin tidak dapat direproduksi jika proses yang sama dijalankan kembali. Dengan demikian, proses tidak boleh diprogram dengan asumsi bawaan tentang waktu. Pertimbangkan, misalnya, proses I / O yang memulai pita streamer untuk mengembalikan file yang dicadangkan, mengeksekusi loop kosong 10.000 kali untuk mempercepatnya, dan kemudian mengeluarkan perintah untuk membaca catatan pertama. Jika CPU memutuskan untuk beralih ke proses lain selama idle loop, proses rekaman mungkin tidak berjalan lagi sampai setelah catatan pertama sudah melewati kepala baca. Ketika suatu proses memiliki persyaratan real-time kritis seperti ini, yaitu, peristiwa tertentu harus terjadi dalam jumlah milidetik tertentu, tindakan khusus harus diambil untuk memastikan bahwa itu memang terjadi. Namun, biasanya, sebagian besar proses tidak terpengaruh oleh multiprogramming yang mendasari CPU atau kecepatan relatif dari proses yang berbeda.
STATUS PROSES
Meskipun setiap proses adalah entitas independen, dengan program counter sendiri dan keadaan internal, proses sering perlu berinteraksi dengan proses lain. Satu proses dapat menghasilkan beberapa output yang digunakan proses lain sebagai input.Ketika suatu proses blok, ia melakukannya karena secara logis ia tidak dapat melanjutkan, biasanya karena menunggu input yang belum tersedia. Dimungkinkan juga untuk proses yang siap secara konsep dan dapat dijalankan untuk dihentikan karena sistem operasi telah memutuskan untuk mengalokasikan CPU ke proses lain untuk sementara waktu. Kedua kondisi ini sangat berbeda. Dalam kasus pertama, penangguhan melekat pada masalah (Anda tidak dapat memproses baris perintah pengguna sampai ketikan). Dalam kasus kedua, ini adalah teknis dari sistem (tidak cukup CPU untuk memberikan setiap proses prosesor pribadinya sendiri). Seperti Berikut ini :
1. Berjalan (sebenarnya menggunakan CPU pada saat itu).
2. Ready (runnable; sementara dihentikan untuk membiarkan proses lain berjalan).
3. Diblokir (tidak dapat berjalan sampai beberapa peristiwa eksternal terjadi).
Secara logis, dua kondisi pertama serupa. Dalam kedua kasus, proses bersedia dijalankan, hanya di yang kedua, untuk sementara tidak ada CPU yang tersedia. Keadaan ketiga berbeda dari dua yang pertama dalam proses yang tidak dapat berjalan, bahkan jika CPU tidak ada lagi yang harus dilakukan. seperti berikut ini :
IMPLEMENTASI PROSES
alamat prosedur layanan interupsi. Misalkan proses pengguna 3 sedang berjalan ketika disk mengganggu terjadi. Penghitung program proses pengguna, kata status program, dan kadang-kadang satu atau lebih register didorong ke tumpukan (saat ini) oleh perangkat keras interupsi. Komputer kemudian melompat ke alamat yang ditentukan dalam vektor interupsi. Itulah yang dilakukan perangkat keras. Mulai sekarang, tergantung pada perangkat lunak, khususnya, prosedur layanan interupsi.
Semua interupsi dimulai dengan menyimpan register, seringkali dalam entri tabel proses untuk proses saat ini. Kemudian informasi yang didorong ke tumpukan oleh interupsi dihapus dan penunjuk tumpukan diatur untuk menunjuk ke tumpukan sementara yang digunakan oleh penangan proses. Tindakan seperti menyimpan register dan mengatur stack pointer bahkan tidak dapat diekspresikan dalam bahasa tingkat tinggi seperti C, sehingga mereka dilakukan oleh rutin bahasa assembly kecil, biasanya yang sama untuk semua gangguan karena pekerjaan menyimpan register adalah identik, tidak peduli apa penyebab interupsi itu.
Ketika rutin ini selesai, ia memanggil prosedur C untuk melakukan sisa pekerjaan untuk tipe interupsi spesifik ini. (Kami menganggap sistem operasi ditulis dalam C, pilihan yang biasa untuk semua sistem operasi nyata.) Ketika telah melakukan tugasnya, mungkin membuat beberapa proses sekarang siap, penjadwal dipanggil untuk melihat siapa yang akan menjalankan selanjutnya. Setelah itu, kontrol dilewatkan kembali ke kode bahasa assembly untuk memuat register dan peta memori untuk proses sekarang-saat ini dan mulai berjalan. Penanganan dan penjadwalan yang terganggu. Perlu dicatat bahwa rinciannya agak berbeda dari satu sistem ke sistem lainnya. Seperti berikut ini :
1. Perangkat keras menghitung penghitung program, dll.
2. Perangkat keras memuat penghitung program baru dari vektor interupsi.
3. Prosedur bahasa assembly menyimpan register.
4. Prosedur bahasa assembly mengatur tumpukan baru.
5. Layanan interupsi C berjalan {biasanya membaca dan buffer input).
6. Penjadwal memutuskan proses mana yang akan dijalankan selanjutnya.
7. Prosedur C kembali ke kode rakitan.
8. Prosedur bahasa assembly memulai proses baru saat ini.
Ketika proses selesai, sistem operasi menampilkan karakter yang cepat dan menunggu perintah baru. Ketika menerima perintah, itu memuat program baru ke dalam memori, menimpa yang pertama.
Pemodelan Multiprogramming
Untuk mengimplementasikan model proses, sistem operasi memelihara tabel (array struktur), yang disebut tabel proses, dengan satu entri per proses. (Beberapa penulis menyebut entri ini blok kontrol proses.) Entri ini berisi informasi penting tentang status proses, termasuk penghitung programnya, penunjuk tumpukan, alokasi memori, status file yang terbuka, informasi akuntansi dan penjadwalannya, dan segala hal lain tentang proses yang harus disimpan ketika proses dialihkan dari menjalankan ke status siap atau diblokir sehingga dapat dimulai kembali nanti seolah-olah tidak pernah telah dihentikan. seperti berikut ini :
Bidang di kolom pertama terkait dengan manajemen proses. Dua lainnya berhubungan dengan manajemen memori dan manajemen file, masing-masing. Perlu dicatat bahwa bidang mana yang dimiliki tabel proses sangat tergantung pada sistem, tetapi gambar ini memberikan gambaran umum tentang jenis informasi yang dibutuhkan. seperti berikut ini.
Sekarang kita telah melihat tabel proses, dimungkinkan untuk menjelaskan sedikit lebih banyak tentang bagaimana ilusi dari beberapa proses berurutan dipertahankan pada satu (atau masing-masing) CPU. Terkait dengan setiap kelas I / O adalah lokasi (biasanya di lokasi tetap dekat bagian bawah memori) yang disebut vektor interupsi.
ANCAMAN
Dalam sistem operasi tradisional, setiap proses memiliki ruang alamat dan satu untaian kontrol. Bahkan, itu hampir merupakan definisi dari suatu proses. Namun demikian, sering ada situasi di mana diinginkan untuk memiliki, beberapa utas kontrol di ruang alamat yang sama berjalan dalam kuasi-paralel, seolah-olah mereka (hampir) proses yang terpisah (kecuali untuk ruang alamat bersama die). Pada bagian berikut ini kita akan membahas situasi ini dan implikasinya.
Penggunaan Threads
Mengapa ada orang yang ingin memiliki semacam proses dalam suatu proses? Ternyata ada beberapa alasan untuk memiliki proses mini ini, yang disebut utas. Mari kita periksa beberapa di antaranya. Alasan utama untuk memiliki utas adalah bahwa dalam banyak aplikasi, banyak aktivitas terjadi sekaligus. Beberapa di antaranya mungkin memblokir dari waktu ke waktu. Dengan mendekomposisi aplikasi semacam itu menjadi beberapa untaian berurutan yang berjalan secara paralel, model pemrograman menjadi lebih sederhana. Kami telah melihat argumen ini sebelumnya. Justru argumen untuk memiliki proses. Alih-alih memikirkan interupsi, timer, dan sakelar konteks, kita dapat berpikir tentang proses paralel. Hanya sekarang dengan utas kami menambahkan elemen baru: kemampuan entitas paralel untuk berbagi ruang alamat dan semua datanya di antara mereka sendiri. Kemampuan ini sangat penting untuk aplikasi tertentu, itulah sebabnya mengapa memiliki beberapa proses (dengan ruang alamat terpisah) tidak akan berfungsi. Utas ketiga dapat menangani cadangan disk tanpa mengganggu dua lainnya. Situasi dengan tiga utas ditunjukkan pada Gambar.
Jika program single-threaded, maka kapan pun cadangan disk dimulai, perintah dari keyboard dan mouse akan diabaikan sampai cadangan selesai. Pengguna pasti akan menganggap ini sebagai kinerja yang lamban. Atau, kejadian keyboard dan mouse dapat mengganggu cadangan disk, yang memungkinkan kinerja yang baik tetapi mengarah pada model pemrograman yang didorong oleh interupsi yang kompleks. Dengan tiga utas, model pemrogramannya jauh lebih sederhana. Utas pertama hanya berinteraksi dengan pengguna. Utas kedua memformat ulang dokumen saat diminta. Utas ketiga menulis konten RAM ke disk secara berkala.
Komentar
Posting Komentar