Bagaimana panggilan sistem ditangani dalam sistem Linux multicore?


1

Ketika utas atau proses dari satu inti memulai panggilan sistem (mis. Bisa berupa fork ()), OS masuk ke mode kernel, dengan asumsi bahwa beberapa sistem panggilan (mis. Mungkin juga fork ()) datang dari inti yang berbeda, bagaimana OS menangani ini? Apakah OS menggunakan kunci global dan hanya memungkinkan satu panggilan untuk aktif dalam mode kernel? Atau OS memungkinkan proses panggilan sistem bersamaan kecuali bagian yang sangat kecil yang merupakan bagian kritis?

Jawaban:


0

Itu tergantung pada OS dan pada versinya. Namun, semua kernel Linux yang digunakan adalah reentrant dan dapat dipanggil beberapa kali tidak hanya dari CPU yang berbeda, tetapi bahkan dari berbagai thread pada CPU yang sama. Mereka menggunakan kunci berbutir halus bukan yang global. (Namun, lihat juga Kunci Kernel Besar , yang tidak sepenuhnya dihapus hingga 2011.)

FreeBSD (yang memiliki "kunci raksasa" sendiri):


1
Sangat menghargai jawaban Anda. Itu banyak membantu saya. Bagaimanapun, aku merasa sedang bermimpi. itu menakjubkan dan saya tidak percaya bahwa saya mendapatkan jawabannya dalam satu jam dari siapa saya tidak tahu. Terima kasih banyak Grawity.
Happy
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.