Что такое оперативная память — на пальцах
Мы уже знаем: ОС — администратор, который раздаёт ресурсы процессам. В прошлом уроке разобрали один ресурс — процессор (тот, кто выполняет работу). Теперь второй важнейший ресурс: оперативная память, она же RAM. Это место, где процессы держат свои данные, пока работают.
Как и в предыдущих двух уроках — никакого кода, только интуиция и наблюдение.
Аналогия: рабочий стол ограниченного размера
Представьте, что вы работаете за письменным столом. На столе вы раскладываете то, с чем работаете прямо сейчас: открытую книгу, листы, калькулятор, чашку кофе. До всего на столе вы дотягиваетесь мгновенно — протянул руку и взял.
А есть ещё шкаф в другом конце комнаты. Туда вы убираете то, что сейчас не нужно. В шкафу помещается гораздо больше, чем на столе, но чтобы достать что-то оттуда, нужно встать, дойти и вернуться — это медленно.
Вот это и есть разница между памятью и диском:
- Оперативная память (RAM) — это рабочий стол. Быстрый доступ, но места мало. Сюда процессы кладут данные, с которыми работают прямо сейчас.
- Диск — это шкаф. Места много, и содержимое не пропадает, когда компьютер выключают. Но доступ к нему гораздо медленнее.
Важное следствие: память очищается при выключении компьютера. Поэтому если вы не сохранили документ на диск и выключили устройство — работа пропадёт. «Сохранить» как раз и означает «переложить со стола в шкаф», чтобы не потерялось.
[!note] Не путайте оперативную память (RAM) с местом на диске. Когда говорят «у меня 16 гигабайт памяти» — обычно имеют в виду RAM, рабочий стол. А «512 гигабайт» — это уже диск, шкаф. Числа диска почти всегда сильно больше.
Почему память приходится делить — и зачем тут ОС
Стол один, а «работников» — процессов — десятки. И стол ограниченного размера: на него физически не помещается всё сразу. Возникают ровно те же проблемы, что и с процессором, и решает их тот же администратор — ОС.
Проблема первая: места на всех не хватает. Каждый процесс хочет разложить свои данные на столе, а стол не резиновый. ОС следит, кому сколько места выделить, и не даёт одному процессу занять весь стол так, что остальным негде работать.
Проблема вторая: чтобы соседи не путали свои вещи с чужими. Если все вещи лежат вперемешку на одном столе, легко взять чужой лист или случайно поверх него написать. Тогда сосед обнаружит, что его данные испорчены, и сломается. ОС решает это так: она как будто выдаёт каждому процессу его собственный отдельный стол, огороженный от других. Каждый процесс уверен, что весь стол — только его, и не видит чужих вещей. На самом деле общий стол один, но ОС создаёт для каждого процесса иллюзию личного пространства и строго следит за границами.
Эта изоляция — одна из главных причин, почему сбой в одной программе обычно не роняет весь компьютер. Если процесс попытается залезть на чужой участок, ОС остановит именно его, не трогая остальные. Вы наверняка видели, как «вылетает» одна программа, а система продолжает работать — это работа той самой защиты.
Проблема третья: что делать, когда стол всё-таки переполнен. Иногда процессов и данных так много, что на стол уже не помещается. Тогда ОС временно перекладывает то, что прямо сейчас не нужно, обратно в шкаф (на диск), освобождая место на столе. Когда данные снова понадобятся — достаёт их назад. Платой за это становится замедление: возня со шкафом медленная. Именно поэтому компьютер с малым объёмом памяти начинает заметно тормозить, когда открыто слишком много тяжёлых программ — ОС постоянно бегает между столом и шкафом.
Попробуй сам
Наблюдательное задание, без кода:
-
Откройте тот же инструмент, что в прошлом уроке: диспетчер задач (Windows), Мониторинг системы (macOS) или Системный монитор (Linux). Найдите колонку или вкладку, связанную с памятью (Memory / Память).
-
Посмотрите, сколько всего оперативной памяти у вашего устройства и сколько занято прямо сейчас. Запишите оба числа.
-
Найдите, какой процесс потребляет больше всего памяти. Часто это браузер с множеством вкладок. Прикиньте, какую долю стола он занял.
-
Откройте ещё несколько тяжёлых программ или вкладок и понаблюдайте, как занятая память растёт. Если памяти мало, вы можете заметить, что система начинает подтормаживать, — это ОС вынуждена перекладывать данные между столом и шкафом.
-
Сравните в настройках устройства объём оперативной памяти и объём диска. Убедитесь, что диск (шкаф) обычно во много раз больше памяти (стола).
Запишите наблюдения.
Куда мы пойдём дальше
Поздравляем — у вас уже есть рабочая картина мира. ОС — администратор, который распределяет два главных ресурса: процессор (кто работает) и память (где лежат данные), и защищает процессы друг от друга. Этого образа достаточно, чтобы двигаться дальше.
А дальше — интереснее. В следующих модулях те же идеи разберём по-настоящему, уже с конкретикой и примерами кода:
- Системные вызовы (syscalls) — те самые «универсальные кнопки», через которые программа просит у ОС что-нибудь сделать (сохранить файл, выделить память). Мы увидим, как это выглядит на деле.
- Виртуальная память — точный механизм, как ОС создаёт каждому процессу иллюзию собственного отдельного «стола» и держит границы.
- Планировщик (scheduler) — как именно ОС решает, какому процессу дать процессор следующим, и по каким правилам строит очередь.
- Примеры на C и других языках — мы начнём смотреть на реальный код, который обращается к ОС.
[!tip] Если слова «syscall», «виртуальная память», «планировщик», «код на C» сейчас кажутся непонятными — это абсолютно нормально и так и задумано. Этот модуль был концептуальным, нарочно без кода. Дальше каждое из этих понятий мы разложим по полочкам и подкрепим практикой. Сейчас главное — что у вас в голове есть верная общая картина, к которой можно всё привязывать.