Форум программистов, компьютерный форум CyberForum.ru

Какой формы процесс в памяти ? - C++

Восстановить пароль Регистрация
 
VoltDeMar
 Аватар для VoltDeMar
16 / 16 / 0
Регистрация: 05.06.2012
Сообщений: 1,015
10.07.2015, 15:37     Какой формы процесс в памяти ? #1
Здравствуйте.
Написал вот так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void shrub()
{
    char array[5];
    int i = 0;
    try
    {while (true)
        {if (i < 500)
            {   array[i] = i;
                std::cout << i << std::endl;
                i++;
                Sleep(30);  }
            else
            {shrub();}}}
    catch (...)
    {   shrub();    }}
Это куст или один стебель или шар вокруг процесса?
Могу ли я получить доступ к любой части памяти ?

Посоветуйте что нибудь почитать про это (память процесса, выделение памяти в ОС, графическое представление памяти ).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2015, 15:37     Какой формы процесс в памяти ?
Посмотрите здесь:

C++ Вопрпос про const: в какой области памяти они находятся, и где это объявлять ?
Есть процесс A и дочерний процесс B, который находит хэндл родительского процесса A. И этот хэндл в разных случаях РАЗНЫЙ! Почему? C++
C++ Выделить в памяти 1024 ячейки по 8 байт и вывести их адреса(МИНИ менеджер памяти))
Какой объем памяти занимает пустая двусторонняя очередь (deque)? C++
C++ Как происходит процесс выделения памяти в стеке и куче
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
 Аватар для Убежденный
14175 / 6190 / 982
Регистрация: 02.05.2013
Сообщений: 10,298
Завершенные тесты: 1
10.07.2015, 22:40     Какой формы процесс в памяти ? #2
Цитата Сообщение от VoltDeMar Посмотреть сообщение
Это куст или один стебель или шар вокруг процесса?
Вопрос не понят.

Цитата Сообщение от VoltDeMar Посмотреть сообщение
Могу ли я получить доступ к любой части памяти ?
В защищенном режиме, в котором работают современные ОС - нет.

Цитата Сообщение от VoltDeMar Посмотреть сообщение
Посоветуйте что нибудь почитать про это (память процесса, выделение памяти в ОС, графическое представление памяти ).
Виртуальная память
https://ru.wikipedia.org/wiki/%D0%92...8F%D1%82%D1%8C

Преодолевая ограничения Windows: физическая память
http://blogs.technet.com/b/mark_russ...1/3151288.aspx

Преодолевая ограничения Windows: виртуальная память
http://blogs.technet.com/b/mark_russ...7/3182311.aspx

Преодолевая ограничения Windows: выгружаемый и невыгружаемый пулы
http://blogs.technet.com/b/mark_russ...6/3236407.aspx

Memory Management (System Services)
https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx

Memory Management (System Services Archive)
https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx

Virtual address spaces
https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx
gazlan
2855 / 1803 / 271
Регистрация: 27.08.2010
Сообщений: 4,883
Записей в блоге: 1
10.07.2015, 23:19     Какой формы процесс в памяти ? #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от VoltDeMar Посмотреть сообщение
Это куст или один стебель или шар вокруг процесса?
Память процесса линейна, но не непрерывна - может быть несколько регионов.

Не по теме:

Можете рассматривать ее как этажерку, на полках которой стопками наложены кассеты, соответствующие различным модулям. Например, каждая загруженная в память процесса DLL (системная или пользовательская) увеличивает высоту стопки на свой размер. На отдельной полочке лежит программный стек, на другой - динамическая память, выделенная в хипе. Самая нижняя полка вообще пуста, а при попытке что-нибудь положить туда (или взять оттуда) срабатывает тревожная сигнализация.

VoltDeMar
 Аватар для VoltDeMar
16 / 16 / 0
Регистрация: 05.06.2012
Сообщений: 1,015
10.07.2015, 23:34  [ТС]     Какой формы процесс в памяти ? #4
Цитата Сообщение от Убежденный Посмотреть сообщение
Вопрос не понят.
Куст - при инициализации каждого нового массива заполняются ячейки памяти процесса в новом произвольном направлении.

Стебль - при инициализации каждого нового массива заполняются ячейки памяти в том же направлении (или вообще заполняются теже самые ячейки).

Шар - при инициализации нового массива заполняются ячейки памяти из тойже точки что и предшествующий массив, при этом в разных направлениях.

Вообще можно ли предстваить память как непрерывную строку или как прямоугольную область или как трехмерный объект заполненый символами?

Добавлено через 6 минут
Цитата Сообщение от gazlan Посмотреть сообщение
Можете рассматривать ее как этажерку, на полках которой стопками наложены кассеты, соответствующие различным модулям. Например, каждая загруженная в память процесса DLL (системная или пользовательская) увеличивает высоту стопки на свой размер. На отдельной полочке лежит программный стек, на другой - динамическая память, выделенная в хипе. Самая нижняя полка вообще пуста, а при попытке что-нибудь положить туда (или взять оттуда) срабатывает тревожная сигнализация.
Допустим я объявляю массивы таким образом как указано выше, и дальше просто пишу в память, не обращая внимания на длинну переменной массива. В этой ситуации новые массивы будут размещаться в памяти сразу после заявленной длинны предшествующего массива или в произвольной области памяти процесса?
Если я буду использовать деку - запись будет идти в одном направлении или в двух?


Можно ли увидеть напрямую память процесса ? Как вообще храняться функции и процедуры в памяти ? Храняться ли они там? Можно ли пощупать алгоритм создания и управления стеком ; кучей?
gazlan
2855 / 1803 / 271
Регистрация: 27.08.2010
Сообщений: 4,883
Записей в блоге: 1
10.07.2015, 23:43     Какой формы процесс в памяти ? #5
Цитата Сообщение от VoltDeMar Посмотреть сообщение
длиНу
Вот ты и пробил головой стену. Что будешь делать в соседней камере?
© Станислав Ежи Лец
Если вы выдавите внешнюю стенку в вашей квартире, то окажетесь либо на улице, либо у соседа.
Также и с памятью. Свободно "гулять по коридору" можно только в пределах вашей собственности.
VoltDeMar
 Аватар для VoltDeMar
16 / 16 / 0
Регистрация: 05.06.2012
Сообщений: 1,015
10.07.2015, 23:49  [ТС]     Какой формы процесс в памяти ? #6
Цитата Сообщение от gazlan Посмотреть сообщение
Если вы выдавите внешнюю стенку в вашей квартире, то окажетесь либо на улице, либо у соседа.
Также и с памятью. Свободно "гулять по коридору" можно только в пределах вашей собственности.
Тоесть существуют какие то барьеры которые не дадут выйти за рамки выделенной памяти, а что они из себя представляют?
gazlan
2855 / 1803 / 271
Регистрация: 27.08.2010
Сообщений: 4,883
Записей в блоге: 1
11.07.2015, 00:02     Какой формы процесс в памяти ? #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Маркеры принадлежности и доступа. OS помечает страницы памяти и следит, чтобы программы "не зарились на чужое". Что, разумеется, не помешает вам изгадить вашу собственную (вашего процесса) память.
Собственно, появление всяких джав, нет и прочих бэйсиков связано, в первую очередь, именно со стремлением "обернуть ручки грабель поролоном" и отнять у детей спички не дать им возможности "играть" с памятью.
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,040
11.07.2015, 00:19     Какой формы процесс в памяти ? #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от VoltDeMar Посмотреть сообщение
Стебль - при инициализации каждого нового массива заполняются ячейки памяти в том же направлении (или вообще заполняются теже самые ячейки).
какое направление если массив новый?
Цитата Сообщение от VoltDeMar Посмотреть сообщение
Тоесть существуют какие то барьеры которые не дадут выйти за рамки выделенной памяти,
ОС выделяет твоей программе определённый участок памяти, для 32 винды это 4Гб, из них верхняя часть отдается системе, где то там же куча,программа сидит чаще всего( но не факт загрузчик ОС может все изменить) по адресу 0х40000000, ниже её стек
в память чужого процесса ОС тебя не пустит, но если очень попросить то может
но даже в своей памяти можно накосячить так что программа а то и ОС рухнет

Добавлено через 7 минут
Цитата Сообщение от VoltDeMar Посмотреть сообщение
Могу ли я получить доступ к любой части памяти ?
к любой нет только в пределах своего процесса, да и то не все например обращение к нижним адресам даст аварию
можно посмотреть так
C++
1
2
3
unsigned char *a=0;
for(unsigned int i=0x100;i>0;i++)
  cout <<(int)a[i];
но я не думаю что тебе нужно 4 миллиарда ячеек
Цитата Сообщение от VoltDeMar Посмотреть сообщение
Посоветуйте что нибудь почитать про это
По моему неплохо пишет Крис Касперски
ну и классики Ритчи , Соломон,Руссинович

Добавлено через 7 минут
вот например
Внутреннее устройство Microsoft Windows
http://www.ozon.ru/context/detail/id/20285651/
но чтение не из легких
DrOffset
6423 / 3797 / 878
Регистрация: 30.01.2014
Сообщений: 6,585
11.07.2015, 00:23     Какой формы процесс в памяти ? #9
Цитата Сообщение от ValeryS Посмотреть сообщение
Ритчи
Рихтер.
tnk500
113 / 117 / 25
Регистрация: 25.08.2012
Сообщений: 1,211
Завершенные тесты: 3
11.07.2015, 00:23     Какой формы процесс в памяти ? #10
ValeryS, Ритчи? А где он пишет о памяти в ОС?

Upd: все, увидел.
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,040
11.07.2015, 00:28     Какой формы процесс в памяти ? #11
Цитата Сообщение от tnk500 Посмотреть сообщение
Ритчи? А где он пишет о памяти в ОС?
ну ошибся, с отцом основателем попутал
Цитата Сообщение от DrOffset Посмотреть сообщение
Рихтер
конечно же, но не музыкант
вот например Windows для профессионалов. http://www.ozon.ru/context/detail/id/116668/
DrOffset
11.07.2015, 00:30
  #12

Не по теме:

Цитата Сообщение от tnk500 Посмотреть сообщение
Ритчи? А где он пишет о памяти в ОС?
Если он и писал что-то такое, то про UNIX. Я таких публикаций не встречал, но я плохо смотрел, т.ч. ничего не утверждаю

VoltDeMar
 Аватар для VoltDeMar
16 / 16 / 0
Регистрация: 05.06.2012
Сообщений: 1,015
11.07.2015, 00:40  [ТС]     Какой формы процесс в памяти ? #13
Цитата Сообщение от ValeryS Посмотреть сообщение
можно посмотреть так
Код C++Выделить код
1
2
3
unsigned char *a=0;
for(unsigned int i=0x100;i>0;i++)
cout <<(int)a[i];
вот это говорит мне моя OpenSuse 13.1 при попытке запуска бинарника с этим кодом:
vladimir@linux-tjt9:~/workspace/Second> ./main
Ошибка сегментирования

Тут с памятью всё подругому?
hoggy
5114 / 2115 / 403
Регистрация: 15.11.2014
Сообщений: 4,800
Завершенные тесты: 1
11.07.2015, 00:48     Какой формы процесс в памяти ? #14
Цитата Сообщение от VoltDeMar Посмотреть сообщение
Тут с памятью всё подругому?
как вообще определяетются ошибки с памятью?

1.
процесс пытается выполнить запись в память,
в которую писать не имеет права.

2.
процесс пытается читать память,
к которой у него нет прав доступа.


в данном случае пункт 2.
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,040
11.07.2015, 00:52     Какой формы процесс в памяти ? #15
Цитата Сообщение от VoltDeMar Посмотреть сообщение
OpenSuse 13.1
Цитата Сообщение от ValeryS Посмотреть сообщение
для 32 винды это 4Гб
про линукс ничего не знаю, я в нем "начинающий пользователь"
Цитата Сообщение от VoltDeMar Посмотреть сообщение
Тут с памятью всё подругому?
скорее всего да
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2015, 12:15     Какой формы процесс в памяти ?
Еще ссылки по теме:

C++ Процесс А инициализирует массив случайными значениями и записывает их в файл, а затем запускает процесс Б
Можно ли разместить переменную в нужную ячейку памяти и реально ли хранить данные, разбросанными по памяти? C++
В какой момент вызывается конструктор для глобального объекта, использующего статическое выделение памяти? C++

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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
11.07.2015, 12:15     Какой формы процесс в памяти ? #16
Тут с памятью всё подругому?
Можете почитать книгу "Хакинг. Искусство эксплоита".
В книге представлены способы исследования устройства своей системы (в книге ubuntu 10.04), в т.ч. и устройства памяти - как распределяется, по каким адресам, где куча и стек, куда что движется и т.д.
Yandex
Объявления
11.07.2015, 12:15     Какой формы процесс в памяти ?
Ответ Создать тему
Опции темы

Текущее время: 05:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru