Apa yang menentukan ukuran halaman dan ukuran cluster?

2

Apakah ukuran halaman memori ditentukan oleh RAM itu sendiri, atau oleh OS? Yaitu, apakah ukuran halaman untuk RAM sama untuk semua OS yang menggunakan RAM?

Apakah ukuran sekelompok sistem file ditentukan oleh sistem file itu sendiri, atau oleh OS yang menggunakan sistem file? Sebagai contoh, apakah ukuran cluster partisi ntfs sama ketika partisi digunakan di Linux dan di bawah Windows?

Terima kasih.

Tim
sumber
Tolong jangan melewati posting: unix.stackexchange.com/q/176963/7285
psusi
@psusi - Anda mungkin bermaksud menandai pos lain ini daripada yang ini.
serbuk gergaji
@sawdust, kenapa ya, Anda benar.
psusi

Jawaban:

5

Ukuran halaman memori
Kendala pada ukuran halaman memori terutama adalah perangkat keras dan kriteria kinerja MMU (Memory management Unit). Jelas ukuran halaman yang dipilih harus didukung oleh MMU (yaitu perangkat keras pemetaan halaman yang menyediakan terjemahan memori virtual). Ukuran halaman dipilih untuk jumlah kode atau data yang harus ditukar masuk atau keluar ketika kesalahan halaman terjadi (fungsi kecil tidak ada dalam memori, jadi apakah kita menukar data dan membaca hanya dalam 1K kode atau pergi untuk 8K dari kode?), dan biaya transfer kuantitas kode / data (misalnya membaca di dua sektor lebih cepat daripada membaca 16 sektor).
Secara historis 4KiB telah menjadi keseimbangan yang cocok untuk banyak sistem. Ukuran aktual yang digunakan ditentukan dalam kode memori virtual OS.

Ukuran
cluster Ukuran cluster adalah murni unit sistem file, dan istilah "cluster" pada dasarnya adalah terminologi Microsoft. Istilah generik adalah unit alokasi dalam sistem file. Unit alokasi adalah intrinsik untuk instalasi sistem file tertentu (yaitu satu partisi NTFS dapat memiliki ukuran cluster 4 KiB dan partisi NTFS lain pada disk drive yang sama dapat memiliki 64KiB cluster).

Unit alokasi sistem file terutama untuk pembukuan sektor disk bebas (mis. Tidak dialokasikan) versus sedang digunakan (mis. Dialokasikan untuk file dan direktori) (di partisi). Setiap file terdiri dari daftar unit alokasi yang dipesan (mis. Cluster).

Ukuran alokasi dipilih / ditentukan pada saat pembuatan filesystem (yaitu pemformatan), dan harus didasarkan pada sejumlah sektor (tetapi lebih disukai kekuatan 2), karena ukuran sektor adalah unit dasar dari akses dan disk fisik I / O. Ukuran alokasi yang kecil (seperti hanya 1 sektor) cenderung memiliki dampak yang lebih negatif (daripada positif, yaitu ruang kosong yang kurang terbuang) pada kinerja sistem file (dan disk), seperti tabel alokasi yang lebih besar, pembukuan yang lebih banyak. Ukuran alokasi yang kecil juga akan membatasi pengalamatan alokasi dan total kapasitas sistem file. Ukuran alokasi yang besar bermanfaat ketika filesystem harus menjangkau partisi besar dan / atau ukuran file tipikal akan besar (ukuran cluster yang besar dapat mengurangi fragmentasi) tetapi dengan mengorbankan ruang slack yang lebih terbuang.

Perhatikan bahwa disk I / O tidak harus dilakukan dalam satuan ukuran alokasi (mis. Jika file kurang dari sektor 512-byte, OS dapat memilih untuk hanya membaca sektor pertama alih-alih seluruh kluster). Tetapi setiap OS yang mengakses sistem file harus mematuhi ukuran alokasi intrinsiknya (yaitu ukuran alokasi tidak dapat diubah).

Lihat juga untuk apa sektor disk? dan Kelemahan dari ukuran unit alokasi yang kecil

serbuk gergaji
sumber
1
OS biasanya membaca beberapa halaman sekaligus untuk mengambil keuntungan dari efisiensi yang lebih tinggi dalam melakukannya. Oleh karena itu, pilihan ukuran halaman tidak ada hubungannya dengan kinerja IO, melainkan ukuran tabel halaman. Semakin kecil ukuran halaman, semakin banyak entri yang dibutuhkan tabel halaman untuk menggambarkan memori virtual, sehingga Anda menghabiskan lebih banyak memori pada tabel halaman. Namun halaman yang lebih besar, berarti Anda memiliki lebih sedikit fleksibilitas dalam membagi memori itu antara file yang berbeda atau bagian dengan izin yang berbeda.
psusi
1
CPU modern juga mendukung halaman majemuk besar (4 MiB atau 2 MiB) yang dapat digunakan untuk menyimpan entri tabel halaman untuk sejumlah besar memori virtual dengan izin dan file dukungan yang sama. Linux memiliki kemampuan untuk menggunakannya secara otomatis di mana sesuai atau program dapat secara eksplisit meminta mereka ketika mengalokasikan memori. Lebih sedikit entri tabel halaman juga memiliki peningkatan kinerja karena lebih mudah dalam buffer lookaside terjemahan sehingga cpu cenderung tidak perlu membuang waktu untuk mengambilnya dari ram.
psusi
@sawdust Terima kasih. (1) Wikipedia mengatakan "Ukuran halaman biasanya ditentukan oleh arsitektur prosesor." Jadi, apakah ukuran halaman memori ditentukan oleh CPU? Memori mungkin memiliki ukuran halaman yang berbeda ketika digunakan oleh CPU yang berbeda? (2) Anda mengatakan bahwa MMU membatasi ukuran halaman, dan jika saya benar, MMU adalah bagian dari CPU, jadi apakah balasan Anda konsisten dengan Wikipedia? (3) Apakah OS tidak terlibat dalam menentukan ukuran halaman?
Tim
(1) Hanya jika ukuran halaman diperbaiki dalam HW. Kalau tidak, OS memiliki kendali atas ukuran halaman (dalam batasan apa pun yang dipaksakan oleh HW). Tidak yakin apa yang Anda maksud dengan "memori". Seperti DIMM? Kalau begitu, ya. (2) Ya, MMU biasanya terintegrasi dengan CPU. (3) OS terlibat dalam menentukan ukuran halaman, sebagaimana dinyatakan dalam baris terakhir paragraf saya.
serbuk gergaji