กลับไปหน้าบทความ

อ่าน 4 นาที

การแยกส่วนฮาร์ดแวร์

การสร้างนามธรรมของฮาร์ดแวร์คือซอฟต์แวร์ที่ช่วยให้เข้าถึงฮาร์ดแวร์ได้ในลักษณะที่ซ่อนรายละเอียดต่างๆ ที่อาจทำให้การใช้งานฮาร์ดแวร์เป็นเรื่องยาก โดยทั่วไป

การแยกส่วนฮาร์ดแวร์

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

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

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

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

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

การเขียนโปรแกรม

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

เลเยอร์นามธรรมฮาร์ดแวร์

HAL ( Hardware Abstraction Layer ) คือเลเยอร์นามธรรมที่ถูกสร้างขึ้นด้วยซอฟต์แวร์ คั่นกลางระหว่างฮาร์ดแวร์ ทางกายภาพ ของคอมพิวเตอร์กับซอฟต์แวร์ที่ทำงานบนคอมพิวเตอร์นั้น หน้าที่ของมันคือการซ่อนความแตกต่างของฮาร์ดแวร์จากเคอร์เนล ของ ระบบปฏิบัติการ ส่วนใหญ่ เพื่อให้โค้ดในโหมดเคอร์เนลส่วนใหญ่ไม่จำเป็นต้องเปลี่ยนแปลงเพื่อให้สามารถทำงานบนระบบที่มีฮาร์ดแวร์แตกต่างกันได้ ในระบบปฏิบัติการ Microsoft Windows นั้น HAL สามารถพิจารณาได้ว่าเป็นไดรเวอร์สำหรับเมนบอร์ด และอนุญาตให้คำสั่งจากภาษาคอมพิวเตอร์ระดับสูงสื่อสารกับส่วนประกอบระดับต่ำได้ แต่ป้องกันการเข้าถึงฮาร์ดแวร์โดยตรง

CP/M ( CP/M BIOS ), DOS ( DOS BIOS ), Solaris , Linux , BSD , macOSและระบบปฏิบัติการพกพาอื่นๆ บางระบบก็มี HAL แม้ว่าจะไม่ได้ระบุไว้อย่างชัดเจนก็ตาม ระบบปฏิบัติการบางระบบ เช่น Linux มีความสามารถในการแทรก HAL ในขณะที่กำลังทำงานอยู่ เช่น Adeos ระบบปฏิบัติการ NetBSDเป็นที่รู้จักกันอย่างแพร่หลายว่ามีเลเยอร์การแยกฮาร์ดแวร์ที่สะอาด ซึ่งทำให้สามารถพกพาได้สูง[ 1 ]ส่วนหนึ่งของระบบนี้คือuvm(9)/ pmap(9), bus_space(9), bus_dma(9), และระบบย่อยอื่นๆ บัสยอดนิยมที่ใช้ในสถาปัตยกรรมมากกว่าหนึ่งแบบก็ถูกแยกออกมาเช่นกัน เช่นISA , EISA , PCI , PCIeเป็นต้น ทำให้ไดรเวอร์สามารถพกพาได้สูงโดยมีการแก้ไขโค้ดน้อยที่สุด

ระบบปฏิบัติการที่มี HAL ที่กำหนดไว้อย่างชัดเจน จะสามารถใช้งานได้ง่ายกว่าบนฮาร์ดแวร์ที่แตกต่างกัน ซึ่งมีความสำคัญอย่างยิ่งสำหรับระบบฝังตัวที่ทำงานบนแพลตฟอร์มต่างๆ มากมาย

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

ไมโครซอฟต์ วินโดวส์

ชั้นนามธรรมของฮาร์ดแวร์ในสถาปัตยกรรมของ Windows NT

เคอร์เนล ของWindows NTมี HAL ในพื้นที่เคอร์เนลระหว่างฮาร์ดแวร์และบริการผู้บริหารที่อยู่ในไฟล์[ 2 ] [ 3 ]ภายใต้ซึ่งช่วยให้โค้ดโหมดเคอร์เนลของ Windows NT สามารถพกพาไปยังโปรเซสเซอร์ต่างๆ ที่มี สถาปัตยกรรม หน่วยจัดการหน่วยความจำ ที่แตกต่างกัน และระบบต่างๆ ที่มีสถาปัตยกรรมบัส I/O ที่แตกต่างกันได้ โค้ดส่วนใหญ่ทำงานโดยไม่ต้องเปลี่ยนแปลงบนระบบเหล่านั้น เมื่อคอมไพล์สำหรับชุดคำสั่งที่ใช้ได้กับระบบเหล่านั้น ตัวอย่างเช่น เวิร์กสเตชัน SGIที่ใช้ Intel x86 ไม่ใช่ เวิร์กสเตชัน ที่เข้ากันได้กับ IBM PCแต่เนื่องจาก HAL ทำให้ Windows 2000ทำงานบนเวิร์กสเตชันเหล่านั้นได้[ 4 ]ตั้งแต่Windows VistaและWindows Server 2008 เป็นต้นมา HAL ที่ใช้จะถูกกำหนดโดยอัตโนมัติระหว่างการเริ่มต้น ระบบ อันที่จริงตั้งแต่Windows Vistaเป็นต้นมาWindows NTอนุญาตเฉพาะHAL ที่ใช้ACPI เท่านั้น [ 5 ]ntoskrnl.exehal.dll

ระบบปฏิบัติการ Windows CEยังมี HAL ที่เรียกว่าOEM Adaptation Layer (OAL) ซึ่งถูกคอมไพล์เป็นไฟล์oal.exeหรือoal.dllและรวมอยู่ในnk.binอิมเมจสำหรับบูตด้วย

ในWindows 9xทั้งเคอร์เนลและ HAL จริงๆ ก็คือvmm32.vxd.

เอเอส/400

ตัวอย่าง "สุดขั้ว" ของ HAL สามารถพบได้ใน สถาปัตยกรรม System/38และAS/400ซึ่งปัจจุบันใช้งานอยู่ใน ระบบปฏิบัติการ IBM iคอมไพเลอร์ส่วนใหญ่สำหรับระบบเหล่านั้นสร้างรหัสเครื่องนามธรรม รหัสภายในที่ได้รับอนุญาต หรือ LIC จะแปลรหัสเครื่องเสมือนนี้เป็นรหัสเนทีฟสำหรับโปรเซสเซอร์ที่กำลังทำงานอยู่ และดำเนินการรหัสเนทีฟที่ได้[ 6 ] (ข้อยกเว้นคือคอมไพเลอร์ที่สร้าง LIC เอง คอมไพเลอร์เหล่านั้นไม่มีให้บริการนอก IBM) สิ่งนี้ประสบความสำเร็จอย่างมากจนซอฟต์แวร์แอปพลิเคชันและซอฟต์แวร์ระบบปฏิบัติการที่อยู่เหนือเลเยอร์ LIC ซึ่งคอมไพล์บน S/38 ดั้งเดิมสามารถทำงานได้โดยไม่ต้องแก้ไขและไม่ต้องคอมไพล์ใหม่บนระบบ AS/400 รุ่นล่าสุด แม้ว่าฮาร์ดแวร์พื้นฐานจะมีการเปลี่ยนแปลงอย่างมากก็ตาม มีการใช้โปรเซสเซอร์อย่างน้อยสามประเภทที่แตกต่างกัน[ 6 ]

แอนดรอยด์

Androidได้แนะนำ HAL ที่เรียกว่า "อินเทอร์เฟซผู้จำหน่าย" (รหัสชื่อ "Project Treble") ในเวอร์ชัน 8.0 "Oreo"โดยจะแยกโค้ดระดับต่ำออกจากเฟรมเวิร์กของระบบปฏิบัติการ Android และจะต้องทำให้เข้ากันได้กับเวอร์ชัน Android ในอนาคต เพื่อช่วยให้การพัฒนาการอัปเดตเฟิร์มแวร์ง่ายขึ้น[ 7 ]ก่อน Project Treble Android อาศัย HAL รุ่นเก่าที่ไม่เป็นมาตรฐานต่างๆ[ 8 ]

Haliumเป็น HAL ที่ใช้ระบบ Android เป็นพื้นฐาน ซึ่งถูกนำไปใช้ในระบบปฏิบัติการมือถือหลายระบบ เช่นUbuntu TouchและLuneOSเพื่อใช้งานบนสมาร์ทโฟนที่ติดตั้ง Android มาล่วงหน้า

ดูเพิ่มเติม

อ่านเพิ่มเติม

  • "ข้อกำหนดการประมวลผล RISC ขั้นสูง" (PDF) . MIPS Technologies . หน้า 23 . สืบค้นเมื่อ26 กุมภาพันธ์ 2013 .
  • ซิลเบอร์ชาทซ์, อับราฮัม; กัลวิน, ปีเตอร์ แบร์; กาญเญ, เกร็ก (2002). แนวคิดระบบปฏิบัติการ (ฉบับที่ 6). ISBN 0-471-41743-2.
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Hardware_abstraction&oldid=1358214851#Android "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ การแยกส่วนฮาร์ดแวร์

การสร้างนามธรรมของฮาร์ดแวร์คือซอฟต์แวร์ที่ช่วยให้เข้าถึงฮาร์ดแวร์ได้ในลักษณะที่ซ่อนรายละเอียดต่างๆ ที่อาจทำให้การใช้งานฮาร์ดแวร์เป็นเรื่องยาก โดยทั่วไป

การเขียนโปรแกรม

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

เลเยอร์นามธรรมฮาร์ดแวร์

HAL ( Hardware Abstraction Layer ) คือ เลเยอร์นามธรรม ที่ถูกสร้างขึ้นด้วยซอฟต์แวร์ คั่นกลางระหว่าง ฮาร์ดแวร์ ทางกายภาพ ของ คอมพิวเตอร์ กับ ซอฟต์แวร์ ที่ทำงานบนคอมพิวเตอร์นั้น หน้าที่ของมันคือการซ่อนความแตกต่างของฮาร์ดแวร์จาก เคอร์เนล ของ ระบบปฏิบัติการ...

ไมโครซอฟต์ วินโดวส์

เคอร์เนล ของ Windows NT มี HAL ในพื้นที่เคอร์เนลระหว่างฮาร์ดแวร์และบริการผู้บริหารที่อยู่ในไฟล์ [ 2 ] [ 3 ] ภายใต้ซึ่งช่วยให้โค้ดโหมดเคอร์เนลของ Windows NT สามารถพกพาไปยังโปรเซสเซอร์ต่างๆ ที่มี สถาปัตยกรรม หน่วยจัดการหน่วยความจำ ที่แตกต่างกัน และระบบต่างๆ...