Kua timata a Google ki te whakatuwhera i te whakatinanatanga o te tauira miro M:N

Google whakaaro ki te whakauru i roto i te kernel Linux te huinga tuatahi o nga papanga me te whakatinanatanga o nga waahanga e tika ana hei whakarite i te mahi o te tauira miro M:N. Ko te kaupapa a Google e pa ana ki te whakatuwheratanga o te API e whanake ana i muri i nga tatau kati WhakawhitiKi mo te kernel Linux, e whakarato ana i te mahi o te punaha miro-maha kua whakatinanahia ki te waahi kaiwhakamahi, ma te whakamahi i te tauira miro M:N. Ko te punaha iti e whakamahia ana e Google hei whakarite i te whakahaeretanga o nga ratonga ka iti te roa o te whakaroa. Ko te whakarite me te whakahaeretanga o te tohatoha miro ka mahia katoa i roto i te waahi kaiwhakamahi, ka taea te whakaiti i te maha o nga mahi whakawhiti horopaki ma te whakaiti i te mahi o nga waea punaha.

Hei whakarite i te mahi o te punaha iti kua tohua ki te taumata kernel Linux, i whakatinanahia te SwitchTo API, e toru nga mahinga taketake - tatari, ka timata me te huri (whakawhiti). Mo te whakauru ki roto i te kernel, ka tukuna te waehere o te mahi hou FUTEX_SWAP, hei taapiri FUTEX_WAIT me FUTEX_WAKE, me te whakarato anga mo te hanga whare pukapuka miro-maha ki te waahi kaiwhakamahi. Ka taea hoki te whakamahi FUTEX_SWAP ki te whakawhiti karere i waenga i nga mahi, he rite ki te RPC. Hei tauira, i tenei wa, ki te whakawhiti i tetahi karere i waenga i nga mahi, me mahi koe kia wha nga waea ki FUTEX_WAIT me FUTEX_WAKE, engari ma te whakamahi i te FUTEX_SWAP ka taea e koe te mahi me te mahi kotahi, ka oti te 5-10 nga wa tere.

Kua timata a Google ki te whakatuwhera i te whakatinanatanga o te tauira miro M:N

I tenei wa, ka whakamahia te nuinga o nga tauira rerenga 1:1 me N:1 i roto i nga mahi. Ka whakamahia te tauira 1:1 ki roto NPTL (POSIX awa) me LinuxThreads, me te whakaatu i te mapi tika o te miro i roto i te waahi kaiwhakamahi ki tetahi miro (waahanga whakaritenga mahi) i te taumata kernel. Tauira N:1 i whakatinanahia ki roto GNU Pth, ka kawe mai i te tuku miro ki te mokowā kaiwhakamahi me te tuku i nga miro N i roto i te waahi kaiwhakamahi kia herea ki te miro kotahi i roto i te kernel, me te kore e mohio te kernel ki nga miro kaiwhakamahi.

Ko te tino ngoikoretanga o te tauira 1:1 ko te nui o runga o te horopaki whakawhiti i waenga i te kernel me te waahi kaiwhakamahi. Ko te tauira N:1 e whakaoti ana i tenei raru, engari ka hanga he mea hou - na te mea ko te miro i roto i te kakano he waeine kore e taea te wehewehe mo te whakaritenga mahi, ko nga miro kaiwhakamahi kua herea ki tetahi miro i roto i te kernel punaha whakahaere e kore e taea te tauine puta noa i nga matua CPU ka mutu ka herea ki he matua PTM kotahi.

Ko te tauira M:N he ranu me te whakakore i nga ngoikoretanga katoa kua whakaahuahia i runga ake nei ma te mapi i nga miro N i roto i te waahi kaiwhakamahi ki nga miro M i roto i te kernel OS, e taea ai e rua te whakaiti i te nui o te whakawhiti horopaki me te whakarite i te tauine puta noa i nga matua CPU. Ko te utu o tenei whiringa ko te tino uaua o te whakatinana i te raarangi miro i roto i te waahi kaiwhakamahi me te hiahia mo nga tikanga ki te whakarite i nga mahi me te kaihoroi kernel.

Source: opennet.ru

Tāpiri i te kōrero