Различия между версиями 1 и 2
Версия 1 от 2020-03-22 13:36:11
Размер: 3682
Редактор: Lecture_Uploads
Комментарий:
Версия 2 от 2020-03-22 13:37:51
Размер: 87
Редактор: Lecture_Uploads
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 1: Строка 1:
Познакомимся с тем, что в операционной системе называется процессом.
Процесс - абстрактное понятие.

С точки зрения операционной системы это такая программа запущенная в памяти;

у которой память изолирована от других процессов. Управление происходит за счет планировщика.

У Linux у каждого процесса есть индификатор процесса (в консоли первые 4 цифры) и у каждого процесса есть хозяин.

~+{{{ps -ef}}}+~ выдаст список процессов и в первой колонке можно увидеть имя того кто его запустил.

Интерфейс командой строки подразумевает что первое слово (то есть ~+{{{ps}}}+~ в нашем случае) это ключи а оставшиеся это модификаторы её выполнения.

В Linux есть спец каталог, который называется /proc в котором в виде файлов представлена информация о системе.
(на самом деле это не файлы, о чем говорит их нулевая длина, которую можно узнать командой {{{-s/proc}}})

Нас интересуют файл под названием maps – этот файл содержит в текстовом виде списки страниц памяти, которые данному процессу доступны.

Новая вещь для командной строки – если мы запустим программу как ~+{{{ ./donothing & }}}+~(с & в конце) то мы запустим её в фоновым режиме.

Добрый shell выдал индификатор процесса чтобы мы могли им как-то управлять.

Суперпользователю также предоставляется файл pagemap -это практически все страницы памяти склеенные в кучу.

Разберем программу. В ней встречаем новый тип данных ~+{{{ uint64_t }}}+~ которое представляет собой беззнаковое целое размером ровно 64 бита.

Мы загружаем процесс в память, если память которая отведена процессу доступна ему на запись то это новая память.

cppreference.com содержит полезную информацию для си.

Для разных архитектур ~+{{{long}}}+~ и ~+{{{char}}}+~ варьируются – поэтому лучше использовать ~+{{{std int}}}+~ и ~+{{{std uint}}}+~..

unsigned – беззнаковое. Напомним, что ~+{{{char}}}+~ – числовой тип.

В си есть указатели, (традиционно * перед переменной)

Как может выглядеть указатель на функцию:
~+{{{#!highlight c
 int (*fpointer)(int, int) = function_name;}}}+~

Еще один типом составных типов данных является ~+{{{struct}}}+~.

С точки зрения языка си это просто кусок памяти, в котором лежат данные.
Содержимое страницы «HSE/ProgrammingOS/07_MoreOnMemory/Cosnpect».

Содержимое страницы «HSE/ProgrammingOS/07_MoreOnMemory/Cosnpect».

HSE/ProgrammingOS/07_MoreOnMemory/Cosnpect (последним исправлял пользователь Lecture_Uploads 2020-03-22 13:37:51)