0 / 0 / 0
Регистрация: 17.03.2015
Сообщений: 48
|
|
Адресация памяти21.02.2018, 11:16. Показов 6379. Ответов 18
Добрый день, друзья.
Начав изучать такую замечательную вещь, как программирование, в частности язык C++, столкнулся с необходимостью более глубокого понимания процессов взаимодействия памяти и программы. В поисках драгоценной информации в интернетах наткнулся на картинку которая разрушила мои представления об адресации памяти. Предоставляю ее вам во вложении. По ней выходит, что адресуемая ячейка памяти содержит в себе 8 бит. Хотя я всегда представлял себе, что объем физической ячейки памяти 1 бит. Нашел еще ресурс, на нем обрисовывается адресуемая ячейка памяти в 1 бит. Картинка так же во вложении. Так как именно устроена адресация памяти и какой объем у ячейки памяти? Пожалуйста, разъясните доступно этот момент, буду очень вам благодарен. Внесите ясность в темноту технологического непонимания) Извините, я только начал во всем этом разбираться и не исключаю, что для знающего человека, я мог спросить на самом деле сверхнелепую глупость, можете меня об этом поругать, мне полезно будет) Но не забудьте при этом все же объяснить этот момент ![]() Ссылочки на сами ресурсы: https://metanit.com/cpp/tutorial/4.1.php - статья про указатели C++, но там есть момент по данному сабжу. http://iguania.ru/article/ram
0
|
21.02.2018, 11:16 | |
Ответы с готовыми решениями:
18
Сегментная адресация памяти Массивы, адресация, дин. исп памяти
|
techpriest
![]() 634 / 213 / 57
Регистрация: 27.02.2014
Сообщений: 1,180
|
|
21.02.2018, 11:31 | |
![]() Решение
Объём физической, то бишь аппаратной ячейки памяти действительно 1 бит. Физические ячейки разбиваются на группы по восемь ячеек в каждой. Такая группа называется байтом. Единицей адресации компьютера является байт. То есть, когда я запрашиваю данные с адреса 0x1234567DEAD, я запрашиваю все восемь ячеек байта.
Добавлено через 3 минуты Вторая статья хорошая. Но вот термин адресуемый там немного неуместен.
1
|
0 / 0 / 0
Регистрация: 17.03.2015
Сообщений: 48
|
|
21.02.2018, 11:48 [ТС] | |
И еще вопрос. Любая оперативная память любого современного компьютера делится таким способом? Всмысле однобайтовыми логическими ячейками. Или есть еще какие нюансы здесь?
Добавлено через 3 минуты Mirmik, всмысле, есть физические ячейки, как вы сказали по одному биту. Они группируются по восемь ячеек и образуют адресуемые однобайтовые ячейки, я и рискнул предположить, что их в таком случае можно назвать логическими (ну или виртуальными может быть правильнее) эти однобайтовые ячейки.
0
|
techpriest
![]() 634 / 213 / 57
Регистрация: 27.02.2014
Сообщений: 1,180
|
|
21.02.2018, 12:10 | |
Немного не так. Современные процессоры сконструированы так, что практически любая операция производится над каким-то набором битов. Операции, в которых процессор работает строго с одним битом крайне редки. Это исключения.
Обычно байт это минимальная порция битов которую может обработать процессор за одну операцию (не считая специальных операций над битами). То есть, это, вообще говоря, не логическая абстракция. Байт - это минимальная порция данных, с которой работает процессор. Такое понимание байта крайне зыбко. В истории были байты, состоящие от 6 до 48 битов. Языки программирования вводят свое определение байта. Обычно это или некий тип, который может принимать не мение 256-и разных значений, либо тип, который может кодировать аскишный символ. Короче не берите в голову... Дать определение байту очень сложно, потому что байт в отличии от бита не академичен. Насчет того ли, любая современная... Ой вряд ли. На ум ничего не приходит, но никакие законы природы не мешают нарушить этот порядок вещей. Потому что, еще раз... Байты удобны. Но не более... Ничего фундаментального в них нет. Это инженерная абстракция, которую каждый трактует на свой лад. Добавлено через 6 минут Вероятно, ближе всего к истине будет такое определение. Байт - минимальный объём информации, под работу с которым оптимизирована та или иная информационная система.
1
|
![]() 4052 / 2604 / 432
Регистрация: 09.09.2017
Сообщений: 11,607
|
|
21.02.2018, 12:42 | |
Странно что никто не сказал о том, что объем информации, который процессор обрабатывает за одну операцию называется машинным словом. А размер этого слова и задает разрядность машины, 8-битные, 16-битные, 32-битные, 64-битные. А байт это лишь абстракция вокруг машинного слова. Наиболее распространен 8-битный байт, даже на 64-разрядных машинах. Но это особенности, в которые по началу можно не лезть - компилятор сам разберется как ему удобнее.
Пока же можно представлять память как линейную последовательность байтов. Вы можете обращаться к любому из них (если не запрещено операционкой, конечно), но не можете непосредственно к битам. Чтобы обратиться к конкретному биту, придется считать весь байт, поменять в нем бит и записать обратно.
1
|
![]() 4052 / 2604 / 432
Регистрация: 09.09.2017
Сообщений: 11,607
|
||
21.02.2018, 15:56 | ||
ZzzCorp, скорее уточнение предыдущих ответов.
P.S. Недавно прочитал про особенность SSD памяти, там говорят что один транзистор хранит 3 бита информации, такая вот интересная ячейка. Но на нашем, программерском уровне, считаем что ячейка это 1 байт (обычно 8 бит) и расположены они друг за другом, линейно.
0
|
21.02.2018, 16:02 | |
0
|
0 / 0 / 0
Регистрация: 17.03.2015
Сообщений: 48
|
||
21.02.2018, 18:37 [ТС] | ||
0
|
![]() 4052 / 2604 / 432
Регистрация: 09.09.2017
Сообщений: 11,607
|
|
21.02.2018, 19:41 | |
ZzzCorp, транзистор может работать не только в ключевом режиме. Ну и особенность вообще любой флеш-памяти в хитром устройстве транзистора: между каналом и затвором расположен либо еще один, плавающий, затвор, либо сам подзатворный диэлектрик может захватывать электроны. В результате после занесения туда заряда он не рассасывается десятилетиями. А от заряда зависит проводимость транзистора, аналоговая величина, вообще-то. Так что количество записанных битов зависит от времени релаксации (для flash это десятки лет, для DRAM - доли секунды), помехоустойчивости и точности распознавания.
В "обычной" флеш-памяти ячейкой служит именно одиночный транзистор, как и в динамической ОЗУ (DRAM). А вот в статической ОЗУ (SRAM) действительно триггер. Вообще-то, форум не лучшее место объяснять подобное.
0
|
Неэпический
![]() |
|
21.02.2018, 20:42 | |
0
|
21.02.2018, 20:42 | |
Помогаю со студенческими работами здесь
19
Косвенная адресация Ip адресация подсетей Адресация методом Айлиффа
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Многопоточные приложения на 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). . . .
|