Computer Science
May 28

Как работает память компьютера

Конспект видео: https://www.youtube.com/watch?v=Wh22_O8jXVQ&list=PLIJLLSrXDPojDGKW0WZ7sU0eO3nyn0oDc&index=1

Что такое память

• Компонент компьютера способный хранить в себе информацию

Классификация памяти

• Регистры - ячейки на самом процессоре. Процессор берет информацию из памяти для работы и записывает в регистр
• Кэш - хранит часто используемые процессором данные, так быстрее чем лазить в ОП. Имеет несколько уровней
• ОП - в ней находятся программы выполняемые в данный момент времени
• Внешние накопители

RAM. BIT. BYTE.

• Абстрактное представление ОП - набор ячеек.
• Ячейка = 1 бит
• Ячейки объединяются по 8 штук образуя байты
• Байт - минимальная ячейка адресации
• Но ячейками/октетами называют именно байты (0x01)

Boolean

• Из-за минимальной адресации на бул отводится 1 байт, вместо 1 бита.

Виды адресации

• Если ячейки равны байту, то адресация - байтовая
• Если ячейки равны машинному слову - количество бит, которыми процессор может оперировать за раз, т.е. работать с регистрами - словесная

Почему байт = 8?

• Человек больше работает с текстом. Изначально было 6 бит, в которые вмещались все английские символы, но в при проектировании компьютера, нужно было число кратно степени двойки, поэтому выбрали 8.

Почему байтовая адресация быстрее

• При изменении символа, нужно взять в регистр символ и поменять. При словесной - нужно взять всё слово и перезаписать.
• Для работы с числами быстрее словесная адресация.

Размер ОЗУ

• Размер памяти должен быть кратен размеру ячейки, т.е. 8 бит
• Процессор обращается к памяти по адресам, котрые являются числами.
• Адреса задаются в регистре.
• Макс значение числа (адреса) = 2^размер регистра = максимальное количество адресов в памяти
• Например в 32х битных системах помещается 4096 МБ адресов
• Если оперативной памяти больше чем значения регистра, то процессор не дотянется

Порядок хранения байтов

• Слева направо - big endian, а наоборот - little endian
• Меняются только байты, биты остаются прежними

Выравнивание

• Процессор считывет из памяти машинные слова в регистр.
• Если данные будут расположены хаотично, то их либо не смогут считать, либо будет очень долго.
• Например у 16 битного процессора, у которого машинное слово = 2 байтам, информация должна быть выровнена по 2 байтам, т.е. обращение будет происходить к каждому второму адресу

Числовые типы данных

• При объявлении переменной выделяется память и заполняются начиная с младших бит, остальное место заполняется нулями.
• Есть знаковые и беззнаковые числа.

Хранение отрицательных чисел

• Форма записи отрицательного числа называется дополнительный код (two's complement)
• Для знака отводится левый старший бит. 1 = минус, 0 = плюс.
• Чтобы конвертировать число в отрицательно нужно: 1) установить знаковый бит в 1; 2) инвертировать все биты кроме знакового; 3) добавить 1.
• Отличные биты будут заполнены битом знака

Примитивные типы данных

• Значимые типы данных передают по значению, т.е. при копировании переменной будет выделена новая область памяти и биты будут скопированы туда.

Ссылочные типы данных. Массивы

• При копировании переменной, она ссылается на тот же участок памяти.
• Массив - структура данных, в которой каждый элемент имеет индекс от 0 до (count of elements - 1).
• Массивы есть статические и динамические, в зависимости от языка и инициализируются в разных местах:
• Статический - на стеке
• динамический - в куче
• В массиве элементы хранятся вплотную, поэтому доступ к элементам быстрый. Нужно знать индекс элемента, тип данных элемента, адрес начала массива.

Мусор в памяти

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