การเรียกระบบเทียบกับการเรียกใช้ฟังก์ชัน
โปรเซสเซอร์ทั่วไปจะรันคำสั่งทีละตัว แต่อาจมีบางครั้งที่ตัวประมวลผลต้องหยุดคำสั่งปัจจุบันและรันโปรแกรมอื่นหรือส่วนโค้ดบางส่วน (อยู่ในที่อื่น) หลังจากทำเช่นนี้ โปรเซสเซอร์จะกลับสู่การทำงานปกติและดำเนินการต่อจากจุดที่ค้างไว้ การเรียกระบบและการเรียกใช้ฟังก์ชันเป็นโอกาสดังกล่าว การเรียกระบบเป็นการเรียกรูทีนย่อยที่มีอยู่ในระบบ การเรียกใช้ฟังก์ชันเป็นการเรียกไปยังรูทีนย่อยภายในโปรแกรมเอง
การเรียกระบบคืออะไร
การเรียกระบบให้โปรแกรมที่ทำงานบนคอมพิวเตอร์มีส่วนต่อประสานเพื่อพูดคุยกับระบบปฏิบัติการเมื่อโปรแกรมต้องการขอบริการ (ซึ่งโปรแกรมนั้นไม่ได้รับอนุญาตให้ทำด้วยตัวเอง) จากเคอร์เนลของระบบปฏิบัติการ โปรแกรมจะใช้การเรียกของระบบ กระบวนการระดับผู้ใช้ไม่มีสิทธิ์เหมือนกับกระบวนการที่โต้ตอบโดยตรงกับระบบปฏิบัติการ ตัวอย่างเช่น ในการสื่อสารกับอุปกรณ์ I/O ภายนอก หรือเพื่อโต้ตอบกับกระบวนการอื่นๆ โปรแกรมจะใช้การเรียกของระบบ
การเรียกฟังก์ชันคืออะไร
การเรียกฟังก์ชันเรียกอีกอย่างว่าการเรียกรูทีนย่อย รูทีนย่อย (หรือเรียกอีกอย่างว่าโพรซีเดอร์ ฟังก์ชัน วิธีการ หรือรูทีน) เป็นส่วนหนึ่งของโปรแกรมขนาดใหญ่กว่าที่รับผิดชอบในการทำงานเฉพาะ โปรแกรมที่ใหญ่กว่าอาจรันเวิร์กโหลดจำนวนมาก และรูทีนย่อยอาจทำงานง่ายๆ เท่านั้น ซึ่งไม่ขึ้นกับโค้ดโปรแกรมที่เหลืออยู่ ฟังก์ชันถูกเข้ารหัสในลักษณะที่สามารถเรียกได้หลายครั้งและจากที่ต่างๆ (แม้จากภายในฟังก์ชันอื่นๆ) เมื่อเรียกใช้ฟังก์ชัน โปรเซสเซอร์อาจไปยังตำแหน่งที่มีโค้ดสำหรับฟังก์ชันนั้นอยู่ และดำเนินการตามคำสั่งของฟังก์ชันทีละรายการหลังจากเสร็จสิ้นฟังก์ชัน โปรเซสเซอร์จะกลับไปยังตำแหน่งที่เหลือและดำเนินการดำเนินการต่อไปโดยเริ่มจากคำสั่งถัดไป ฟังก์ชันเป็นเครื่องมือที่ยอดเยี่ยมสำหรับการนำโค้ดกลับมาใช้ใหม่ ภาษาโปรแกรมที่ทันสมัยมากมายรองรับฟังก์ชันต่างๆ คอลเลกชันของฟังก์ชันเรียกว่าไลบรารี ห้องสมุดมักใช้เป็นเครื่องมือในการแบ่งปันและซื้อขายซอฟต์แวร์ ในบางกรณี โปรแกรมทั้งหมดอาจเป็นลำดับของรูทีนย่อย (เช่น การรวบรวมรหัสเธรด)
การเรียกระบบและการเรียกฟังก์ชันต่างกันอย่างไร
การเรียกระบบเป็นการเรียกไปยังรูทีนย่อยที่มีอยู่ในระบบ ในขณะที่การเรียกใช้ฟังก์ชันเป็นการเรียกไปยังรูทีนย่อยภายในโปรแกรม ต่างจากการเรียกใช้ฟังก์ชัน การเรียกระบบจะใช้เมื่อโปรแกรมต้องทำงานบางอย่างซึ่งไม่มีสิทธิ์ใช้งาน การเรียกระบบเป็นจุดเข้าสู่เคอร์เนลของระบบปฏิบัติการและไม่ได้เชื่อมโยงกับโปรแกรม (เช่น การเรียกใช้ฟังก์ชัน) ต่างจากการเรียกของระบบ การเรียกใช้ฟังก์ชันนั้นพกพาได้ โอเวอร์เฮดเวลาของการเรียกระบบเป็นมากกว่าโอเวอร์เฮดสำหรับการเรียกใช้ฟังก์ชัน เนื่องจากต้องมีการเปลี่ยนระหว่างโหมดผู้ใช้และโหมดเคอร์เนลการเรียกระบบจะดำเนินการในพื้นที่ที่อยู่เคอร์เนล ในขณะที่เรียกใช้ฟังก์ชันในพื้นที่ที่อยู่ของผู้ใช้