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

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

5
Что такое ":-!!" в коде 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). */ #define …
1665 c  linux  macros  linux-kernel 

10
Как работают вероятные / маловероятные макросы в ядре 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) Я знаю, что они для оптимизации, но как они работают? …

11
Bool является родным типом C?
Я заметил, что код ядра Linux использует bool, но я подумал, что bool - это тип C ++. Является ли bool стандартным расширением C (например, ISO C90) или расширением GCC?
265 c  gcc  linux-kernel  boolean 

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

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

4
Увеличение максимального количества соединений TCP / IP в Linux
Я программирую сервер, и кажется, что мое количество подключений ограничено, поскольку пропускная способность не насыщается, даже если я установил количество подключений как «неограниченное». Как я могу увеличить или исключить максимальное количество соединений, которые может одновременно открывать мой Ubuntu Linux box? ОС ограничивает это, или это маршрутизатор или провайдер? Или что-то …

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

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

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

2
Измерить время в Linux - время против часов против getrusage против clock_gettime против gettimeofday против timespec_get?
Среди временных функций, time, clock getrusage, clock_gettime, gettimeofdayи timespec_getя хочу , чтобы четко понять , как они реализуются , и каковы их возвращаемые значения для того , чтобы знать , в какой ситуации я должен использовать их. Сначала нам нужно классифицировать функции, возвращающие значения настенных часов, по сравнению с функциями, …
148 c  linux  time  linux-kernel 

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

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.