Чтение онлайн

на главную

Жанры

Основы программирования в Linux
Шрифт:

Код программы, которая будет выполняться командой

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

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

printf
, даже если многие выполняющиеся программы вызывают ее. Эта схема
более сложная, но аналогичная той, которую используют для работы динамически подключаемые библиотеки в ОС Windows.

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

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

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

grep
, — это переменная
s
, принадлежащая пространству данных каждого процесса. Эти пространства разделены и, как правило, не могут читаться другим процессом. Файлы, которые применяются в двух командах grep, тоже разные; у каждого процесса есть свой набор файловых дескрипторов, используемых для доступа к файлам.

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

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

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

И наконец, поскольку Linux, как и UNIX, обладает системой виртуальной памяти, которая удаляет страницы кода и данных на жесткий диск, можно управлять гораздо большим количеством процессов, чем позволяет объем физической памяти.

Таблица процессов

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

ps
. Операционная система управляет процессами с помощью их идентификаторов, PID, которые применяются как указатели в таблице процессов. У таблицы ограниченный размер, поэтому число процессов, поддерживаемых системой, ограничено. В первых
системах UNIX оно равнялось 256 процессам. Более современные реализации значительно ослабили это ограничение и ограничены только объемом памяти, доступным для формирования элемента таблицы процессов.

Просмотр процессов

Команда

ps
показывает выполняемые вами процессы, процессы, выполняемые другим пользователем, или все процессы в системе. Далее приведен еще один пример вывода:

$ ps -ef

UID PID PPID С STIME TTY TIME CMD

root 433 425 0 18:12 tty1 00:00:00 [bash]

rick 445 426 0 18:12 tty2 00:00:00 -bash

rick 456 427 0 18:12 tty3 00:00:00 [bash]

root 467 433 0 18:12 tty1 00:00:00 sh /usr/X11R6/bin/startx

root 474 467 0 18:12 tty1 00:00:00 xinit /etc/X11/xinit/xinitrc --

root 478 474 0 18:12 tty1 00:00:00 /usr/bin/gnome-session

root 487 1 0 18:12 tty1 00:00:00 gnome-smproxy --sm-client-id def

root 493 1 0 18:12 tty1 00:00:01 [enlightenment]

root 506 1 0 18:12 tty1 00:00:03 panel --sm-client-id defaults

root 508 1 0 18:12 tty1 00:00:00 xscreensaver -no-splash -timeout

root 510 1 0 18:12 tty1 00:00:01 gmc --sm-client-id default10

root 512 1 0 18:12 tty1 00:00:01 gnome-help-browser --sm-client-i

root 649 445 0 18:24 tty2 00:00:00 su

root 653 649 0 18:24 tty2 00:00:00 bash

neil 655 428 0 18:24 tty4 00:00:00 -bash

root 713 1 2 18:27 tty1 00:00:00 gnome-terminal

root 715 713 0 18:28 tty1 00:00:00 gnome-pty-helper

root 717 716 13 18:28 pts/0 00:00:01 emacs

root 718 653 0 18:28 tty2 00:00:00 ps -ef

Вывод отображает информацию о многих процессах, включая процессы, запущенные редактором Emacs в графической среде X ОС Linux. Например, столбец

TTY
показывает, с какого терминала стартовал процесс, столбец
TIME
показывает время ЦПУ, затраченное к данному моменту, а столбец
CMD
— команду, примененную для запуска процесса. Давайте познакомимся поближе с некоторыми из этих процессов.

neil 655 428 0 18:24 tty4 00:00:00 -bash

Начальная регистрация была произведена на консоли номер 4. Это просто консоль на данном компьютере. Выполняемая программа командной оболочки — это стандартная оболочка Linux,

bash
.

root 467 433 0 18:12 tty1 00:00:00 sh /usr/X11R6/bin/startx

X Window System была запущена командой

startx
. Это сценарий командной оболочки, который запускает сервер X и выполняет некоторые начальные программы системы X.

Поделиться:
Популярные книги

Его наследник

Безрукова Елена
1. Наследники Сильных
Любовные романы:
современные любовные романы
эро литература
5.87
рейтинг книги
Его наследник

Его огонь горит для меня. Том 2

Муратова Ульяна
2. Мир Карастели
Фантастика:
юмористическая фантастика
5.40
рейтинг книги
Его огонь горит для меня. Том 2

Адепт. Том 1. Обучение

Бубела Олег Николаевич
6. Совсем не герой
Фантастика:
фэнтези
9.27
рейтинг книги
Адепт. Том 1. Обучение

Я – Орк. Том 4

Лисицин Евгений
4. Я — Орк
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я – Орк. Том 4

Кротовский, не начинайте

Парсиев Дмитрий
2. РОС: Изнанка Империи
Фантастика:
городское фэнтези
попаданцы
альтернативная история
5.00
рейтинг книги
Кротовский, не начинайте

Я тебя верну

Вечная Ольга
2. Сага о подсолнухах
Любовные романы:
современные любовные романы
эро литература
5.50
рейтинг книги
Я тебя верну

Звезда сомнительного счастья

Шах Ольга
Фантастика:
фэнтези
6.00
рейтинг книги
Звезда сомнительного счастья

Идеальный мир для Лекаря 19

Сапфир Олег
19. Лекарь
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 19

Последняя Арена 4

Греков Сергей
4. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Последняя Арена 4

Real-Rpg. Еретик

Жгулёв Пётр Николаевич
2. Real-Rpg
Фантастика:
фэнтези
8.19
рейтинг книги
Real-Rpg. Еретик

Идеальный мир для Социопата 4

Сапфир Олег
4. Социопат
Фантастика:
боевая фантастика
6.82
рейтинг книги
Идеальный мир для Социопата 4

Бездомыш. Предземье

Рымин Андрей Олегович
3. К Вершине
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Бездомыш. Предземье

Ваше Сиятельство 3

Моури Эрли
3. Ваше Сиятельство
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Ваше Сиятельство 3

Игра топа

Вяч Павел
1. Игра топа
Фантастика:
фэнтези
6.86
рейтинг книги
Игра топа