NTP, как и TCP, имеет глубокую теорию и практический опыт, встроенные в протокол; если вы измените его основные параметры, он перестает иметь свойства синхронизации, для которых он был разработан.
Если ваше устройство спорадически связано, возможно, старый добрый RDATE будет служить вам лучше всего. Он не обрабатывает поворот часов, равно как и усреднение по сверстке, и не может быть защищен от различных тонких хаков, которые мог бы сыграть человек в середине, если бы он стоил того времени. Он просто получает контрольную дату с удаленного сервера и ударяет локальные часы с помощью молотка. Но он делает это, когда вы этого хотите, и его поведение детерминировано.
Точность RDATE намного хуже, чем NTP, я бы не доверял ей лучше, чем ± 1 секунду, но если вы только спорадически привязаны, более точное время не имеет значения; действительно, согласно RDATE , это может даже не иметь смысла.
Ожидающий канал - это место в ядре, где задача в настоящее время ожидает. Задача должна ждать ресурса, который может быть данными или временем обработки. Эти два включают сетевые сокеты, аппаратные средства, файлы и т. Д .; поскольку большинство из них - это просто файлы в Unix-подобных системах.
0: процесс не ждет poll_schedule_timeout poll() - системный вызов1, используемый для обработки ввода-вывода. Это похоже на select() .2 Приложения, использующие неблокирующий ввод-вывод, используют эти вызовы, чтобы узнать, могут ли они читать или записывать в файл, а не блокировать его. Они часто используются для потоков ввода / вывода, которые не могут быть заблокированы (иначе, возможно, ваша мышь перестанет двигаться). Ожидающий канал poll_schedule_timeout указывает, что задача ожидает ввода-вывода, будь то аппаратное обеспечение, например клавиатуры и мыши, звуковые устройства или даже сетевые сокеты. Функция в ядре. Они определены в <linux/poll.h>. poll была реализацией, впервые увиденной в System V, select является эквивалентом BSD UNIX. futex_wait_queue_me: Чтобы объяснить это, мы должны взглянуть на Locks. Блокировка - это сохраненное состояние в системе, которое указывает, что задача работает с ресурсом. Например, может быть только одна задача, которая читает файл. Эта задача блокирует файл, любая другая задача1, которая пытается прочитать файл, будет знать, что она заблокирована, и дождитесь, когда блокировка исчезнет, прежде чем она сможет получить к ней доступ. То же самое происходит и для процессорного времени. Современная версия Linux (на большинстве архитектур) использует в ядре Futex (быстрый мьютекс пользовательского пространства). Мьютекс, взаимное исключение, относится к идее, что общий ресурс может быть доступен только одной задачей в любое время. Для этого устанавливаются флаги в системе. Если процесс ожидает заблокированного ресурса, это называется Busy Waiting или «Spinning», ссылаясь на то, что он пытается получить доступ к нему снова и снова, пока это не удастся. Говорят, что задача закрывается, когда она вращается. Блокировки Futex можно рассматривать как число в пользовательском пространстве, которое может увеличиваться или уменьшаться задачей (в случаях, когда к ресурсу можно обращаться несколькими задачами, это число может превышать единицу). Это число показано на диаграмме4. Эти задачи помещаются в очередь ожидания, простая очередь задач, которые должны выполнять некоторую работу, когда время обработки доступно, задачи выполняют свою работу и удаляются из очереди. futex_wait_queue_me ставит задачи. Затем он ждет сигнала, тайм-аут или пробуждение. Задача, которая находится в этом ожидающем канале, не ждет очереди ожидания, они ждут очереди. Задача может быть либо Process3, либо Thread2 A Thread является подразделением процесса. Многие потоки могут запускаться параллельно. Процесс является полномасштабной программой, состоящей из одного или нескольких потоков, хотя программа может также состоять из нескольких процессов. Помните, что это все еще очень высокий уровень представления вещей, он не рассматривает детали реализации __skb_recv_datagram Подождите некоторые данные о заблокированном сетевом сокете. sk_wait_data Подождите несколько данных в сетевом сокете. do_exit Это последняя часть выхода из процесса. do_exit() вызывает следующий schedule(), чтобы запланировать другой процесс. Когда вызывается do_exit(), процесс является ZOMBIE. do_wait Процесс добавляется в очередь ожидания планировщика. pipe_wait, unix_stream_data_wait Процесс ожидает данных из подпроцесса. Это происходит, например, при запуске такого кода:echo | sleep 10 && echo hallo # pipe
или cat < hello.c # unix data stream
hrtimer_nanosleep Процесс спящий, используя метод hrtimer_nanosleep(). Этот метод может использоваться для программ для сна в течение определенных интервалов времени с точностью до наносекунды. Это еще не все, но я не наблюдал других. Опубликуйте комментарий, если я пропустил что-нибудь.
Ожидающий канал - это место в ядре, где задача в настоящее время ожидает. Задача должна ждать ресурса, который может быть данными или временем обработки. Эти два включают сетевые сокеты, аппаратные средства, файлы и т. Д .; поскольку большинство из них - это просто файлы в Unix-подобных системах.
0: процесс не ждет poll_schedule_timeout poll() - системный вызов1, используемый для обработки ввода-вывода. Это похоже на select() .2 Приложения, использующие неблокирующий ввод-вывод, используют эти вызовы, чтобы узнать, могут ли они читать или записывать в файл, а не блокировать его. Они часто используются для потоков ввода / вывода, которые не могут быть заблокированы (иначе, возможно, ваша мышь перестанет двигаться). Ожидающий канал poll_schedule_timeout указывает, что задача ожидает ввода-вывода, будь то аппаратное обеспечение, например клавиатуры и мыши, звуковые устройства или даже сетевые сокеты. Функция в ядре. Они определены в <linux/poll.h>. poll была реализацией, впервые увиденной в System V, select является эквивалентом BSD UNIX. futex_wait_queue_me: Чтобы объяснить это, мы должны взглянуть на Locks. Блокировка - это сохраненное состояние в системе, которое указывает, что задача работает с ресурсом. Например, может быть только одна задача, которая читает файл. Эта задача блокирует файл, любая другая задача1, которая пытается прочитать файл, будет знать, что она заблокирована, и дождитесь, когда блокировка исчезнет, прежде чем она сможет получить к ней доступ. То же самое происходит и для процессорного времени. Современная версия Linux (на большинстве архитектур) использует в ядре Futex (быстрый мьютекс пользовательского пространства). Мьютекс, взаимное исключение, относится к идее, что общий ресурс может быть доступен только одной задачей в любое время. Для этого устанавливаются флаги в системе. Если процесс ожидает заблокированного ресурса, это называется Busy Waiting или «Spinning», ссылаясь на то, что он пытается получить доступ к нему снова и снова, пока это не удастся. Говорят, что задача закрывается, когда она вращается. Блокировки Futex можно рассматривать как число в пользовательском пространстве, которое может увеличиваться или уменьшаться задачей (в случаях, когда к ресурсу можно обращаться несколькими задачами, это число может превышать единицу). Это число показано на диаграмме4. Эти задачи помещаются в очередь ожидания, простая очередь задач, которые должны выполнять некоторую работу, когда время обработки доступно, задачи выполняют свою работу и удаляются из очереди. futex_wait_queue_me ставит задачи. Затем он ждет сигнала, тайм-аут или пробуждение. Задача, которая находится в этом ожидающем канале, не ждет очереди ожидания, они ждут очереди. Задача может быть либо Process3, либо Thread2 A Thread является подразделением процесса. Многие потоки могут запускаться параллельно. Процесс является полномасштабной программой, состоящей из одного или нескольких потоков, хотя программа может также состоять из нескольких процессов. Помните, что это все еще очень высокий уровень представления вещей, он не рассматривает детали реализации __skb_recv_datagram Подождите некоторые данные о заблокированном сетевом сокете. sk_wait_data Подождите несколько данных в сетевом сокете. do_exit Это последняя часть выхода из процесса. do_exit() вызывает следующий schedule(), чтобы запланировать другой процесс. Когда вызывается do_exit(), процесс является ZOMBIE. do_wait Процесс добавляется в очередь ожидания планировщика. pipe_wait, unix_stream_data_wait Процесс ожидает данных из подпроцесса. Это происходит, например, при запуске такого кода:echo | sleep 10 && echo hallo # pipe
или cat < hello.c # unix data stream
hrtimer_nanosleep Процесс спящий, используя метод hrtimer_nanosleep(). Этот метод может использоваться для программ для сна в течение определенных интервалов времени с точностью до наносекунды. Это еще не все, но я не наблюдал других. Опубликуйте комментарий, если я пропустил что-нибудь.
Ожидающий канал - это место в ядре, где задача в настоящее время ожидает. Задача должна ждать ресурса, который может быть данными или временем обработки. Эти два включают сетевые сокеты, аппаратные средства, файлы и т. Д .; поскольку большинство из них - это просто файлы в Unix-подобных системах.
0: процесс не ждет poll_schedule_timeout poll() - системный вызов1, используемый для обработки ввода-вывода. Это похоже на select() .2 Приложения, использующие неблокирующий ввод-вывод, используют эти вызовы, чтобы узнать, могут ли они читать или записывать в файл, а не блокировать его. Они часто используются для потоков ввода / вывода, которые не могут быть заблокированы (иначе, возможно, ваша мышь перестанет двигаться). Ожидающий канал poll_schedule_timeout указывает, что задача ожидает ввода-вывода, будь то аппаратное обеспечение, например клавиатуры и мыши, звуковые устройства или даже сетевые сокеты. Функция в ядре. Они определены в <linux/poll.h>. poll была реализацией, впервые увиденной в System V, select является эквивалентом BSD UNIX. futex_wait_queue_me: Чтобы объяснить это, мы должны взглянуть на Locks. Блокировка - это сохраненное состояние в системе, которое указывает, что задача работает с ресурсом. Например, может быть только одна задача, которая читает файл. Эта задача блокирует файл, любая другая задача1, которая пытается прочитать файл, будет знать, что она заблокирована, и дождитесь, когда блокировка исчезнет, прежде чем она сможет получить к ней доступ. То же самое происходит и для процессорного времени. Современная версия Linux (на большинстве архитектур) использует в ядре Futex (быстрый мьютекс пользовательского пространства). Мьютекс, взаимное исключение, относится к идее, что общий ресурс может быть доступен только одной задачей в любое время. Для этого устанавливаются флаги в системе. Если процесс ожидает заблокированного ресурса, это называется Busy Waiting или «Spinning», ссылаясь на то, что он пытается получить доступ к нему снова и снова, пока это не удастся. Говорят, что задача закрывается, когда она вращается. Блокировки Futex можно рассматривать как число в пользовательском пространстве, которое может увеличиваться или уменьшаться задачей (в случаях, когда к ресурсу можно обращаться несколькими задачами, это число может превышать единицу). Это число показано на диаграмме4. Эти задачи помещаются в очередь ожидания, простая очередь задач, которые должны выполнять некоторую работу, когда время обработки доступно, задачи выполняют свою работу и удаляются из очереди. futex_wait_queue_me ставит задачи. Затем он ждет сигнала, тайм-аут или пробуждение. Задача, которая находится в этом ожидающем канале, не ждет очереди ожидания, они ждут очереди. Задача может быть либо Process3, либо Thread2 A Thread является подразделением процесса. Многие потоки могут запускаться параллельно. Процесс является полномасштабной программой, состоящей из одного или нескольких потоков, хотя программа может также состоять из нескольких процессов. Помните, что это все еще очень высокий уровень представления вещей, он не рассматривает детали реализации __skb_recv_datagram Подождите некоторые данные о заблокированном сетевом сокете. sk_wait_data Подождите несколько данных в сетевом сокете. do_exit Это последняя часть выхода из процесса. do_exit() вызывает следующий schedule(), чтобы запланировать другой процесс. Когда вызывается do_exit(), процесс является ZOMBIE. do_wait Процесс добавляется в очередь ожидания планировщика. pipe_wait, unix_stream_data_wait Процесс ожидает данных из подпроцесса. Это происходит, например, при запуске такого кода:echo | sleep 10 && echo hallo # pipe
или cat < hello.c # unix data stream
hrtimer_nanosleep Процесс спящий, используя метод hrtimer_nanosleep(). Этот метод может использоваться для программ для сна в течение определенных интервалов времени с точностью до наносекунды. Это еще не все, но я не наблюдал других. Опубликуйте комментарий, если я пропустил что-нибудь.
Ожидающий канал - это место в ядре, где задача в настоящее время ожидает. Задача должна ждать ресурса, который может быть данными или временем обработки. Эти два включают сетевые сокеты, аппаратные средства, файлы и т. Д .; так как большинство из них - это просто файлы в Unix-подобных системах.
0
: процесс не ждет poll_schedule_timeout
poll ()
- системный вызов1, используемый для обработки ввода-вывода. Это похоже на select ()
.2 Приложения, использующие неблокирующий ввод-вывод, используют эти вызовы, чтобы увидеть, могут ли они читать или записывать в файл, причем его нужно блокировать. Они часто используются для потоков ввода / вывода, которые не могут быть заблокированы (иначе, возможно, ваша мышь перестанет двигаться). Ожидающий канал poll_schedule_timeout
указывает, что задача ожидает ввода-вывода, будь то аппаратное обеспечение, например клавиатуры и мыши, звуковые устройства или даже сетевые сокеты. Функция в ядре. Они определены в & lt; linux / poll.h & gt;
. poll
- это реализация, впервые увиденная в System V, select
- эквивалент BSD UNIX. futex_wait_queue_me
: Чтобы объяснить это, мы должны взглянуть на Locks. Блокировка - это сохраненное состояние в системе, которое указывает, что задача работает с ресурсом. Например, может быть только одна задача, которая читает файл. Эта задача блокирует файл, любая другая задача1, которая пытается прочитать файл, будет знать, что она заблокирована, и дождитесь, когда блокировка исчезнет, прежде чем она сможет получить к ней доступ. То же самое происходит и для процессорного времени. Современная версия Linux (на большинстве архитектур) использует в ядре Futex (быстрый мьютекс пользовательского пространства). Мьютекс, взаимное исключение, относится к идее, что общий ресурс может быть доступен только одной задачей в любое время. Для этого устанавливаются флаги в системе. Если процесс ожидает заблокированного ресурса, это называется Busy Waiting или «Spinning», ссылаясь на то, что он пытается получить к нему доступ снова и снова, пока это не удастся. Задача считается заблокирована , когда она вращается. [!d29] Блокировки Futex можно рассматривать как число в пользовательском пространстве, которое может быть увеличено или уменьшено задачей (в тех случаях, когда ресурс может быть доступен несколькими задачами, этот номер может стать больше одного). Это число показано на диаграмме4. Эти задачи задерживаются в очереди ожидания , простой очереди задач, которые должны выполнять некоторую работу, когда время обработки доступно, задачи выполняют свою работу и удаляются из очереди. futex_wait_queue_me
задает задачи. Затем он ждет сигнала, тайм-аут или пробуждение. Задача, которая находится в этом ожидающем канале , не ждет очереди ожидания, они ждут, чтобы быть в очереди. Задача может быть либо Process3, либо Thread2 A Thread является подразделением процесса. Многие потоки могут запускаться параллельно. Процесс является полномасштабной программой, состоящей из одного или нескольких потоков, хотя программа может также состоять из нескольких процессов. Помните, что это все еще очень высокий уровень представления вещей, он не рассматривает детали реализации __ skb_recv_datagram
Подождите, пока некоторые данные о заблокированном сетевом сокете. sk_wait_data
Дождитесь получения некоторых данных в сетевом сокете. do_exit
Это последняя часть выхода из процесса. do_exit ()
вызывает расписание ()
next, чтобы запланировать другой процесс. Когда вызывается do_exit ()
, процесс является ZOMBIE
. do_wait
Процесс добавляется к ожидающим планировщика очередь. pipe_wait
, unix_stream_data_wait
Процесс ожидает данных из подпроцесса. Это происходит, например, при запуске такого кода: echo | сон 10 & amp; & amp; echo hallo # pipe
или cat & lt; hello.c # unix data stream
hrtimer_nanosleep
Процесс спящий, используя метод hrtimer_nanosleep ()
. Этот метод может использоваться для программ для сна в течение определенных интервалов времени с точностью до наносекунды. Это еще не все, но я не наблюдал других. Опубликуйте комментарий, если я пропустил что-нибудь.
Ожидающий канал - это место в ядре, где задача в настоящее время ожидает. Задача должна ждать ресурса, который может быть данными или временем обработки. Эти два включают сетевые сокеты, аппаратные средства, файлы и т. Д .; так как большинство из них - это просто файлы в Unix-подобных системах.
0
: процесс не ждет poll_schedule_timeout
poll ()
- системный вызов1, используемый для обработки ввода-вывода. Это похоже на select ()
.2 Приложения, использующие неблокирующий ввод-вывод, используют эти вызовы, чтобы увидеть, могут ли они читать или записывать в файл, причем его нужно блокировать. Они часто используются для потоков ввода / вывода, которые не могут быть заблокированы (иначе, возможно, ваша мышь перестанет двигаться). Ожидающий канал poll_schedule_timeout
указывает, что задача ожидает ввода-вывода, будь то аппаратное обеспечение, например клавиатуры и мыши, звуковые устройства или даже сетевые сокеты. Функция в ядре. Они определены в & lt; linux / poll.h & gt;
. poll
- это реализация, впервые увиденная в System V, select
- эквивалент BSD UNIX. futex_wait_queue_me
: Чтобы объяснить это, мы должны взглянуть на Locks. Блокировка - это сохраненное состояние в системе, которое указывает, что задача работает с ресурсом. Например, может быть только одна задача, которая читает файл. Эта задача блокирует файл, любая другая задача1, которая пытается прочитать файл, будет знать, что она заблокирована, и дождитесь, когда блокировка исчезнет, прежде чем она сможет получить к ней доступ. То же самое происходит и для процессорного времени. Современная версия Linux (на большинстве архитектур) использует в ядре Futex (быстрый мьютекс пользовательского пространства). Мьютекс, взаимное исключение, относится к идее, что общий ресурс может быть доступен только одной задачей в любое время. Для этого устанавливаются флаги в системе. Если процесс ожидает заблокированного ресурса, это называется Busy Waiting или «Spinning», ссылаясь на то, что он пытается получить к нему доступ снова и снова, пока это не удастся. Задача считается заблокирована , когда она вращается. [!d29] Блокировки Futex можно рассматривать как число в пользовательском пространстве, которое может быть увеличено или уменьшено задачей (в тех случаях, когда ресурс может быть доступен несколькими задачами, этот номер может стать больше одного). Это число показано на диаграмме4. Эти задачи задерживаются в очереди ожидания , простой очереди задач, которые должны выполнять некоторую работу, когда время обработки доступно, задачи выполняют свою работу и удаляются из очереди. futex_wait_queue_me
задает задачи. Затем он ждет сигнала, тайм-аут или пробуждение. Задача, которая находится в этом ожидающем канале , не ждет очереди ожидания, они ждут, чтобы быть в очереди. Задача может быть либо Process3, либо Thread2 A Thread является подразделением процесса. Многие потоки могут запускаться параллельно. Процесс является полномасштабной программой, состоящей из одного или нескольких потоков, хотя программа может также состоять из нескольких процессов. Помните, что это все еще очень высокий уровень представления вещей, он не рассматривает детали реализации __ skb_recv_datagram
Подождите, пока некоторые данные о заблокированном сетевом сокете. sk_wait_data
Дождитесь получения некоторых данных в сетевом сокете. do_exit
Это последняя часть выхода из процесса. do_exit ()
вызывает расписание ()
next, чтобы запланировать другой процесс. Когда вызывается do_exit ()
, процесс является ZOMBIE
. do_wait
Процесс добавляется к ожидающим планировщика очередь. pipe_wait
, unix_stream_data_wait
Процесс ожидает данных из подпроцесса. Это происходит, например, при запуске такого кода: echo | сон 10 & amp; & amp; echo hallo # pipe
или cat & lt; hello.c # unix data stream
hrtimer_nanosleep
Процесс спящий, используя метод hrtimer_nanosleep ()
. Этот метод может использоваться для программ для сна в течение определенных интервалов времени с точностью до наносекунды. Это еще не все, но я не наблюдал других. Опубликуйте комментарий, если я пропустил что-нибудь.
Ожидающий канал - это место в ядре, где задача в настоящее время ожидает. Задача должна ждать ресурса, который может быть данными или временем обработки. Эти два включают сетевые сокеты, аппаратные средства, файлы и т. Д .; так как большинство из них - это просто файлы в Unix-подобных системах.
0
: процесс не ждет poll_schedule_timeout
poll ()
- системный вызов1, используемый для обработки ввода-вывода. Это похоже на select ()
.2 Приложения, использующие неблокирующий ввод-вывод, используют эти вызовы, чтобы увидеть, могут ли они читать или записывать в файл, причем его нужно блокировать. Они часто используются для потоков ввода / вывода, которые не могут быть заблокированы (иначе, возможно, ваша мышь перестанет двигаться). Ожидающий канал poll_schedule_timeout
указывает, что задача ожидает ввода-вывода, будь то аппаратное обеспечение, например клавиатуры и мыши, звуковые устройства или даже сетевые сокеты. Функция в ядре. Они определены в & lt; linux / poll.h & gt;
. poll
- это реализация, впервые увиденная в System V, select
- эквивалент BSD UNIX. futex_wait_queue_me
: Чтобы объяснить это, мы должны взглянуть на Locks. Блокировка - это сохраненное состояние в системе, которое указывает, что задача работает с ресурсом. Например, может быть только одна задача, которая читает файл. Эта задача блокирует файл, любая другая задача1, которая пытается прочитать файл, будет знать, что она заблокирована, и дождитесь, когда блокировка исчезнет, прежде чем она сможет получить к ней доступ. То же самое происходит и для процессорного времени. Современная версия Linux (на большинстве архитектур) использует в ядре Futex (быстрый мьютекс пользовательского пространства). Мьютекс, взаимное исключение, относится к идее, что общий ресурс может быть доступен только одной задачей в любое время. Для этого устанавливаются флаги в системе. Если процесс ожидает заблокированного ресурса, это называется Busy Waiting или «Spinning», ссылаясь на то, что он пытается получить к нему доступ снова и снова, пока это не удастся. Задача считается заблокирована , когда она вращается. [!d29] Блокировки Futex можно рассматривать как число в пользовательском пространстве, которое может быть увеличено или уменьшено задачей (в тех случаях, когда ресурс может быть доступен несколькими задачами, этот номер может стать больше одного). Это число показано на диаграмме4. Эти задачи задерживаются в очереди ожидания , простой очереди задач, которые должны выполнять некоторую работу, когда время обработки доступно, задачи выполняют свою работу и удаляются из очереди. futex_wait_queue_me
задает задачи. Затем он ждет сигнала, тайм-аут или пробуждение. Задача, которая находится в этом ожидающем канале , не ждет очереди ожидания, они ждут, чтобы быть в очереди. Задача может быть либо Process3, либо Thread2 A Thread является подразделением процесса. Многие потоки могут запускаться параллельно. Процесс является полномасштабной программой, состоящей из одного или нескольких потоков, хотя программа может также состоять из нескольких процессов. Помните, что это все еще очень высокий уровень представления вещей, он не рассматривает детали реализации __ skb_recv_datagram
Подождите, пока некоторые данные о заблокированном сетевом сокете. sk_wait_data
Дождитесь получения некоторых данных в сетевом сокете. do_exit
Это последняя часть выхода из процесса. do_exit ()
вызывает расписание ()
next, чтобы запланировать другой процесс. Когда вызывается do_exit ()
, процесс является ZOMBIE
. do_wait
Процесс добавляется к ожидающим планировщика очередь. pipe_wait
, unix_stream_data_wait
Процесс ожидает данных из подпроцесса. Это происходит, например, при запуске такого кода: echo | сон 10 & amp; & amp; echo hallo # pipe
или cat & lt; hello.c # unix data stream
hrtimer_nanosleep
Процесс спящий, используя метод hrtimer_nanosleep ()
. Этот метод может использоваться для программ для сна в течение определенных интервалов времени с точностью до наносекунды. Это еще не все, но я не наблюдал других. Опубликуйте комментарий, если я пропустил что-нибудь.
Ожидающий канал - это место в ядре, где задача в настоящее время ожидает. Задача должна ждать ресурса, который может быть данными или временем обработки. Эти два включают сетевые сокеты, аппаратные средства, файлы и т. Д .; так как большинство из них - это просто файлы в Unix-подобных системах.
0
: процесс не ждет poll_schedule_timeout
poll ()
- системный вызов1, используемый для обработки ввода-вывода. Это похоже на select ()
.2 Приложения, использующие неблокирующий ввод-вывод, используют эти вызовы, чтобы увидеть, могут ли они читать или записывать в файл, причем его нужно блокировать. Они часто используются для потоков ввода / вывода, которые не могут быть заблокированы (иначе, возможно, ваша мышь перестанет двигаться). Ожидающий канал poll_schedule_timeout
указывает, что задача ожидает ввода-вывода, будь то аппаратное обеспечение, например клавиатуры и мыши, звуковые устройства или даже сетевые сокеты. Функция в ядре. Они определены в & lt; linux / poll.h & gt;
. poll
- это реализация, впервые увиденная в System V, select
- эквивалент BSD UNIX. futex_wait_queue_me
: Чтобы объяснить это, мы должны взглянуть на Locks. Блокировка - это сохраненное состояние в системе, которое указывает, что задача работает с ресурсом. Например, может быть только одна задача, которая читает файл. Эта задача блокирует файл, любая другая задача1, которая пытается прочитать файл, будет знать, что она заблокирована, и дождитесь, когда блокировка исчезнет, прежде чем она сможет получить к ней доступ. То же самое происходит и для процессорного времени. Современная версия Linux (на большинстве архитектур) использует в ядре Futex (быстрый мьютекс пользовательского пространства). Мьютекс, взаимное исключение, относится к идее, что общий ресурс может быть доступен только одной задачей в любое время. Для этого устанавливаются флаги в системе. Если процесс ожидает заблокированного ресурса, это называется Busy Waiting или «Spinning», ссылаясь на то, что он пытается получить к нему доступ снова и снова, пока это не удастся. Задача считается заблокирована , когда она вращается. [!d29] Блокировки Futex можно рассматривать как число в пользовательском пространстве, которое может быть увеличено или уменьшено задачей (в тех случаях, когда ресурс может быть доступен несколькими задачами, этот номер может стать больше одного). Это число показано на диаграмме4. Эти задачи задерживаются в очереди ожидания , простой очереди задач, которые должны выполнять некоторую работу, когда время обработки доступно, задачи выполняют свою работу и удаляются из очереди. futex_wait_queue_me
задает задачи. Затем он ждет сигнала, тайм-аут или пробуждение. Задача, которая находится в этом ожидающем канале , не ждет очереди ожидания, они ждут, чтобы быть в очереди. Задача может быть либо Process3, либо Thread2 A Thread является подразделением процесса. Многие потоки могут запускаться параллельно. Процесс является полномасштабной программой, состоящей из одного или нескольких потоков, хотя программа может также состоять из нескольких процессов. Помните, что это все еще очень высокий уровень представления вещей, он не рассматривает детали реализации __ skb_recv_datagram
Подождите, пока некоторые данные о заблокированном сетевом сокете. sk_wait_data
Дождитесь получения некоторых данных в сетевом сокете. do_exit
Это последняя часть выхода из процесса. do_exit ()
вызывает расписание ()
next, чтобы запланировать другой процесс. Когда вызывается do_exit ()
, процесс является ZOMBIE
. do_wait
Процесс добавляется к ожидающим планировщика очередь. pipe_wait
, unix_stream_data_wait
Процесс ожидает данных из подпроцесса. Это происходит, например, при запуске такого кода: echo | сон 10 & amp; & amp; echo hallo # pipe
или cat & lt; hello.c # unix data stream
hrtimer_nanosleep
Процесс спящий, используя метод hrtimer_nanosleep ()
. Этот метод может использоваться для программ для сна в течение определенных интервалов времени с точностью до наносекунды. Это еще не все, но я не наблюдал других. Опубликуйте комментарий, если я пропустил что-нибудь.
Ожидающий канал - это место в ядре, где задача в настоящее время ожидает. Задача должна ждать ресурса, который может быть данными или временем обработки. Эти два включают сетевые сокеты, аппаратные средства, файлы и т. Д .; так как большинство из них - это просто файлы в Unix-подобных системах.
0
: процесс не ждет poll_schedule_timeout
poll ()
- системный вызов1, используемый для обработки ввода-вывода. Это похоже на select ()
.2 Приложения, использующие неблокирующий ввод-вывод, используют эти вызовы, чтобы увидеть, могут ли они читать или записывать в файл, причем его нужно блокировать. Они часто используются для потоков ввода / вывода, которые не могут быть заблокированы (иначе, возможно, ваша мышь перестанет двигаться). Ожидающий канал poll_schedule_timeout
указывает, что задача ожидает ввода-вывода, будь то аппаратное обеспечение, например клавиатуры и мыши, звуковые устройства или даже сетевые сокеты. Функция в ядре. Они определены в & lt; linux / poll.h & gt;
. poll
- это реализация, впервые увиденная в System V, select
- эквивалент BSD UNIX. futex_wait_queue_me
: Чтобы объяснить это, мы должны взглянуть на Locks. Блокировка - это сохраненное состояние в системе, которое указывает, что задача работает с ресурсом. Например, может быть только одна задача, которая читает файл. Эта задача блокирует файл, любая другая задача1, которая пытается прочитать файл, будет знать, что она заблокирована, и дождитесь, когда блокировка исчезнет, прежде чем она сможет получить к ней доступ. То же самое происходит и для процессорного времени. Современная версия Linux (на большинстве архитектур) использует в ядре Futex (быстрый мьютекс пользовательского пространства). Мьютекс, взаимное исключение, относится к идее, что общий ресурс может быть доступен только одной задачей в любое время. Для этого устанавливаются флаги в системе. Если процесс ожидает заблокированного ресурса, это называется Busy Waiting или «Spinning», ссылаясь на то, что он пытается получить к нему доступ снова и снова, пока это не удастся. Задача считается заблокирована , когда она вращается. [!d29] Блокировки Futex можно рассматривать как число в пользовательском пространстве, которое может быть увеличено или уменьшено задачей (в тех случаях, когда ресурс может быть доступен несколькими задачами, этот номер может стать больше одного). Это число показано на диаграмме4. Эти задачи задерживаются в очереди ожидания , простой очереди задач, которые должны выполнять некоторую работу, когда время обработки доступно, задачи выполняют свою работу и удаляются из очереди. futex_wait_queue_me
задает задачи. Затем он ждет сигнала, тайм-аут или пробуждение. Задача, которая находится в этом ожидающем канале , не ждет очереди ожидания, они ждут, чтобы быть в очереди. Задача может быть либо Process3, либо Thread2 A Thread является подразделением процесса. Многие потоки могут запускаться параллельно. Процесс является полномасштабной программой, состоящей из одного или нескольких потоков, хотя программа может также состоять из нескольких процессов. Помните, что это все еще очень высокий уровень представления вещей, он не рассматривает детали реализации __ skb_recv_datagram
Подождите, пока некоторые данные о заблокированном сетевом сокете. sk_wait_data
Дождитесь получения некоторых данных в сетевом сокете. do_exit
Это последняя часть выхода из процесса. do_exit ()
вызывает расписание ()
next, чтобы запланировать другой процесс. Когда вызывается do_exit ()
, процесс является ZOMBIE
. do_wait
Процесс добавляется к ожидающим планировщика очередь. pipe_wait
, unix_stream_data_wait
Процесс ожидает данных из подпроцесса. Это происходит, например, при запуске такого кода: echo | сон 10 & amp; & amp; echo hallo # pipe
или cat & lt; hello.c # unix data stream
hrtimer_nanosleep
Процесс спящий, используя метод hrtimer_nanosleep ()
. Этот метод может использоваться для программ для сна в течение определенных интервалов времени с точностью до наносекунды. Это еще не все, но я не наблюдал других. Опубликуйте комментарий, если я пропустил что-нибудь.
Значение ожидающего канала - это имя функции ядра, в которой процесс в настоящий момент заблокирован.
Имя обычно связано с системным вызовом, который будет иметь страницу руководства.
futex_wait_queue_me относится к futex. Это относится к типу блокировки мьютекса (быстрое взаимное исключение пользователей), которое используется для планирования работы многих процессов на одном процессоре. Состояние указывает, что ваш процесс находится в очереди, чтобы получить блокировку. 2 do_wait связан с ожиданием. и т. д.Если вы действительно хотите получить более подробную информацию, вы можете проверить исходный код ядра.
Если вы наберете cat /proc/some_pid/stack в терминале, вы получите некоторый результат, например: [ ! d16]
[<c0227f4e>] poll_schedule_timeout+0x3e/0x60
[<c022879f>] do_select+0x55f/0x670
[<c0228f40>] core_sys_select+0x140/0x240
[<c0229241>] sys_select+0x31/0xc0
[<c05c9cc4>] syscall_call+0x7/0xb
[<ffffffff>] 0xffffffff
И на первой строке вы получите то, что отображается на системном мониторе. Насколько мне известно, poll_schedule_timeout указывает, что ваш процесс ждет чего-то.
Он имеет дело с источником и опросом.
Источник (ы): 1. канал ожидания процесса (WCHAN) и сигнал тревоги? - 2. Ответ AskUbuntu
Значение ожидающего канала - это имя функции ядра, в которой процесс в настоящий момент заблокирован.
Имя обычно связано с системным вызовом, который будет иметь страницу руководства.
futex_wait_queue_me относится к futex. Это относится к типу блокировки мьютекса (быстрое взаимное исключение пользователей), которое используется для планирования работы многих процессов на одном процессоре. Состояние указывает, что ваш процесс находится в очереди, чтобы получить блокировку. 2 do_wait связан с ожиданием. и т. д.Если вы действительно хотите получить более подробную информацию, вы можете проверить исходный код ядра.
Если вы наберете cat /proc/some_pid/stack в терминале, вы получите некоторый результат, например: [ ! d16] [<c0227f4e>] poll_schedule_timeout+0x3e/0x60
[<c022879f>] do_select+0x55f/0x670
[<c0228f40>] core_sys_select+0x140/0x240
[<c0229241>] sys_select+0x31/0xc0
[<c05c9cc4>] syscall_call+0x7/0xb
[<ffffffff>] 0xffffffff
И на первой строке вы получите то, что отображается на системном мониторе. Насколько мне известно, poll_schedule_timeout указывает, что ваш процесс ждет чего-то.
Он имеет дело с источником и опросом.
Источник (ы): 1. канал ожидания процесса (WCHAN) и сигнал тревоги? - 2. Ответ AskUbuntu
Значение ожидающего канала - это имя функции ядра, в которой процесс в настоящий момент заблокирован.
Имя обычно связано с системным вызовом, который будет иметь страницу руководства.
futex_wait_queue_me относится к futex. Это относится к типу блокировки мьютекса (быстрое взаимное исключение пользователей), которое используется для планирования работы многих процессов на одном процессоре. Состояние указывает, что ваш процесс находится в очереди, чтобы получить блокировку. 2 do_wait связан с ожиданием. и т. д.Если вы действительно хотите получить более подробную информацию, вы можете проверить исходный код ядра.
Если вы наберете cat /proc/some_pid/stack в терминале, вы получите некоторый результат, например: [ ! d16] [<c0227f4e>] poll_schedule_timeout+0x3e/0x60
[<c022879f>] do_select+0x55f/0x670
[<c0228f40>] core_sys_select+0x140/0x240
[<c0229241>] sys_select+0x31/0xc0
[<c05c9cc4>] syscall_call+0x7/0xb
[<ffffffff>] 0xffffffff
И на первой строке вы получите то, что отображается на системном мониторе. Насколько мне известно, poll_schedule_timeout указывает, что ваш процесс ждет чего-то.
Он имеет дело с источником и опросом.
Источник (ы): 1. канал ожидания процесса (WCHAN) и сигнал тревоги? - 2. Ответ AskUbuntu
Значение ожидающего канала - это имя функции ядра, в которой процесс в настоящий момент заблокирован.
Имя обычно связано с системным вызовом, который будет иметь страницу руководства.
Если вам действительно нужна более подробная информация, вы можете проверить источник ядра .
Если вы И на первой строке вы получите то, что отображается на системном мониторе. Насколько мне известно, poll_schedule_timeout указывает, что ваш процесс ждет чего-то. Он имеет дело с асинхронным вводом-выводом и опросом . Источник (ы): 1. канал ожидания процесса (WCHAN) и аварийный сигнал? - 2. Ответ AskUbuntu
[& lt; c0227f4e & gt;] poll_schedule_timeout + 0x3e / 0x60
cat / proc / some_pid / stack
в терминале, вы получите некоторый результат: & lt; c022879f & gt;] do_select + 0x55f / 0x670 [& lt; c0228f40 & gt;] core_sys_select + 0x140 / 0x240 [& lt; c0229241 & gt;] sys_select + 0x31 / 0xc0 [& lt; c05c9cc4 & gt;] syscall_call + 0x7 / 0xb [& lt; ffffffff & gt;] 0xffffffff
Значение ожидающего канала - это имя функции ядра, в которой процесс в настоящий момент заблокирован.
Имя обычно связано с системным вызовом, который будет иметь страницу руководства.
Если вам действительно нужна более подробная информация, вы можете проверить источник ядра .
Если вы И на первой строке вы получите то, что отображается на системном мониторе. Насколько мне известно, poll_schedule_timeout указывает, что ваш процесс ждет чего-то. Он имеет дело с асинхронным вводом-выводом и опросом . Источник (ы): 1. канал ожидания процесса (WCHAN) и аварийный сигнал? - 2. Ответ AskUbuntu
[& lt; c0227f4e & gt;] poll_schedule_timeout + 0x3e / 0x60
cat / proc / some_pid / stack
в терминале, вы получите некоторый результат: & lt; c022879f & gt;] do_select + 0x55f / 0x670 [& lt; c0228f40 & gt;] core_sys_select + 0x140 / 0x240 [& lt; c0229241 & gt;] sys_select + 0x31 / 0xc0 [& lt; c05c9cc4 & gt;] syscall_call + 0x7 / 0xb [& lt; ffffffff & gt;] 0xffffffff
Значение ожидающего канала - это имя функции ядра, в которой процесс в настоящий момент заблокирован.
Имя обычно связано с системным вызовом, который будет иметь страницу руководства.
Если вам действительно нужна более подробная информация, вы можете проверить источник ядра .
Если вы И на первой строке вы получите то, что отображается на системном мониторе. Насколько мне известно, poll_schedule_timeout указывает, что ваш процесс ждет чего-то. Он имеет дело с асинхронным вводом-выводом и опросом . Источник (ы): 1. канал ожидания процесса (WCHAN) и аварийный сигнал? - 2. Ответ AskUbuntu
[& lt; c0227f4e & gt;] poll_schedule_timeout + 0x3e / 0x60
cat / proc / some_pid / stack
в терминале, вы получите некоторый результат: & lt; c022879f & gt;] do_select + 0x55f / 0x670 [& lt; c0228f40 & gt;] core_sys_select + 0x140 / 0x240 [& lt; c0229241 & gt;] sys_select + 0x31 / 0xc0 [& lt; c05c9cc4 & gt;] syscall_call + 0x7 / 0xb [& lt; ffffffff & gt;] 0xffffffff
Значение ожидающего канала - это имя функции ядра, в которой процесс в настоящий момент заблокирован.
Имя обычно связано с системным вызовом, который будет иметь страницу руководства.
Если вам действительно нужна более подробная информация, вы можете проверить источник ядра .
Если вы И на первой строке вы получите то, что отображается на системном мониторе. Насколько мне известно, poll_schedule_timeout указывает, что ваш процесс ждет чего-то. Он имеет дело с асинхронным вводом-выводом и опросом . Источник (ы): 1. канал ожидания процесса (WCHAN) и аварийный сигнал? - 2. Ответ AskUbuntu
[& lt; c0227f4e & gt;] poll_schedule_timeout + 0x3e / 0x60
cat / proc / some_pid / stack
в терминале, вы получите некоторый результат: & lt; c022879f & gt;] do_select + 0x55f / 0x670 [& lt; c0228f40 & gt;] core_sys_select + 0x140 / 0x240 [& lt; c0229241 & gt;] sys_select + 0x31 / 0xc0 [& lt; c05c9cc4 & gt;] syscall_call + 0x7 / 0xb [& lt; ffffffff & gt;] 0xffffffff
Значение ожидающего канала - это имя функции ядра, в которой процесс в настоящий момент заблокирован.
Имя обычно связано с системным вызовом, который будет иметь страницу руководства.
Если вам действительно нужна более подробная информация, вы можете проверить источник ядра .
Если вы И на первой строке вы получите то, что отображается на системном мониторе. Насколько мне известно, poll_schedule_timeout указывает, что ваш процесс ждет чего-то. Он имеет дело с асинхронным вводом-выводом и опросом . Источник (ы): 1. канал ожидания процесса (WCHAN) и аварийный сигнал? - 2. Ответ AskUbuntu
[& lt; c0227f4e & gt;] poll_schedule_timeout + 0x3e / 0x60
cat / proc / some_pid / stack
в терминале, вы получите некоторый результат: & lt; c022879f & gt;] do_select + 0x55f / 0x670 [& lt; c0228f40 & gt;] core_sys_select + 0x140 / 0x240 [& lt; c0229241 & gt;] sys_select + 0x31 / 0xc0 [& lt; c05c9cc4 & gt;] syscall_call + 0x7 / 0xb [& lt; ffffffff & gt;] 0xffffffff