процессы против потоков (пользователь против ядра) - PullRequest
0 голосов
/ 31 марта 2010

Я понимаю разницу между процессом и потоком. И я знаю разницу между пользовательским потоком и потоком ядра.

Вопрос

Как вы кодируете любой из них в C? Все, что я знаю в C, это как создавать потоки POSIX, но это потоки пользователя или потоки ядра?

Может кто-нибудь выложить несколько примеров кода C для процесса, пользовательского потока и потока ядра.

Существуют ли какие-либо темы, которые я не включил?

Ответы [ 2 ]

1 голос
/ 31 марта 2010

Ответы на это в основном зависят от вашей операционной системы. Потоки POSIX могут быть реализованы как пользовательские потоки или потоки ядра - это всего лишь спецификация API. В любой современной системе Linux они реализованы с помощью потоков ядра.

В терминах API более низкого уровня системный вызов UNIX fork() создает новый процесс. В Linux системный вызов clone() может использоваться для создания нового потока ядра (путем передачи флага CLONE_VM) - другие операционные системы будут использовать другие вызовы для этого. Создание пользовательского потока будет полностью зависеть от того, какую пользовательскую библиотеку потоков вы используете.

1 голос
/ 31 марта 2010

Есть учебник , который должен помочь с потоками. Вы можете использовать другой параметр attr для pthread_create, чтобы выбрать пользователя против ядра.

Для процессов попробуйте учебник по .

...