⇤ ← Версия 1 от 2020-03-22 13:36:11
3682
Комментарий:
|
← Версия 2 от 2020-03-22 13:37:51 ⇥
87
|
Удаления помечены так. | Добавления помечены так. |
Строка 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».