Фэндом



НАЗВАНИЕ

prog - процессное устройство (по сути, task manager в файловом представлении)

ВВОД

bind #p /prog

/prog/n/ctl

/prog/n/dbgctl

/prog/n/exception

/prog/n/fd

/prog/n/heap

/prog/n/ns

/prog/n/nsgrp

/prog/n/pgrp

/prog/n/stack

/prog/n/status

/prog/n/text

/prog/n/wait

...

ОПИСАНИЕ

Процессное устройство создает двух-уровневый каталог, первый уровень которого содержит каталоги, отвечающие идентификаторам (pid) запущенных процессов Limbo; каждый такой каталог содержит набор файлов, которыми представлен сам процесс. Содержимое всех файлов представлено в формате UTF (см. utf(6)).

Status-файл (только для чтения) содержит поля данных, разделенные пробелами. Поля содержат: идентификаторы процесса и группы процессов - 8 символов; имя пользователя - 10 символов; системное время в минутах, секундах и десятых долях секунды; состояние процесса - 10 символов; объем используемой процессом памяти, в кусках по 1024 байта - 5 символов с окончанием `K` (килобайт); и наконец, имя текущего модуля приложения - вплоть до 28 символов.

Pgrp-файл (только для чтения) содержит индентификатор процессной группы в десятичном формате.

Nsgrp-файл (только для чтения) содержит индентификатор группы протсранства имен в десятичном формате

Ns-файл (только для чтения) содержит набор команд mount и bind (см. sys-bind(2)), формирующих файловое пространство имен в формате namespace(6). В последней строке файла указана команда cd, указывающая на рабочий каталог.

Wait-файл (только для чтения) содержит информацию о дочерних процессах. Чтение файла блокируется, если присутствует хоть один из дочерних процессов, запущенных после открытия файла. Каждому дочернему процессу отвечает строка, состоящая из трех полей: pid дочернего процесса, имя модуля, завершающееся символами` \c `, а также сообщение об ошибке, которое может быть пустым, если ошибок нет. Сообщение об ошибке может содержать не более 64 символов.

Fd-файл (только для чтения) describes the open file descriptors in the file descriptor group of the process. Каждая строка описывает открытый файл и содержит поля: индекс дескриптора, режим доступа к файлу( r , w , rw ); тип и номер устройства; путь, версию и тип идентификатораqid (см. intro(5)); the file's atomic I/O unit, который описан вsys-iounit(2)); I/O оффсет (смещение) в байтах; и наконец, the name with which it was opened.

Exception-файл (только для чтения) gives details of the last exception to occur in the process, if any. Поля содержат: the program counter value when the exception occurred, имя модуля, в котором it occurred и the exception itself, и разделенны пробелами. Если`исключений` нет, то файл содержит пустую строку.

Команды, записанные в Ctl-файл (чувствителен к правам пользователя), управляют исполнением процессов:

kill - завершить процесс
killgrp - завершить все процессы одной группы как единое приложение. Процесс, пишущий в собственный ctl-файл, не может завершить сам себя
exceptions propagate
Applies to process group leaders only (ie any process that executes a system call sys->pctl (Sys->NEWPGRP, ...). If any process in the same group as the leader incurs an exception which it does not handle, atomically raise the exception in all processes in the group. In this case exceptions are generated for killed processes as well. This mechanism allows all processes in a process group to perfom error recovery when one of them faults.
exceptions notifyleader
Applies to process group leaders only. If any process in the same group as the leader incurs an exception which it does not handle, atomically destroy all processes in the group except for the leader and raise the exception in the leader. This error recovery mechanism might be appropriate when a fault occurs amongst a group of processes and the group leader takes sole responsibilty for recovery.
restricted
все будущие(???) нити обозначает как restricted. A restricted process is one which can run out of memory when a configured limit has been reached and before total memory is exhausted. An unrestricted process can allocate memory until memory is truly exhausted. Typically a window manager or server might be unrestricted as they are processes undamental to the running of a system.

Dbgctl-файл (чувствителен к правам пользователя) предоставляет возможность `дебага` (debugging). Команды, записанные в этот файл, позволяют контролировать исполнение текущего процесса:

step n - Step the interpreter for at most n instructions, or until a breakpoint is reached
toret - Step the interpreter until a return from the current activation frame or a breakpoint is reached
cont - Step the interpreter until a breakpoint is reached
stop - останавливает процесс, как только это становится возможным. Не позволяет процессу перезапуститься, пока не получена разблокирующая команда.
unstop - отменяет действие команды stop
bpt set path pc - устанавливает брекпойнт //Set a breakpoint at pc для модуля, путь которого задаетpath
bpt del path pc - удаляет брекпойнт, если он существует

Reading dbgctl gives updates for some state transitions while the process is being debugged. Each update is terminated by a newline

exited - The process exited without error
broken: error - The process died due to error , a string with up to 64 characters
send - The process is blocked sending on a channel
recv - The process is blocked receiving on a channel
alt - The process is blocked in an alt statement
run - The process is unblocked and now ready to run
new pid - The process has spawned a new process identified by pid

Stack-файл (только для чтения) contains the dynamic call stack trace. Каждый фрейм описан одной строкой, содержащей 6 полей, разделенных пробелами: указатель фрейма, указатель счетчика, указатель данных и указатель кода, - каждое по 8 цифр в шестнадцатиричном формате; метод исполнения модуля (0 - означает `интерпретировано`, 1 - `скомпилировано`); и наконец путь к файлу модуля. Главный фрейм стартует с нулевым оффсетом (смещением).

Heap-файл (только для чтения, чувствителен к правам пользователя) отражает состояние процесса. A data query contains an address, a period, a format character, and a count. An instruction query contains a pc, a plus, a mode address, a period, the format, and a count. The addresses in the query may be decimal, hexadecimal preceded by 0x or 0X , or octal preceded by 0 . Count gives the number of consecutive data items retrieved by reading heap starting at offset 0; the format varies according to the format character. All data items other than strings are terminated by a newline.

W - 32-bit decimal ints
B - 8-bit unsigned decimal bytes
V - 64-bit decimal bytes
R - 64-bit reals
I - дизасемблированные Dis-инструкции
P - 32-битный адрес вhex формате или простоnil

The following formats examine properties of specific 32-bit pointers

L - Examine a list, yielding a pair of hexadecimal addresses separated by a period, giving the address of the head and tail of a list. It is an error to use L on nil
A - Examine an array, yielding a decimal length, a period, and the address of the 0th element of an array, or nil
C - Examine a string, yielding the decimal length in characters, a period, and the utf(6) representation of the string
M - Examine a module reference, yielding the address of it's global data or nil

Text-файл (чувствителен к правам пользователя) ....//на деле - защита от доступа, а в манах сказано, что вообще не реализован????

ИСХОДНЫЙ КОД

/emu/port/devprog.c

/os/port/devprog.c

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

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

Также на Фэндоме

Случайная вики