Linux what is virtual memory size

Что такое виртуальная память в Linux? Как этим управлять

Виртуальная память помогает операционной системе выполнять свои процессы без прерываний. Вот как вы можете управлять виртуальной памятью в Linux.

Виртуальная память — это одна из тех вещей, которые лежат в основе современных операционных систем, но обычно вы не задумываетесь об этом, если у вас нет проблем. Дистрибутивы Linux просят вас настроить пространство виртуальной памяти (разделы подкачки) во время установки, но большинство новичков не знают, насколько это полезно.

Вот все, что вам нужно знать о виртуальной памяти в Linux.

Что такое виртуальная память?

Виртуальная память — это способ представления вашей памяти, который абстрагируется от физической памяти на вашем компьютере. Она использует как вашу оперативную память, так и ваше пространство для хранения, будь то на традиционном жестком диске или SSD.

В Linux это делается на уровне ядра и аппаратного обеспечения. В процессоре есть аппаратное обеспечение, называемое модулем управления памятью (MMU), которое преобразует адреса физической памяти в виртуальные. Эти адреса не зависят от того, где они физически находятся на компьютере. Эти адресные пространства известны как «страницы», и они могут находиться в оперативной памяти или на вашем жестком диске или SSD. ОС рассматривает эти адреса как один большой пул памяти, известный как «адресное пространство».

Виртуальная память использует тот факт, что не вся память, которая используется в теории, используется постоянно. Программы в памяти разбиваются на страницы, а части, которые ядро считает ненужными, «выгружаются» или перемещаются на жесткий диск. Когда они необходимы, их можно «поменять местами» или вернуть обратно в оперативную память.

Пространство, используемое для виртуальной памяти на диске, известно как «резервное хранилище» или «пространство подкачки». В мире Windows она обычно реализуется в виде файла, известного как «файл подкачки». Это также возможно сделать в Linux, но гораздо чаще используется выделенный раздел диска.

Файлы подкачки в Linux обычно зарезервированы для минимальных или встроенных систем, и последние обычно работают без виртуальной памяти полностью, потому что встроенные ОС должны быть небольшими.

Преимущество виртуальной памяти заключается в том, что можно запускать большие программы, используя больше памяти, чем физическая оперативная память вашего компьютера, подобно тому, как кредитная карта позволяет совершать крупные покупки на сумму, превышающую сумму, имеющуюся на вашем банковском счете. Как и кредитная карта, виртуальная память полезна, когда она вам нужна, но вы не хотите чрезмерно ее использовать.

Виртуальная память также позволяет разработчикам создавать приложения, не зная, как организована память компьютера.

Исторически основным недостатком виртуальной памяти было то, что жесткие диски работали медленнее, чем оперативная память. Если на компьютере недостаточно оперативной памяти, система может бесконечно загружать и удалять страницы, процесс, известный как «загрузка». Это не такая проблема на современных ПК с большим объемом оперативной памяти и более быстрыми твердотельными накопителями, вытесняющими механические жесткие диски, но об этом все равно нужно знать.

Читайте также:  Screen capture linux tool

Разделы подкачки Linux

Как упоминалось ранее, обычным методом настройки виртуальной памяти в Linux является использование выделенного раздела диска. Утилита установки изучит ваше оборудование и предложит схему разделения, которая включает раздел подкачки.

Вы также можете добавить разделы подкачки после установки. Если вы хотите добавить новый раздел на существующий диск, вам придется использовать инструмент неразрушающего разбиения на разделы, такой как GParted. Убедитесь, что вы выбрали «Linux swap» в качестве файловой системы для вашего раздела.

После того, как вы создали свой раздел, используйте команду mkswap для форматирования вашего раздела.

Теперь вам нужно отредактировать /etc/fstab как root, чтобы добавить раздел подкачки. Эта строка, добавленная в файл, настроит раздел подкачки, который будет смонтирован во время загрузки:

Теперь используйте команду swapon , чтобы активировать новое пространство подкачки, где sdX — это имя вашего раздела подкачки:

Использование файлов подкачки в Linux

Легко настроить файл подкачки в Linux с помощью командной строки. Возможно, вы захотите сделать это, если не хотите переделывать свой диск или редактировать /etc/fstab . Один из методов — использовать fallocate :

Например, для создания файла подкачки объемом 2 ГБ:

В качестве альтернативы вы можете использовать команду dd для создания файла подкачки.

Источник

OPERATING SYSTEMS: what is the size of the virtual memory?

LINK 1: If size of the physical memory is 2^32-1, then what is the size of virtual memory? the above link gives me an answer but i still do have some doubts. pls answer in the way the questions posted here so that i will not be confused.

1.Virtual memory is also called as Demand Paging whenever a page fault occurs the operating system swaps the required page from the virtual memory. the virtual memory here mean the harddisk or secondary storage. So how much space can be allocated for a porcess in virutal memory? can this size(the space allocated for each process in the Virtual memory) exceeds the size of our RAM size? i mean if our RAM is 4GB then what is the maximum size of the virtual memory you can have for a process?can we have 4GB of virtual memory for every process or can we have more than 4GB for every process? (if it needs) 2.is the Virtual memory size fixed or dynamic? How much space is allocated for this memory and in the above link it is told that 2^48 is the size of virtual memory in 64 bit machine why is it only 2^48 and how can once can say a number like that? 

2 Answers 2

If size of the physical memory is 2^32-1, then what is the size of virtual memory?

The size of the virtual address space is independent of the size of the physical address space. There is no answer.

So how much space can be allocated for a porcess in virutal memory?

That depends upon hardware limits, system parameters, and process quotas.

can this size(the space allocated for each process in the Virtual memory) exceeds the size of our RAM size?

Yes and it frequently does.

i mean if our RAM is 4GB then what is the maximum size of the virtual memory you can have for a process?

It can be anything. The rams size does not control.

can we have 4GB of virtual memory for every process or can we have more than 4GB for every process?

is the Virtual memory size fixed or dynamic?

How much space is allocated for this memory and in the above link it is told that 2^48 is the size of virtual memory in 64 bit machine why is it only 2^48 and how can once can say a number like that?

It could be a hardware limit for a specific processor.

Читайте также:  Astra linux примонтировать сетевой диск

Paging is the way that virtual addresses are converted into physical addresses. This is done via page tables.

On x86 in Long Mode (64 bit mode), the page tables allow for 48 bit virtual address spaces (as in, 2^48 max size). This limitation is due to the design of x86’s long mode page tables. Paging uses a few bits at a time from pointers to determine where to go next in the page tables. Basically, page tables are a relatively shallow b-tree style tree that let you look up the physical address corresponding to a virtual address.

To convert virtual addresses to physical addresses Long Mode page tables (for small pages) first extract 9 bits from the virtual address, then 9 more, then 9 more, then 9 more to find the right page, and use the low 12 bits to find the precise byte being accessed, for 48 bits total.

(For large and huge pages, x86 skips the last 1 and 2 steps of paging respectively, to find the address of the large or huge page, and the unused low 21 or 30 bits are used to find the precise byte in that page)

Virtual address spaces aren’t necessarily dynamic, depending on what is meant by dynamic. The address space is always 48 bits (so long as you aren’t switching between modes, like from long mode to protected mode with paging enabled (I.e. 32 bit mode)). Virtual address spaces are almost always sparse, as in most canonical (valid) addresses don’t point don’t point anything useful. The page tables don’t have mappings for most addresses (accesses to those addresses generate page faults, which on Linux are often bounced back to userspace as the SIGSEGV you know and love).

That said, virtual memory can be dynamic in that when a page fault occurs the kernel could map in that page. To implement swap, OSes will use extra space on disk to give the illusion of more RAM by writing infrequently used pages back to disk, and lazily pulling pages back into RAM.

Читайте также:  Установить драйвер wifi linux debian

Fun fact, page tables have no restriction preventing the same physical page from being mapped in multiple times. You could build a monstrous page table with every virtual address pointing into exactly the same page (which is crazy), but doable. This means address spaces aren’t necessarily sparse, just very likely to be. (Note that this page table would be huge. I’m sure someone has done the calculation, but my first guess would be order of terabytes)

Источник

Size of virtual memory in Linux

On what basis the size of User and kernel virtual memory is decided in Linux? (32-bit, if that’s relevant.) Is it configurable? If we have 512 MB RAM What will be the size of user and kernel virtual address?

You can configure the kernel/userspace address split with the VMSPLIT options. But that only affects virtual address space, not physical RAM.

If 32 bits then one fourth of virtual upper space is dedicated to kernel. The rest is dedicated to userspace. Things change a lot for 64bit kernel: kernel.org/doc/html/latest/x86/x86_64/mm.html

1 Answer 1

The available address space depends on the architecture. One limit is the amount of address space made available by the architecture itself. 64-bit architectures usually allow 64-bit pointers, and 32-bit architectures allow 32-bit pointers. The amount of addressable space can be limited by the architecture beyond these constraints, and the architecture can also impose a certain structure. On top of all that, the kernel applies its own decisions, and some of these are configurable.

On 32-bit x86, five different setups are possible:

  • the default allocates 3GiB to userspace, and 1GiB to the kernel, and allows for nearly 1GiB of “low” physical memory — the split is at 0xC0000000;
  • a variant 3G/1G split shifts the split down to allow for a full 1GiB of low memory — the split is at 0xB000000;
  • the 2G/2G split allocates 2GiB to userspace, 2GiB to the kernel, and has two variants like the 3G/1G split — the split is at either 0x8000000 or 0x7800000;
  • the 1G/3G split allocates 1GiB to userspace, 3GiB to the kernel — the split is at 0x4000000.

For a system with 512MiB of RAM, you should use the default 3G/1G split; userspace will have 3GiB of address space, and the kernel will have 1GiB.

On 64-bit x86, two different setups are possible, allowing either 128 TiB or 64 PiB of address space for both userspace and the kernel.

Other architectures have different setups.

Источник

Оцените статью
Adblock
detector