การขัดจังหวะของซอฟต์แวร์และฮาร์ดแวร์คืออะไรและมีการประมวลผลอย่างไร


43

ฉันไม่แน่ใจว่าฉันเข้าใจแนวคิดของการขัดจังหวะฮาร์ดแวร์และซอฟต์แวร์หรือไม่

หากฉันเข้าใจอย่างถูกต้องวัตถุประสงค์ของการขัดจังหวะฮาร์ดแวร์คือการได้รับความสนใจจาก CPU ซึ่งเป็นส่วนหนึ่งของการใช้งานมัลติทาสก์ของ CPU

  1. ถ้าเช่นนั้นปัญหาฮาร์ดแวร์ขัดจังหวะอะไร มันเป็นกระบวนการของไดรเวอร์ฮาร์ดแวร์หรือไม่
  2. ถ้าใช่กระบวนการของฮาร์ดแวร์ไดรเวอร์ทำงานอยู่ที่ไหน ถ้ามันทำงานบนซีพียูมันจะไม่ต้องสนใจ CPU โดยการขัดจังหวะโดยฮาร์ดแวร์ใช่มั้ย แล้วมันวิ่งไปที่อื่นเหรอ?
  3. ฮาร์ดแวร์ขัดจังหวะซีพียูขัดจังหวะโดยตรงหรือไม่หรือจะติดต่อกระบวนการเคอร์เนลก่อนและกระบวนการเคอร์เนลจะติดต่อ / ขัดจังหวะ CPU หรือไม่

ในทางกลับกันฉันคิดว่าจุดประสงค์ของการขัดจังหวะของซอฟต์แวร์คือกระบวนการที่กำลังทำงานบน CPU เพื่อขอทรัพยากรบางอย่าง

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

คำตอบ:


55

การขัดจังหวะฮาร์ดแวร์ไม่ได้เป็นส่วนหนึ่งของการทำมัลติทาสก์ของ CPU แต่อาจผลักดันมัน

  1. การขัดจังหวะฮาร์ดแวร์จะออกโดยอุปกรณ์ฮาร์ดแวร์เช่นดิสก์การ์ดเครือข่ายแป้นพิมพ์นาฬิกา ฯลฯ อุปกรณ์หรือชุดอุปกรณ์แต่ละรายการจะมีบรรทัด IRQ (Interrupt ReQuest) ของตัวเอง CPU จะส่งการร้องขอไปยังไดรเวอร์ฮาร์ดแวร์ที่เหมาะสมตาม IRQ (ไดรเวอร์ฮาร์ดแวร์โดยปกติจะเป็นรูทีนย่อยภายในเคอร์เนลแทนที่จะเป็นกระบวนการแยกต่างหาก)

  2. ไดรเวอร์ที่จัดการกับการขัดจังหวะถูกเรียกใช้บน CPU CPU ถูกขัดจังหวะจากสิ่งที่ทำเพื่อจัดการกับการขัดจังหวะดังนั้นจึงไม่จำเป็นต้องเพิ่มเติมอะไรเพิ่มเติมเพื่อรับความสนใจของ CPU ในระบบมัลติโปรเซสเซอร์อินเทอร์รัปต์มักจะขัดจังหวะซีพียูตัวใดตัวหนึ่งเท่านั้น (ในกรณีพิเศษเมนเฟรมมีช่องฮาร์ดแวร์ที่สามารถจัดการกับอินเตอร์รัปต์หลายตัวโดยไม่ได้รับการสนับสนุนจาก CPU หลัก)

  3. ฮาร์ดแวร์ขัดจังหวะการขัดจังหวะ CPU โดยตรง นี่จะทำให้โค้ดที่เกี่ยวข้องในกระบวนการเคอร์เนลถูกทริกเกอร์ สำหรับกระบวนการที่ใช้เวลาในการประมวลผลรหัสขัดจังหวะอาจอนุญาตให้ตัวเองถูกขัดจังหวะโดยการขัดจังหวะของฮาร์ดแวร์อื่น ๆ

    ในกรณีที่ตัวจับเวลาขัดจังหวะรหัสตัวจัดตารางเวลาเคอร์เนลอาจหยุดกระบวนการที่กำลังทำงานอยู่และอนุญาตให้กระบวนการอื่นทำงานได้ มันคือการปรากฏตัวของรหัสกำหนดเวลาซึ่งช่วยให้การทำงานหลายอย่าง

การขัดจังหวะซอฟต์แวร์จะถูกประมวลผลเหมือนกับการขัดจังหวะฮาร์ดแวร์ อย่างไรก็ตามสามารถสร้างได้โดยกระบวนการที่กำลังทำงานอยู่เท่านั้น

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

  2. ซอฟต์แวร์ขัดจังหวะการพูดคุยกับเคอร์เนลเท่านั้น มันเป็นความรับผิดชอบของเคอร์เนลในการกำหนดเวลากระบวนการอื่น ๆ ที่จำเป็นต้องเรียกใช้ นี่อาจเป็นกระบวนการอื่นในตอนท้ายของไพพ์ เมล็ดบางใบอนุญาตให้บางส่วนของไดรเวอร์อุปกรณ์อยู่ในพื้นที่ของผู้ใช้และเคอร์เนลจะกำหนดเวลาให้กระบวนการนี้ทำงานเมื่อจำเป็น

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

การตอบสนองต่อความคิดเห็น:

  1. สำหรับคำขอ I / O เคอร์เนลจะมอบหมายงานให้กับไดรเวอร์เคอร์เนลที่เหมาะสม รูทีนอาจจัดคิว I / O สำหรับการประมวลผลในภายหลัง (ทั่วไปสำหรับดิสก์ I / O) หรือดำเนินการทันทีถ้าเป็นไปได้ ไดรเวอร์ได้รับการจัดการคิวบ่อยครั้งเมื่อตอบสนองต่อการขัดจังหวะของฮาร์ดแวร์ เมื่อ I / O หนึ่งรายการเสร็จสมบูรณ์รายการถัดไปในคิวจะถูกส่งไปยังอุปกรณ์

  2. ใช่ซอฟต์แวร์ขัดจังหวะหลีกเลี่ยงขั้นตอนการส่งสัญญาณฮาร์ดแวร์ กระบวนการที่สร้างคำขอซอฟต์แวร์จะต้องเป็นกระบวนการที่กำลังทำงานอยู่ดังนั้นจึงไม่ขัดขวาง CPU อย่างไรก็ตามพวกเขาจะขัดจังหวะการไหลของรหัสโทร

    หากฮาร์ดแวร์ต้องการให้ CPU ทำบางสิ่งบางอย่างจะทำให้ CPU ขัดจังหวะความสนใจของรหัสที่กำลังทำงานอยู่ ซีพียูจะผลักสถานะปัจจุบันของมันลงบนสแต็กเพื่อที่จะได้กลับไปสู่สิ่งที่กำลังทำอยู่ในภายหลัง การขัดจังหวะอาจหยุดลง: โปรแกรมกำลังทำงาน รหัสเคอร์เนลจัดการการขัดจังหวะอื่น หรือกระบวนการว่าง


ขอบคุณ! (1) ในซอฟต์แวร์ขัดจังหวะการดำเนินการ I / O จะทำโดยรูทีนไดรเวอร์อุปกรณ์ I / O ภายในกระบวนการเคอร์เนลหรือไม่? (2) ถูกต้องไหมที่เส้นทางที่การขัดจังหวะของซอฟต์แวร์ผ่านไปหนึ่งขั้นตอนนั้นสั้นกว่าเส้นทางสำหรับการขัดจังหวะฮาร์ดแวร์ กล่าวอีกนัยหนึ่งสำหรับซอฟต์แวร์ขัดจังหวะ: ซอฟต์แวร์โปรแกรม -> รูทีนไดรเวอร์อุปกรณ์ภายในกระบวนการเคอร์เนล สำหรับการขัดจังหวะฮาร์ดแวร์: ฮาร์ดแวร์ -> CPU -> ชุดคำสั่งอุปกรณ์ไดรเวอร์ภายในกระบวนการเคอร์เนล
ทิม

ขอบคุณ! ถูกต้องหรือไม่ที่การขัดจังหวะด้วยฮาร์ดแวร์ทำให้ CPU ผลักสถานะปัจจุบันลงบนสแต็กเพื่อให้ไดรเวอร์ฮาร์ดแวร์สามารถทำงานบน CPU และกลับมาทำงานอีกครั้งในกระบวนการขัดจังหวะบน CPU ซอฟต์แวร์ขัดจังหวะหรือไม่ทำให้กระบวนการทำงานบน CPU ถูกผลักเข้าไปในสแต็กเพื่อให้บริการที่ร้องขอสามารถทำงานบน CPU ได้หรือไม่
ทิม

การขัดจังหวะจะทำให้สถานะถูกผลักลงบนสแต็ก สิ่งนี้จะช่วยให้ระบบโหลดสถานะใหม่เมื่อเสร็จสิ้นการขัดจังหวะ
BillThor

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

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