Sobes.tech
Junior — Middle

Kā operētājsistēmas plānotājs pārvalda funkcijas, kas veic tīkla pieprasījumu?

sobes.tech AI

Atbilde no AI

Go valodā plānotājs (scheduler) pārvalda goroutines, kas ir vieglas pavedienus. Kad funkcija veic tīkla pieprasījumu, tā parasti bloķējas ievades/izvades operācijā.

Go plānotājs izmanto neblokējošu ievadi/izvadi un asīnhronas sistēmas izsaukumus. Kad goroutine gaida atbildi no tīkla, tas to pārvieto gaidstāves stāvoklī un pārslēdzas uz citu goroutine izpildi.

Tas ļauj efektīvi izmantot sistēmas resursus un neblokēt OS pavedienu. Pēc tīkla pieprasījuma pabeigšanas plānotājs atsāk goroutine izpildi.

Piemērs:

func fetch(url string) {
    resp, err := http.Get(url) // tīkla pieprasījums
    if err != nil {
        log.Fatal(err)
    }
    defer resp.Body.Close()
    // atbildes apstrāde
}

func main() {
    go fetch("http://example.com")
    // citas goroutines darbojas paralēli
}

Šādā veidā Go plānotājs efektīvi pārvalda goroutines, pārslēdzoties starp tām bloķējošās operācijās, piemēram, tīkla pieprasījumos.