/ / Как се разделя времето между разделите в процеса? - c, linux, multithreading, posix, glibc

Как се разделя времето между участъците в процеса? - c, linux, multithreading, posix, glibc

Дали ядрото на Linux е наясно с pthreads в потребителяадресно пространство (което аз не мисля, че е .. но не намерих информация за това). Как се променя указателят с инструкциите, когато се извършва превключването на нишката?

Отговори:

5 за отговор № 1

Природният NPTL (библиотека с названи конектори)използвани в Linux картите pthreads на "процеси, които споделят ресурси и следователно изглеждат като нишки" в ядрото. По този начин план-сървърът на ядрото контролира директно планирането на pthreads.

"Превключвател pthread" се извършва от същия код(в ядрото), който обработва процесорите. Опростено, това би било нещо като "съхраняване на предишното състояние на процеса, ако следващият процес използва различно виртуално адресно пространство, след това превключете виртуалните адресно пространства, заредете следващото състояние на процеса;" (където "състояние на процеса" включва показалеца на инструкцията за процеса / нишката).


2 за отговор № 2

Е, ядрото на Linux не знае за потребителските нишки (pthread в потребителското пространство, освен това ядрото не се интересува от тях, освен, че просто трябва да знае какво да планира).

Инструментът се променя в ядротопо време на това, което се нарича контекстно превключване. По време на този преход ядрото пита по същество планиращия какво следва? планиращият ще му предаде task_struct, която съдържа цялата информация за нишката и обработващия прекъсвача, за да се осъществи контекстния превключвател и да се зададат съответните стойности на CPU (таблици на страници, указател на инструкциите и т.н.) и когато този код е направено CPU просто просто започва да изпълнява от там.


1 за отговор № 3

1) Кръгът не знае за нишките на ниво потребител. Но NPTL не е потребителско ниво

2) Това е наистина широк въпрос. Трябва да разгледате книга за OS. Ще се вникне в дълбочина по този въпрос и всички други, включени в контекста.