Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 113

Автор ΠœΡΡ‚ΡŒΡŽ НСйл

Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Ρ… объСмов памяти

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎ ОБ Linux ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Π²Π°Π΅Ρ‚ ограничСния ΠΌΠΎΠ΄Π΅Π»ΠΈ памяти ОБ MS-DOS, Π΄Π°Π²Π°ΠΉΡ‚Π΅ услоТним Π΅ΠΉ Π·Π°Π΄Π°Ρ‡Ρƒ. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ Π² ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠΈ 7.2 ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ объСма памяти, большСго, Ρ‡Π΅ΠΌ физичСски Π΅ΡΡ‚ΡŒ Π² машинС, поэтому ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ функция malloc Π½Π°Ρ‡Π½Π΅Ρ‚ Π΄Π°Π²Π°Ρ‚ΡŒ сбои ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΊ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΌΡƒ физичСской памяти, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ядру ΠΈ всСм ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΌΡΡ процСссам Ρ‚Π°ΠΊΠΆΠ΅ Π½ΡƒΠΆΠ½Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 7.2. Запрос Π½Π° всю Ρ„ΠΈΠ·ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ memory2.с ΠΌΡ‹ собираСмся Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ большС памяти, Ρ‡Π΅ΠΌ физичСски Π΅ΡΡ‚ΡŒ Π² машинС. Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅

PHY_MEM_MEGS
Π² соотвСтствии с физичСскими рСсурсами вашСго ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.

#include <unistd.h>

#include <stdlib.h>

#include <stdio.h>

#define A_MEGABYTE (1024 * 1024)

#define PHY_MEM_MEGS 1024 /* ΠžΡ‚ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ это число

Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ */

int main() {

Β char *some_memory;

Β size_t size_to_allocate = A_MEGABYTE;

Β int megs_obtained = 0;

Β while (megs_obtained < (PHY_MEM_MEGS * 2)) {

Β  some_memory = (char *)malloc(size_to_allocate);

Β Β if (some_memory != NULL) {

Β  Β megs_obtained++;

Β Β  sprintf(somememory, "Hello World");

Β Β  printf("%s β€” now allocated %d Megabytes\n", some_memory, megs_obtained);

Β  } else {

Β Β  exit(EXIT_FAILURE);

Β Β }

Β }

Β exit(EXIT_SUCCESS);

}

Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ сокращСнный Π²Ρ‹Π²ΠΎΠ΄:

$ <b>./memory3</b>

Hello World β€” now allocated 1 Megabytes

Hello World β€” now allocated 2 Megabytes

...

Hello World β€” now allocated 2047 Megabytes

Hello World β€” now allocated 2048 Megabytes

Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π­Ρ‚ΠΎ просто Ρ†ΠΈΠΊΠ»Ρ‹, Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ всС большС ΠΈ большС памяти Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΎ памяти Π²Π΄Π²ΠΎΠ΅ большС, Ρ‡Π΅ΠΌ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ Π²Π°ΠΌΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠΈ опрСдСлСния

PHY_MEM_MEGS
объСм памяти, ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΉΡΡ Ρƒ вашСго ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Π£Π΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ эта ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹, ΠΊΠ°ΠΊ оказалось, создали ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±Π°ΠΉΡ‚ физичСской памяти Π½Π° машинС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π°Π²Ρ‚ΠΎΡ€ΠΎΠ². ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² нашСм Π²Ρ‹Π·ΠΎΠ²Π΅
malloc
примСняСтся Ρ‚ΠΈΠΏ
size_t
.

Другая интСрСсная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π½Π° Π΄Π°Π½Π½ΠΎΠΉ машинС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выполняСтся Π² ΠΌΠ³Π½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΎΠΊΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½Π΅ сомнСния использовали всю ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π½ΠΎ ΠΈ сдСлали это Π½Π° самом Π΄Π΅Π»Π΅ ΠΎΡ‡Π΅Π½ΡŒ быстро.

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ исслСдованиС ΠΈ посмотрим, сколько памяти ΠΌΡ‹ смоТСм Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° этой машинС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ memory3.c (ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 7.3). ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡƒΠΆΠ΅ понятно, Ρ‡Ρ‚ΠΎ систСма Linux способна ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠΌΠ½ΠΎ ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ с запросами памяти, ΠΌΡ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π±ΡƒΠ΄Π΅ΠΌ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎ 1 ΠšΠ±Π°ΠΉΡ‚ ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π½Π°ΠΌΠΈ Π±Π»ΠΎΠΊ.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 7.3. Доступная ΠΏΠ°ΠΌΡΡ‚ΡŒ

Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° memory3.c. По своСй истинной ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅ ΠΎΠ½Π° ΠΊΡ€Π°ΠΉΠ½Π΅ нСдруТСствСнная ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ. Если вас бСспокоит ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ риск, Π»ΡƒΡ‡ΡˆΠ΅ совсСм Π½Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΅Π΅; Ссли Π²Ρ‹ ΠΎΠΊΠ°ΠΆΠΈΡ‚Π΅ΡΡŒ ΠΎΡ‚ выполнСния этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΡƒΡΠ²ΠΎΠ΅Π½ΠΈΡŽ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° это Π½Π΅ ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈΡ‚.

#include &lt;unistd.h&gt;

#include &lt;stdlib.h&gt;

#include &lt;stdio.h&gt;

#define ONE_K (1024)

int main() {

Β char *some_memory;

Β int size_to_allocate = ONE_K;

Β int megs_obtained = 0;

Β int ks_obtained = 0;

Β while (1) {

Β  for (ks_obtained = 0; ks_obtained &lt; 1024; ks_obtained++) {

Β Β  some_memory = (char *)malloc(size_to_allocate);

Β Β  if (some_memory == NULL) exit(EXIT_FAILURE);

Β Β  sprintf(some_memory, &quot;Hello World&quot;);

Β  }

Β  megs_obtained++;

Β  printf(&quot;Now allocated %d Megabytes\n&quot;, megs_obtained);

Β }

Β exit(EXIT_SUCCESS);

}

На этот Ρ€Π°Π· Π²Ρ‹Π²ΠΎΠ΄, Ρ‚Π°ΠΊΠΆΠ΅ сокращСнный, выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

$ <b>./memory3</b>

Now allocated 1 Megabytes

...

Now allocated 1535 Megabytes

Now allocated 1536 Megabytes

Out of Memory: Killed process 2365

Killed

ПослС этого ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ. Она выполняСтся нСсколько сСкунд ΠΈ сущСствСнно замСдляСтся ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ, Ρ€Π°Π²Π½ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΌΡƒ физичСской памяти Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ТСсткий диск. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выдСляла ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π»Π° доступ ΠΊ области памяти, большСй ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ объСма физичСской памяти, которая Π±Ρ‹Π»Π° установлСна Π½Π° машинС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² Π²ΠΎ врСмя написания этой Π³Π»Π°Π²Ρ‹. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², систСма Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ сСбя ΠΎΡ‚ этой довольно агрСссивной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ°Π΅Ρ‚ Π΅Π΅. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… систСмах ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΈΡ…ΠΎ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° функция

malloc
Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎ.

Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

ΠŸΠ°ΠΌΡΡ‚ΡŒ, выдСляСмая ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ, управляСтся ядром систСмы Linux. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ°ΠΌΡΡ‚ΡŒ, пытаСтся Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ· памяти, которая Π±Ρ‹Π»Π° Π²Ρ‹Π΄Π΅Π»Π΅Π½Π°, ядро Linux Ρ€Π΅ΡˆΠ°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ этот запрос.

Π‘Π½Π°Ρ‡Π°Π»Π° ядро ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡƒΡŽ Ρ„ΠΈΠ·ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ для удовлСтворСния запроса прилоТСния Π½Π° Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° физичСская ΠΏΠ°ΠΌΡΡ‚ΡŒ исчСрпана, ядро Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ свопинга ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΠ°Ρ‡ΠΊΠΈ. Π’ ОБ Linux это ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ диска, выдСляСмая Π²ΠΎ врСмя инсталляции систСмы. Если Π²Ρ‹ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с ОБ Windows, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ области свопинга Π² Linux Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» ΠΏΠΎΠ΄ΠΊΠ°Ρ‡ΠΊΠΈ Π² Windows. Но Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ОБ Windows ΠΏΡ€ΠΈ написании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ Π½ΠΈ ΠΎ локальной, Π½ΠΈ ΠΎ глобальной динамичСской памяти (heap), Π½ΠΈ ΠΎ Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Ρ… сСгмСнтах памяти β€” ядро Linux всС ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΠ΅Ρ‚ для вас.