На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
  
> Загрузка в память shared library , Хочу понять как происходит разметка в памяти shared library.
    Здравствуйте.
    Разбираюсь с устройством библиотек.
    Прошу ответить на такие вопросы:

    1) При загрузке elf используемые shared library загружаются в адресное пространство конкретного приложения
    или в отдельную единую область для совместного использования, в которой живут все загруженные библиотеки?

    2) Если мы запустили 10 приложений, которые используют функцию одной и той же shared library, то в
    памяти будут размечены 10 копий этой библиотеки?

    3) Если приложение рождает 10 потоков и в каждом потоке вызывается функция из shared
    library, то в памяти будет 10 копий используемой shared library т.е. на каждый поток?

    4) Загружается именно вся библиотека или могут загружаться только используемые функции?

    5) Когда приложение закрывается, что происходит в памяти с shared library?

    6) Если анализировать область памяти загруженного приложения, то видно, что библиотека встречается несколько раз в разных диапазонах памяти. Правильно я понимаю, что это размечены разные сегменты этой библиотеки т.е. при загрузке всей библиотеки в памяти отобразились ее необходимые секции как при загрузке обычного исполняемого файла?

    Спасибо.
    Сообщение отредактировано: vmprog -
      1. При загрузке ELF-файла используемые shared library загружаются в отдельную область памяти, называемую shared library space, которая представляет собой общую область памяти для всех загруженных библиотек. Каждое приложение имеет свою отдельную область памяти, но все приложения используют одну и ту же область памяти для загруженных библиотек.

      2. В памяти будут размечены только одна копия библиотеки, даже если запущено 10 приложений, которые используют эту библиотеку.

      3. В памяти также будет размечена только одна копия библиотеки, даже если в каждом потоке вызывается функция из этой библиотеки.

      4. При загрузке всей библиотеки в память загружаются все функции и данные, которые она содержит. Однако не все функции могут быть вызваны из приложения, поэтому используемые функции загружаются только по мере необходимости.

      5. Когда приложение закрывается, shared library space также освобождается. Если библиотека была загружена другими приложениями, которые продолжают работать, то библиотека остается в памяти.

      6. Да, правильно понимаете. При загрузке всей библиотеки в памяти отображаются ее необходимые секции, которые могут быть размечены в разных диапазонах адресов в памяти. Это может быть связано с особенностями размещения секций в файле библиотеки или с особенностями загрузки библиотеки в память. Например, секции кода могут быть загружены в разные области памяти, чтобы обеспечить эффективное кэширование кода на процессоре.
        Думаю за 2 года он уже сам в этом разобрался.
          Тема не закрыта же :)
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0287 ]   [ 15 queries used ]   [ Generated: 22.06.24, 10:33 GMT ]