Вопросы с тегом «linux-kernel»

Этот тег предназначен для вопросов о внутреннем устройстве самого ядра Linux - особенно о написании кода, который выполняется в контексте ядра (например, модули ядра или драйверы). Вопросы о написании кода пользовательского пространства в Linux обычно следует помечать тегом [linux]. Поскольку внутреннее устройство ядра Linux постоянно меняется, полезно указать точные версии ядра, которые вас интересуют.

1665
Что такое ":-!!" в коде C?

Я наткнулся на этот странный код макроса в /usr/include/linux/kernel.h : /* Force a compilation error if condition is true, but also produce a result (of value 0 and type size_t), so the expression can be used e.g. in a structure initializer (or where-ever else comma expressions aren't permitted)....

349
Как работают вероятные / маловероятные макросы в ядре Linux и в чем их выгода?

Я копался в некоторых частях ядра Linux и нашел такие вызовы: if (unlikely(fd < 0)) { /* Do something */ } или if (likely(!err)) { /* Do something */ } Я нашел их определение: #define likely(x) __builtin_expect((x),1) #define unlikely(x) __builtin_expect((x),0) Я знаю, что они для оптимизации,...

258
Как тестируется ядро ​​Linux?

Как разработчики ядра Linux тестируют свой код локально и после того, как они его зафиксировали? Они используют какое-то модульное тестирование, автоматизацию сборки? планы...

236
Каково теоретическое максимальное количество открытых TCP-соединений, которое может иметь современная коробка Linux

Предполагая бесконечную производительность от оборудования, может ли коробка Linux поддерживать> 65536 открытых TCP-соединений? Я понимаю, что количество эфемерных портов (<65536) ограничивает количество соединений от одного локального IP до одного порта на одном удаленном IP. Кортеж...

214
Увеличение максимального количества соединений TCP / IP в Linux

Я программирую сервер, и кажется, что мое количество подключений ограничено, поскольку пропускная способность не насыщается, даже если я установил количество подключений как «неограниченное». Как я могу увеличить или исключить максимальное количество соединений, которые может одновременно открывать...

209
Почему Linux называют монолитным ядром?

Я читал, что Linux - это монолитное ядро. Означает ли монолитное ядро ​​компиляцию и компоновку всего кода ядра в исполняемый файл? Если Linux может поддерживать модули, почему бы не разбить все подсистемы на модули и загрузить их при необходимости? В этом случае ядро ​​не должно загружать все...

173
Поиск, какой процесс был убит Linux OOM Killer

Когда в Linux не хватает памяти (OOM), убийца OOM выбирает процесс для уничтожения на основе некоторой эвристики (это интересное чтение: http://lwn.net/Articles/317814/ ). Как можно программно определить, какие процессы были недавно убиты убийцей...

149
В чем разница между пространством ядра и пространством пользователя?

В чем разница между пространством ядра и пространством пользователя? Означают ли пространство ядра, потоки ядра, процессы ядра и стек ядра одно и то же? Кроме того, зачем нам эта дифференциация?...

148
Измерить время в Linux - время против часов против getrusage против clock_gettime против gettimeofday против timespec_get?

Среди временных функций, time, clock getrusage, clock_gettime, gettimeofdayи timespec_getя хочу , чтобы четко понять , как они реализуются , и каковы их возвращаемые значения для того , чтобы знать , в какой ситуации я должен использовать их. Сначала нам нужно классифицировать функции, возвращающие...

139
Написание программ для устранения ошибок ввода-вывода, вызывающих потерю записи в Linux

TL; DR: Если ядро ​​Linux теряет буферизованную запись ввода-вывода , есть ли способ для приложения узнать? Я знаю, что вам нужен fsync()файл (и его родительский каталог) для долговечности . Вопрос в том, теряет ли ядро ​​грязные буферы, ожидающие записи, из-за ошибки ввода-вывода, как приложение...

126
Драйвер устройства IOCTL Linux [закрыто]

Закрыто . Этот вопрос должен быть более конкретным . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он фокусировался только на одной проблеме, отредактировав этот пост . Закрыт в прошлом году . Уточните этот вопрос Кто-нибудь может мне объяснить, Что...

114
В чем разница между vmalloc и kmalloc?

Я погуглил и нашел, что большинство людей выступают за использование kmalloc, поскольку вы гарантированно получите непрерывные физические блоки памяти. Однако также кажется, что он kmallocможет потерпеть неудачу, если не удается найти непрерывный физический блок, который вам нужен. Каковы...

111
стек ядра и стек пользовательского пространства

В чем разница между стеком ядра и пользовательским стеком? Почему используется стек ядра? Если локальная переменная объявлена ​​в ISR, где она будет храниться? Есть ли у каждого процесса свой стек ядра? Тогда как процесс координируется между этими двумя...

107
Что происходит с дескриптором открытого файла в Linux, если указанный файл перемещается или удаляется

Что произойдет с дескриптором открытого файла в Linux, если указанный файл тем временем получит: Перемещено -> Сохраняется ли дескриптор файла? Удалено -> Приводит ли это к EBADF, указывающему на недопустимый дескриптор файла? Заменено новым файлом -> Указывает ли дескриптор файла на этот...

99
Как «перевести в спящий режим» процесс в Linux, сохранив его память на диск и позже восстановив?

Можно ли перевести процесс в спящий режим в Linux? Как и в режиме гибернации в ноутбуке, я бы записал всю память, используемую процессом, на диск, освободив оперативную память. А потом, позже, я могу «возобновить процесс», т. Е. Прочитать все данные из памяти и вернуть их в ОЗУ, и я смогу...

99
Контекст переключается намного медленнее в новых ядрах Linux

Мы планируем обновить ОС на наших серверах с Ubuntu 10.04 LTS до Ubuntu 12.04 LTS. К сожалению, кажется, что задержка для запуска потока, который стал работоспособным, значительно увеличилась с ядра 2.6 до ядра 3.2. На самом деле в получаемые нами значения задержки трудно поверить. Позвольте мне...

99
Чтение / запись файлов в модуле ядра Linux

Я знаю все дискуссии о том, почему не следует читать / записывать файлы из ядра, вместо этого, как использовать / proc или netlink для этого. Я все равно хочу читать / писать. Я также прочитал Driving Me Nuts - Вещи, которые вы никогда не должны делать в ядре . Однако проблема в том, что 2.6.30 не...

98
Если потоки используют один и тот же PID, как их можно идентифицировать?

У меня есть запрос, связанный с реализацией потоков в Linux. Linux не имеет явной поддержки потоков. В пользовательском пространстве мы можем использовать библиотеку потоков (например, NPTL) для создания потоков. Теперь, если мы используем NPTL, он поддерживает отображение 1: 1. Ядро будет...