คอมพิวเตอร์จะรีสตาร์ทตัวเองได้อย่างไร หลังจากปิดแล้วมันจะบอกตัวเองให้กลับมาอีกครั้งได้อย่างไร ซอฟต์แวร์ประเภทใดที่สามารถทำได้
คอมพิวเตอร์จะรีสตาร์ทตัวเองได้อย่างไร หลังจากปิดแล้วมันจะบอกตัวเองให้กลับมาอีกครั้งได้อย่างไร ซอฟต์แวร์ประเภทใดที่สามารถทำได้
คำตอบ:
tl; dr:สถานะพลังงานในคอมพิวเตอร์ของคุณถูกควบคุมโดยการใช้งาน ACPI (การกำหนดค่าขั้นสูงและอินเตอร์เฟสพลังงาน) ในตอนท้ายของกระบวนการปิดระบบปฏิบัติการของคุณตั้งค่าคำสั่ง ACPI เพื่อระบุว่าคอมพิวเตอร์ควรรีบูต ในการตอบสนองมาเธอร์บอร์ดจะรีเซ็ตส่วนประกอบทั้งหมดโดยใช้คำสั่งหรือบรรทัดรีเซ็ตตามลำดับจากนั้นทำตามกระบวนการบู๊ตสแตรป เมนบอร์ดไม่เคยปิดจริงมันเพียงรีเซ็ตองค์ประกอบต่าง ๆ และจากนั้นจะทำงานราวกับว่าเพิ่งกดปุ่มเพาเวอร์
ยาวและท่องเที่ยว แต่ (ในความคิดของฉัน) คำตอบที่น่าสนใจมากขึ้น:
ในสมัยก่อน (ก็โอเคสำหรับนักศึกษาอย่างฉัน '90s เป็นเวลานานแล้ว) เรามีเมนบอร์ด AT (เทคโนโลยีขั้นสูง) ที่มีATการจัดการ ระบบพลังงาน AT นั้นง่ายมาก ๆ ปุ่มเปิด / ปิดบนคอมพิวเตอร์ของคุณเป็นฮาร์ดแวร์สลับ (อาจอยู่ที่ด้านหลังของเคส) และอินพุต 120vac ของคุณถูกต้อง มันจะเปิดและปิดสวิตช์เพาเวอร์ของแหล่งจ่ายไฟของคุณและเมื่อสวิตช์นี้อยู่ในตำแหน่งปิดทุกอย่างในคอมพิวเตอร์ของคุณก็ตายไปหมดแล้ว (นี่ทำให้แบตเตอรี่ CMOS มีความสำคัญมากเพราะไม่มีแหล่งจ่ายไฟสำหรับฮาร์ดแวร์ ฟ้องนาฬิกา) เนื่องจากสวิตช์เปิดปิดเป็นกลไกทางกายภาพจึงไม่มีวิธีใช้ซอฟต์แวร์ในการเปิดและปิด Windows จะแสดงข้อความ "ตอนนี้ปลอดภัยแล้วที่จะปิดคอมพิวเตอร์ของคุณ" เนื่องจากแม้ว่าทุกอย่างจะถูกจอดไว้และพร้อมที่จะปิด แต่ก็เป็นไปไม่ได้ที่ระบบปฏิบัติการจะพลิกสวิตช์ไฟได้จริง การกำหนดค่านี้บางครั้งเรียกว่าพลังงานอย่างหนักเพราะมันเป็นฮาร์ดแวร์ทั้งหมด
ทุกวันนี้ทุกอย่างแตกต่างกันไปเพราะสิ่งมหัศจรรย์ของมาเธอร์บอร์ดATXและพลัง ATX (นั่นคือเทคโนโลยีขั้นสูงที่เพิ่มขึ้นหากคุณกำลังติดตาม) ตามด้วยหมายเลขของความก้าวหน้าอื่น ๆ (Mini-DIN PS / 2, ใคร?) ATX นำไฟอ่อน ซอฟต์เพาเวอร์หมายความว่าซอฟต์แวร์สามารถควบคุมกำลังไฟของคอมพิวเตอร์ สิ่งนี้ทำให้เกิดการเปลี่ยนแปลงการนำเข้าเล็กน้อย:
ดังนั้นสวิตช์ไฟของคุณจะไม่ "เปิด" คอมพิวเตอร์อีกต่อไป แต่จะเชื่อมต่อกับตัวควบคุมพื้นฐานของเมนบอร์ดซึ่งตรวจพบว่ามีการกดปุ่มและดำเนินการตามขั้นตอนต่างๆเพื่อเตรียมระบบรวมถึงการให้แสงสว่าง PS_ON เพื่อให้พลังงานสามารถใช้งานได้ ปุ่มเปิดปิดไม่ใช่วิธีเดียวที่จะกระตุ้นกระบวนการเริ่มต้นอุปกรณ์ในบัสส่วนขยายของคุณสามารถทำได้เช่นกัน สิ่งนี้มีความสำคัญเนื่องจากอะแดปเตอร์เครือข่ายอีเธอร์เน็ตของคุณยังคงใช้งานได้จริงเมื่อคอมพิวเตอร์ของคุณปิดอยู่และค้นหาแพ็คเก็ตที่เฉพาะเจาะจงอย่างมากซึ่งมักเรียกว่า "แพ็คเก็ต Magic" หากตรวจพบแพ็กเก็ตนี้ที่ส่งไปยังที่อยู่ MAC พวกเขาจะทริกเกอร์กระบวนการเริ่มต้น นี่คือการทำงานของ "Wake-on-LAN" (WoL) นาฬิกาสามารถเริ่มการบู๊ตได้ (BIOS ส่วนใหญ่อนุญาตให้คุณตั้งเวลาที่คอมพิวเตอร์ควรบู๊ตในแต่ละวัน)
ฉันอธิบายสิ่งที่อ่อนนุ่มทั้งสองเพราะฉันคิดว่ามันน่าสนใจ (เหตุผลสำคัญเสมอที่ฉันอธิบายสิ่งต่าง ๆ ) และเพราะมันช่วยให้คุณเข้าใจว่าอำนาจและการเปิด / ปิดสถานะของคอมพิวเตอร์ของคุณทั้งหมดถูกควบคุมโดยซอฟต์แวร์ ในคอมพิวเตอร์ในปัจจุบันมากที่สุดระบบซอฟต์แวร์นี้คือการดำเนินการของการกำหนดค่าขั้นสูงและ Power Interface หรือ ACPI ACPI เป็นระบบที่เป็นมาตรฐานและเป็นเอกภาพช่วยให้ซอฟต์แวร์ควบคุมระบบไฟฟ้าของคอมพิวเตอร์ของคุณ คุณอาจเคยได้ยินเกี่ยวกับสถานะพลังงานของACPI. กลไกพื้นฐานของการควบคุมพลังงานคือ "สถานะพลังงาน" ระบบปฏิบัติการของคุณจะสลับผ่านโหมดพลังงานโดยเตรียมการสำหรับสวิตช์ (กระบวนการปิด / จำศีลที่เกิดขึ้นก่อนที่พลังงานจะหยุดทำงานจริง) จากนั้นสั่งให้เมนบอร์ดเปลี่ยนสถานะพลังงาน . สถานะพลังงานมีลักษณะเช่นนี้:
คุณจะสังเกตเห็นว่าการรีบูตไม่ใช่สถานะใดสถานะหนึ่งเหล่านี้ ดังนั้นจะเกิดอะไรขึ้นเมื่อคอมพิวเตอร์ของคุณรีบูต? คำตอบอาจจะแปลกใจเพราะจากมุมมองการจัดการพลังงานมันแทบไม่มีอะไรเลย มีคำสั่งรีเซ็ต ACPI. เมื่อคุณบอกให้ระบบปฏิบัติการรีบูตระบบจะปฏิบัติตามกระบวนการปิดเครื่องตามปกติ (หยุดกระบวนการทั้งหมดของคุณทำการบำรุงรักษาเล็กน้อยถอดระบบไฟล์ของคุณ ฯลฯ ) จากนั้นเป็นขั้นตอนสุดท้ายแทนที่จะส่งเครื่องไปยังสถานะพลังงาน G2 (อย่างที่มันบอกถ้าหากคุณแค่บอกให้มันปิดเครื่อง) มันตั้งค่าคำสั่งรีเซ็ต โดยทั่วไปจะเรียกว่า "รีเซ็ตการลงทะเบียน" เนื่องจากเช่นเดียวกับส่วนใหญ่ของอินเทอร์เฟซ ACPI เป็นเพียงที่อยู่ที่ควรเขียนค่าเฉพาะเพื่อขอรีเซ็ต ฉันจะอ้างอิงข้อกำหนด 2.0 ในสิ่งที่มันทำ:
กลไกการรีเซ็ต ACPI ที่เป็นตัวเลือกระบุกลไกมาตรฐานที่ให้การรีเซ็ตระบบแบบสมบูรณ์ เมื่อใช้งานกลไกนี้จะต้องรีเซ็ตทั้งระบบ ซึ่งรวมถึงโปรเซสเซอร์, คอร์ตรรกะ, บัสทั้งหมดและอุปกรณ์ต่อพ่วงทั้งหมด จากมุมมองของ OSPM การยืนยันกลไกการตั้งค่าใหม่นั้นเทียบเท่ากับการหมุนเวียนพลังงานของเครื่อง เมื่อได้รับการควบคุมหลังจากรีเซ็ต OSPM จะดำเนินการในลักษณะที่คล้ายกันกับการบูตแบบเย็น
ดังนั้นเมื่อมีการตั้งค่ารีจิสเตอร์ใหม่จะมีบางสิ่งเกิดขึ้นตามลำดับ
ผลสุดท้ายของสองขั้นตอน (ซึ่งจริง ๆ แล้วแบ่งออกเป็นหลายขั้นตอนมากขึ้น) คือมันดูเหมือนว่าทุกอย่างเช่นคอมพิวเตอร์เพิ่งบูต แต่พลังนั้นเป็นจริงตลอดเวลา ซึ่งหมายความว่าต้องใช้เวลาน้อยลงในการปิดและเปิดเครื่อง (เนื่องจากคุณไม่ต้องรอให้แหล่งจ่ายไฟพร้อม) และที่สำคัญช่วยให้การเริ่มต้นระบบเริ่มต้นขึ้นโดยระบบปฏิบัติการจะปิดตัวลง ซึ่งหมายความว่าไม่จำเป็นต้องใช้ทริกเกอร์เริ่มต้นอื่น (WoL ฯลฯ ) และอนุญาตให้คุณใช้ Reboot เป็นวิธีที่มีประสิทธิภาพในการรีเซ็ตระบบจากระยะไกลเมื่อคุณไม่มีวิธีเรียกบูต
นั่นคือคำตอบที่ยาวนาน แต่เดี๋ยวก่อนหวังว่าคุณจะรู้มากขึ้นเกี่ยวกับการจัดการพลังงานคอมพิวเตอร์ในตอนนี้ ฉันได้เรียนรู้บางสิ่งที่ค้นคว้าสิ่งนี้อย่างแน่นอน
นี่คือจุดเริ่มต้น:
ชิปมักจะไม่ปิดและเปิด มีเส้นรีเซ็ตซึ่งจะทำให้โปรเซสเซอร์อยู่ในสถานะที่เรียกว่ารีเซ็ตเมื่อโดยปกติแล้วหน่วยความจำทั้งหมดจะถูกล้างและโปรเซสเซอร์ดูเหมือนว่าเพิ่งเปิดเครื่อง ในขณะที่พินนั้นอยู่ในระดับสูง (หรือต่ำขึ้นอยู่กับโปรเซสเซอร์) โปรเซสเซอร์จะถูกรีเซ็ต เมื่อพินถูกปล่อยออกมามันจะทำการบูทต่อเนื่องตามปกติราวกับว่ามันถูกเปิดเป็นครั้งแรก ประเด็นนี้คือไม่มีการตัดไฟ
ดังนั้นขนาดนี้ถึงระบบที่ใหญ่กว่าเช่นพีซีรุ่นใหม่ได้อย่างไร คอมพิวเตอร์ที่ทันสมัยนั้นทำจากคอมพิวเตอร์ซึ่งบางครั้งก็ทำจากคอมพิวเตอร์เอง ดังนั้นเมื่อคุณตั้งค่าคอมพิวเตอร์ให้รีเซ็ต "คอมพิวเตอร์" ที่ทำให้คอมพิวเตอร์จะเริ่มบันทึกสถานะของพวกเขา (หากรีเซ็ตการควบคุม) หรือเพียงดึงหมุดรีเซ็ตของพวกเขา
โปรเซสเซอร์และไมโครคอนโทรลเลอร์บางตัว (ซึ่งเป็นคอมพิวเตอร์ขนาดเล็กในตัวซึ่งโดยปกติแล้วจะอยู่หลังคอมพิวเตอร์เดสก์ท็อปรุ่นใหม่ในระยะเวลา 20 ปี) สามารถรีเซ็ตตัวเองโดยใช้สวิตช์ภายใน อย่างที่ฉันบอกเมื่อสัญญาณที่สร้างการรีเซ็ตหายไปคอมพิวเตอร์จะเริ่มทำงาน ดังนั้นหลักฐานในคำถามไม่ถูกต้องสมบูรณ์ คอมพิวเตอร์ไม่รู้ว่าจะเปิดเมื่อใด เมื่อรู้ว่าจะต้องมีการ "ปิด" หรือในการรีเซ็ตและเมื่อสัญญาณที่ทำให้มันหายไปมันจะเปิด
พฤติกรรมนี้อาจดูแปลกในคอมพิวเตอร์สมัยใหม่ซึ่งสามารถกำหนดให้เปิดในเวลาที่กำหนดหรือผ่านเครือข่ายและอื่น ๆ อย่างที่ฉันบอกว่าคอมพิวเตอร์ทำจากคอมพิวเตอร์ ดังนั้นในขณะที่โปรเซสเซอร์หลักอาจปิดอยู่อาจมีชิปและไมโครคอนโทรลเลอร์อื่น ๆ จำนวนมากที่เปิดอยู่ กรณีที่ชัดเจนที่สุดคือนาฬิกาแบบเรียลไทม์ซึ่งมักใช้พลังงานจากแบตเตอรี่ จากนั้นสามารถเปิดชิปอื่นซึ่งจะเปิดชิปอื่น ๆ และปฏิกิริยาลูกโซ่จะดำเนินต่อไปจนกว่าคอมพิวเตอร์ทั้งหมดจะเปิด ในคอมพิวเตอร์ทุกวันนี้มีสาย PSU ที่เรียกว่าแรงดันสแตนด์บาย +5 VDC มันให้พลังงานประมาณ 50 mW ไปยังอุปกรณ์ต่าง ๆ ที่เปิดเมื่อคอมพิวเตอร์ "ปิด"
เรื่องเล็กน้อย: รีเซ็ตพินในโปรเซสเซอร์ Intel 386 EX เป็นหมายเลขพิน 110
ใน Intel i7-900 เป็นหมายเลขที่ดิน AL39
ฉันหวังว่าใครบางคนจะสามารถให้คำตอบซึ่งจะอธิบายว่าสิ่งต่าง ๆ ทำงานอย่างไรจากมุมมองระดับสูงเนื่องจากเป็นระบบที่ค่อนข้างซับซ้อน
โพสต์บล็อกนี้อธิบายถึงวิธีที่ Linux ทริกเกอร์การรีบูต
ข้อความที่ตัดตอนมา:
Linux มีหลายวิธีในการรีเซ็ต x86 บางส่วนของพวกเขาเป็น 32 บิตเท่านั้นและดังนั้นฉันจะไม่สนใจพวกเขาเพราะสุจริตเพียงแค่สิ่งที่คุณทำกับชีวิตของคุณ นอกจากนี้พวกเขายังน่ากลัว นั่นทำให้เรามีห้าคน
kbd - รีบูตผ่านตัวควบคุมแป้นพิมพ์ พีซี IBM ดั้งเดิมมีบรรทัดรีเซ็ต CPU เชื่อมโยงกับคอนโทรลเลอร์ของแป้นพิมพ์ การเขียนค่าเวทย์มนตร์ที่เหมาะสมจะกะพริบบรรทัดและรีเซ็ตเครื่อง ทั้งหมดนี้ตรงไปตรงมามากยกเว้นเครื่องที่ทันสมัยไม่มีตัวควบคุมแป้นพิมพ์ (จริง ๆ แล้วพวกเขาเป็นส่วนหนึ่งของตัวควบคุมที่ฝังตัว) และยิ่งกว่านั้นเครื่องจักรที่ทันสมัยมากขึ้นไม่ได้หลอกว่ามีตัวควบคุมแป้นพิมพ์ ตอนนี้ตัวควบคุมแบบฝังจะเรียกใช้ซอฟต์แวร์ และอย่างที่เรารู้กันดีว่าซอฟต์แวร์นั้นน่ากลัว แต่ยิ่งแย่ไปกว่านั้นซอฟต์แวร์ในตัวควบคุมแบบฝังตัวนั้นเขียนขึ้นโดยผู้เขียน BIOS เห็นได้ชัดว่าข้ออ้างใด ๆ ที่ว่าสิ่งนี้ได้ผลเป็นนิยายที่ประณีต เครื่องบางรุ่นค่อนข้างพิถีพิถันเกี่ยวกับฮาร์ดแวร์ที่อยู่ในสถานะที่แน่นอนว่า Windows จะเขียนโปรแกรม เครื่องบางเครื่องทำงานได้ 9 เท่าจาก 10 ครั้งจากนั้นล็อคเนื่องจากปัญหาเวลาผิดปกติ และคนอื่นก็ไม่ทำงานเลย เย่!
สามเท่า - พยายามสร้างความผิดสามประการ สิ่งนี้ทำได้โดยการโหลดตารางตัวอธิบายอินเทอร์รัปต์ว่างแล้วเรียกใช้ int (3) การขัดจังหวะล้มเหลว (ไม่มี IDT) ตัวจัดการความผิดพลาดล้มเหลว (ไม่มี IDT) และ CPU เข้าสู่เงื่อนไขที่ควรในทางทฤษฎีแล้วทริกเกอร์การรีเซ็ต ยกเว้นดูเหมือนจะไม่ได้มีข้อกำหนดว่าจะเกิดขึ้นและมันก็ไม่ได้ทำงานในหลาย ๆ เครื่อง
pci - ไม่ใช่ pci จริง ๆ การเข้าถึงพื้นที่ปรับแต่ง PCI แบบดั้งเดิมนั้นทำได้โดยการเขียนค่า 32 บิตไปยังพอร์ต io 0xcf8 เพื่อระบุบัสอุปกรณ์ฟังก์ชั่นและลงทะเบียนการกำหนดค่า พอร์ต 0xcfc จะมีการลงทะเบียนในคำถาม แต่ถ้าคุณเขียนค่าเวทย์มนตร์ที่เหมาะสมลงใน 0xcf9 เครื่องจะรีบูต งดงาม! และไม่ได้มาตรฐานในทางใดทางหนึ่ง (แน่นอนไม่ได้เป็นส่วนหนึ่งของข้อมูลจำเพาะ PCI) ดังนั้นชิปเซ็ตที่แตกต่างกันอาจมีความต้องการที่แตกต่างกัน Booo
efi - บริการรันไทม์ของ EFI เป็นจุดเริ่มต้นเพื่อรีบูตเครื่อง มันมักจะใช้งานได้! ตราบใดที่บริการของ EFI รันไทม์สามารถทำงานได้ทั้งหมด
acpi - ข้อมูลจำเพาะ ACPI เวอร์ชันล่าสุดช่วยให้คุณสามารถระบุที่อยู่ (โดยทั่วไปคือหน่วยความจำหรือพื้นที่ IO ระบบ) และค่าที่จะเขียน แนวคิดคือการเขียนค่าไปยังที่อยู่จะรีเซ็ตระบบ ปรากฎว่าการทำเช่นนั้นล้มเหลวบ่อยครั้ง นอกจากนี้ยังเป็นไปไม่ได้ที่จะเป็นตัวแทนของวิธีการรีบูต PCI ผ่าน ACPI เนื่องจากวิธีการรีบูต PCI ต้องใช้คู่ของค่าและ ACPI ให้เพียงวิธีเดียว
มันทำให้เกิดตำแหน่ง I / O ซึ่งดึงสายข้อมูลต่ำซึ่งบอก CPU ว่าควรหยุดสิ่งที่กำลังทำและเริ่มเรียกใช้รหัสจากตำแหน่งที่แน่นอนใน BIOS
ย้อนกลับไปในอดีตก่อนการจัดการพลังงานคอมพิวเตอร์ยังคงสามารถรีสตาร์ทตัวเองได้แน่นอน (ใครจำได้เมื่อโปรแกรมแช่แข็งหมายความว่าคุณต้องใช้ Ctrl + Alt + Delete เพื่อรีบูตคอมพิวเตอร์หรือไม่)
ใน 486 เก่าของฉันคำสั่งภาษาแอสเซมบลีJMP FFFF:0000
(เช่นตั้งค่า Instruction Pointer ของ CPU เป็นที่อยู่ที่ระบุไว้) จะทำให้คอมพิวเตอร์ทั้งเครื่องเริ่มต้นใหม่ กล่าวอีกนัยหนึ่ง FFFF: 0000 กล่าวถึงตำแหน่งใน BIOS ที่มีคำแนะนำว่าคอมพิวเตอร์ควรทำอย่างไรเมื่อเริ่มครั้งแรก ฉันสงสัยว่ารีเซ็ตพินที่อธิบายโดยคำตอบของ AndrejaKo หรือปุ่มรีเซ็ตในวันก่อนการจัดการพลังงานก็จะบังคับให้ Instruction Pointer ชี้ไปยังที่อยู่เดียวกัน
การค้นหา JMP FFFF: 0000 ของ Googleเผยให้เห็นหน้าเว็บที่น่าสนใจมากมายเกี่ยวกับเรื่องนี้
นอกจากนี้ยังมีสิ่งที่ชื่อว่าสุนัขเฝ้าบ้าน อุปกรณ์นี้ทำหน้าที่เป็นสวิตช์ของคนตาย คอมพิวเตอร์ต้องส่งสัญญาณไปยังสุนัขเฝ้าบ้านทุก ๆ นาทีว่ามันยังมีชีวิตอยู่ เมื่อคอมพิวเตอร์ขัดข้องเช่นโดยการวนซ้ำไม่รู้จบมันจะไม่ส่งสัญญาณไปยังสุนัขเฝ้าบ้านมันยังคงทำงานตามที่ตั้งใจไว้ในกรณีที่สุนัขเฝ้าบ้านจะทำการรีเซ็ตฮาร์ดแวร์ เรื่องนี้แสดงให้เห็นในทีวีซีรีส์ยอดนิยมของเทอร์มินอลที่หุ่นยนต์ถูกกระแทกด้วยกระแสไฟฟ้าแรงสูง มันจะรีเซ็ตตัวเองใน 2 นาที
ย้อนกลับไปที่ IBM PC-1 บนคอนโทรลเลอร์แป้นพิมพ์ซึ่งแปลกพอที่จะจัดการรีบูตได้ IBM ฝังไมโครโปรเซสเซอร์ขนาดเล็กเพื่อจัดการกับคีย์บอร์ดและมีบางบรรทัด I / O ดังนั้นพวกเขาจึงใช้หนึ่งในบรรทัดเพื่อขับสายรีเซ็ตของ CPU หลัก คำสั่งที่ส่งไปยังคอนโทรลเลอร์ของแป้นพิมพ์จะส่งผลให้ CPU ถูกรีเซ็ตเหมือนกำลังเปิดอยู่
ฉันเดาว่าประเพณีนี้ยังคงดำเนินต่อไปได้ดีในยุค "AT" และอาจมีร่องรอยของมันอยู่ใน ACPI วันนี้
เพิ่ม: มีรายละเอียดที่น่าสนใจเกี่ยวกับรูปแบบการรีเซ็ตด้านบน ในระหว่างลำดับการบูตในช่วงต้นรหัสจะค้นหารูปแบบเฉพาะใน RAM ที่อาจถูกตั้งค่าโดยรหัสการเรียกใช้ก่อนหน้านี้ หากรหัสนี้แสดงการวินิจฉัย POST (การทดสอบตัวเองเมื่อเปิดเครื่อง) บางส่วนก็ถูกข้ามไป รูปแบบจะปรากฏในการบูต "อบอุ่น" เท่านั้น