การโทรของระบบทั้งหมดถูกปิดกั้นหรือไม่?


13

ฉันอ่านบทความที่อธิบายการสลับระหว่างพื้นที่ผู้ใช้และเคอร์เนลพื้นที่ที่เกิดขึ้นเมื่อมีการเรียกระบบ บทความกล่าวว่า

แอปพลิเคชันคาดว่าการเรียกระบบจะเสร็จสิ้นก่อนที่จะดำเนินการตามโหมดผู้ใช้ต่อไป

ตอนนี้จนถึงตอนนี้ผมก็คิดว่าบางสายระบบอยู่ในขณะที่คนอื่นมีblocking non-blockingด้วยความคิดเห็นข้างต้นตอนนี้ฉันสับสน นี่หมายความว่าการโทรของระบบทั้งหมดกำลังบล็อกหรือฉันเข้าใจแนวคิดผิดหรือไม่?


@Ankit โปรดอธิบายว่าทำไมคุณย้อนกลับการแก้ไข โปรดทราบว่าการแก้ไขเพื่อปรับปรุงรายละเอียดของโพสต์เป็นนโยบายมาตรฐานใน SE และไม่ได้หมายความถึงการวิจารณ์โดยนัย
กราฟิลส์

@ ราฟาเอลขออภัยครับ! ฉันแค่เล่นซอไปรอบ ๆ แล้วผลักย้อนกลับโดยไม่ได้ตั้งใจแล้วหาเวอร์ชั่นก่อนหน้าไม่พบ จริงๆแล้วฉันชอบการแก้ไขของคุณ : P
Ankit

@ ราฟาเอลเอามันกลับมาแล้ว ที่จริงฉันติดกับระบบแก้ไข (ไม่รู้จัก 'บทความ' เป็นลิงก์) ขอบคุณสำหรับการแก้ไข
Ankit

@Akit: ดีใจที่ฉันสามารถช่วยได้!
กราฟิลส์

คำตอบ:


15

ดูเหมือนว่าคุณกำลังโหลดคำว่า 'บล็อก' มากเกินไป

การสลับบริบทใด ๆ ที่คุณทำกับเคอร์เนลคุณต้องรอให้สวิตช์กลับไปที่โหมด usmode ก่อนที่แอปพลิเคชันของคุณจะสามารถทำงานต่อไปได้ นี่ไม่ใช่สิ่งที่มักจะเรียกว่า 'การปิดกั้น'

ในการออกแบบเคอร์เนลปัจจุบันการบล็อกการโทรเป็นการเรียกที่เคอร์เนลส่งคืนเฉพาะเมื่อคำร้องขอเสร็จสมบูรณ์ (หรือเกิดข้อผิดพลาด) การโทรเหล่านี้มักใช้เวลานานกว่าและมักจะทำให้กระบวนการของคุณถูกกำหนดเวลาไว้ ตัวอย่างเช่นการโทร IO หลายรายการกำลังปิดกั้น

มีการเรียกของระบบซึ่งให้IO แบบอะซิงโครนัสและไม่มีการบล็อก โปรดทราบว่ายังคงมีการสลับบริบทที่เกิดขึ้นที่นี่เฉพาะแอปพลิเคชันเท่านั้นที่ต้องดูแลธรรมชาติของการโทรแบบอะซิงโครนัส

ดูเหมือนว่ากระดาษจะมีเป้าหมายที่จะทำไปกับบริบทนี้สลับไปมา (การเรียกระบบที่ยกเว้นน้อยกว่า) และพยายามทำการโทรทั้งหมดแบบอะซิงโครนัส


จริงๆแล้วมันเป็นงานวิจัย นี่คือ URL: eecg.toronto.edu/~livio/papers/flexsc-osdi10.pdf
Ankit

2
@Ankit: โปรดแก้ไขคำถามและรวมไว้ที่นั่น
Aryabhata
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.