русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Выполнение процессов


Дата добавления: 2013-12-23; просмотров: 1327; Нарушение авторских прав


Процессы

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

В ранних Linux-системах процесс представлял собой одну последовательность инструкций в некотором адресном пространстве (множестве адресов памяти, к которым процесс может обращаться).

Современные Linux-системы поддерживают многопоточные приложения, в которых процесс состоит из нескольких пользовательских потоков, каждый из которых представляет выполняемую ветвь процесса. Это означает, что в одном адресном пространстве может выполняться несколько последовательностей инструкций.

Linux относится к разряду многозадачных систем, т.е. систем, допускающих наличие параллельных активных процессов. В подобных системах несколько процессов могут параллельно выполнять одну программу, и, в то же время, один процесс может последовательно выполнить несколько программ.

С точки зрения взаимодействия с ядром программы могут выполняться в различных режимах. Linux-системы поддерживают как минимум два режима: режим пользователя и режим ядра.

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

Среди всех процессов выделяют привилегированные процессы, называемые потоками ядра. Они имеют следующие особенности:



— выполняются в режиме ядра в адресном пространстве ядра;

— не взаимодействуют с пользователями, следовательно, не обращаются к терминалам;

— большинство из них создаются на этапе запуска системы и остаются вплоть до ее отключения.

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

Изначально каждый процесс в Linux выполнялся независимо от других в том смысле, что ему выделялись собственные ресурсы, отличные от других процессов. В современных системах возможно совместное использование ресурсов несколькими процессами (в этом случае говорят об облегченных процессах).

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

Виртуальная память может использоваться для следующих целей:

— параллельное выполнение нескольких процессов;

— выполнение приложений, требования к доступной памяти которых, превышают физическую;

— выполнение программ с частично загруженным в память кодом.

В 32-разрядных ОС процесс может адресовать до 4 Гб памяти. Недостающую оперативную память заменяет использование жесткого диска путем записи временно неиспользуемых страниц памяти в раздел подкачки (swap-раздел).

Процесс содержит множество компонентов, которые располагаются в виртуальной памяти:

Процесс
  Область кода
Область кода библиотеки
  Область данных
  Стек
Область данных библиотеки
Куча
Исполняемый файл
Динамически разделяемые библиотеки

Сюда входят:

область(сегмент)кода, которая содержит инструкции, выполняемые процессором;

область(сегмент) данных, которая содержит данные, которыми манипулирует процесс;

стек, который хранит переменные и данные функций;

куча (heap), которая содержит динамически выделенную память.

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

Процесс характеризуется:

адресным пространством — совокупность страниц памяти, которые были выделены ядром для выполнения процесса. Страницы — это базовые блоки памяти, размер которых для ПК, как правило, составляет 4 Кбайт. В адресном пространстве, например, хранится таблица всех открытых процессом файлов;

— записью в таблице процессов, содержащих характеристики и данные о текущем состоянии процесса. Структуру записи называют дескриптором (описателем) процесса — process descriptor.

Запись в таблице процессов и адресное пространство составляют контекст или окружение процесса.

Выделяют три категории процессов :

1. Системные — порождаются ядром особым образом в процессе загрузки и выполняют системные функции (например, планирование процессов). Выполняемая ими программа является частью ядра.

2. Пользовательские — порождаются во время сеанса работы пользователя и связаны с терминалом. Пользовательские процессы делят на:

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

2.2. Фоновые — не имеют доступа к терминалу. Ранее указывалось, что сделать процесс фоновым можно с помощью знака & в конце команды.

3. Демоны (DAEMON, Disk And Execution MONitor) — запускаются после инициализации ядра; выполняются в фоновом режиме; не связаны ни с одним пользователем; обеспечивают работу различных служб (например, управлением сетью).

Просмотреть список запущенных пользователем приложений можно с помощью команды ps без аргументов. Если необходимо просмотреть полный список, воспользуйтесь этой командой с ключом –e.



<== предыдущая лекция | следующая лекция ==>
Драйверы устройств | Идентификатор процесса и родительского процесса


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.003 сек.