Различия между версиями 3 и 4
Версия 3 от 2020-03-22 13:40:25
Размер: 3707
Редактор: Lecture_Uploads
Комментарий:
Версия 4 от 2020-06-08 23:24:41
Размер: 3713
Редактор: Lecture_Uploads
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 1: Строка 1:
== 07_MoreOnMemory == = 07.0 (Russian conspect) =

07.0 (Russian conspect)

Познакомимся с тем, что в операционной системе называется процессом. Процесс - абстрактное понятие.

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

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

У 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 – числовой тип.

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

Как может выглядеть указатель на функцию:

   1  int (*fpointer)(int, int) = function_name;

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

С точки зрения языка си это просто кусок памяти, в котором лежат данные.

HSE/ProgrammingOS/07_MoreOnMemory/Conspect (последним исправлял пользователь Lecture_Uploads 2020-06-08 23:24:41)