Pendahuluan Sistem Operasi dan Fungsinya
Pendahuluan Sistem Operasi dan Fungsinya
CATATAN PERKULIAHAN
MODUL-1
Sistem Operasi–Definisi:
Sistem operasi adalah program yang mengontrol eksekusi program aplikasi dan bertindak sebagai
antarmuka antara pengguna komputer dan perangkat keras komputer.
Definisi yang lebih umum adalah bahwa sistem operasi adalah satu program yang berjalan setiap saat di
komputer (biasanya disebut kernel), dengan segala sesuatu yang lain adalah program aplikasi.
Sistem operasi berkaitan dengan pengalokasian sumber daya dan layanan, seperti memori.
prosesor, perangkat, dan informasi. Sistem operasi dengan demikian mencakup program untuk mengelola
sumber daya ini, seperti pengontrol lalu lintas, penjadwal, modul manajemen memori, program I/O, dan
sebuah sistem file.
3. Manajemen Berkas
Sebuah file adalah kumpulan informasi terkait yang ditentukan oleh pembuatnya. Secara umum, file mewakili program (baik
bentuk sumber dan objek) dan data.
Sistem operasi bertanggung jawab atas kegiatan berikut terkait dengan manajemen file:
Pembuatan dan penghapusan file.
Pembuatan dan penghapusan direktori.
Dukungan primitif untuk memanipulasi file dan direktori.
Memetakan file ke penyimpanan sekunder.
Cadangan file di media penyimpanan yang stabil (non-volatile).
4. Manajemen Sistem I/O
Sistem I/O terdiri dari:
Sistem caching buffer
Antarmuka pengemudi perangkat umum
Driver untuk perangkat keras tertentu
5. Manajemen Penyimpanan Sekunder
Karena memori utama (penyimpanan primer) bersifat volatil dan terlalu kecil untuk menampung semua data dan program
Secara permanen, sistem komputer harus menyediakan penyimpanan sekunder untuk mencadangkan memori utama.
Sebagian besar sistem komputer modern menggunakan disket sebagai media penyimpanan daring utama, baik untuk program maupun data.
Sistem operasi bertanggung jawab untuk aktivitas berikut sehubungan dengan manajemen disk:
Manajemen ruang kosong
Alokasi penyimpanan
Jadwal disk
6. Sistem Perlindungan
Perlindungan merujuk pada mekanisme untuk mengendalikan akses oleh program, proses, atau pengguna ke sistem.
dan sumber daya pengguna.
Mekanisme perlindungan harus:
a. membedakan antara penggunaan yang sah dan yang tidak sah.
b. tentukan kontrol yang akan diterapkan.
c. menyediakan sarana penegakan hukum.
Karakteristik:
Evolusi OS:
[Link] Operasi Pemrosesan Batch:
Jenis OS ini menerima lebih dari satu pekerjaan dan pekerjaan ini dikelompokkan bersama sesuai dengan mereka
persyaratan yang serupa. Ini dilakukan oleh operator komputer. Setiap kali komputer tersedia,
pekerjaan terbatch dikirim untuk dieksekusi dan secara bertahap output dikirim kembali ke pengguna.
Ini hanya mengizinkan satu program pada satu waktu.
Sistem operasi ini bertanggung jawab untuk menjadwalkan pekerjaan sesuai dengan prioritas dan sumber daya yang diperlukan.
Sistem operasi multiprogramming menggunakan mekanisme penjadwalan tugas dan penjadwalan CPU.
{"text":"[Link] Operasi Berbagi Waktu/multitasking"}
Sistem operasi berbagi waktu (atau multitasking) adalah perpanjangan logis dari multiprogramming. Ini memberikan fasilitas tambahan seperti:
Pengalihan yang lebih cepat antara beberapa pekerjaan untuk mempercepat pemrosesan.
Memungkinkan beberapa pengguna untuk berbagi sistem komputer secara bersamaan.
Pengguna dapat berinteraksi dengan setiap pekerjaan saat sedang berjalan.
Sistem ini menggunakan konsep memori virtual untuk pemanfaatan ruang memori yang efektif. Oleh karena itu, dalam OS ini, tidak ada pekerjaan
dibuang. Setiap satu dieksekusi menggunakan konsep memori virtual. Itu menggunakan penjadwalan CPU, manajemen memori, disk
manajemen dan manajemen keamanan. Contoh: CTSS, MULTICS, CAL, UNIX dll.
[Link] Operasi Multiprosesor
Sistem operasi multiprosesor juga dikenal sebagai OS paralel atau OS yang terhubung erat. Sistem operasi semacam itu
sistem memiliki lebih dari satu prosesor yang berkomunikasi dekat yang berbagi bus komputer, jam dan
kadang-kadang memori dan perangkat perifer. Ini menjalankan banyak pekerjaan pada saat yang sama dan membuat pemrosesan lebih cepat.
Sistem multiprosesor memiliki tiga keunggulan utama:
Increased throughput:By increasing the number of processors, the system performs more work in less time.
Rasio percepatan dengan N prosesor kurang dari N.
Economi skala: Sistem multiprosesor dapat menghemat lebih banyak uang dibandingkan dengan beberapa sistem prosesor tunggal.
karena mereka dapat berbagi periferal, penyimpanan massal, dan catu daya.
Peningkatan keandalan: Jika satu prosesor gagal menyelesaikan tugasnya, maka setiap prosesor yang tersisa harus mengambil alih.
membagi sebagian tugas dari prosesor yang gagal. Kegagalan satu prosesor tidak akan menghentikan sistem, hanya memperlambat
turunkan.
Kemampuan untuk terus menyediakan layanan yang proporsional dengan tingkat perangkat keras yang bertahan disebut anggun.
degradasi. Sistem yang dirancang untuk degradasi yang baik disebut toleran terhadap kesalahan.
sistem operasi situasi terus memantau sistem untuk mendeteksi kesalahan. Ini meringankan pengguna dari
khawatir akan kesalahan yang menyebar ke berbagai bagian sistem dan menyebabkan malfungsi.
Berikut adalah tiga layanan yang diberikan oleh sistem operasi untuk memastikan operasi yang efisien dari
sistem itu sendiri.
Alokasi sumber daya
Ketika beberapa pengguna terhubung ke sistem atau beberapa pekerjaan berjalan secara bersamaan, sumber daya
harus dialokasikan kepada masing-masing dari mereka. Banyak jenis sumber daya yang dikelola oleh sistem operasi.
Akuntansi
Sistem operasi mencatat pengguna mana yang menggunakan berapa banyak dan jenis sumber daya komputer apa.
Pencatatan ini dapat digunakan untuk akuntansi (agar pengguna dapat ditagih) atau sekadar untuk mengumpulkan penggunaan
statistik.
Perlindungan
Ketika beberapa proses yang terpisah tidak berhubungan dijalankan secara bersamaan, seharusnya tidak mungkin bagi satu proses untuk mengganggu proses lainnya.
lainnya, atau dengan sistem operasi itu sendiri. Perlindungan melibatkan memastikan bahwa semua akses ke sumber daya sistem dikendalikan.
Keamanan sistem dari orang luar juga penting. Keamanan seperti itu dimulai dengan setiap pengguna harus mengautentikasi dirinya
ke sistem, biasanya dengan menggunakan kata sandi, untuk diizinkan mengakses sumber daya
System Call:
Misalnya, untuk I/O, suatu proses melibatkan panggilan sistem yang memberi tahu sistem operasi untuk membaca atau menulis tertentu.
Jenis-jenis berbeda dari sistem panggilan yang disediakan oleh sistem operasi:
Kontrol proses
end, abort
muat, eksekusi
create process, terminate process
ambil atribut proses, atur atribut proses
tunggu waktu
wait event, signal event
alokasi dan pembebasan memori
Manajemen file
Pemeliharaan informasi
Mesin Virtual
Sebuah mesin virtual mengambil pendekatan berlapis hingga kesimpulan logisnya. Ini memperlakukan perangkat keras dan sistem operasi
kernel sistem seolah-olah mereka semua adalah perangkat keras.
Sebuah mesin virtual menyediakan antarmuka yang identik dengan perangkat keras dasar yang mendasarinya.
Sistem operasi menciptakan ilusi banyak proses, masing-masing dijalankan pada prosesornya sendiri dengan
memori (virtual) nya sendiri.
Sumber daya komputer fisik dibagikan untuk membuat mesin virtual.
Jadwal CPU dapat menciptakan kesan bahwa pengguna memiliki prosesor mereka sendiri.
Spooling dan sistem file dapat menyediakan pembaca kartu virtual dan printer garis virtual.
Terminal berbagi waktu pengguna normal berfungsi sebagai konsol operator mesin virtual.
Model Sistem
Catatan Kelas.
MODUL-2
Manajemen Memori dan Memori Virtual–
Catatan Kelas.
Pengambilan Permintaan:
Sistem permintaan paging mirip dengan sistem paging dengan swapping. Secara umum, Proses berada di
memori sekunder (yang biasanya adalah disk). Ketika kita ingin menjalankan sebuah proses, kita memindahkannya ke dalam memori. Lebih tepatnya
daripada menukar seluruh proses ke memori, itu menukar halaman yang diperlukan. Ini dapat dilakukan oleh penukar malas.
Seorang penukar yang malas tidak pernah memindahkan halaman ke dalam memori kecuali halaman itu akan diperlukan. Seorang penukar mengolah
seluruh proses, sementara apageris terkait dengan halaman individu dari sebuah proses.
Skema bit valid-tidak valid pada tabel halaman dapat digunakan untuk menunjukkan halaman mana yang saat ini
dalam ingatan.
Ketika bit ini diatur ke "valid", nilai ini menunjukkan bahwa halaman terkait adalah sah dan dalam
memori. Jika bit diatur ke "tidak valid", nilai ini menunjukkan bahwa halaman tersebut entah tidak valid atau adalah
valid tetapi saat ini ada di disk.
Entri tabel halaman untuk halaman yang dibawa ke dalam memori diatur seperti biasa, tetapi tabel halaman
entri untuk halaman yang tidak saat ini dalam memori cukup ditandai tidak valid, atau berisi alamat
dari halaman di disk.
Ketika sebuah halaman merujuk pada halaman yang tidak valid, maka itu disebut Kesalahan Halaman. Ini berarti bahwa halaman tersebut tidak ada di utama
memori. Prosedur untuk menangani kesalahan halaman adalah sebagai berikut:
[Link] memeriksa tabel internal untuk proses ini, untuk menentukan apakah referensi tersebut valid atau tidak valid.
akses memori.
[Link] referensi tidak valid, kami menghentikan proses. Jika itu valid, tetapi kami belum membawa itu masuk.
halaman ke dalam ingatan.
[Link] menemukan bingkai gratis (dengan mengambil satu dari daftar bingkai gratis).
[Link] menjadwalkan operasi disk untuk membaca halaman yang diinginkan ke dalam bingkai yang baru dialokasikan.
[Link] pembacaan disk selesai, kami memodifikasi tabel internal yang disimpan dengan proses dan tabel halaman untuk
tunjukkan bahwa halaman sekarang ada di memori.
[Link] memulai ulang instruksi yang terputus oleh jebakan alamat ilegal. Proses sekarang dapat mengakses
halaman seolah-olah selalu ada dalam ingatan.
(Diagram Langkah-langkah dalam menangani kesalahan halaman)
Catatan: Halaman-halaman disalin ke dalam memori, hanya ketika mereka diperlukan. Mekanisme ini disebut Pure
Pengambilan Permintaan.
Thrashing:
Sistem menghabiskan sebagian besar waktunya untuk memindahkan halaman antara memori utama dan memori sekunder karena
kesalahan halaman yang sering. Perilaku ini dikenal sebagai thrashing.
Sebuah proses disebut thrashing jika menghabiskan lebih banyak waktu untuk melakukan paging daripada mengeksekusi. Ini mengarah pada: rendahnya pemanfaatan CPU
Penghancuran
Penggantian Halaman
Penggantian halaman adalah mekanisme yang memuat halaman dari disk ke memori ketika sebuah halaman dari
memori perlu dialokasikan. Penggantian halaman dapat dijelaskan sebagai berikut:
Pengalokasian Frame:
Ketika terjadi kesalahan halaman, ada bingkai kosong yang tersedia untuk menyimpan halaman baru ke dalam bingkai. Sementara itu
pertukaran halaman sedang terjadi, penggantian dapat dipilih, yang ditulis ke disk sebagai proses pengguna
melanjutkan untuk dieksekusi. Sistem operasi mengalokasikan semua buffer dan ruang tabelnya dari daftar frame gratis untuk
halaman baru.
KONSEP FILE:
Sebuah file adalah kumpulan informasi terkait yang direkam di penyimpanan sekunder. Dari perspektif pengguna
perspektif, sebuah file adalah alokasi terkecil dari penyimpanan sekunder logis dan data tidak dapat ditulis ke
penyimpanan sekunder kecuali mereka berada dalam sebuah file.
Empat istilah umum yang digunakan saat membahas file: Field, Record, File, dan Database
Bidang adalah elemen dasar dari data. Sebuah bidang individu berisi satu nilai, seperti seorang karyawan's
nama belakang, tanggal, atau nilai pembacaan sensor. Ini dicirikan oleh panjang dan jenis datanya.
Arecord adalah kumpulan bidang terkait yang dapat diperlakukan sebagai unit oleh beberapa program aplikasi.
contoh, catatan karyawan akan berisi bidang-bidang seperti nama, nomor jaminan sosial, pekerjaan
klasifikasi, tanggal perekrutan, dan seterusnya.
File adalah kumpulan catatan yang serupa. File diperlakukan sebagai entitas tunggal oleh pengguna dan aplikasi.
dan dapat dirujuk dengan nama.
Basis data adalah kumpulan data yang terkait. Sebuah basis data dapat memuat semua informasi yang berkaitan dengan sebuah
organisasi atau proyek, seperti bisnis atau studi ilmiah. Basis data itu sendiri terdiri dari satu atau
lebih banyak jenis file.
Atribut File:
Nama: Nama file simbolis adalah satu-satunya informasi yang disimpan dalam bentuk yang dapat dibaca manusia.
Identifier:This unique tag, usually a number, identifies the file within the file system; it is the non-
nama yang dapat dibaca manusia untuk file.
Informasi ini diperlukan untuk sistem yang mendukung berbagai jenis.
Lokasi: Informasi ini adalah petunjuk ke sebuah perangkat dan lokasi file di perangkat tersebut.
Size:The current size of the file (in bytes, words, or blocks), and possibly the maximum allowed size
termasuk dalam atribut ini.
Perlindungan: Informasi kontrol akses menentukan siapa yang dapat melakukan pembacaan, penulisan, eksekusi, dan sebagainya.
Waktu, tanggal, dan identifikasi pengguna: Informasi ini mungkin disimpan untuk pembuatan, modifikasi
dan penggunaan terakhir. Data ini dapat berguna untuk perlindungan, keamanan, dan pemantauan penggunaan.
Operasi Berkas:
Sistem operasi dapat menyediakan sistem panggilan untuk membuat, menulis, membaca, memposisikan ulang, menghapus, dan
memotong file. Operasi file dijelaskan sebagai berikut:
Membuat file: Dua langkah diperlukan untuk membuat file. Pertama, ruang di sistem file harus ditemukan.
untuk file tersebut. Kedua, entri untuk file baru harus dibuat di direktori. Entri direktori mencatat
nama file dan lokasi di sistem file, dan mungkin informasi lain.
Menulis sebuah file: Untuk menulis sebuah file, kita melakukan panggilan sistem dengan menyebutkan nama file serta
informasi yang akan dituliskan ke dalam file. Mengingat nama file, sistem mencari direktori untuk menemukan
lokasi file. Sistem harus menjaga pointer untuk lokasi di file tempat berikutnya
tulisan adalah untuk terjadi. Penunjuk tulisan harus diperbarui setiap kali penulisan terjadi.
Membaca sebuah file: Untuk membaca dari sebuah file, kita menggunakan panggilan sistem yang menunjukkan nama file dan di mana
(di memori utama) blok berikutnya dari file harus ditempatkan. Sekali lagi, direktori dicari untuk
entri direktori yang terkait, dan sistem perlu menjaga pointer baca ke lokasi di dalam file di mana
bacaan berikutnya akan berlangsung. Setelah bacaan dilakukan, penunjuk bacaan diperbarui.
Reposisi dalam sebuah file: Direktori dicari untuk entri yang sesuai, dan file saat ini
posisi diatur ke nilai tertentu. Memindahkan posisi dalam file tidak perlu melibatkan I/O yang sebenarnya. Ini
operasi berkas juga dikenal sebagai pencarian berkas.
Menghapus file: Untuk menghapus file, kita mencari direktori untuk file yang bernama tersebut. Setelah menemukan yang terkait
entri direktori, kami melepaskan semua ruang file, sehingga dapat digunakan kembali oleh file lain, dan menghapus direktori
entri.
Memotong sebuah file: Pengguna mungkin ingin menghapus isi sebuah file tetapi tetap menjaga atributnya. Alih-alih
memaksa pengguna untuk menghapus file dan kemudian membuatnya kembali, fungsi ini memungkinkan semua atribut untuk tetap ada
tidak berubah - kecuali untuk panjang file - tetapi memungkinkan file diatur ulang menjadi panjang nol dan ruang filenya dirilis.
Nama dibagi menjadi dua bagian - sebuah nama dan ekstensi, Sistem menggunakan ekstensi untuk menunjukkan jenisnya
dari file dan jenis operasi yang dapat dilakukan pada file tersebut.
Metode akses:
Ketika sebuah file digunakan, informasi ini harus diakses dan dibaca ke dalam memori komputer.
informasi dalam file dapat diakses dengan beberapa cara. Ada dua metode akses utama sebagai berikut:
Akses Berurutan: Informasi dalam file diproses secara urutan, satu rekaman setelah yang lain. Operasi baca
membaca bagian berikutnya dari file dan secara otomatis memajukan penunjuk file, yang melacak lokasi I/O.
Demikian pula, sebuah penulisan menambahkan ke akhir file dan bergerak ke akhir materi yang baru ditulis.
akhir berkas baru). Akses berurutan didasarkan pada model pita dari sebuah berkas, dan juga berfungsi dengan baik pada akses berurutan
perangkat seperti halnya pada perangkat akses acak.
Akses Langsung: Sebuah file terdiri dari catatan logis dengan panjang tetap yang memungkinkan program untuk membaca dan menulis
mencatat dengan cepat tanpa urutan tertentu. Metode akses langsung didasarkan pada model disk dari sebuah file, karena disk
allow random access to any file block. For direct access, the file is viewed as a numbered sequence of blocks
atau catatan. File akses langsung memungkinkan blok sembarang untuk dibaca atau ditulis. Tidak ada batasan pada
urutan membaca atau menulis untuk file akses langsung. Untuk metode akses langsung, operasi file harus
dimodifikasi untuk menyertakan nomor blok sebagai parameter. Jadi, kami memiliki baca n, di mana n adalah nomor blok,
daripada membaca selanjutnya, dan menulis daripada menulis selanjutnya.
Struktur Direktori:
Sebuah direktori adalah objek yang berisi nama-nama objek sistem file. Sistem file memungkinkan pengguna
untuk mengatur file dan objek sistem file lainnya melalui penggunaan direktori. Struktur yang dibuat oleh
penempatan nama dalam direktori dapat mengambil beberapa bentuk: Pohon satu tingkat, Pohon dua tingkat, pohon multi-tingkat
pohon atau grafik siklik.
Direktori Tingkat Tunggal: Struktur direktori yang paling sederhana adalah direktori tingkat tunggal. Semua file terkandung
di direktori yang sama, yang mudah untuk didukung dan dipahami. Direktori tingkat tunggal memiliki signifikansi yang besar
batasan, ketika jumlah file meningkat atau ketika sistem memiliki lebih dari satu pengguna. Karena semua file adalah
di direktori yang sama, mereka harus memiliki nama yang unik.
Direktori Dua Tingkat: Dalam struktur direktori dua tingkat, setiap pengguna memiliki direktori file pengguna sendiri (UFD).
Setiap UFD memiliki struktur yang mirip, tetapi hanya mencantumkan file dari satu pengguna. Ketika pekerjaan pengguna dimulai atau seorang pengguna
Saat log in, direktori file master sistem (MFD) dicari. MFD diindeks berdasarkan nama pengguna atau akun
nomor, dan setiap entri menunjuk ke UFD untuk pengguna tersebut.
Ketika seorang pengguna merujuk ke file tertentu, hanya UFD miliknya yang dicari. Pengguna yang berbeda mungkin memiliki file yang sama.
dengan nama yang sama, selama semua nama file di dalam setiap UFD adalah unik.
Untuk membuat file untuk pengguna, sistem operasi hanya mencari UFD pengguna tersebut untuk menentukan apakah
file lain dengan nama itu sudah ada. Untuk menghapus sebuah file, sistem operasi membatasi pencariannya pada UFD lokal;
Dengan demikian, itu tidak dapat secara tidak sengaja menghapus file pengguna lain yang memiliki nama yang sama.
Direktori yang terstruktur pohon: Struktur pohon adalah pendekatan yang lebih kuat dan fleksibel untuk mengorganisir file.
dan direktori dalam hierarki. Ada direktori utama, yang memiliki di bawahnya sejumlah direktori pengguna.
Setiap direktori pengguna ini dapat memiliki sub-direktori dan file sebagai entri. Ini berlaku di setiap tingkat: Artinya,
di mana saja, sebuah direktori dapat terdiri dari entri untuk subdirektori dan/atau entri untuk file.
File Protection:
Metode yang digunakan untuk melindungi data berharga di komputer. Perlindungan file dilakukan dengan kata sandi.
melindungi sebuah file atau hanya memberikanhakkepada pengguna atau kelompok tertentu.
Sistem File memberikan akses yang efisien ke disk dengan memungkinkan data disimpan, ditempatkan, dan diambil.
cara yang nyaman. Sistem file harus dapat menyimpan file, menemukan file, dan mengambil file.
Sebagian besar Sistem Operasi menggunakan pendekatan berlapis untuk setiap tugas termasuk sistem berkas. Setiap lapisan
sistem berkas bertanggung jawab atas beberapa aktivitas.
Gambar yang ditunjukkan di bawah ini, menjelaskan bagaimana sistem file dibagi menjadi berbagai lapisan, dan juga fungsionalitasnya.
setiap lapisan.
Ketika sebuah program aplikasi meminta sebuah file, permintaan pertama ditujukan ke sistem file logis.
sistem file logis berisi metadata dari file dan struktur direktori. Jika program aplikasi
tidak memiliki izin yang diperlukan dari file maka lapisan ini akan menghasilkan kesalahan. Sistem file logis
juga verifikasi path ke file.
Secara umum, file dibagi menjadi berbagai blok logis. File harus disimpan di hard disk dan harus
diambil dari hard disk. Hard disk dibagi menjadi berbagai track dan sektor. Oleh karena itu, untuk dapat
Menyimpan dan mengambil berkas, blok logis perlu dipetakan ke blok fisik. Pemetaan ini dilakukan
oleh modul organisasi berkas. Ini juga bertanggung jawab untuk manajemen ruang kosong.
Setelah modul organisasi berkas memutuskan blok fisik mana yang dibutuhkan program aplikasi, ia meneruskan ini
information to basic file system. The basic file system is responsible for issuing the commands to I/O
kontrol untuk mengambil blok-blok tersebut.
Kontrol I/O mengandung kode-kode yang digunakan untuk mengakses hard disk. Kode-kode ini dikenal sebagai perangkat.
driver. Kontrol I/O juga bertanggung jawab untuk menangani interupsi.
Metode alokasi:
Sistem operasi memberikan ruang disk kepada berkas. Sistem operasi menerapkan tiga cara utama berikut untuk
alokasikan ruang disk untuk file.
Alokasi Kontigu
Alokasi Tautan
Alokasi Terindeks
Alokasi Kontigu
Sistem melacak blok disk yang tersedia untuk mengalokasikan ruang ke file saat mereka dibuat. Juga, untuk digunakan kembali
ruang yang dilepaskan dari penghapusan berkas, manajemen ruang kosong menjadi krusial. Sistem mempertahankan ruang kosong
daftar ruang yang melacak blok disk yang tidak dialokasikan untuk file atau direktori tertentu. Daftar ruang kosong
dapat diimplementasikan terutama sebagai:
Bitmap atau Bit Vector adalah serangkaian atau kumpulan bit di mana setiap bit sesuai dengan blok disk. Bit
dapat mengambil dua nilai: 0 dan 1: 0 menunjukkan bahwa blok dialokasikan dan 1 menunjukkan blok kosong.
Contoh blok disk yang diberikan pada disk di Gambar 1 (di mana blok hijau dialokasikan) dapat menjadi
diwakili oleh bitmap 16 bit sebagai: 0000111000000110.
Keuntungan–
Mudah dipahami.
Mencari blok gratis pertama itu efisien. Ini memerlukan pemindaian kata-kata (sekelompok 8 bit) dalam bitmap
untuk kata yang tidak nol. (Kata bernilai 0 memiliki semua bit 0). Blok gratis pertama kemudian ditemukan dengan memindai
untuk 1 bit pertama di kata non-nol.
Nomor blok dapat dihitung sebagai:
(jumlah bit per kata) *(jumlah kata dengan nilai 0) + offset dari bit pertama 1 dalam kata non-nol.
Untuk Gambar-1, kami memindai bitmap secara berurutan untuk kata non-nol pertama.
Grup pertama dari 8 bit (00001110) membentuk sebuah kata non-nol karena tidak semua bit bernilai 0. Setelah kata non-0
ditemukan, kami mencari bit 1 pertama. Ini adalah bit ke-5 dari kata non-nol. Jadi, offset = 5.
Oleh karena itu, nomor blok gratis pertama = 8*0+5 = 5.
[Link] Tautan–
Dalam pendekatan ini, blok disk kosong dihubungkan bersama, yaitu blok kosong berisi pointer ke blok berikutnya.
blok gratis. Nomor blok dari blok disk pertama disimpan di lokasi terpisah di disk dan adalah
juga disimpan di memori.
Di Gambar-2, kepala daftar ruang bebas menunjuk ke Blok 5 yang menunjuk ke Blok 6, blok bebas berikutnya dan seterusnya
blok terakhir yang gratis akan berisi pointer null yang menunjukkan akhir dari daftar gratis.
Sebuah kelemahan dari metode ini adalah I/O yang diperlukan untuk penelusuran daftar ruang kosong.
Pengelompokan –
Pendekatan ini menyimpan alamat blok kosong di blok kosong pertama. Blok kosong pertama menyimpan
alamat dari beberapa, katakanlah n blok gratis. Dari n blok ini, n-1 blok pertama sebenarnya gratis dan yang terakhir
blok mengandung yang alamat dari berikutnya gratis n blok.
Salah satu keuntungan dari pendekatan ini adalah bahwa alamat sekelompok blok disk bebas dapat ditemukan dengan mudah.
Menghitung –
Pendekatan ini menyimpan alamat dari blok disk bebas pertama dan jumlah n dari blok disk bebas yang bersebelahan.
yang mengikuti blok pertama.
Setiap entri dalam daftar akan berisi:
1. Alamat blok disk gratis pertama
2. Sebuah nomor n
Sebagai contoh, dalam Gambar-1, entri pertama dari daftar ruang kosong adalah: ([Alamat Blok 5], 2), karena 2
blok bebas yang berurutan mengikuti blok 5.
Manajemen Direktori:
Direktori adalah tempat/area/lokasi di mana sekelompok file akan disimpan. Ini adalah folder yang berisi rincian tentang
file, ukuran file dan waktu ketika mereka dibuat dan terakhir diubah. Berbagai jenis direktori dibahas
di bawah
Direktori Akar
Direktori Akar dibuat ketika kita mulai memformat disk dan mulai memasukkan file ke dalamnya. Di sini, kita bisa membuat
direktori baru yang disebut "sub-direktori". Direktori root adalah direktori tingkat tertinggi dan terlihat saat booting
sistem.
Subdirektori
Subdirektori adalah direktori di dalam direktori akar, yang pada gilirannya, dapat memiliki subdirektori lain di dalamnya.
Implementasi Direktori:
Ada sejumlah algoritma yang dapat digunakan untuk mengimplementasikan direktori. Namun,
pemilihan algoritma implementasi direktori yang tepat dapat secara signifikan mempengaruhi kinerja dari
sistem.
Algoritma implementasi direktori diklasifikasikan menurut struktur data yang mereka gunakan. Ada
ada terutama dua algoritma yang digunakan dalam hari-hari ini.
1. Daftar Linier
Dalam algoritma ini, semua berkas dalam sebuah direktori dipelihara sebagai daftar tersambung tunggal. Setiap berkas mengandung pointer
ke blok data yang ditugaskan kepadanya dan file berikutnya dalam direktori.
Karakteristik
1. Ketika sebuah file baru dibuat, maka seluruh daftar diperiksa apakah nama file baru cocok dengan sebuah
nama file yang ada atau tidak. Jika tidak ada, file dapat dibuat di awal atau di akhir.
Oleh karena itu, mencari nama yang unik adalah perhatian besar karena menjelajahi seluruh daftar memerlukan waktu.
2. Daftar perlu dilalui dalam setiap operasi (pembuatan, penghapusan, pembaruan, dll) pada file
karena itu sistem menjadi tidak efisien.
2. Tabel Hash
Untuk mengatasi kekurangan implementasi daftar terkait tunggal dari direktori, ada pendekatan alternatif.
itu adalah tabel hash. Pendekatan ini menyarankan untuk menggunakan tabel hash bersama dengan daftar terkait.
Sepasang kunci-nilai untuk setiap file di direktori dihasilkan dan disimpan dalam tabel hash. Kuncinya bisa jadi
ditentukan dengan menerapkan fungsi hash pada nama file sementara kunci mengarah ke file yang sesuai yang disimpan
di direktori.
Now, searching becomes efficient due to the fact that now, entire list will not be searched on every operating.
Hanya entri tabel hash yang diperiksa menggunakan kunci dan jika entri ditemukan, maka file yang sesuai akan diambil.
menggunakan nilai.
lakukan{
Bagian masuk
Bagian kritis
Bagian keluar
Bagian sisa
}sementara(1);
Sebuah solusi untuk masalah critical-section harus memenuhi tiga persyaratan berikut:
[Link] Mutual: Jika proses Pi sedang mengeksekusi di bagian kritisnya, maka tidak ada proses lain yang bisa.
menjalankan di bagian kritis mereka.
[Link]: Jika tidak ada proses yang dieksekusi di bagian kritisnya dan beberapa proses ingin memasuki bagian kritis mereka
bagian, maka hanya proses yang tidak sedang mengeksekusi di bagian sisa mereka yang dapat berpartisipasi dalam
keputusan tentang siapa yang akan memasuki bagian kritisnya berikutnya, dan pemilihan ini tidak dapat ditunda tanpa batas.
[Link] Terbatas: Terdapat batas pada jumlah kali proses lain diizinkan untuk masuk
bagian kritis mereka setelah sebuah proses mengajukan permintaan untuk memasuki bagian kritisnya dan sebelum permintaan itu
diberikan.
Seperti halnya aspek lain dari perangkat lunak, fitur perangkat keras dapat mempermudah tugas pemrograman dan
meningkatkan efisiensi sistem. Di bagian ini, kami menyajikan beberapa instruksi perangkat keras sederhana yang tersedia
di banyak sistem, dan menunjukkan bagaimana mereka dapat digunakan secara efektif dalam menyelesaikan masalah bagian-kritis.
Sayangnya, solusi ini tidak praktis dalam lingkungan multiprosesor. Menonaktifkan interupsi di sebuah
pengoperasian multiprosesor bisa memakan waktu, karena pesan tersebut diteruskan ke semua prosesor. Pengiriman pesan ini
penundaan masuk ke setiap bagian kritis, dan efisiensi sistem menurun. Juga, pertimbangkan efeknya pada sistem
jam, jika jam tersebut diperbarui oleh interupsi.
Banyak mesin oleh karena itu menyediakan instruksi perangkat keras khusus yang memungkinkan kita untuk menguji dan memodifikasi
isi dari suatu kata, atau menukar isi dari dua kata, secara atomik—yaitu, sebagai satu unit yang tidak dapat terganggu. Kita bisa
gunakan petunjuk khusus ini untuk menyelesaikan masalah bagian-kritis dengan cara yang relatif sederhana. Alih-alih
membahas satu instruksi spesifik untuk satu mesin spesifik, mari kita abstraksikan konsep utama di balik jenis ini
instruksi.
Instruksi TestAndSet dapat didefinisikan seperti yang ditunjukkan dalam kode. Karakteristik pentingnya adalah bahwa ini
instruksi dieksekusi secara atomik. Jadi, jika dua instruksi TestAndSet dieksekusi secara bersamaan (masing-masing pada a)
CPU yang berbeda), mereka akan dieksekusi secara berurutan dalam urutan sembarang.
Implementasi mutual-exclusion dengan TestAndSet
lakukan{
sementara(TestAndSet(lock));
bagian kritis
lock=false
Bagian sisa
}sementara(1);
Semaphore:
Solusi untuk masalah bagian kritis yang disajikan sebelumnya tidak mudah untuk digeneralisasi ke lebih banyak
masalah kompleks. Untuk mengatasi kesulitan ini, kita dapat menggunakan alat sinkronisasi yang disebut semaphore. A
semaphoreS adalah variabel integer yang, selain dari inisialisasi, hanya diakses melalui dua standar
operasi atom: tunggu dan sinyal. Operasi ini awalnya disebut P (untuk tunggu; dari bahasa Belanda
mencoba, untuk menguji) dan V (untuk sinyal; dari verhogen, untuk meningkat). Definisi klasik dari tunggu dalam
pseudocodeadalah
Tunggu(S) {
sementara (S <= 0);
// tidak ada operasi
S --;
}
Sinyal(S){
S++;
}
Modifikasi nilai integer dari semafor dalam operasi tunggu dan sinyal haruslah
executed indivisibly. That is, when one process modifies the semaphore value, no other process can
secara bersamaan mengubah nilai semaphore yang sama. Selain itu, dalam kasus tunggu (S), pengujian dari
nilai bilangan bulat dari S (S 5 O), dan modifikasinya yang mungkin (S--), juga harus dieksekusi tanpa gangguan.
Usage
Kita dapat menggunakan semaphore untuk menangani masalah bagian kritis n-proses. Proses n berbagi sebuah
semaphore, mutex (singkatan dari mutual exclusion), diinisialisasi ke 1. Kita juga dapat menggunakan semaphore untuk menyelesaikan
berbagai masalah sinkronisasi. Sebagai contoh, pertimbangkan dua proses yang berjalan secara bersamaan: P1 dengan a
pernyataan S1 dan P2 dengan pernyataan S2. Misalkan kita memerlukan agar S2 dijalankan hanya setelah S1 telah
selesai. Kami dapat menerapkan skema ini dengan mudah dengan membiarkan P1 dan P2 berbagi semaphore umum synch,
diinisialisasi menjadi 0, dan dengan memasukkan pernyataan dalam proses P1, dan pernyataan
tunggu (synchronisasi) ;
s2;
dalam proses P2. Karena synch diinisialisasi ke 0, P2 hanya akan mengeksekusi S2 setelah P1 memanggil sinyal (synch),
yang setelah S1.
s1;
sinyal (sinkron)
lakukan {
tunggu (mutex);
bagian kritis
sinyal (mutex);
bagian sisa
} sementara (1);
Implementasi eksklusi mutual dengan semaphore.
Implementasi
Kekurangan utama dari solusi eksklusi mutual dan definisi semaphore yang diberikan di sini,
adalah bahwa mereka semua memerlukan menunggu sibuk. Sementara sebuah proses berada di bagian kritisnya, setiap proses lain yang mencoba untuk
masuk ke bagian kritisnya harus terus berulang dalam kode entri. Pengulangan terus-menerus ini jelas merupakan masalah
dalam sebuah sistem multiprogramming yang nyata, di mana satu CPU dibagi di antara banyak proses. Penantian sibuk membuang-buang
Siklus CPU yang mungkin bisa digunakan secara produktif oleh proses lain. Tipe semaphore ini juga disebut
aspinlock (karena proses "berputar" saat menunggu kunci). Spinlock berguna dalam multiprosesor
sistem. Keuntungan dari spinlock adalah bahwa tidak ada peralihan konteks yang diperlukan ketika sebuah proses harus menunggu pada sebuah kunci,
dan pergantian konteks mungkin memakan waktu yang cukup lama. Dengan demikian, ketika kunci diharapkan dipegang untuk waktu yang singkat,
spinlock berguna.
Untuk mengatasi kebutuhan akan penantian sibuk, kita dapat memodifikasi definisi tunggu dan sinyal.
operasi semaphore. Ketika suatu proses menjalankan operasi tunggu dan menemukan bahwa nilai semaphore tidak
positif, itu harus menunggu. Namun, daripada menunggu dengan sibuk, proses dapat memblokir dirinya sendiri. Operasi blok
menempatkan sebuah proses ke dalam antrean tunggu yang terkait dengan semafor, dan status proses tersebut dialihkan
ke keadaan menunggu. Kemudian, kontrol dialihkan ke penjadwal CPU, yang memilih proses lain untuk
eksekusi.
Sebuah proses yang terblokir, menunggu pada semaphore S, harus di-restart ketika proses lain
melaksanakan operasi sinyal. Proses dimulai kembali oleh operasi bangun, yang mengubah proses dari
status menunggu menjadi status siap. Proses kemudian ditempatkan di antrean siap. (CPU mungkin atau mungkin tidak
berpindah dari proses yang berjalan ke proses yang baru siap, tergantung pada penjadwalan CPU
algoritma.)
Untuk menerapkan semaphore di bawah definisi ini, kita mendefinisikan semaphore sebagai struktur "C":
typedef struct {
int nilai ;
struct process *L;
} semaphore;
Setiap semafor memiliki nilai integer dan daftar proses. Ketika sebuah proses harus menunggu pada semafor,
itu ditambahkan ke daftar proses. Sebuah operasi sinyal menghapus satu proses dari daftar proses yang menunggu
dan membangkitkan proses itu.
void tunggu(semaphore S)
{
[Link]--;
jika ([Link] < 0)
{
tambahkan proses ini ke S.L;
}
blok() ;
}
Operasi sinyal semaphore sekarang dapat dilakukan
{
[Link]++;
jika ([Link] <= 0) {
hapus proses P dari S.L;
}
bangun
}
Operasi blok menghentikan proses yang memanggilnya. Operasi bangun(P1) melanjutkan kembali proses tersebut.
eksekusi proses yang diblokir P. Dua operasi ini disediakan oleh sistem operasi sebagai sistem dasar
panggilan.
Semafor Biner
Konstruk semaphore yang dijelaskan di bagian sebelumnya umumnya dikenal sebagai penghitung
semaphore, karena nilai integernya dapat berkisar pada domain yang tidak terbatas. Semaphore biner adalah semaphore
dengan nilai bilangan bulat yang hanya dapat berkisar antara 0 dan 1. Semaphore biner dapat lebih sederhana untuk
mengimplementasikan daripada semaphore penghitung, tergantung pada arsitektur perangkat keras yang mendasarinya. Kami sekarang akan
tunjukkan bagaimana semaphore penghitung dapat diimplementasikan menggunakan semaphore biner. Biarkan S menjadi penghitung
semaphore.
Untuk mengimplementasikannya dalam istilah semaphore biner, kita memerlukan struktur data berikut:
Awalnya S1 = 1, S2 = 0, dan nilai integer C diatur ke nilai awal dari semaphore penghitung S. Yang
operasi tunggu pada semaphore penghitungan S dapat diimplementasikan sebagai berikut:
tunggu (S1) ;
C--;
i f (C < 0)
{
sinyal(S1); tunggu(S2);
}
sinyal(S1);
tunggu (S1);
C++ ;
jika (C <= 0)
sinyal (S2) ;
lain
sinyal (S1) ;
Masalah Klasik Sinkronisasi:
Masalah buffer terikat umumnya digunakan untuk menggambarkan kekuatan dari primitif sinkronisasi.
Kami sekarang menyajikan struktur umum dari skema ini, tanpa mengikatkan diri pada hal tertentu
implementasi. Kami berasumsi bahwa kolam terdiri dari n buffer, masing-masing mampu menampung satu item. Mutex
semaphore menyediakan eksklusi mutual untuk akses ke kolam buffer dan diinisialisasi dengan nilai 1. Yang
semaphor kosong dan penuh menghitung jumlah buffer kosong dan penuh, masing-masing. Semafor kosong
diinisialisasi ke nilai n; semaphore penuh diinisialisasi ke nilai 0.
Kode untuk proses produsen adalah
lakukan{
produksi barang dalam nextp
...
tunggu (kosong) ;
tunggu (mutex);
...
tambahkan nextp ke buffer
...
sinyal(mutex);
signal (full) ;
} sementara (1);
lakukan{
tunggu (penuh) ;
tunggu (mutex);
….
hapus item dari buffer ke nextc
…..
sinyal (mutex) ;
sinyal (kosong) ;
...
konsumsi barang tersebut di nextc
...
} sementara (1);
Perhatikan simetri antara produsen (p) dan konsumen (c). Kita dapat menginterpretasikan kode ini sebagai produsen
menghasilkan buffer penuh untuk konsumen, atau sebagai konsumen menghasilkan buffer kosong untuk produser.
Sebuah objek data (seperti file atau catatan) akan dibagikan di antara beberapa proses bersamaan. Beberapa dari
proses-proses ini mungkin hanya ingin membaca konten objek yang dibagikan, sedangkan yang lain mungkin ingin memperbarui
(artinya, untuk membaca dan menulis) objek bersama. Kami membedakan antara kedua jenis proses ini dengan merujuk
kepada proses-proses yang hanya tertarik membaca sebagai pembaca, dan kepada yang lain sebagai penulis. Jelas, jika dua
para pembaca mengakses objek data yang dibagikan secara bersamaan, tidak akan ada efek buruk yang dihasilkan. Namun, jika seorang penulis dan
beberapa proses lain (baik pembaca atau penulis) mengakses objek yang dibagi secara bersamaan, kekacauan mungkin terjadi.
Untuk memastikan bahwa kesulitan ini tidak muncul, kami memerlukan agar penulis memiliki akses eksklusif ke
objek bersama. Masalah sinkronisasi ini disebut sebagai masalah pembaca-penulis. Karena itu telah
sebagaimana dinyatakan sebelumnya, itu telah digunakan untuk menguji hampir setiap primitif sinkronisasi baru. Pembaca-penulis
masalah memiliki beberapa variasi, semua melibatkan prioritas. Yang paling sederhana, yang disebut sebagai pembaca pertama-
masalah penulis, mengharuskan bahwa tidak ada pembaca yang akan ditunggu kecuali penulis telah mendapatkan izin terlebih dahulu
untuk menggunakan objek bersama. Dengan kata lain, tidak ada pembaca yang seharusnya menunggu pembaca lain selesai hanya karena sebuah
penulis sedang menunggu. Masalah kedua pembaca-penulis membutuhkan bahwa, begitu seorang penulis siap, penulis itu
melakukan penulisannya secepat mungkin. Dengan kata lain, jika seorang penulis menunggu untuk mengakses objek, tidak ada yang baru
pembaca dapat mulai membaca.
Sebuah solusi untuk salah satu masalah dapat mengakibatkan kelaparan. Dalam kasus pertama, penulis mungkin kelaparan; dalam
kasus kedua, pembaca mungkin kelaparan. Untuk alasan ini, varian lain dari masalah ini telah diusulkan. Dalam ini
bagian, kami menyajikan solusi untuk masalah pembaca-penulis yang pertama.
Dalam solusi untuk masalah pembaca-penulis yang pertama, proses pembaca berbagi struktur data berikut:
Perhatikan bahwa, jika seorang penulis berada di bagian kritis dan n pembaca sedang menunggu, maka satu pembaca sedang antre pada wrt, dan
n - 1 pembaca mengantri di mutex. Juga diperhatikan bahwa, ketika seorang penulis menjalankan sinyal (wrt), kita mungkin melanjutkan
pelaksanaan baik pembaca yang menunggu atau seorang penulis yang menunggu.
Masalah Filosof Makan
Pertimbangkan lima filsuf yang menghabiskan hidup mereka berpikir dan makan. Para filsuf berbagi sebuah
meja bulat umum dikelilingi oleh lima kursi, masing-masing milik satu filosof. Di tengah-tengah
meja adalah semangkuk nasi, dan meja disiapkan dengan lima pasang sumpit tunggal. Ketika seorang filsuf berpikir, ia melakukan
tidak berinteraksi dengan rekan-rekannya. Dari waktu ke waktu, seorang filsuf merasa lapar dan mencoba untuk mengambil kedua
sumpit yang paling dekat dengan dia (sumpit yang berada di antara dia dan tetangga kirinya dan kanannya). A
filosof dapat mengambil hanya satu sumpit pada satu waktu. Jelas, dia tidak dapat mengambil sumpit yang sedang
sudah di tangan tetangga. Ketika seorang filsuf yang lapar memiliki kedua sumpitnya pada waktu yang sama, ia
makan tanpa melepaskan sumpitnya. Ketika dia selesai makan, dia meletakkan kedua sumpitnya dan
mulai berpikir lagi.
Struktur filsuf i
lakukan {
tunggu (sumpit[i]) ;
tunggu (sumpit[(i+1) % 5] ) ;
...
makan
...
sinyal (sumpit [i]) ;
sinyal(chopstick[(i+1) % 5] );
...
pikir
...
} while (1);
Masalah filsuf yang makan dianggap sebagai masalah sinkronisasi klasik, tidak karena
pentingnya praktisnya maupun karena ilmuwan komputer tidak menyukai filsuf, tetapi karena itu adalah contoh dari
sejumlah besar masalah pengendalian konkuren. Ini adalah representasi sederhana dari kebutuhan untuk mengalokasikan beberapa
sumber daya di antara beberapa proses dengan cara yang bebas dari deadlock dan kelaparan.
Satu solusi sederhana adalah mewakili setiap sumpit dengan sebuah semaphore. Seorang filsuf mencoba untuk mengambil sumpit
dengan mengeksekusi operasi tunggu pada semaphore tersebut; ia melepaskan sumpitnya dengan mengeksekusi operasi sinyal
pada semaphore yang sesuai. Dengan demikian, data yang dibagikan adalah semaphore sumpit; di mana semua elemen dari
sumpit diinisialisasi menjadi 1.
Meskipun solusi ini menjamin bahwa tidak ada dua tetangga yang makan secara bersamaan,
Namun, itu harus ditolak karena memiliki kemungkinan menciptakan kebuntuan. Misalkan bahwa semua lima
para filsuf menjadi lapar secara bersamaan, dan masing-masing mengambil sumpit kiri mereka. Semua elemen sumpit
akan sekarang sama dengan 0. Ketika setiap filsuf mencoba mengambil sumpit kanannya, dia akan tertunda selamanya.
Gunakan solusi asimetris; yaitu, seorang filsuf ganjil terlebih dahulu mengambil sumpit kirinya dan kemudian sumpitnya yang kanan.
sumpit kanan, sementara seorang filsuf yang seimbang mengambil sumpit kanannya terlebih dahulu dan kemudian sumpit kirinya. Akhirnya,
setiap solusi yang memuaskan untuk masalah filosofi makan harus melindungi terhadap kemungkinan bahwa salah satu dari
para filsuf akan mati kelaparan.
Monitors:
Monitor adalah sebuah konstruksi sinkronisasi yang diciptakan untuk mengatasi masalah yang disebabkan oleh semaphore.
seperti kesalahan penjadwalan.
Monitors are abstract data types and contain shared data variables and procedures. The shared data variables
tidak dapat diakses langsung oleh suatu proses dan prosedur diperlukan untuk memungkinkan satu proses mengakses bersama
variabel data pada satu waktu.
}
.
.
.
Prosedur Pn(…..)
{
}
Kode inisialisasi(…..)
{
}
}
Hanya satu proses yang dapat aktif dalam monitor pada satu waktu. Proses lain yang perlu mengakses yang dibagikan
variabel dalam pemantau harus berbaris dalam antrean dan hanya diberikan akses ketika proses sebelumnya
lepaskan variabel yang dibagikan.
Modul-4
Deadlocks - System Model, Dead locks Characterization, Methods for Handling Deadlocks
Pencegahan Deadlock, Penghindaran Deadlock, Deteksi Deadlock, dan Pemulihan dari Deadlock.
Catatan Kelas
Pemrograman Shell: Konsep shell, Jenis-jenis shell, Editor untuk pemrograman shell (mis. vi)
dasar-dasar pemrograman Shell.
Catatan LAB
Jadwal Disk:
Waktu seek adalah waktu yang dibutuhkan untuk lengan disk memindahkan kepala ke silinder yang mengandung data yang diinginkan
sektor. Latensi rotasi adalah waktu yang dihabiskan untuk menunggu disk berputar sektor yang diinginkan ke kepala disk.
Bandwidth disk adalah total jumlah byte yang ditransfer dibagi dengan total waktu antara permintaan pertama.
untuk layanan dan penyelesaian transfer terakhir.
Kita dapat meningkatkan waktu akses dan bandwidth dengan menjadwalkan pelayanan I/O disk
permintaan dalam urutan yang baik. Beberapa algoritma ada untuk menjadwalkan pelayanan permintaan I/O disk sebagai berikut:
Jadwal FCFS
Bentuk penjadwalan yang paling sederhana adalah penjadwalan first-in-first-out (FIFO), yang memproses item dari
antrian dalam urutan berurutan. Kami mengilustrasikannya dengan antrian permintaan (0-199):