Каковы ядро, “инструменты GNU и утилиты”, оболочка и Менеджер окон?

Программы, обычно буферные их вывод для эффективности. Таким образом, они накапливают вывод в области памяти (названный буфером), и они на самом деле выводят вывод только, когда буфер полон или в определенных ключевых пунктах в программе. Когда программа обычно заканчивается, она сбрасывает буфер вывода (т.е. распечатывает любые данные, которые это оставляют в ней). Когда это segfaults, содержание буфера потеряно.

Вы не наблюдаете этот эффект при запущении программы непосредственно в терминале, потому что поведение отличается, когда вывод программы подключен к терминалу (в противоположность регулярному файлу или каналу). В терминале поведение по умолчанию состоит в том, чтобы сбросить буфер в конце каждой строки. Поэтому Вы будете видеть каждую полную строку, это производится до точки когда программа segfaults.

Можно вынудить программу работать в терминале и собрать свой вывод. Самый простой путь состоит в том, чтобы работать script. Существует много раздражений, что необходимо будет работать вокруг:

  • script добавляет строка заголовка к файлу расшифровки стенограммы, который необходимо будет удалить впоследствии.
  • script не возвращает код состояния команды, таким образом, необходимо будет сохранить его где-нибудь, если Вы захотите знать о segfault или какой-либо другой ошибке.
  • script вызовет нормальный вывод и ошибку; необходимо сохранить вывод ошибок в отдельный файл.
export FONT="foo"
script -q -c '
    ttf2afm "$FONT.ttf" 2>"$FONT.ttf2afm-err";
    echo $? >"$FONT.ttf2afm-status"
' "$FONT.ttf2afm-typescript"
tail -n +2 <"$FONT.ttf2afm-typescript" >"foo.afm"
rm "$FONT.ttf2afm-typescript"
if [ "$(cat "$FONT.ttf2afm-status")" -ne 0 ]; then
  echo 1>&2 "Warning: ttf2afm failed"
  cat "$FONT.ttf2afm-err"
fi

3
21.08.2018, 06:19
2 ответа

Если Вы используете 'удар' в качестве своей оболочки, это - утилита GNU. 'coreutils' пакет в Вашей системе содержит программное обеспечение GNU, вещи как mv, ls, rm, и т.д.

Ядро не что-то, с чем Вы взаимодействуете непосредственно, но через другое программное обеспечение в Вашей системе. Для генерала в определении ядро, обеспечивает средство для программного обеспечения для взаимодействия с аппаратными средствами в системе, путем чтения в нажатиях клавиш и движении мыши, чтения и записи данных в диски, и планирования и выполнения вычисления из программного обеспечения, работающего компьютере. Существует много деталей, которые я игнорирую/заминаю, Вы могли бы извлечь выгоду из того, чтобы читать страницу Kernel Wikipedia.

Ваш менеджер окон наиболее вероятен не программное обеспечение GNU, но из других проектов программного обеспечения (Gnome, KDE, XFCE, и т.д.). Однако они все полагаются на программное обеспечение GNU для выполнения, с помощью GNU C Библиотека (glibc) и набор Компилятора GNU (gcc), например. Кроме того, большая часть программного обеспечения в Вашей системе лицензируется с Генеральной общедоступной лицензией GNU или GPL, таким образом, Вы извлекаете выгоду из лицензии GNU.

2
27.01.2020, 21:15

Ядро

Ядро управляет ресурсами. Ресурсы включают процессорное время, память и периферийные устройства. Это делает это путем прямого общения с ресурсами и воздействия интерфейса пространства пользователя.

Инструменты пространства пользователя (иногда включает инструменты GNU и утилиты),

Инструменты Пространства пользователя включают основные утилиты как ls, кошка, dd, ln, монтируются и т.д. Они позволяют пользователю работать с ресурсами, которые обеспечивает ядро. Linux (в противоположность BSD, OSX и другим Нельдам) является основным пользователем инструментов GNU, но даже все системы Linux не используют их; альтернативный набор инструментов для Linux обеспечивается Busybox.

Shell

Оболочка обеспечивает среду, которая позволяет пользователю использовать Инструменты Пространства пользователя. Оболочки в качестве примера включают удар, ksn, zsh, и рыбу. Они обычно обеспечивают подсказку, при которой пользователь может ввести команды, которые запускают инструменты пространства пользователя.

Менеджер окон

Это - намного более высокий слой, там обычно существует сервер дисплея, который ответственен за управление графическим, аудио, и ресурсы ввода-вывода и обеспечение интерфейса к высокоуровневым инструментам. Обычно, менеджер по оформлению является слоем выше сервера дисплея и может обеспечить вещи как пользовательское управление входом в систему и управление сеансами. Выше этого обычно менеджер окон. Менеджер окон обеспечивает регионы, в которых приложения могут представить свое содержание, он также позволяет пользователю взаимодействовать с этими регионами путем перемещения, изменяя размер и переупорядочивая их.

4
27.01.2020, 21:15

Теги

Похожие вопросы