Аббревиатуры ОЗУ и RAM обозначают одно и тоже, а именно оперативную память:
- ОЗУ - оперативное запоминающее устройство;
- RAM - Random Access Memory, что переводится как запоминающее устройство с произвольным доступом и означает тоже самое, что и ОЗУ;
Алан Тьюринг и RAM
В 1936 году выпускник Кембриджа Алан Тьюрингг придумал абстрактную вычислительную машину, которая формализовала определение алгоритма. Понятие алгоритма долгое время оставалось интуитивным, что мешало ответить на множество математических вопросов (например, всякую ли задачу можно решить алгоритмически — или есть такие, которые можно решить только методом перебора? Как вообще понять, существует ли алгоритм для решения той или иной задачи? И т. д.).
Тьюринг переформулировал теорему Гёделя о неполноте, заменив универсальный формальный арифметический язык Гёделя на простые гипотетические устройства, которые впоследствии стали известны как машины Тьюринга. Доказал, что «машина Тьюринга » способна произвести любые математические вычисления, представимые в виде алгоритма.
Описание «машины Тьюринга» в объяснялке от Кембриджского университета:
- У нас есть бесконечная лента (прототип оперативной памяти), разделенная на ячейки, в которой может храниться символы.
- У нас есть управляющее устройство (прототип настоящего процессора), которое двигается по ленте и в зависимости от состояния может считывать, записывать или удалить его, переместиться влево или вправо.
- Сама последовательность их вышеперечисленных действий задается программой (алгоритмом).
Далее независимо друг от друга Тьюринг и Черч доказали (далее доказательство назвали теоремой Чёрча — Тьюринга, что не существует решения для проблемы разрешения (Entscheidungsproblem). С помощью своей универсальной машины Тьюринг доказал, что проблема остановки этой машины - неразрешима: в общем случае невозможно алгоритмически определить, остановится ли когда-нибудь данная машина Тьюринга.
Проблемы разрешения (Entscheidungsproblem)) - найти такой алгоритм, который бы принимал в качестве входных данных описание проблемы, требующей ответа ИСТИНА или ЛОЖЬ, затем после n количества шагов останавливался бы, и выдовал один из таких ответов.
И стек и куча оба находятся физически в RAM:
Разные языки по-разному используют стек и куча; C и C++ автоматически распределяют память в стеке, и вам, как разработчику, приходится вручную выделять память и освобождать ее из куча, в то время как более современные языки, такие как Go и Java, автоматически выделяют память как в стек, так и в куча, и у вас есть сборщик мусора, который обрабатывает освобождение кучи самостоятельно. Есть даже такие языки, как Ruby и Python, где все размещается в куча и вообще не использует стек.
Что такое виртуальная память?
В современных операционных системах, включая iOS, вся память, к которой может получить доступ ваш процесс, технически является виртуальной памятью. Она называется «виртуальной» памятью, потому что доступное процессу адресное пространство (называемое логическим адресным пространством процесса) не обязательно совпадает с физическим адресным пространством машины или даже с виртуальным адресным пространством других процессов.
VM была особенно полезна, когда оперативная память была ограничена (например, в 50-80-х годах), тк при обращении к этой части программы в VM происходит загрузка в оперативную память по мере необходимости. Это позволяет выполнять программы, которые были больше, чем доступная память.
Так что же делает компьютер, когда ему не хватает RAM памяти для всех открытых приложений? С виртуальной памятью он «делает вид», что RAM памяти достаточно. Но этот процесс замедляет работу. Вот почему покупка дополнительной оперативной памяти обычно делает ваш компьютер быстрее.
В отличие от жёстких дисков, оперативная память весьма ограниченна (хотя и жёсткие диски, безусловно, тоже не безграничны). Если программа потребляет память не высвобождая её, то, в конечном итоге, она поглотит все доступные резервы и попытается выйти за пределы памяти. Тогда она просто упадет сама, или, что ещё драматичнее, обрушит операционную систему. Следовательно, весьма нежелательно относиться легкомысленно к манипуляциям с памятью при разработке ПО.
3.1.1 About Memory Theme Folder | Back To iOSWiki Contents | 3.1.2.2 Stack Theme