Какие знания о ядре могут получить новичок?

Я знаю, вы должны знать язык программирования C и иметь более глубокое представление о том, как работают операционные системы, но что, если вы просто кто-то, у которого есть базовое понимание языков программирования, сценариев оболочки и командной строки, есть некоторые знания о знании ядра, извлечь выгоду из этого даже при меньших способностях?

  • Как добавить регуляторы частоты процессора в ядро ​​Linux?
  • Какие соображения должны быть сделаны при выборе версии ядра для встроенного устройства?
  • DisplayPort и Intel HD вызывают зависание GPU
  • Обнаружение и категоризация драйверов устройств в запущенной системе
  • Как долго длится зубной протеже в dcache?
  • Как проверить, включено ли в ядро ​​Longterm определенное исправление в ядре Linux?
  • Является ли отключенная опция ядра эквивалентной, не загружая соответствующий модуль?
  • Ошибка перекрестного компиляции ядра linux с помощью buildroot
  • 2 Solutions collect form web for “Какие знания о ядре могут получить новичок?”

    Будучи в этой категории пользователей Linux, я тоже задавал себе этот вопрос.

    Первое, что приходит на ум, – это strace ( man page ).

    Знание частей ядра может дать вам представление о том, как объяснить вывод strace и отладить ваш код еще дальше от его обычных журналов.

    Например, это strace cat text.txt , где text.txt содержит предложение, my name is test .

     execve("/usr/bin/cat", ["cat", "test.txt"], [/* 76 vars */]) = 0 brk(0) = 0x1e4f000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f1b8ecd4000 open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=138212, ...}) = 0 mmap(NULL, 138212, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f1b8ecb2000 close(3) = 0 open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@\34\2\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=2118128, ...}) = 0 mmap(NULL, 3932672, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f1b8e6f5000 mprotect(0x7f1b8e8ab000, 2097152, PROT_NONE) = 0 mmap(0x7f1b8eaab000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b6000) = 0x7f1b8eaab000 mmap(0x7f1b8eab1000, 16896, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f1b8eab1000 close(3) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f1b8ecb1000 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f1b8ecaf000 arch_prctl(ARCH_SET_FS, 0x7f1b8ecaf740) = 0 mprotect(0x7f1b8eaab000, 16384, PROT_READ) = 0 mprotect(0x60b000, 4096, PROT_READ) = 0 mprotect(0x7f1b8ecd5000, 4096, PROT_READ) = 0 munmap(0x7f1b8ecb2000, 138212) = 0 brk(0) = 0x1e4f000 brk(0x1e70000) = 0x1e70000 brk(0) = 0x1e70000 open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=106070960, ...}) = 0 mmap(NULL, 106070960, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f1b881cc000 close(3) = 0 fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0 open("test.txt", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0664, st_size=16, ...}) = 0 fadvise64(3, 0, 0, POSIX_FADV_SEQUENTIAL) = 0 read(3, "my name is test\n", 65536) = 16 write(1, "my name is test\n", 16my name is test ) = 16 read(3, "", 65536) = 0 close(3) = 0 close(1) = 0 close(2) = 0 exit_group(0) = ? +++ exited with 0 +++ 

    Все системные вызовы видны выше, поэтому, если у вас есть некоторые знания ядра, у вас есть дополнительные подсказки при отладке кода.

    Это дает вам представление, и в некоторых случаях хорошо знать тип ядра, архитектуру, модули, … и их совместимость или …

    Interesting Posts

    Создать гостевую учетную запись в Gnome 3.X на Arch Linux

    Получите среднесуточные значения от sar

    Запустить Tmux с конкретными приложениями на каждой панели?

    Как сопоставить Caps Lock как составной ключ с помощью Xmodmap портативно и идемпотентно?

    Любой инструмент для просмотра использования ресурсов исторического процесса? (IE: комбинация сар и pidstat)

    Есть ли способ использовать эпиал и локальный юм вместе

    Почему размер подкачки на 4 килобайта меньше, чем у базового устройства?

    Linux замедляется после длительного времени работы

    Установить имя тома VFAT неразрушающим?

    эхо-символы в терминале / bash

    Почему выход ss по умолчанию такой странный?

    openssl не загружает двигатель из файла конфигурации

    Как заставить `script` начинать и заканчивать автоматически при работе в определенном каталоге?

    Почему sed не удаляет мои пустые строки?

    Где хранятся имена файлов в файловой системе?

    Linux и Unix - лучшая ОС в мире.