ระบบปฏิบัติการสื่อสารกับส่วนประกอบฮาร์ดแวร์อื่น ๆ อย่างไร


7

โปรแกรมที่ทำงานบน CPU (OS ส่วนใหญ่) สามารถเข้าถึงฮาร์ดแวร์พีซีอื่นได้อย่างไร เช่นกราฟิคการ์ด, HDD เป็นต้น

จากสิ่งที่ฉันอ่านใน DOS สิ่งนี้ทำโดยใช้การเรียก BIOS โดยเฉพาะคำสั่ง INT แต่คำสั่ง INT ควรข้ามไปยังพื้นที่ว่างใน RAM เท่านั้น ดังนั้นโปรแกรมที่เก็บไว้ใน RAM จะเข้าถึงฮาร์ดแวร์คอมพิวเตอร์อื่น ๆ ได้อย่างไรเมื่อ CPU สามารถเข้าถึง RAM และรับการขัดจังหวะได้อย่างไร

Windows ใช้คำสั่ง INT ด้วยหรือไม่หรือมีวิธีใหม่ในการสื่อสารกับฮาร์ดแวร์หรือไม่


2
สายไฟ มากมายและจำนวนมาก (และมาก) ของสายเล็ก ๆ รวมทั้งสิ่งอื่น ๆ ทั้งหมดแยกจากซิลิคอนโดยมีการระเบิดสั้น ๆ ของกระแสไฟฟ้า DC ที่ +/- 5v (หรือบางครั้ง 3.3v)
ต้มตุ๋น quixote

nit-picks เล็กน้อย: @quack หมายถึง 0 ถึง +5 V (หรือ 0 ถึง 3.3V) สำหรับการส่งสัญญาณใด ๆ บนเครื่อง (RS-232 / EIA-232 เป็นข้อยกเว้นเดียวที่ฉันนึกออก) และโดยทั่วไปแรงดันไฟฟ้าของ CPU และ RAM ต่ำกว่า 3.3V ในปัจจุบันสำหรับเดสก์ท็อปและเซิร์ฟเวอร์ทั่วไป ดังที่ฉันได้พูดไปนิดหยิบยก
mctylr

คำตอบ:


9

[H] โอ๊ยสามารถโปรแกรม runnig บนซีพียู (ส่วนใหญ่เป็นระบบปฏิบัติการ) ที่ใช้ฮาร์ดแวร์พีซีอื่น ๆ ได้หรือไม่? เช่นกราฟิคการ์ด, HDD เป็นต้น

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

สำหรับโหมดป้องกัน 32/64 บิตที่ใช้โดย MS Windows 95 และใหม่กว่าหรือ Linux บนโปรเซสเซอร์ x86 (IA-32), การขัดจังหวะของซอฟต์แวร์ (เช่น INT opcode สำหรับ x86) ไปที่ตารางเวกเตอร์ขัดจังหวะที่เหมาะสม(หรือส่ง ตาราง) ซึ่งอาจกำหนดซีพียูที่อยู่ในระบบปฏิบัติการกระบวนการควรข้ามไปที่ตัวจัดการขัดจังหวะ (หรือ Interrupt Service Routine, ISR) สำหรับการจัดการคำขอ

ในโหมดจริง x86 เช่น MS-DOS สิ่งเหล่านี้อาจได้รับการจัดการโดยBIOSที่ให้รายละเอียดการใช้งานในระดับต่ำสำหรับระบบ / ชิปเซ็ต / มาเธอร์บอร์ดโดยเฉพาะ

[H] โอ๊ยบางโปรแกรมสามารถเก็บไว้ใน RAM acess คอมพิวเตอร์ HW อื่น ๆ เมื่อ CPU สามารถ acess RAM เท่านั้นและขัดจังหวะ reeive?

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

มีกลไกต่าง ๆ ได้แก่

(Src: CS 473 - IO , New Mexico State University, ไฟเฟอร์เฟอร์, 2006)

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

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

ในระบบปฏิบัติการนั้นโดยปกติจะเรียกว่าไดรเวอร์อุปกรณ์เนื่องจากมีรายละเอียดเฉพาะเกี่ยวกับอุปกรณ์ฮาร์ดแวร์ที่รองรับ

และ, windows ใช้คำสั่ง int เช่นกัน, หรือมีวิธีการใหม่ในการสื่อสารกับ HW หรือไม่?

ใช่และใช่ แต่ฉันคิดว่าฉันอธิบายแล้ว


เริ่มที่จะตอบคำถามอีกข้อหนึ่งซึ่งเป็นส่วนหนึ่งของสิ่งนี้ - อันนี้ดีพอที่จะทำให้ฉันหยุด!
DaveParillo

4

มีหลายวิธีที่ซอฟต์แวร์ที่ทำงานบน CPU บนพีซีสามารถสื่อสารกับฮาร์ดแวร์ส่วนที่เหลือได้

เข้าใจง่ายที่สุดคือพอร์ต I / O ซอฟต์แวร์ใช้คำสั่ง OUT เพื่อเขียน 8, 16, หรือ 32 บิตต่อครั้งไปยังพอร์ต I / O ในทำนองเดียวกันซอฟต์แวร์จะใช้คำสั่ง IN เพื่ออ่านจากพอร์ต I / O พอร์ต I / O นั้นอาศัยอยู่ในพื้นที่ที่อยู่ 16 บิตแยกจากกันซึ่งไม่เกี่ยวข้องกับพื้นที่ที่อยู่ที่ใช้โดยหน่วยความจำหลัก ฮาร์ดแวร์แต่ละชิ้นที่ใช้พอร์ต I / O มีช่วงของที่อยู่ I / O การเขียนและการอ่านจากที่อยู่เหล่านี้แต่ละรายการมีผลกระทบที่แตกต่างกัน (และบ่อยครั้งที่การอ่านและการเขียนจากที่อยู่เดียวกันนั้นมีผลต่างกันด้วย)

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

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

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

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


เพื่อเป็นตัวอย่างในทางปฏิบัติลองมาการ์ดเชื่อมต่อเครือข่ายที่เรียบง่าย การ์ดเครือข่ายนี้มีชุดของการลงทะเบียนซึ่งสามารถ acessed ผ่านพอร์ต I / O หรือ I / O ที่แมปหน่วยความจำ นอกจากนี้ยังสามารถอ่านและเขียนจากหน่วยความจำหลักและมีหมุดขัดจังหวะ

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

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

มีสิ่งอื่น ๆ ที่การ์ดสามารถบอกคนขับด้วยการเขียนการลงทะเบียนและส่งสัญญาณการขัดจังหวะ ตัวอย่างเช่นสายเคเบิลเครือข่ายถูกถอดปลั๊กว่ามีข้อผิดพลาดในการส่งข้อมูลและอื่น ๆ


1

สิ่งที่คุณกำลังมองหาคือ " IRQ " คำขอขัดจังหวะจากฮาร์ดแวร์ไปยัง CPU มีบทความพื้นฐานคือที่นี่


1
IRQ หรือ Interrupt ReQuest เป็นฮาร์ดแวร์ที่ขัดจังหวะสัญญาณว่าอุปกรณ์ฮาร์ดแวร์พร้อมใช้งาน (คอนโทรลเลอร์ไดรฟ์ดิสก์พร้อมใช้งาน) หรือมีข้อมูลสำหรับ CPU (รับข้อมูลจาก UART) มันเป็นหนึ่งในกลไกต่าง ๆ สำหรับ CPU ในการสื่อสารกับอุปกรณ์ต่อพ่วง
mctylr

0

นั่นจะเป็นสิ่งที่ไดรเวอร์ฮาร์ดแวร์มีไว้สำหรับ นอกจากนี้หน้าต่างใช้ HAL (Hardware Abstraction Layer) แทน DOS

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