Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

LINUX|| Структура памяти процесса в ОС Linux.

Читайте также:
  1. A) Постоянно находится в памяти.
  2. A) структура рабочего стола
  3. A. ненормальный ход родового процесса, родо­вые травмы
  4. D. как завершающий этап сукцессионного процесса
  5. Double сохраняется в памяти 15-16 десятичных знаков.
  6. I. Определение эпидемического процесса и методологическое обоснование разделов учения об эпидемическом процессе.
  7. I. Определение эпидемического процесса и методологическое обоснование разделов учения об эпидемическом процессе.
  8. I. Правосознание: понятие, структура, функции и виды.
  9. II. Система культуры и её структура.
  10. II. СТРУКТУРА отчетА по Практике по профилю специальности

У каждого процесса в системе linux есть адресное пространство, разделенное на 3 логических сегмента

1. text segment

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

2. data segment

Содержит переменные, строки, массивы и другие данные программы. Он состоит из 2-х частей: инициализированные данные и неинициализированные данные. Инициализированная часть сегмента данных содержит переменные и константы компилятора, значения которых должны быть заданы при запуске. Все переменные в неинициализированной части должны быть сброшены в 0.

3. stack segment

На большинстве компьютеров он начинается около старших адресов виртуального адресного пространства и растет вниз к 0. Если указатель стека оказывается ниже нижней границы стека, то происходит аппаратное прерывание, при котором операционная система понижает границу сегмента стека на одну страницу. Когда программа запускается, ее стек не пуст, он содержит все переменные окружения, а также командную строку, введенную оболочке для вызова этой программы. Рассмотрим случай, когда два пользователя запускают одну и ту же программу (или один пользователь два раза одну и ту же программу). Здесь возможно 2 подхода:

1. Хранить в оперативной памяти две копии исходного текста программы

2. Оба процесса ссылаются на один и тот же участок памяти, где находится текст программы.

Во втором случае используется так называемый текстовый сегмент совместного использования. Сегменты данных и стека никогда не бывают общими. Процессы в linux могут обращаться к данным файлов при помощи отображения файлов на адресное пространство (memory mapped files). Эта функция позволяет отображать файл на часть адресного пространства процесса, чтобы можно было читать из файла и писать в файл так, как если бы это был массив байтов, хранящийся в памяти. Запись в этот файл одним из процессов мгновенно становится видимой всем остальным. Отображения на адресное пространство памяти временного файла представляет собой механизм реализации общей памяти для нескольких процессов. Сегмент данных может изменяться в отличие от сегмента текста. Linux разрешает сегменту данных расти при выделении памяти и уменьшаться при ее освобождению. С помощью системного вызова bkr процесс может установить размер своего сегмента данных. Этим системным вызовом активно пользуются malloc.

 




Дата добавления: 2014-12-19; просмотров: 54 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав