[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Про адресное пространство.



Victor Wagner <vitus@wagner.pp.ru> writes:

> On 2013.01.10 at 13:22:42 +0400, Dmitrii Kashin wrote:
>
>> 
>> Сегодня игрался с gdb и обнаружил интересную вещицу.
>> 
>> Я запустил 2 экземпляра gdb с одним и тем же исполняемым файлом (назовем
>> его - test). Дизассемблировал функцию main(), и обнаружил, что адреса в
>> обоих экземплярах gdb - совпадают.
>> 
>> Походу, я что-то не так понимаю. Я полагал, что когда я запускаю процесс
>> - ему выделяется свое адресное пространство. И таким образом, если я
>> запущу два экземпляра программы 'test', адрес функции main первого
>> экземпляра должен отличаться от адреса одноименной функции второго
>> экземпляра, т.к. они находятся в разных адресных пространствах.
>
> Именно потому, что каждой программе выделяется своё адресное
> пространство, адреса имеют полное право совпадать.
>
> Вот если бы два экземпляра программы были загружены в одно адресное
> пространство, то пришлось бы одним и тем же объектам разных экземпляров
> располагаться по разным адресам.

В том-то все и дело, что, как мне кажется, совпадают именно физические
адреса. Вот конкретный пример:

(gdb) disassemble main
Dump of assembler code for function main:
   0x080483dc <+0>:    push   %ebp
   0x080483dd <+1>:    mov    %esp,%ebp
   0x080483df <+3>:    sub    $0x10,%esp
   0x080483e2 <+6>:    movl   $0x0,-0x4(%ebp)
   0x080483e9 <+13>:   movl   $0x3,-0x4(%ebp)
   0x080483f0 <+20>:   mov    $0x0,%eax
   0x080483f5 <+25>:   leave  
   0x080483f6 <+26>:   ret    
End of assembler dump.

Я посчитал, что 0x08000000 - это 128 MiB.
Мне сдается, что это адрес физической памяти, а не виртуальной.

Но именно эти адреса совпадают. И если я запускаю второй gdb - я увижу
тот же 0x080483dc. Почему - не понятно. Может быть, это какой-то
префикс, и мна первые две цифры адреса мне смотреть не надо?

-- 
**************************************
*  jabber:  freehck@jabber.mipt.ru   *
*   Registered linux user #546240    *
**************************************


Reply to: