Apakah yang digunakan linux untuk melaksanakan memori maya?

青灯夜游
Lepaskan: 2022-11-10 19:34:01
asal
2500 orang telah melayarinya

Pelaksanaan memori maya perlu berdasarkan kaedah pengurusan memori yang diperuntukkan secara diskret. Terdapat tiga kaedah pelaksanaan: 1. Kaedah pengurusan storan paging 2. Kaedah pengurusan storan bersegmen; kaedah pengurusan. Tidak kira kaedah mana yang digunakan, sokongan perkakasan tertentu diperlukan: 1. Kapasiti memori dan memori luaran tertentu 2. Mekanisme jadual halaman (atau mekanisme jadual segmen), sebagai struktur data utama 3. Mekanisme gangguan, apabila pengguna; keperluan program Jika bahagian yang diakses masih belum dipindahkan ke dalam memori, gangguan akan berlaku 4. Mekanisme penukaran alamat, penukaran dari alamat logik ke alamat fizikal.

Apakah yang digunakan linux untuk melaksanakan memori maya?

Persekitaran pengendalian tutorial ini: sistem linux7.3, komputer Dell G3.

1. Gambaran keseluruhan memori maya

Pengurusan storan tradisional menyimpan berbilang proses dalam ingatan pada masa yang sama untuk membenarkan pengaturcaraan berbilang. Kesemuanya mempunyai dua ciri yang sama:

  • Sekali: Kerja mesti dimuatkan ke dalam ingatan sekaligus Selepas itu , untuk mula berlari. Ini akan membawa kepada dua situasi: 1) Apabila kerja besar dan tidak boleh dimuatkan ke dalam ingatan, tugas itu tidak akan dapat dijalankan
    2) Apabila sejumlah besar kerja diperlukan untuk dijalankan, perlu dibayar untuk ingatan yang tidak mencukupi untuk menampung Untuk semua kerja, hanya beberapa kerja boleh dijalankan dahulu, mengakibatkan pengurangan dalam multiprogramming.
  • Residensi: Selepas kerja dimuatkan ke dalam ingatan, ia akan sentiasa bermastautin dalam ingatan , dan tiada bahagian daripadanya akan ditukar, Sehingga kerja selesai . Proses berjalan akan disekat menunggu I/O dan mungkin berada dalam keadaan menunggu jangka panjang.
Oleh itu, banyak atur cara (data) yang tidak digunakan semasa operasi atur cara atau tidak digunakan buat sementara waktu menduduki ruang memori yang besar, dan beberapa kerja yang perlu dijalankan tidak boleh dimuatkan dan dijalankan, yang jelas membazirkan sumber yang berharga.

1.1 Definisi dan ciri ingatan maya

Berdasarkan prinsip

lokaliti , apabila atur cara loaded , anda boleh memuatkan bahagian program ke dalam memori dan biarkan selebihnya dalam memori luaran untuk memulakan pelaksanaan program. Semasa pelaksanaan program, apabila maklumat yang diakses tiada dalam memori, sistem pengendalian akan memindahkan bahagian yang diperlukan ke dalam memori , dan kemudian terus melaksanakan program. Sebaliknya, sistem pengendalian menukar kandungan yang tidak digunakan buat sementara waktu dalam memori kepada memori luaran , dengan itu membebaskan ruang untuk menyimpan maklumat yang akan dipindahkan ke dalam memori.

Dengan cara ini, memandangkan sistem menyediakan

pemuatan separa, pemuatan permintaan dan fungsi penggantian (telus sepenuhnya kepada pengguna), pengguna merasakan seolah-olah ada Memori yang jauh lebih besar daripada ingatan fizikal sebenar dipanggil ingatan maya.

Saiz

memori maya ditentukan oleh struktur alamat komputer, dan bukan jumlah mudah memori dan memori luaran.

Memori maya mempunyai tiga ciri utama berikut:

  • Berbilang kali: Tidak perlu memasang semuanya sekaligus apabila kerja sedang berjalan ke dalam memori, tetapi membenarkannya dibahagikan kepada beberapa kali dan dimuatkan ke dalam memori untuk pelaksanaan.
  • Kebolehtukaran: Tidak perlu sentiasa berada dalam ingatan semasa kerja sedang berjalan, tetapi membenarkan pertukaran masuk dan keluar semasa menjalankan kerja.
  • Virtuality: Secara logiknya, kembangkan kapasiti memori supaya kapasiti memori yang dilihat oleh pengguna jauh lebih besar daripada kapasiti memori sebenar.

1.2 Pelaksanaan teknologi memori maya

ingatan maya membolehkan

sesuatu kerja dipindahkan ke dalam ingatan beberapa kali .

Apabila menggunakan peruntukan berterusan, sebahagian besar ruang memori akan berada dalam keadaan terbiar sementara atau "kekal", mengakibatkan pembaziran sumber memori yang serius, dan ia tidak akan dapat mengembangkan memori secara logik kapasiti.

Oleh itu, pelaksanaan ingatan maya perlu berdasarkan

peruntukan diskret kaedah pengurusan memori . Terdapat tiga cara untuk melaksanakan ingatan maya:

  • Minta pagingPengurusan storan
  • Minta segmentasiPengurusan storan
  • Halaman segmen Pengurusan storan
Tidak kira kaedah yang digunakan,

sokongan perkakasan tertentu diperlukan. Sokongan biasanya diperlukan termasuk aspek berikut:

    Jumlah memori dan storan luaran tertentu.
  • Mekanisme jadual halaman (atau mekanisme jadual segmen), sebagai struktur data utama.
  • Mekanisme sampukan, apabila bahagian yang hendak diakses oleh program pengguna belum dipindahkan ke dalam ingatan, sampukan terhasil.
  • Mekanisme penukaran alamat, penukaran alamat logik kepada alamat fizikal.

Kaedah peruntukan berterusan: merujuk kepada memperuntukkan ruang memori berterusan untuk program pengguna.

  • Peruntukan partition tetap: Bahagikan ruang memori kepada beberapa kawasan bersaiz tetap Hanya satu kerja dimuatkan ke dalam setiap partition dan berbilang kerja boleh dilaksanakan secara serentak. Kekurangan fleksibiliti akan menghasilkan banyak pemecahan dalaman, dan penggunaan memori sangat rendah.
  • Peruntukan partition dinamik: Peruntukkan ruang memori secara dinamik kepada proses mengikut keperluan sebenar. Apabila kerja dimuatkan ke dalam memori, memori yang tersedia dibahagikan kepada kawasan berterusan untuk kerja itu, dan saiz partition betul-betul sesuai untuk saiz kerja. Akan terdapat banyak serpihan luaran.

Kaedah peruntukan diskrit: Muatkan proses secara diskret ke dalam ke dalam banyak sekatan bukan bersebelahan untuk menggunakan memori sepenuhnya.

Konsep storan halaman:

  • Halaman, bingkai halaman dan blok. Blok dalam proses dipanggil halaman atau halaman (Halaman) , dengan nombor halaman dalam memori dipanggil Bingkai Halaman (Bingkai Halaman, bingkai halaman = blok memori = blok fizikal = halaman fizikal ) , dengan nombor bingkai halaman. Memori luaran juga dibahagikan dalam unit yang sama, secara langsung dipanggil Sekat. Apabila proses dilaksanakan, ia perlu memohon untuk ruang ingatan utama, yang bermaksud bahawa setiap halaman mesti diperuntukkan bingkai halaman yang tersedia dalam ingatan utama, yang mewujudkan surat-menyurat satu-dengan-satu antara halaman dan bingkai halaman. Setiap halaman tidak perlu disimpan secara berturut-turut dan boleh diletakkan dalam bingkai halaman bukan bersebelahan.
  • Struktur alamat: Bahagian pertama ialah nombor halaman P dan bahagian terakhir ialah offset intra-halaman W. Panjang alamat ialah 32 bit, di mana bit 0~11 ialah alamat intra-halaman, iaitu saiz setiap halaman ialah 4KB bit 12~31 ialah nombor halaman, dan ruang alamat membenarkan sehingga 2^20; muka surat.
  • Jadual halaman. Untuk memudahkan mencari blok fizikal yang sepadan dengan setiap halaman proses dalam ingatan, sistem mencipta jadual halaman untuk setiap proses untuk merekodkan nombor blok fizikal yang sepadan dengan halaman dalam ingatan, jadual halaman Umumnya disimpan dalam ingatan . Selepas jadual halaman dikonfigurasikan, apabila proses dilaksanakan, nombor blok fizikal setiap halaman dalam memori boleh didapati dengan mencari jadual. Dapat dilihat bahawa peranan jadual halaman adalah untuk melaksanakan pemetaan alamat dari nombor halaman ke nombor blok fizikal .

2. Minta pengurusan paging untuk melaksanakan memori maya

Minta paging Ia kini merupakan kaedah yang paling biasa digunakan untuk melaksanakan ingatan maya.

Sistem paging permintaan adalah berdasarkan sistem paging asas Untuk menyokong fungsi memori maya, fungsi paging permintaan dan penggantian halaman<. ditambah.>

Dalam sistem halaman permintaan, hanya sebahagian daripada halaman yang diperlukan pada masa ini diperlukan untuk dimuatkan ke dalam memori sebelum kerja boleh dimulakan.

Semasa pelaksanaan kerja, apabila halaman yang hendak diakses tiada dalam ingatan, ia boleh dibawa masuk melalui fungsi paging Pada masa yang sama, halaman yang tidak digunakan buat sementara waktu juga boleh ditukar kepada storan luaran melalui fungsi penggantian untuk membebaskan ruang memori.

Untuk melaksanakan paging permintaan, sistem mesti menyediakan sokongan perkakasan tertentu. Selain sistem komputer yang memerlukan

kapasiti memori dan storan luaran tertentu, ia juga memerlukan mekanisme jadual halaman, mekanisme gangguan halaman yang tiada dan mekanisme penukaran alamat.

2.1 Mekanisme jadual halaman

Mekanisme jadual halaman sistem halaman permintaan adalah berbeza daripada sistem halaman permintaan tidak bermula sebelum kerja dijalankan Semuanya perlu dimuatkan ke dalam memori sekaligus.

Oleh itu, semasa proses menjalankan kerja, pasti akan berlaku situasi di mana halaman yang hendak diakses tidak dalam ingatan Bagaimana untuk mengesan dan menangani situasi ini adalah dua masalah asas yang meminta paging sistem mesti selesaikan. Untuk tujuan ini, empat medan ditambahkan pada item jadual halaman permintaan, iaitu:

Minta entri jadual halaman dalam sistem paging
Nombor halaman
请求分页系统中的页表项
页号 物理块号 状态位 P 访问字段 A 修改位 M 外存地址
Blok Fizikal nombor Status bit P Medan akses A Ubah suai bit M Alamat storan luaran
  • Status bit P: Digunakan untuk menunjukkan sama ada halaman telah dipindahkan ke dalam ingatan untuk rujukan apabila program mengaksesnya.
  • Medan akses A: digunakan untuk merekodkan bilangan kali halaman ini telah diakses dalam tempoh masa, atau berapa lama halaman ini tidak diakses baru-baru ini, untuk algoritma penggantian tukar rujukan masa halaman.
  • Bit pengubahsuaian M: Menunjukkan sama ada halaman telah diubah suai selepas dimuatkan ke dalam memori.
  • Alamat memori luaran : Digunakan untuk menunjukkan alamat halaman pada memori luaran, biasanya nombor blok fizikal, untuk rujukan semasa memuatkan halaman.

2.2 Mekanisme Gangguan Hilang Halaman

Dalam sistem paging permintaan, apabila halaman yang hendak diakses tiada dalam memori, gangguan halaman hilang dijana, meminta sistem pengendalian memindahkan halaman yang hilang ke dalam memori.

Pada masa ini, proses dengan kesalahan halaman harus disekat (bangun selepas paging selesai jika terdapat blok percuma dalam memori, peruntukkan blok, muatkan halaman untuk dimuatkan ke dalam blok). , dan ubah suai jadual halaman yang sepadan Entri jadual halaman jika tiada blok percuma dalam memori pada masa ini, halaman tertentu mesti dihapuskan (jika halaman yang dihapuskan telah diubah suai semasa tempoh ingatan, ia mesti ditulis kembali ke luaran; ingatan).

Gangguan kerosakan halaman juga perlu dialami sebagai gangguan, seperti melindungi persekitaran CPU, menganalisis punca gangguan, memindahkan kepada pengendali gangguan gangguan halaman, dan memulihkan persekitaran CPU. Tetapi berbanding dengan sampukan umum, ia mempunyai dua perbezaan yang jelas berikut:

    Isyarat sampukan dijana dan diproses semasa pelaksanaan arahan, bukannya selepas arahan dilaksanakan, yang merupakan sampukan dalaman.
  • Semasa pelaksanaan arahan, gangguan berbilang halaman mungkin berlaku.

2.3 Mekanisme penukaran alamat

Minta mekanisme penukaran alamat dalam sistem paging, yang berdasarkan mekanisme penukaran alamat dalam sistem paging , dibentuk dengan menambah fungsi tertentu untuk melaksanakan ingatan maya.

Apakah yang digunakan linux untuk melaksanakan memori maya?Proses transformasi alamat dalam paging permintaan

Apabila melakukan penukaran alamat, mula-mula cari jadual pantas:

  • Jika halaman yang hendak diakses ditemui, bit akses dalam entri jadual halaman diubah suai ( arahan tulis juga Bit pengubahsuaian mesti ditetapkan semula), dan kemudian nombor blok fizikal dan alamat intra-halaman yang diberikan dalam entri jadual halaman digunakan untuk membentuk alamat fizikal.
  • Jika entri jadual halaman halaman tidak dijumpai, anda harus mencari jadual halaman dalam memori, dan kemudian bandingkan bit status P dalam entri jadual halaman untuk melihat sama ada halaman telah dipindahkan ke dalam memori. Jika tidak, mesej ralat akan muncul Page fault interrupt, meminta agar halaman dipindahkan dari memori luaran ke dalam memori.

Jadual halaman menunjukkan surat-menyurat antara nombor halaman dalam alamat logik dan nombor blok fizikal memori utama yang diduduki. Pengurusan storan halaman menggunakan jadual halaman untuk melaksanakan terjemahan alamat semasa memuatkan operasi menggunakan penempatan semula dinamik.


Jadual pantas (TLB, Penimbal Pandang Tepi Terjemahan) ialah jadual halaman separa yang disimpan dalam memori cache. Sebagai Cache jadual halaman proses semasa, fungsinya adalah serupa dengan jadual halaman, tetapi mempercepatkan kelajuan pemetaan alamat dan meningkatkan kadar akses.

Disebabkan penggunaan jadual halaman untuk terjemahan alamat, CPU perlu mengakses memori utama dua kali (menyoal jadual halaman dan mengakses alamat destinasi) apabila membaca dan menulis data memori.

Dengan jadual pantas, kadangkala memori cache dan memori utama hanya perlu diakses sekali sahaja, yang boleh mempercepatkan carian dan meningkatkan kelajuan pelaksanaan arahan.

3. Algoritma penggantian halaman

Apabila proses berjalan, jika halaman yang diakses tiada dalam memori, ia perlu dipindahkan ke dalamnya , tetapi memori telah Apabila tiada ruang kosong , adalah perlu untuk memuatkan halaman program atau data daripada memori dan menghantarnya ke kawasan swap cakera.

Algoritma yang memilih halaman untuk dipanggil dipanggil algoritma penggantian halaman. Algoritma penggantian halaman yang baik seharusnya mempunyai kekerapan penggantian halaman yang rendah, iaitu halaman yang tidak akan diakses lagi pada masa hadapan atau tidak akan diakses untuk masa yang lama pada masa hadapan harus dipanggil terlebih dahulu .

3.1 Algoritma penggantian optimum (OPT)

Algoritma penggantian (Optimal, OPT) terbaik dipilih Halaman yang dihapuskan tidak akan digunakan pada masa hadapan, atau tidak akan diakses untuk tempoh masa yang paling lama Ini boleh memastikan kadar kerosakan halaman yang paling rendah.

Walau bagaimanapun, memandangkan orang pada masa ini tidak dapat meramalkan yang mana antara beribu-ribu halaman dalam ingatan proses itu tidak akan diakses lagi dalam masa yang paling lama pada masa hadapan, oleh itu algoritma ini tidak boleh dilaksanakan , tetapi algoritma penggantian terbaik boleh digunakan untuk menilai algoritma lain .

Anggapkan bahawa sistem memperuntukkan tiga blok fizikal kepada proses, dan pertimbangkan rentetan rujukan nombor halaman berikut:
7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1

Apabila proses sedang berjalan, tiga muka surat 7, 0 dan 1 mula-mula dimuatkan ke dalam memori mengikut urutan. Apabila proses ingin mengakses halaman 2, gangguan halaman berlaku Menurut algoritma penggantian optimum, halaman 7, yang perlu dipindahkan hanya selepas akses ke-18, dipilih dan dihapuskan. Kemudian, apabila halaman 0 diakses, tidak perlu menjana gangguan halaman kerana ia sudah ada dalam ingatan. Apabila halaman 3 diakses, halaman 1 akan dihapuskan berdasarkan algoritma penggantian optimum... dan seterusnya. Daripada rajah itu kita dapat melihat keadaan apabila menggunakan algoritma penggantian optimum.

0
Graf anjakan apabila menggunakan algoritma anjakan optimum
Lawati halaman 7 0 1 2 0 3 0 4 2 3 0 3 2 1 th> 2 0 1 7 0 1 th>
Blok fizikal 1 7 7 7 2
利用最佳置换算法时的置换图
访问页面 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
物理块1 7 7 7 2
2
2

2

2


7

物理块2
0 0 0
0
4

0

0


0

物理块3

1 1
3
3

3

1


1

缺页否











2 2 td> 2 2 7
Blok Fizikal 2 0 0 0 4 0 0 0
Blok Fizikal 3 1 td> 1 3 3 3 1 td> 1 td>
Tiada No halaman

Seperti yang anda lihat, bilangan gangguan kerosakan halaman ialah 9 dan bilangan penggantian halaman ialah 6.

3.2 Algoritma penggantian halaman First-in-first-out (FIFO)

Utamakan halaman yang memasuki memori paling awal , iaitu Halaman yang paling lama berada dalam ingatan.

Algoritma ini mudah untuk dilaksanakan Anda hanya perlu memautkan halaman yang dipindahkan ke dalam memori ke dalam baris gilir mengikut susunan dan tetapkan penunjuk untuk sentiasa menghala ke halaman terawal. Walau bagaimanapun, algoritma ini tidak sesuai untuk peraturan berjalan sebenar proses , kerana beberapa halaman kerap diakses semasa proses.

利用FIFO置换算法时的置换图
访问页面 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
物理块1 7 7 7 2
2 2 4 4 4 0

0 0

7 7 7
物理块2
0 0 0
3 3 3 2 2 2

1 1

1 0 0
物理块3

1 1
1 0 0 0 3 3

3 2

2 2 1
缺页否




Apabila menggunakan algoritma FIFO, 12 penggantian halaman dilakukan, iaitu dua kali ganda lebih banyak daripada algoritma penggantian optimum.

Algoritma FIFO juga akan menghasilkan fenomena abnormal iaitu apabila bilangan blok fizikal yang diperuntukkan meningkat, bilangan ralat halaman tidak berkurangan tetapi bertambah Ini telah ditemui oleh Belady pada tahun 1969, jadi ia dipanggil 🎜>Pengecualian Belady, seperti yang ditunjukkan dalam jadual di bawah.

Lawati halaman 1 2 3 4 1 2 5 1 2 3 4 5
Blok Fizikal 1 1 1 1 4 4 4 5

5 5
Blok Fizikal 2
2 2 2 1 1 1

3 3
Fizik Blok 3

3 3 3 2 2

2 4
Halaman tiada



Perbandingan selepas menambah bilangan blok fizikal
Blok fizikal 1* 1 1 1 1

5 5 5 5 4 4
Blok Fizikal 2*
2 2 2

2 1 1 1 1 5
Blok Fizikal 3*

3 3

3 3 2 2 2 2
Blok Fizikal 4*


4

4 4 4 3 3 3
Halaman Tiada

Hanya algoritma FIFO mungkin mengalami anomali Belady, manakala algoritma LRU dan OPT tidak akan pernah mengalami anomali Belady.

3.3 Algoritma penggantian Paling Kurang Digunakan (LRU)

Paling Kurang Digunakan (LRU, Paling Kurang Digunakan Baru-baru ini ) Algoritma penggantian memilih Halaman yang belum dikunjungi untuk masa yang paling lama dan menghapuskannya . masa terdekat.

Algoritma menetapkan medan lawatan untuk setiap halaman untuk merekodkan masa sejak halaman terakhir dilawati dan memilih halaman sedia ada apabila menghapuskan halaman Yang paling tinggi nilai median akan dihapuskan.

LRU页面置换算法时的置换图
访问页面 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
物理块1 7 7 7 2
2
4 4 4 0

1
1
1

物理块2
0 0 0
0
0 0 3 3

3
0
0

物理块3

1 1
3
3 2 2 2

2
2
7

缺页否







LRU mempunyai prestasi yang lebih baik, tetapi ia memerlukan sokongan perkakasan daftar dan tindanan, yang lebih mahal.

LRU ialah algoritma kelas tindanan. Secara teorinya, boleh dibuktikan bahawa pengecualian Belady adalah mustahil berlaku dalam algoritma tindanan. Algoritma FIFO dilaksanakan berdasarkan baris gilir, bukan algoritma tindanan.

Algoritma penggantian 3.4 Jam (JAM)

Prestasi algoritma LRU hampir dengan OPT, tetapi ia sukar untuk dilaksanakan dan mahal ; FIFO Algoritma ini mudah dilaksanakan, tetapi prestasinya lemah. Oleh itu, pereka sistem pengendalian telah mencuba banyak algoritma, cuba mendekati prestasi LRU dengan overhed yang agak kecil Algoritma sedemikian adalah semua varian algoritma JAM.

Algoritma JAM mudah mengaitkan bit tambahan dengan setiap bingkai, dipanggil bit penggunaan. Apabila halaman pertama kali dimuatkan ke dalam memori utama dan kemudiannya diakses, bit penggunaan ditetapkan kepada 1.

Untuk algoritma penggantian halaman, set bingkai calon untuk penggantian dianggap sebagai penampan bulat dan mempunyai penuding yang dikaitkan dengannya. Apabila halaman diganti, penunjuk ditetapkan untuk menghala ke bingkai seterusnya dalam penimbal.

Apabila tiba masanya untuk menggantikan halaman, sistem pengendalian mengimbas penimbal untuk mencari bingkai pertama dengan bit penggunaan 0. Apabila bingkai dengan bit penggunaan 1 ditemui, sistem pengendalian menetapkan semula bit kepada 0 jika semua bingkai mempunyai bit penggunaan 1, penunjuk melengkapkan kitaran dalam penimbal, mengosongkan semua bit penggunaan dan kekal pada kedudukan asal, menggantikan halaman dalam bingkai. Memandangkan algoritma ini menyemak status setiap halaman secara kitaran, ia dipanggil algoritma CLOCK, juga dikenali sebagai algoritma Not Recently Used (NRU) .

Prestasi algoritma CLOCK agak hampir dengan LRU, dan dengan meningkatkan bilangan bit yang digunakan, algoritma CLOCK boleh dibuat lebih cekap. Dengan menambahkan bit diubah suai yang diubah suai pada bit yang digunakan, algoritma penggantian JAM yang dipertingkatkan diperolehi.

Setiap bingkai berada dalam salah satu daripada empat situasi berikut:

  • belum diakses baru-baru ini dan belum diubah suai (u=0, m=0).

  • telah diakses baru-baru ini tetapi tidak diubah suai (u=1, m=0).

  • belum diakses baru-baru ini, tetapi telah diubah suai (u=0, m=1).

  • baru-baru ini diakses dan diubah suai (u=1, m=1).

Algoritma melaksanakan langkah berikut:

  • Bermula dari kedudukan semasa penuding, imbas penimbal bingkai. Semasa imbasan ini, tiada pengubahsuaian dibuat pada bit penggunaan. Bingkai pertama yang ditemui (u=0, m=0) dipilih untuk diganti.

  • Jika langkah 1 gagal, imbas semula dan cari bingkai (u=0, m=1). Bingkai pertama yang ditemui dipilih untuk diganti. Semasa imbasan ini, untuk setiap bingkai yang dilangkau, bit penggunaannya ditetapkan kepada 0.

  • Jika langkah 2 gagal, penunjuk akan kembali ke kedudukan asalnya dan bit terpakai bagi semua bingkai dalam set akan menjadi 0. Ulangi langkah 1, dan jika perlu, langkah 2. Ini akan mencari bingkai untuk penggantian.

Algoritma CLOCK yang dipertingkatkan adalah lebih baik daripada algoritma CLOCK mudah kerana halaman yang tidak berubah diutamakan apabila menggantikan. Ini menjimatkan masa kerana halaman yang diubah suai mesti ditulis kembali ke sebelum diganti.

4. Strategi peruntukan halaman

4.1 Saiz set pemastautin

Untuk paging Memori maya, sebagai persediaan untuk pelaksanaan, tidak perlu dan tidak boleh membaca semua halaman proses ke dalam ingatan utama, jadi sistem pengendalian mesti memutuskan berapa banyak halaman untuk dibaca. Dalam erti kata lain, berapa banyak ruang memori utama untuk diperuntukkan kepada proses tertentu perlu mengambil kira perkara berikut:

  • Semakin kecil jumlah storan yang diperuntukkan kepada proses , Lebih banyak proses yang boleh berada dalam ingatan utama pada satu-satu masa, lebih cekap penggunaan masa pemproses.

  • Jika proses mempunyai terlalu sedikit halaman dalam ingatan utama, kadar kerosakan halaman akan tetap tinggi walaupun dengan prinsip lokaliti .

  • Jika terdapat terlalu banyak halaman, disebabkan oleh prinsip lokaliti, memperuntukkan lebih banyak ruang ingatan utama kepada proses tertentu tidak akan memberi kesan yang jelas pada kadar ralat daripada proses tersebut.

Berdasarkan faktor-faktor ini, sistem pengendalian moden biasanya menggunakan tiga strategi:

  • Penggantian tempatan peruntukan tetap : It Each proses diperuntukkan sejumlah blok fizikal yang tidak berubah sepanjang larian. Jika kerosakan halaman berlaku semasa proses berjalan, anda hanya boleh memilih satu halaman daripada halaman dalam ingatan proses dan menukarnya , dan kemudian memuatkan halaman yang diperlukan. Sukar untuk menentukan bilangan blok fizikal yang harus diperuntukkan kepada setiap proses apabila melaksanakan strategi ini: terlalu sedikit akan menyebabkan kerosakan halaman yang kerap, dan terlalu banyak akan mengurangkan penggunaan CPU dan sumber lain.

  • Penggantian global peruntukan berubah : Ini adalah strategi penggantian dan peruntukan blok fizikal yang paling mudah, memperuntukkan bilangan blok fizikal tertentu kepada setiap proses dalam sistem , sistem pengendalian itu sendiri juga mengekalkan baris gilir blok fizikal percuma. Apabila kerosakan halaman berlaku dalam proses, sistem mengeluarkan blok fizikal daripada baris gilir blok fizikal percuma dan menetapkannya kepada proses dan memuatkan halaman untuk dimuatkan ke dalamnya.

  • Penggantian setempat peruntukan pembolehubah: Ia memperuntukkan bilangan blok fizikal tertentu untuk setiap proses Apabila ralat halaman berlaku dalam proses, hanya halaman dalam ingatan proses dibenarkan untuk dialih keluar Pilih halaman dan tukarkannya, supaya ia tidak menjejaskan operasi proses lain. Jika proses kerap terlepas halaman semasa proses sedang berjalan, sistem akan memperuntukkan beberapa blok fizikal kepada proses sehingga kadar kehilangan halaman proses cenderung ke tahap yang sesuai; sebaliknya, jika proses sedang berjalan Jika kadar kerosakan halaman sangat rendah, anda boleh dengan sewajarnya mengurangkan bilangan blok fizikal yang diperuntukkan kepada proses tersebut.

4.2 Masa memuatkan halaman

Untuk menentukan sama ada sistem akan memuatkan halaman yang hilang semasa proses berlari ke dalam ingatan Pada masa yang sesuai, dua strategi halaman halaman berikut boleh diguna pakai:

  • Pra-halaman strategi : Menurut prinsip lokaliti, satu halaman Beberapa halaman bersebelahan mungkin lebih cekap daripada memuatkan satu halaman pada satu masa. Tetapi jika kebanyakan halaman yang dimuatkan tidak diakses, ia adalah tidak cekap. Oleh itu, adalah perlu untuk menggunakan berasaskan ramalan strategi pra-halaman untuk pramuat halaman yang dijangka akan diakses dalam masa terdekat ke dalam ingatan. Walau bagaimanapun, kadar kejayaan semasa halaman pra-laraskan hanya kira-kira 50%. Oleh itu, strategi ini digunakan terutamanya apabila proses dimuatkan buat kali pertama, dan pengaturcara menunjukkan halaman mana yang harus dimuatkan dahulu.

  • Minta paging Strategi : Halaman yang proses perlu akses semasa operasi tiada dalam ingatan dan permintaan dibuat , oleh Sistem memuatkan halaman yang diperlukan ke dalam memori. Halaman yang dipindahkan oleh strategi ini pasti akan diakses, dan strategi ini agak mudah untuk dilaksanakan, jadi strategi ini kebanyakannya digunakan dalam kenangan maya semasa. Kelemahannya ialah hanya satu halaman dimuatkan pada satu masa Apabila terdapat banyak halaman dimuatkan masuk dan keluar, overhed I/O yang berlebihan akan dibelanjakan.

4.3 Dari tempat untuk memuatkan halaman

Minta storan luaran dalam paging sistem dibahagikan kepada dua bahagian: kawasan fail untuk menyimpan fail dan kawasan swap untuk menyimpan halaman swap. Kawasan swap biasanya menggunakan kaedah peruntukan berterusan, manakala kawasan fail menggunakan kaedah peruntukan diskret, jadi kelajuan I/O cakera bagi kawasan swap lebih cepat daripada itu daripada kawasan fail. Cepat. Terdapat tiga situasi di mana halaman boleh dipindahkan daripada:

  • Sistem mempunyai ruang kawasan swap yang mencukupi: Anda boleh semua pemindahan masuk dari kawasan swap Halaman yang diperlukan untuk meningkatkan kelajuan halaman. Atas sebab ini, sebelum proses berjalan, fail yang berkaitan dengan proses perlu disalin dari kawasan fail ke kawasan swap.

  • Sistem tidak mempunyai ruang kawasan swap yang mencukupi: Semua fail yang tidak akan diubah suai disalin terus daripada kawasan failMuat masuk (tidak perlu menulis semula apabila menukar keluar). Tetapi bagi bahagian yang mungkin diubah suai, ia mesti dipindahkan ke kawasan swap apabila ia ditukar, dan kemudian dipindahkan semula dari kawasan swap apabila diperlukan kemudian.

  • mod UNIX: Fail yang berkaitan dengan proses diletakkan dalam kawasan fail, jadi halaman yang belum dijalankan harus dimuatkan dari kawasan fail . Halaman yang telah dijalankan sebelum ini tetapi ditukar keluar diletakkan di kawasan swap, jadi harus dimuatkan dari kawasan swap pada kali berikutnya ia dimuatkan. Jika halaman kongsi yang diminta oleh proses dipindahkan ke dalam memori oleh proses lain, tidak perlu memindahkannya dari kawasan swap.

5.1 Jitter halaman (turbulensi) dan set kerja (set pemastautin)

5.1 Jitter halaman (turbulence) )

Salah satu situasi yang paling teruk semasa proses penggantian halaman ialah halaman yang baru ditukar akan ditukar keluar serta-merta, dan halaman yang baru ditukar akan ditukar keluar serta-merta , tingkah laku halaman halaman yang kerap ini dipanggil membelasah, atau membelasah . Jika sesuatu proses menghabiskan lebih banyak masa paging daripada masa pelaksanaan, maka proses itu menjadi meronta-ronta.

Gangguan halaman (jitter) kerap berlaku Sebab utama ialah bilangan halaman yang kerap diakses oleh proses adalah lebih tinggi daripada bilangan bingkai halaman fizikal yang tersedia . Teknologi ingatan maya boleh menyimpan lebih banyak proses dalam ingatan untuk meningkatkan kecekapan sistem. Dalam keadaan mantap, hampir semua memori utama diduduki oleh blok proses, dan pemproses dan sistem pengendalian mempunyai akses terus kepada seberapa banyak proses yang mungkin. Tetapi jika tidak diurus dengan betul, kebanyakan masa pemproses akan dibelanjakan untuk menukar blok, iaitu, meminta operasi memuatkan halaman, dan bukannya melaksanakan arahan proses, yang akan mengurangkan kecekapan sistem.

5.2 Set kerja (set pemastautin)

Set kerja (atau set pemastautin) merujuk kepada set halaman yang perlu diakses oleh proses dalam selang masa tertentu. Halaman yang kerap digunakan perlu berada dalam set kerja, manakala halaman yang sudah lama tidak digunakan dibuang dari set kerja. Untuk mengelakkan kerosakan sistem, anda perlu memilih saiz set kerja yang sesuai.

Prinsip model set kerja adalah untuk membiarkan sistem pengendalian menjejaki set kerja setiap proses dan memperuntukkan blok fizikal kepada proses yang lebih besar daripada set kerjanya. Jika terdapat blok fizikal percuma, anda boleh memindahkan proses lain ke memori untuk menambah bilangan berbilang program. Jika jumlah semua set kerja meningkat untuk melebihi jumlah blok fizikal yang tersedia, sistem pengendalian menjeda proses, melayari halaman dan memperuntukkan blok fizikalnya kepada proses lain untuk mengelakkan daripada meronta-ronta.

Memilih saiz set kerja yang betul akan memberi kesan penting pada penggunaan memori dan daya pemprosesan sistem peningkatan.

6. Ringkasan

Paging kaedah pengurusan dan Segmentasi kaedah pengurusan adalah serupa di banyak tempat, seperti dalam ingatan Ia tidak berterusan dan mempunyai mekanisme terjemahan alamat untuk melaksanakan pemetaan alamat, dsb. Namun begitu, terdapat banyak perbezaan antara kedua-duanya Jadual 3-20 menyenaraikan perbandingan antara kaedah pengurusan paging dan kaedah pengurusan segmentasi dalam pelbagai aspek.

Halaman ialah unit fizikal maklumat dan paging adalah untuk melaksanakan kaedah peruntukan diskrit

untuk mengurangkan pecahan luaran ingatan, meningkatkan penggunaan memori. Dalam erti kata lain, paging hanya disebabkan keperluan pengurusan sistem dan bukannya keperluan pengguna

分页 分段
目 的 页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提髙内存的利用率。或者说,分页仅权是由于系统管理的需要而不是用户的需要 是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好地满足用户的需要
长 度 页的大小固定且由系统决定,由系统把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的,因而在系统中只能有一种大小的页面 段的长度不固定,决定于用户所编写的程序, 通常由编译程序在对流程序进行编译时,根据信息的性质来划分
地址空间 作业地址空间是一维的,即单一的线性地址空间,程序员只需利用一个记忆符,即可表示 一个地址 作业地址空间是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内地址
碎 片 有内部碎片,无外部碎片 有外部碎片,无内部碎片
”共享“和“动态链接” 不容易实现 容易实现
Penomboran Segmentasi
Tujuan adalah unit maklumat yang logik. Ia mengandungi satu set maklumat yang maknanya agak lengkap. Tujuan pembahagian adalah untuk lebih memenuhi keperluan pengguna
Panjang Saiz halaman ditetapkan dan ditentukan oleh sistem Sistem membahagikan alamat logik kepada dua bahagian: nombor halaman dan alamat intra-halaman , dilaksanakan oleh perkakasan mesin, jadi hanya boleh ada satu saiz halaman dalam sistem panjang segmen tidak tetap, bergantung pada atur cara yang ditulis oleh pengguna, biasanya pengkompil membahagikan maklumat mengikut sifat maklumat semasa menyusun atur cara strim
Ruang alamat Ruang alamat operasi adalah satu dimensi, iaitu, ruang alamat linear tunggal, dan pengaturcara hanya perlu menggunakan satu simbol memori, ia boleh mewakili alamat Ruang alamat kerja ialah dua- dimensi apabila pengaturcara mengenal pasti alamat, dia perlu memberikan nama segmen , dan alamat dalam segmen itu perlu diberikan
Fragmen Dengan serpihan dalaman, tiada serpihan luaran Dengan serpihan luaran, tiada pemecahan Dalaman
"Perkongsian" dan "Pautan Dinamik" Tidak mudah untuk dilaksanakan Mudah untuk dilaksanakan
Cadangan berkaitan: "Tutorial Video Linux"

Atas ialah kandungan terperinci Apakah yang digunakan linux untuk melaksanakan memori maya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan