Apakah semua panggilan sistem memblokir?


13

Saya sedang membaca sebuah artikel yang menggambarkan perpindahan antara ruang pengguna dan ruang kernel yang terjadi saat panggilan sistem. Artikel itu mengatakan

Aplikasi mengharapkan penyelesaian panggilan sistem sebelum melanjutkan eksekusi mode pengguna.

Sekarang, sampai sekarang saya berasumsi bahwa beberapa panggilan sistem blocking, sedangkan yang lain non-blocking. Dengan komentar di atas, saya sekarang bingung. Apakah ini berarti bahwa semua panggilan sistem memblokir atau apakah saya salah mengerti konsep?


@Ankit Tolong jelaskan mengapa Anda memutar kembali hasil edit. Perhatikan bahwa pengeditan untuk meningkatkan detail posting adalah kebijakan standar pada SE dan tidak menyiratkan kritik implisit.
Raphael

@Raphael Maaf bro! Saya hanya mengutak-atik dan mendorong rollback karena kesalahan dan kemudian tidak dapat menemukan versi sebelumnya. Bahkan, saya sangat menyukai hasil edit Anda. : P
Ankit

@ Raphael Mengembalikannya. Sebenarnya saya ditipu oleh sistem revisi (tidak mengenali 'artikel' adalah tautan). Terima kasih atas hasil editnya.
Ankit

@Ankit: Senang saya bisa membantu!
Raphael

Jawaban:


15

Anda tampaknya membebani istilah 'pemblokiran'.

Setiap saklar konteks yang Anda buat ke kernel, Anda harus menunggu untuk beralih kembali ke usermode sebelum aplikasi Anda dapat melanjutkan. Ini bukan apa yang biasanya disebut 'blocking'.

Dalam desain kernel saat ini, memblokir panggilan adalah panggilan di mana kernel hanya kembali ketika permintaan selesai (atau kesalahan terjadi). Panggilan ini biasanya memakan waktu lebih lama dan biasanya membuat proses Anda dijadwalkan keluar. Misalnya, banyak panggilan IO yang diblokir.

Ada panggilan sistem yang menyediakan IO yang sinkron dan tidak memblokir. Perhatikan bahwa masih ada saklar konteks yang terjadi di sini, hanya aplikasi yang harus menjaga sifat panggilan yang tidak sinkron.

Makalah ini tampaknya bertujuan untuk menghilangkan konteks ini bolak-balik (panggilan sistem pengecualian-kurang) dan mencoba untuk membuat semua panggilan asinkron.


Ini sebenarnya makalah penelitian. Berikut ini URLnya: eecg.toronto.edu/~livio/papers/flexsc-osdi10.pdf
Ankit

2
@Ankit: Harap edit pertanyaan dan sertakan di sana.
Aryabhata
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.