0 / 0 / 0
Регистрация: 17.03.2015
Сообщений: 48

Адресация памяти

21.02.2018, 11:16. Показов 6379. Ответов 18

Author24 — интернет-сервис помощи студентам
Добрый день, друзья.

Начав изучать такую замечательную вещь, как программирование, в частности язык C++, столкнулся с необходимостью более глубокого понимания процессов взаимодействия памяти и программы. В поисках драгоценной информации в интернетах наткнулся на картинку которая разрушила мои представления об адресации памяти. Предоставляю ее вам во вложении. По ней выходит, что адресуемая ячейка памяти содержит в себе 8 бит. Хотя я всегда представлял себе, что объем физической ячейки памяти 1 бит. Нашел еще ресурс, на нем обрисовывается адресуемая ячейка памяти в 1 бит. Картинка так же во вложении. Так как именно устроена адресация памяти и какой объем у ячейки памяти? Пожалуйста, разъясните доступно этот момент, буду очень вам благодарен. Внесите ясность в темноту технологического непонимания)
Извините, я только начал во всем этом разбираться и не исключаю, что для знающего человека, я мог спросить на самом деле сверхнелепую глупость, можете меня об этом поругать, мне полезно будет) Но не забудьте при этом все же объяснить этот момент

Ссылочки на сами ресурсы:

https://metanit.com/cpp/tutorial/4.1.php - статья про указатели C++, но там есть момент по данному сабжу.

http://iguania.ru/article/ram
Миниатюры
Адресация памяти   Адресация памяти  
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.02.2018, 11:16
Ответы с готовыми решениями:

Сегментная адресация памяти
Здравствуйте, читаю небольшой материал про процессор 8086 и появившийся в нем режим сегментации памяти. Хотел бы задать несколько...

Массивы, адресация, дин. исп памяти
Задача:Заданы два массива А(5) и В(5). Подсчитать в них количество положительных элементов и первым на печать вывести массив, имеющий...

Адресация переменных и всей структуры программы на реальной памяти в ОС
Доброго времени суток, Вопрос по памяти, не совсем понятно: 1. Я написал программу 1.cpp, выполняю ее компиляцию, если я не использую...

18
184 / 192 / 48
Регистрация: 25.08.2011
Сообщений: 792
21.02.2018, 11:20
адресуемая яйчейка 1 байт. В структурах можно размещать битовые поля хотя адрес от них не возмешь
1
0 / 0 / 0
Регистрация: 17.03.2015
Сообщений: 48
21.02.2018, 11:25  [ТС]
Т.е. человек, написавший вторую статью, сам не до конца разобрался в происходящем и явно вводит в заблуждение, заинтересованых в этой информации, людей?
0
techpriest
 Аватар для Mirmik
634 / 213 / 57
Регистрация: 27.02.2014
Сообщений: 1,180
21.02.2018, 11:31
Лучший ответ Сообщение было отмечено ZzzCorp как решение

Решение

Объём физической, то бишь аппаратной ячейки памяти действительно 1 бит. Физические ячейки разбиваются на группы по восемь ячеек в каждой. Такая группа называется байтом. Единицей адресации компьютера является байт. То есть, когда я запрашиваю данные с адреса 0x1234567DEAD, я запрашиваю все восемь ячеек байта.

Добавлено через 3 минуты
Вторая статья хорошая. Но вот термин адресуемый там немного неуместен.
1
0 / 0 / 0
Регистрация: 17.03.2015
Сообщений: 48
21.02.2018, 11:38  [ТС]
Mirmik, спасибо за развернутый и понятный ответ. Я примерно догадывался о таком положении дел. Т.е. одна адресуемая ячейка памяти по сути логическая?
0
techpriest
 Аватар для Mirmik
634 / 213 / 57
Регистрация: 27.02.2014
Сообщений: 1,180
21.02.2018, 11:45
Не понял вопроса. Что есть логическая?
0
0 / 0 / 0
Регистрация: 17.03.2015
Сообщений: 48
21.02.2018, 11:48  [ТС]
И еще вопрос. Любая оперативная память любого современного компьютера делится таким способом? Всмысле однобайтовыми логическими ячейками. Или есть еще какие нюансы здесь?

Добавлено через 3 минуты
Mirmik, всмысле, есть физические ячейки, как вы сказали по одному биту. Они группируются по восемь ячеек и образуют адресуемые однобайтовые ячейки, я и рискнул предположить, что их в таком случае можно назвать логическими (ну или виртуальными может быть правильнее) эти однобайтовые ячейки.
0
techpriest
 Аватар для Mirmik
634 / 213 / 57
Регистрация: 27.02.2014
Сообщений: 1,180
21.02.2018, 12:10
Немного не так. Современные процессоры сконструированы так, что практически любая операция производится над каким-то набором битов. Операции, в которых процессор работает строго с одним битом крайне редки. Это исключения.

Обычно байт это минимальная порция битов которую может обработать процессор за одну операцию (не считая специальных операций над битами).

То есть, это, вообще говоря, не логическая абстракция. Байт - это минимальная порция данных, с которой работает процессор. Такое понимание байта крайне зыбко. В истории были байты, состоящие от 6 до 48 битов.

Языки программирования вводят свое определение байта. Обычно это или некий тип, который может принимать не мение 256-и разных значений, либо тип, который может кодировать аскишный символ.

Короче не берите в голову... Дать определение байту очень сложно, потому что байт в отличии от бита не академичен.

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

Потому что, еще раз... Байты удобны. Но не более... Ничего фундаментального в них нет. Это инженерная абстракция, которую каждый трактует на свой лад.

Добавлено через 6 минут
Вероятно, ближе всего к истине будет такое определение.
Байт - минимальный объём информации, под работу с которым оптимизирована та или иная информационная система.
1
0 / 0 / 0
Регистрация: 17.03.2015
Сообщений: 48
21.02.2018, 12:17  [ТС]
Mirmik, спасибо, понял. Главное разобрался. Буду дальше постигать техногенный океан)
0
21.02.2018, 12:38

Не по теме:

Цитата Сообщение от 1Вирт1 Посмотреть сообщение
адресуемая яйчейка 1 бай
В Borland C++ Builder можно биты адресовывать :p

0
 Аватар для COKPOWEHEU
4052 / 2604 / 432
Регистрация: 09.09.2017
Сообщений: 11,607
21.02.2018, 12:42
Странно что никто не сказал о том, что объем информации, который процессор обрабатывает за одну операцию называется машинным словом. А размер этого слова и задает разрядность машины, 8-битные, 16-битные, 32-битные, 64-битные. А байт это лишь абстракция вокруг машинного слова. Наиболее распространен 8-битный байт, даже на 64-разрядных машинах. Но это особенности, в которые по началу можно не лезть - компилятор сам разберется как ему удобнее.
Пока же можно представлять память как линейную последовательность байтов. Вы можете обращаться к любому из них (если не запрещено операционкой, конечно), но не можете непосредственно к битам. Чтобы обратиться к конкретному биту, придется считать весь байт, поменять в нем бит и записать обратно.
1
0 / 0 / 0
Регистрация: 17.03.2015
Сообщений: 48
21.02.2018, 15:08  [ТС]
Kastaneda, ну началось) только картина мира в голове более менее устоялась)

Добавлено через 1 минуту
COKPOWEHEU, интересная и полезная информация про машинное слово, но каким образом она решает вопрос темы, мой друг?
0
21.02.2018, 15:10

Не по теме:

Цитата Сообщение от ZzzCorp Посмотреть сообщение
ну началось)
это был местный юмор "для тех, кто в теме", не обращай внимания :)

0
 Аватар для COKPOWEHEU
4052 / 2604 / 432
Регистрация: 09.09.2017
Сообщений: 11,607
21.02.2018, 15:56
ZzzCorp, скорее уточнение предыдущих ответов.
Цитата Сообщение от ZzzCorp Посмотреть сообщение
Kastaneda, ну началось) только картина мира в голове более менее устоялась)
Если это можно _только_ в CBuilder'е то считаем нестандартным расширением и игнорируем. Нестандартных расширений много, и зачем терять совместимость со всеми остальными компиляторами ради них
P.S. Недавно прочитал про особенность SSD памяти, там говорят что один транзистор хранит 3 бита информации, такая вот интересная ячейка. Но на нашем, программерском уровне, считаем что ячейка это 1 байт (обычно 8 бит) и расположены они друг за другом, линейно.
0
21.02.2018, 16:02

Не по теме:

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Нестандартных расширений много, и зачем терять совместимость со всеми остальными компиляторами ради них
Ну так Builder ради Builder'a же :)

0
21.02.2018, 16:17

Не по теме:

Croessmah, Ну так не "ТС ради Билдера" же!

0
0 / 0 / 0
Регистрация: 17.03.2015
Сообщений: 48
21.02.2018, 18:37  [ТС]
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Недавно прочитал про особенность SSD памяти, там говорят что один транзистор хранит 3 бита информации
Похоже там ячейка все же не транзистор (вообще правильнее триггер), а регистр. Ибо как транзистор может три состояния сразу держать? Он же либо закрыт, либо открыт. Только одно состояние, только один бит
0
 Аватар для COKPOWEHEU
4052 / 2604 / 432
Регистрация: 09.09.2017
Сообщений: 11,607
21.02.2018, 19:41
ZzzCorp, транзистор может работать не только в ключевом режиме. Ну и особенность вообще любой флеш-памяти в хитром устройстве транзистора: между каналом и затвором расположен либо еще один, плавающий, затвор, либо сам подзатворный диэлектрик может захватывать электроны. В результате после занесения туда заряда он не рассасывается десятилетиями. А от заряда зависит проводимость транзистора, аналоговая величина, вообще-то. Так что количество записанных битов зависит от времени релаксации (для flash это десятки лет, для DRAM - доли секунды), помехоустойчивости и точности распознавания.
В "обычной" флеш-памяти ячейкой служит именно одиночный транзистор, как и в динамической ОЗУ (DRAM). А вот в статической ОЗУ (SRAM) действительно триггер.
Вообще-то, форум не лучшее место объяснять подобное.
0
Неэпический
 Аватар для Croessmah
18128 / 10712 / 2063
Регистрация: 27.09.2012
Сообщений: 27,002
Записей в блоге: 1
21.02.2018, 20:42
IBM представляет первую в мире память PCM с записью трёх битов в ячейку
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.02.2018, 20:42
Помогаю со студенческими работами здесь

Косвенная адресация
Как тут сделать обращение к элементам массива через косвенную адресацию?#include <iostream> /* run this program using the...

Ip адресация подсетей
В вашем распоряжении сеть класса А. Необходимо организовать 60 подсетей, причем в следующие два года вам необходимо будет организовать еще...

Адресация методом Айлиффа
Необходимо создать адресацию в 4-х мерном массиве(base) методом Aйлиффа. Вот чето не фурычит, ошибка памяти при запуске. #include...

Косвенная адресация объектов
Здравствуйте есть необходимость собрать адреса созданных объектов в массив количество их известно . ну к примеру 5 штук. QObject ** Obj...

Как происходит адресация #include?
Допустим есть 4 файла: Файл sum.cpp который хранится к примеру в папке D:\source1; int sum(int x, int y){ return x + y;} Файл sum.cpp...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

Новые блоги и статьи
Многопоточные приложения на C++
bytestream 14.05.2025
C++ всегда был языком, тесно работающим с железом, и потому особеннно эффективным для многопоточного программирования. Стандарт C++11 произвёл революцию, добавив в язык нативную поддержку потоков,. . .
Stack, Queue и Hashtable в C#
UnmanagedCoder 14.05.2025
Каждый опытный разработчик наверняка сталкивался с ситуацией, когда невинный на первый взгляд List<T> превращался в узкое горлышко всего приложения. Причина проста: универсальность – это прекрасно,. . .
Как использовать OAuth2 со Spring Security в Java
Javaican 14.05.2025
Протокол OAuth2 часто путают с механизмами аутентификации, хотя по сути это протокол авторизации. Представьте, что вместо передачи ключей от всего дома вашему другу, который пришёл полить цветы, вы. . .
Анализ текста на Python с NLTK и Spacy
AI_Generated 14.05.2025
NLTK, старожил в мире обработки естественного языка на Python, содержит богатейшую коллекцию алгоритмов и готовых моделей. Эта библиотека отлично подходит для образовательных целей и. . .
Реализация DI в PHP
Jason-Webb 13.05.2025
Когда я начинал писать свой первый крупный PHP-проект, моя архитектура напоминала запутаный клубок спагетти. Классы создавали другие классы внутри себя, зависимости жостко прописывались в коде, а о. . .
Обработка изображений в реальном времени на C# с OpenCV
stackOverflow 13.05.2025
Объединение библиотеки компьютерного зрения OpenCV с современным языком программирования C# создаёт симбиоз, который открывает доступ к впечатляющему набору возможностей. Ключевое преимущество этого. . .
POCO, ACE, Loki и другие продвинутые C++ библиотеки
NullReferenced 13.05.2025
В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . .
Паттерны проектирования GoF на C#
UnmanagedCoder 13.05.2025
Вы наверняка сталкивались с ситуациями, когда код разрастается до неприличных размеров, а его поддержка становится настоящим испытанием. Именно в такие моменты на помощь приходят паттерны Gang of. . .
Создаем CLI приложение на Python с Prompt Toolkit
py-thonny 13.05.2025
Современные командные интерфейсы давно перестали быть черно-белыми текстовыми программами, которые многие помнят по старым операционным системам. CLI сегодня – это мощные, интуитивные и даже. . .
Конвейеры ETL с Apache Airflow и Python
AI_Generated 13.05.2025
ETL-конвейеры – это набор процессов, отвечающих за извлечение данных из различных источников (Extract), их преобразование в нужный формат (Transform) и загрузку в целевое хранилище (Load). . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru