Sobes.tech
Junior — Middle

Kaip vykdomi sisteminiai skambučiai, blokuojantys procesų ar sriegių vykdymą?

sobes.tech AI

Atsakymas iš AI

Sisteminiai iškvietimai, kurie blokuoja procesų ar sriegių vykdymą, veikia taip: kai procesas ar sritis iškviečia tokį sisteminį iškvietimą (pvz., skaityti iš failo arba laukti įvykio), vykdymas sustoja iki operacijos pabaigos. Tuo metu OS branduolys perkelia procesą ar sritį į laukimo būseną (blokuoja), laisvindamas CPU kitoms užduotims.

Go kalboje, kviečiant blokuojančius sisteminius iškvietimus, runtime naudoja gorutinių ir sisteminių sriegių planuotojo mechanizmus. Jei gorutina užstringa sistemos iškvietimo metu, runtime gali perjungti vykdymą į kitą gorutina, neblokuodamas viso OS sriegių. Tai leidžia efektyviai naudoti išteklius ir vykdyti paralelizmą.

Pavyzdys: skaitydami iš tinklo su net.Conn.Read(), gorutina užstringa, bet runtime perjungia į kitas gorutinas, kol duomenys yra gaunami.