โปรแกรมทั่วๆไป เวลาทำงานจะรันครั้งเดียวตั้งแต่ต้นโปรแกรมจนจบ และจบการทำงานของ main() แต่ kernel module จะ register ตัวเองลงในระบบเพื่อตอบสนองหรือรอการเรียกทำงานต่อไปในอนาคต จนกว่าจะถูกลบออกจากระบบ โดยจะ register ตัวเองผ่านการเรียก init_module() และจะลบตัวเองออกจากระบบผ่าน cleanup_module() ซึ่งคุณสมบัติการโหลดและลบ module แบบนี้ทำให้เราสามารถทดสอบ driver module ของเราได้โดยไม่จำเป็นต้องเสียเวลา reboot เครื่องทุกครั้งเพื่อทำการทดสอบ
โดยปกติเวลาเราเขียน c โปรแกรมทั่วๆไป เราจะสามารถ call function ที่ไม่ได้ define ด้วยตัวเองได้ ผ่านการ link ไปยัง external function ในกระบวนการ link ( stage หนึ่งในกระบวนการ kompile) เช่นการใช้งาน printf() ซึ่งเป็น function หนึ่งของ libc ในมุมมองที่แตกต่างกันสำหรับ kernel module ก็สามารถ link ไปยัง function อื่นๆได้เช่นกัน แต่จะต้องเป็น function ที่ถูก (external) defined โดย kernel เอง (ประกาศโดยให้ถูกเรียกใช้งานจากภายนอกได้) เช่นในการใช้งาน printk() ในตัวอย่างข้างต้น
รูปแสดงการทำงาน link module เข้าไปใน kernel
kernel module จะไม่สามารถใส่ c library ปกติเข้าไปได้ ฉะนั้น header files ที่จะสามารถ #include ได้ จะมีเฉพาะ kernel header files เท่านั้น ซึ่งโดยปกติแล้วจะอยู่ที่ /usr/src/linux/include/linux และ /usr/src/linux/include/asm แต่ โปรแกรม application จะสามารถ #include kernel header files ได้ แต่บางส่วนของ kernel library ถูกสร้างมาเพื่อให้ใช้งานได้เฉพาะ kernel-space โดยผ่านการใช้ preprocessor #ifdef __KERNEL__ ฉะนั้นเวลาเราจะ kompile kernel module เราอาจจะต้องประกาศ __KERNEL__ ด้วย
ในการเขียน s/w ขนาดใหญ่ๆ ปัญหาเรื่องการใช้ชื่อซ้ำกัน (namespace-pollution) เป็นปัญหาหนึ่งที่สร้างความปวดหัวไม่ใช่น้อย ในการเขียน kernel code เราควรต้องคำหนึ่งถึงว่า ถึงแม่ module ของเราจะมีขนาดเล็ก แต่เวลาใช้งานจะต้อง link เข้ากับ kernel ซึ่งมีขนาดใหญ่ ฉะนั้นถึงแม้จะไม่เกิดปัญหาการใช้ชื่อซ้ำกันใน module ของเรา ก็อาจจะเกิดปัญหาการใช้ชื่อซ้ำกันกับส่วนอื่นๆของ kernel ได้ สิ่งที่เราควรทำคือการประกาศ object ที่ไม่ได้เป็น global object ทั้งหมดด้วย static และกำหนดชื่อสำหรับ global object ด้วยชื่อที่ไม่ซ้ำกับส่วนอื่นๆของ kernel. insmod หลายๆ version จะ export object ทั้งหมด ที่ไม่ได้กำหนด storage class ด้วย static เป็น global ทั้งหมด