Swap manajemen ruang selama paging permintaan murni

12

Berikut ini adalah keraguan yang saya temui saat melakukan tugas rumah OS - namun, tampaknya lebih berbasis konsep daripada pertanyaan pengkodean langsung, jadi IMHO saya tidak berpikir tag pekerjaan rumah sesuai untuk ini.

Dalam skema paging permintaan murni untuk beberapa proses yang berjalan pada saat yang sama, mengingat jumlah RAM dan memori Swap yang tetap, apa yang terjadi dalam 2 kasus berikut menggunakan ruang swap, saat

  1. Suatu proses menemukan kesalahan halaman, dan tidak ada frame gratis yang tersedia di RAM, karenanya membutuhkan salah satu halaman dari chunk of Kernel Frames dari proses untuk ditulis untuk ditukar (untuk kesederhanaan, saya tidak mempertimbangkan salinannya kasus -on-tulis). Secara eksplisit, di mana di ruang Swap mana frame ini akan ditulis, dan struktur data apa yang perlu diperbarui untuk itu?

  2. Ketika suatu proses perlu halaman-di halaman tertentu, di mana itu terlihat dalam memori Swap, dan bagaimana ia tahu jika halaman tertentu hadir di Swap sama sekali?

Seperti yang dapat Anda bayangkan, saya mengalami kesulitan memahami bagaimana cara mengelola ruang Swap selama skema manajemen permintaan murni, dan struktur data apa yang penting. Akan lebih bagus jika Anda bisa merujuk ke tautan apa pun dalam jawaban Anda (saya mencari di "Konsep Sistem Operasi - edisi ke 8 oleh Silberschatz, saya tidak dapat menemukan jawaban eksplisit untuk pertanyaan saya).

TCSGrad
sumber
3
Pertanyaan CS hard-core yang bagus!
Dave Clarke

Jawaban:

8

Untuk menjawab pertanyaan ini saya akan mengunjungi beberapa pemahaman prasyarat. Paging permintaan murni tidak dapat dicapai tanpa dukungan perangkat keras. Semua arsitektur komputer modern mendukung paging, namun banyak yang memiliki detail implementasi yang berbeda.

Prosesor x86 menggunakan apa yang disebut tabel halaman untuk melacak ruang alamat virtual dan pemetaan halaman, serta bit tentang hak akses dan, lebih relevan, apakah halaman itu bahkan ada dalam memori fisik atau tidak . Pelanggaran memicu kesalahan halaman yang terjebak oleh OS.

Untuk informasi lebih lanjut tentang itu, lihat artikel ini .

Untuk menjawab pertanyaan tentang pertukaran halaman, pertama-tama kita harus mengunjungi pertanyaan tentang bagaimana sistem operasi melacak halaman apa yang digunakan oleh proses apa dan bagaimana mereka dialokasikan. Ada banyak struktur data yang berbeda yang dapat digunakan untuk itu. Array bit datar menandai apakah bingkai dialokasikan atau tidak adalah satu arah. Daftar atau tumpukan yang ditautkan adalah hal lain. Dengan paging permintaan murni, halaman yang dialokasikan tidak benar-benar ditandai sebagai hadiah saat mereka dialokasikan. Ini memiliki efek bahwa tidak ada ram fisik yang disisihkan untuk suatu proses sampai benar-benar menulis kepadanya. Setelah itu, perangkat keras melempar kesalahan yang dijebak OS, dan kemudian OS menggunakan algoritma swapping jika tidak ada halaman fisik yang tersedia untuk ditugaskan ke halaman virtual yang sudah dialokasikan.

Untuk informasi lebih lanjut tentang alokasi bingkai halaman, lihat di sini . Di sana Anda akan melihat gambaran umum umum dari beberapa struktur data yang sesuai.

Setelah algoritma yang sesuai untuk alokasi halaman diimplementasikan, yang lain untuk mengalokasikan ruang disk untuk bertukar harus dipilih. Windows, sebagai contoh, secara historis menggunakan file flat dalam sistem file untuk pertukaran halaman. Saya akan membayangkan bahwa untuk setiap node di datastructure melacak halaman yang dialokasikan ada pointer yang dikaitkan ke offset dalam file, menunjukkan posisi halaman dalam disk. Sistem operasi mirip Unix secara tradisional menggunakan partisi terpisah untuk pertukaran halaman yang bisa dibilang lebih cepat karena tidak ada lapisan sistem file.

Dimungkinkan juga untuk menceraikan struktur data swapping dari algoritma alokasi, namun keduanya terkait sehingga hal ini mungkin tidak sering dilakukan.

Saya harap jawaban pertanyaan Anda terlepas dari relatif singkatnya saya memperlakukannya. Saya menemukan bahwa cara terbaik untuk belajar tentang sistem operasi adalah dengan menyelami detail spesifik arsitektur yang kadang-kadang tidak menyenangkan yang dapat ditemukan di situs-situs seperti wiki.osdev.org dan www.osdever.net yang secara khusus berurusan dengan pembuatan OS hobi dan memberikan tutorial yang sangat baik pada detail seperti itu.

Dougvj
sumber
Ya, sekarang saya mengerti bagaimana detail struktur data dll dapat sangat bervariasi antara OS - +1 untuk tautan ke osdev.org!
TCSGrad