next up previous
Next: การ kompile และ Load Up: Kernel Modules VS Applications Previous: kernel-space VS user-space

concurrency in the kernel

อีกสิ่งหนึ่งใน driver ต่างจาก โปรแกรมทั่วๆไปคือ โปรแกรมใช้งานทั่วๆไปนั้นจะถูกเรียกตั้งแต่ต้นจนจบ แต่ใน device driver บางครั้งในการทำงานรอบแรกยังไม่ทันจบก็อาจจะถูกเรียกให้ทำงานในรอบต่อไปแล้ว เช่น ใน nic driver ในการทำงานเพื่อส่ง packet ยังไม่เสร็จ อาจจะต้องถูกเรียกใช้งานเพื่อรับ packet ที่เข้ามาถึง interface ในทันที ฉะนั้นในการเขียน device driver เราจะต้องคำนึงถึงจุดนี้ด้วยการออกแบบ data structure ด้วย ยิ่งในบางกรณี เช่นการนำ driver ไปใช้งานระบบ SMP ที่ในขณะที่ CPU ตัวหนึ่งกำลังใช้งาน data ชุดนึง CPU อีกตัวก็ต้องการใช้งานแก้ไขข้อมูลชุดเดียวกันนั้นเช่นกันปัญหาที่พบบ่อยของการออกแบก data structure ไม่ดีคือการเกิด race condition



Pruet Boonma 2001-11-02