GNU/Linux >> Belajar Linux >  >> Linux

Apakah fitur halaman-ke-disk yang dibicarakan Linus dalam otobiografinya pada dasarnya adalah konsep pertukaran yang kita gunakan saat ini?

Ya, ini bertukar secara efektif. Mengutip catatan rilis untuk 0.12:

Memori virtual.

Selain program "mkfs", sekarang ada program "mkswap" di root disk. Sintaksnya identik:"mkswap -c /dev/hdX nnn", dan lagi:ini menulis di atas partisi, jadi berhati-hatilah. Menukar kemudian dapat diaktifkan dengan mengubah kata pada offset 506 di gambar boot ke perangkat yang diinginkan. Gunakan program yang sama seperti untuk menyetel sistem file root (tetapi ubah offset 508 menjadi 506 tentunya).

CATATAN! Ini telah diuji oleh Robert Blum, yang memiliki mesin 2M, dan memungkinkan Anda menjalankan gcc tanpa banyak memori. NAMUN, saya harus berhenti menggunakannya, karena ruang disk saya dimakan oleh beta-gcc-2.0, jadi saya ingin mendengar bahwa itu masih berfungsi:Saya sama sekali tidak dapat membuat partisi aswap bahkan untuk pengujian yang belum sempurna sejak sekitar christmastime.Dengan demikian, perubahan baru mungkin hanya menjadi bumerang pada VM, tetapi saya meragukannya.

Di 0.12, paging digunakan untuk sejumlah fitur, tidak hanya bertukar ke perangkat:pemuatan permintaan (hanya memuat halaman dari biner saat digunakan), berbagi (berbagi halaman umum di antara proses).


Ya, itulah konsep yang dikenal sebagai paging atau swapping. (Dahulu kala istilah ini memiliki arti yang sedikit berbeda, tetapi di abad ke-21, istilah ini identik kecuali mungkin dalam konteks beberapa sistem operasi non-Unix.)

Agar jelas, bertukar bukanlah fitur inovatif:sebagian besar sistem Unix yang "serius" memilikinya, dan fiturnya lebih tua dari Unix. Apa yang dilakukan pertukaran untuk Linux adalah mengubahnya menjadi Unix yang “serius”, sedangkan MINIX dimaksudkan untuk tujuan pendidikan.

Bertukar hari ini masih konsep yang sama. Heuristik untuk memutuskan halaman mana yang akan disimpan dan kapan harus menyimpannya menjadi jauh lebih rumit, tetapi prinsip dasarnya tetap ada.


Menukar adalah konsep yang mendahului memori virtual dan bahkan perlindungan memori:itu hanya berarti menempatkan proses pada disk untuk memberi ruang bagi yang lain. Unix asli memiliki dua keanehan dalam hal itu:program "teks bersama" yang menyimpan kode program hanya sekali dalam memori dan menukar bagian data saja. Dan itu memiliki panggilan sistem "fork" yang menukar proses ke disk tanpa mengganti gambar memori dan sebaliknya menjaga salinan (anak) tetap berjalan.

Halaman-ke-disk, sebagai kebalikan dari pertukaran, memungkinkan proses berjalan yang tidak sesuai dengan memori fisik. Ini membutuhkan semua memori yang dapat dilindungi, pemetaan memori dari alamat virtual ke alamat fisik, dan mekanisme kesalahan halaman yang dapat dimulai ulang yang akan memungkinkan untuk mengubah pemetaan dari alamat virtual yang tidak dipetakan ke alamat fisik yang dapat dipilih secara wajar dan melanjutkan perintah yang harus dibatalkan karena dari pemetaan yang hilang.

UNIX dapat berjalan pada 68000 prosesor (termasuk bertukar) tanpa MMU, dan memanfaatkan MMU dengan baik jika tersedia untuk perlindungan memori, tetapi butuh 68010 untuk benar-benar memiliki mekanisme yang memungkinkan untuk melanjutkan program setelah kesalahan halaman.

80386 dalam banyak hal merupakan desain yang jelek dan ketinggalan jaman. Namun MMU bawaannya dan kemampuan untuk melakukan page-fault dengan benar membuatnya lebih layak untuk sistem mirip UNIX yang tidak hanya dapat bertukar tetapi juga ke page-to-disk.

Ini adalah semacam ironi sejarah bahwa pengorbanan silikon yang besar ini (MMU yang lengkap dan desain CPU berkemampuan virtual membutuhkan sedikit ruang mati) untuk dewa sistem modern terutama dilakukan oleh seorang penghobi, dan " ikan besar" seperti Xenix dan OS/2 akhirnya jatuh ke pinggir jalan.

Meskipun Anda dapat menyebut "tidak ada halaman yang dimasukkan dan tidak dijadwalkan untuk dijalankan" sama dengan "ditukar", itu sebenarnya bukan proposisi semua atau tidak sama sekali seperti arti asli dari "ditukar".

Perbedaan hilang dalam beberapa dekade sejak saat itu karena paging permintaan jauh lebih berguna dan diskalakan lebih baik daripada pertukaran biasa yang menggantikannya setelah fitur CPU dan MMU yang diperlukan menjadi hal yang biasa, tetapi pelambatan dan pukulan yang terkait dengan keduanya dibuat untuk hal yang serupa. lihat-dan-rasakan.


Linux
  1. Cara menggunakan perintah grep Linux

  2. Cara menggunakan perintah history di Linux

  3. Berapa banyak RAM yang digunakan kernel?

  1. Kernel Linux:5 inovasi teratas

  2. Bagaimana cara menggunakan fitur data inline ext4 yang baru? (menyimpan data langsung di inode)

  3. Apa gunanya memiliki bagian kernel di ruang memori virtual proses Linux?

  1. Bagaimana cara menggunakan perintah nama dasar?

  2. Apa konsep vruntime di CFS

  3. Mengapa menggunakan shm_open?