Как изменение значения на том же адресе памяти удалит предыдущее значение? «ПЕРЕПИСАННАЯ концепция работы в режиме ПК» - PullRequest
0 голосов
/ 20 октября 2019

Я новичок в мире вычислительной техники и компьютеров. Я занимаюсь программированием на С, и каждый раз я зацикливаюсь на том, как на самом деле ПК удаляет старое значение, если мы изменили его на новое значение, я имею в виду:давайте предположим, что я пишу на C так:

int i=6;
i=7;

, тогда значение i равно 7, я знаю почему, потому что мы изменили старое значение на 7, но как на самом деле ПК удаляет предыдущее значение? Я мог бы поверить просто в «предыдущее значение перезаписано, и оно будет удалено», но мне любопытно узнать, как на самом деле оно удаляется при назначении измененного значения?

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

1 Ответ

0 голосов
/ 20 октября 2019

Компьютеры имеют ограниченный объем памяти. Они перезаписывают это хранилище. Это не как модель SSA, где каждое назначение создает новую переменную. Компьютеры действительно меняют значение существующего места хранения.

Язык Си определяется в терминах каждой переменной, имеющей свое собственное место в памяти. Присвоение нового значения не меняет адрес. Это не ссылка на новое неизменяемое значение, это действительно изменение хранилища для int i. Запись нового значения неявно уничтожает предыдущее содержимое переменной . никуда не денется .

Вы можете посмотреть на пример использования указателей, чтобы увидеть, что после int *p = &i; значение, полученное из *p, меняется после того, как вы i=7;Или обратитесь к учебнику по указателям на C для получения более подробной информации.


Это не "магия", просто электрически, как естественным образом работает ячейка памяти . Например, один триггер может быть изменен из одного состояния в другое путем подачи входного сигнала вместе с сигналом сброса, который говорит ему забыть свое старое значение.


Физическая аналогия - это лист бумаги с карандашом и ластиком, , а не большая стопка свежих учетных карточек. «Расходный материал» (карандашный карандаш и ластик) - это просто электроэнергия. (Точнее говоря, электрический заряд в КМОП-логике. Некоторые другие виды цифровой логики требуют, чтобы ток непрерывно непрерывно расходовал много энергии.)


Обычно создаются регистры ЦПSRAM (статическое ОЗУ), см. https://en.wikipedia.org/wiki/Static_random-access_memory#Writing. Одна ячейка обычно состоит из 6 транзисторов, например, как триггер, но более привлекательный и без тока, за исключением случаев, когда установлено новое значение. Это сохраняет 1 бит и может быть записано с новым значением любое количество раз, применяя сигнал разрешения записи для обновления ячейки SRAM до значения в ее входной строке.

Фактическая основная память обычноизготовлен из DRAM , где биты хранятся в виде заряда на конденсаторе. Каждый раз, когда вы читаете его, вы должны обновлять этот заряд, но это все та же концепция фиксированного местоположения, которая может быть записана с новыми значениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...