Làm thế nào một máy tính có thể tự khởi động lại? Sau khi nó tắt, làm thế nào để nó tự quay trở lại? Loại phần mềm nào có thể làm điều này?
Làm thế nào một máy tính có thể tự khởi động lại? Sau khi nó tắt, làm thế nào để nó tự quay trở lại? Loại phần mềm nào có thể làm điều này?
Câu trả lời:
tl; dr: trạng thái năng lượng trong máy tính của bạn được kiểm soát bởi việc triển khai ACPI (cấu hình nâng cao và giao diện nguồn). Khi kết thúc quá trình tắt máy, hệ điều hành của bạn sẽ đặt lệnh ACPI cho biết máy tính sẽ khởi động lại. Đáp lại, bo mạch chủ đặt lại tất cả các thành phần bằng cách sử dụng các lệnh hoặc dòng thiết lập lại tương ứng của chúng, sau đó thực hiện theo quy trình bootstrap. Bo mạch chủ không bao giờ thực sự tắt, nó chỉ đặt lại các thành phần khác nhau và sau đó hoạt động như thể nút nguồn vừa được nhấn.
Dài và lan man nhưng (theo tôi) câu trả lời thú vị hơn:
Vào thời xa xưa (tốt, được thôi, với một sinh viên đại học như tôi những năm 90 đã lâu rồi), chúng tôi có bo mạch chủ AT (Công nghệ tiên tiến) với nguồn ATsự quản lý. Hệ thống điện AT rất, rất đơn giản. Nút nguồn trên máy tính của bạn là một nút chuyển đổi phần cứng (có thể ở phía sau vỏ) và đầu vào 120vac của bạn đã đi qua nó. Nó thực sự bật và tắt nguồn cung cấp năng lượng cho bạn và khi công tắc này ở vị trí Tắt, mọi thứ trong máy tính của bạn đã hoàn toàn chết (điều này làm cho pin CMOS rất quan trọng, vì không có nguồn cung cấp năng lượng để giữ phần cứng đồng hồ tích tắc). Bởi vì công tắc nguồn là một cơ chế vật lý, không có cách nào để bật và tắt nguồn. Windows sẽ hiển thị thông báo "Bây giờ an toàn để tắt máy tính của bạn" bởi vì, mặc dù mọi thứ đã được đỗ và sẵn sàng để tắt, nhưng hệ điều hành không thể thực sự bật công tắc nguồn. Cấu hình này đôi khi được gọi làsức mạnh cứng , bởi vì đó là tất cả phần cứng.
Ngày nay mọi thứ đã khác, bởi vì những điều kỳ diệu của bo mạch chủ ATX và sức mạnh ATX (đó là Công nghệ tiên tiến eXtends nếu bạn đang theo dõi). Cùng với một số tiến bộ khác (mini-DIN PS / 2, có ai không?), ATX mang lại sức mạnh mềm . Sức mạnh mềm có nghĩa là năng lượng cho máy tính có thể được điều khiển bằng phần mềm. Điều này mang lại một vài thay đổi nhập khẩu:
Vì vậy, công tắc nguồn của bạn không còn "bật" máy tính nữa. Thay vào đó, nó được kết nối với bộ điều khiển cơ bản của bo mạch chủ của bạn, phát hiện ra rằng nút đã được nhấn và thực hiện một số bước để sẵn sàng cho hệ thống, bao gồm bật sáng PS_ON để có nguồn điện. Nút nguồn không phải là cách duy nhất để kích hoạt quá trình khởi động, các thiết bị trên bus mở rộng của bạn cũng có thể làm như vậy. Điều này rất quan trọng vì các bộ điều hợp mạng ethernet của bạn thực sự vẫn hoạt động khi máy tính của bạn tắt và tìm kiếm một gói rất cụ thể thường được gọi là "Gói ma thuật". Nếu họ phát hiện gói này được gửi đến địa chỉ MAC của họ, họ sẽ kích hoạt quá trình khởi động. Đây là cách "Wake-on-LAN" (WoL) hoạt động. Đồng hồ cũng có thể khởi động một khởi động (hầu hết BIOS cho phép bạn đặt thời gian mà máy tính sẽ khởi động mỗi ngày),
Chà, tôi giải thích điều Soft Power cả bởi vì tôi nghĩ nó thú vị (luôn là lý do chính khiến tôi giải thích mọi thứ) và vì nó cho phép bạn hiểu cách thức nguồn và trạng thái chạy / tắt của máy tính của bạn được điều khiển bởi phần mềm. Trong hầu hết các máy tính hiện tại, hệ thống phần mềm này là một triển khai của Cấu hình nâng cao và Giao diện nguồn, hoặc ACPI . ACPI là một hệ thống hợp nhất, được tiêu chuẩn hóa cho phép phần mềm điều khiển hệ thống điện của máy tính của bạn. Bạn có thể đã nghe nói về các trạng thái năng lượng ACPI. Cơ chế cơ bản của điều khiển công suất là các "trạng thái nguồn" này, hệ điều hành của bạn chuyển qua các chế độ nguồn bằng cách chuẩn bị cho công tắc (quá trình tắt / ngủ đông xảy ra trước khi tắt nguồn thực sự), sau đó ra lệnh cho bo mạch chủ chuyển trạng thái nguồn . Các trạng thái sức mạnh trông như thế này:
Bạn sẽ nhận thấy rằng khởi động lại không phải là một trong những trạng thái này. Vì vậy, những gì thực sự xảy ra khi máy tính của bạn khi nó khởi động lại? Câu trả lời có thể gây ngạc nhiên, bởi vì từ góc độ quản lý năng lượng, nó gần như không có gì . Có lệnh đặt lại ACPI. Khi bạn yêu cầu hệ điều hành khởi động lại, nó sẽ tuân theo quy trình tắt máy thông thường (dừng tất cả các quy trình của bạn, thực hiện một chút bảo trì, tháo gỡ hệ thống tệp của bạn, v.v.), và sau đó là bước cuối cùng, thay vì gửi máy về trạng thái nguồn G2 (như thể nếu bạn chỉ đơn giản là bảo nó Tắt), nó sẽ đặt lệnh Reset. Điều này thường được gọi là "Đăng ký đặt lại", vì giống như hầu hết giao diện ACPI, đây chỉ là một địa chỉ mà một giá trị cụ thể phải được ghi vào để yêu cầu đặt lại. Tôi sẽ trích dẫn đặc tả 2.0 về những gì nó làm:
Cơ chế đặt lại ACPI tùy chọn chỉ định một cơ chế tiêu chuẩn cung cấp thiết lập lại hệ thống hoàn chỉnh. Khi thực hiện, cơ chế này phải thiết lập lại toàn bộ hệ thống. Điều này bao gồm bộ xử lý, logic lõi, tất cả các xe buýt và tất cả các thiết bị ngoại vi. Từ góc độ OSPM, khẳng định cơ chế thiết lập lại là tương đương logic với việc cung cấp năng lượng cho máy. Khi giành quyền kiểm soát sau khi thiết lập lại, OSPM sẽ thực hiện các hành động theo cách tương tự với khởi động nguội.
Vì vậy, khi thanh ghi thiết lập lại được thiết lập, một vài điều xảy ra theo trình tự.
Hiệu quả cuối cùng của hai bước này (thực sự bị phá vỡ thành nhiều bước nữa) là nó trông giống như mọi thứ giống như máy tính vừa khởi động, nhưng sức mạnh thực sự là toàn bộ thời gian. Điều này có nghĩa là cần ít thời gian hơn để tắt và khởi động (vì bạn không phải chờ nguồn điện sẵn sàng) và quan trọng là cho phép khởi động được khởi động bởi hệ điều hành tắt. Điều này có nghĩa là không cần sử dụng trình kích hoạt khởi động khác (WoL, v.v.) và cho phép bạn sử dụng Reboot như một cách hiệu quả để đặt lại hệ thống từ xa, khi bạn không có cách nào để kích hoạt khởi động.
Đó là một câu trả lời dài. Nhưng này, hy vọng bạn biết nhiều hơn về quản lý năng lượng máy tính bây giờ. Tôi chắc chắn đã học được một số điều nghiên cứu này.
Đây là điểm khởi đầu:
Chips thường không tắt và sau đó bật. Thay vào đó, có một dòng thiết lập lại sẽ đưa bộ xử lý ở trạng thái được gọi là thiết lập lại khi thường tất cả bộ nhớ bị xóa và bộ xử lý trông giống như nó được bật nguồn. Trong khi chân đó được giữ ở mức cao (hoặc thấp, tùy thuộc vào bộ xử lý), bộ xử lý được đặt lại. Khi pin được giải phóng, nó sẽ tiếp tục khởi động bình thường, giống như khi nó được bật lần đầu tiên. Điểm chính của điều này là không có nguồn điện tự cắt.
Vậy làm thế nào để quy mô này đến các hệ thống lớn hơn như PC hiện đại? Các máy tính hiện đại được tạo ra từ các máy tính đôi khi được tạo ra từ chính các máy tính. Vì vậy, khi bạn đặt máy tính để đặt lại, "máy tính" làm cho máy tính sẽ bắt đầu lưu trạng thái của chúng (nếu thiết lập lại được kiểm soát) hoặc chỉ cần kéo chân thiết lập lại.
Một số bộ xử lý và vi điều khiển (là các máy tính độc lập thu nhỏ, thường chậm hơn 20 năm so với các máy tính để bàn hiện đại) có thể tự thiết lập lại bằng các công tắc bên trong. Như tôi đã nói, một khi tín hiệu tạo ra thiết lập lại không còn, máy tính sẽ khởi động. Vì vậy, tiền đề trong câu hỏi không hoàn toàn đúng. Máy tính không biết khi nào bật. Để biết khi nào nó cần được "tắt" hoặc trong thiết lập lại và khi tín hiệu giữ nó không còn, nó sẽ bật.
Hành vi này có thể trông lạ trên máy tính hiện đại có thể được thiết lập để bật vào thời gian cụ thể hoặc qua mạng, v.v. Như tôi đã nói máy tính được làm bằng máy tính. Vì vậy, trong khi bộ xử lý chính có thể bị tắt, có thể có rất nhiều chip và bộ vi điều khiển khác bên trong. Trường hợp rõ ràng nhất là đồng hồ thời gian thực thường chạy bằng pin. Sau đó, nó có thể bật các chip khác sẽ bật các chip khác và phản ứng dây chuyền diễn ra cho đến khi toàn bộ máy tính được bật. Trên các máy tính ngày nay, có một dòng PSU được gọi là Điện áp dự phòng +5 VDC. Nó cung cấp năng lượng khoảng 50 mW cho các thiết bị khác nhau được bật khi máy tính "tắt".
Một chút chuyện nhỏ: Đặt lại pin trên bộ xử lý Intel 386 EX là số pin 110.
Trên Intel i7-900, số đất AL39.
Tôi hy vọng rằng ai đó sẽ có thể đưa ra câu trả lời sẽ giải thích cách mọi thứ hoạt động theo quan điểm cấp cao, vì hệ thống khá phức tạp.
Bài đăng trên blog này mô tả cách Linux kích hoạt khởi động lại.
Trích đoạn:
Linux có rất nhiều cách khác nhau để thiết lập lại x86. Một số trong số chúng chỉ có 32 bit và vì vậy tôi sẽ bỏ qua chúng vì thật lòng bạn chỉ đang làm gì với cuộc sống của mình. Ngoài ra, chúng thật kinh khủng. Vì vậy, điều đó để lại cho chúng tôi với năm trong số họ.
kbd - khởi động lại thông qua bộ điều khiển bàn phím. Máy tính IBM ban đầu có dòng đặt lại CPU được gắn với bộ điều khiển bàn phím. Viết giá trị ma thuật thích hợp xung dòng và máy đặt lại. Tất cả đều rất đơn giản, ngoại trừ thực tế là các máy hiện đại không có bộ điều khiển bàn phím (chúng thực sự là một phần của bộ điều khiển nhúng) và thậm chí các máy hiện đại hơn thậm chí còn không giả vờ có bộ điều khiển bàn phím. Bây giờ, bộ điều khiển nhúng chạy phần mềm. Và, như chúng ta đều biết, phần mềm rất khủng khiếp. Nhưng, tệ hơn, phần mềm trên bộ điều khiển nhúng đã được viết bởi các tác giả BIOS. Vì vậy, rõ ràng bất kỳ giả vờ rằng điều này từng làm việc là một loại tiểu thuyết phức tạp. Một số máy rất kén chọn phần cứng ở trạng thái chính xác mà Windows sẽ lập trình. Một số máy hoạt động 9 lần trong số 10 và sau đó bị khóa do một số vấn đề về thời gian kỳ lạ. Và những người khác chỉ đơn giản là không làm việc gì cả. Tiếng hoan hô!
triple - cố gắng tạo ra một lỗi ba. Điều này được thực hiện bằng cách tải một bảng mô tả ngắt trống và sau đó gọi int (3). Ngắt không thành công (không có IDT), trình xử lý lỗi không thành công (không có IDT) và CPU đi vào một điều kiện, theo lý thuyết, sau đó kích hoạt thiết lập lại. Ngoại trừ dường như không có yêu cầu nào xảy ra và nó chỉ không hoạt động trên một loạt các máy móc.
pci - không thực sự pci. Truy cập không gian cấu hình PCI truyền thống đạt được bằng cách ghi giá trị 32 bit vào cổng io 0xcf8 để xác định thanh ghi bus, thiết bị, chức năng và cấu hình. Cổng 0xcfc sau đó chứa thanh ghi trong câu hỏi. Nhưng nếu bạn viết cặp giá trị ma thuật thích hợp thành 0xcf9, máy sẽ khởi động lại. Đẹp mắt! Và không được tiêu chuẩn hóa theo bất kỳ cách nào (chắc chắn không phải là một phần của thông số kỹ thuật PCI), vì vậy các chipset khác nhau có thể có các yêu cầu khác nhau. Booo.
efi - Dịch vụ thời gian chạy EFI cung cấp một điểm vào để khởi động lại máy. Nó thường hoạt động! Miễn là các dịch vụ thời gian chạy EFI đang hoạt động, đó có thể là một sự kéo dài.
acpi - Các phiên bản gần đây của thông số ACPI cho phép bạn cung cấp địa chỉ (thường là bộ nhớ hoặc không gian IO hệ thống) và giá trị để ghi ở đó. Ý tưởng là viết giá trị cho địa chỉ đặt lại hệ thống. Nó chỉ ra rằng làm như vậy thường thất bại. Cũng không thể biểu diễn phương thức khởi động lại PCI thông qua ACPI, vì phương thức khởi động lại PCI yêu cầu một cặp giá trị và ACPI chỉ cung cấp cho bạn một giá trị.
Nó đóng băng một vị trí I / O làm kéo một dòng dữ liệu xuống mức thấp cho CPU biết rằng nó sẽ dừng mọi hoạt động và bắt đầu chạy mã từ một vị trí nhất định trong BIOS.
Quay lại thời xưa trước khi quản lý năng lượng, tất nhiên máy tính vẫn có thể tự khởi động lại. (Có ai còn nhớ khi chương trình bị đóng băng có nghĩa là bạn phải sử dụng Ctrl + Alt + Delete để khởi động lại máy tính không?)
Trên 486 cũ của tôi, lệnh ngôn ngữ lắp ráp JMP FFFF:0000
(nghĩa là đặt Con trỏ lệnh của CPU thành địa chỉ đã nói) sẽ khiến toàn bộ máy tính khởi động lại. Nói cách khác, FFFF: 0000 giải quyết một vị trí trong BIOS có hướng dẫn về những gì máy tính nên làm khi khởi động lần đầu tiên. Tôi nghi ngờ Pin Đặt lại được mô tả bởi câu trả lời của AndrejaKo hoặc các nút đặt lại trong những ngày trước khi quản lý điện, cũng sẽ buộc Con trỏ lệnh đến cùng một địa chỉ.
Một tìm kiếm Google cho JMP FFFF: 0000 cho thấy nhiều trang thú vị về điều này.
Ngoài ra còn có một thứ được đặt tên là cơ quan giám sát. Thiết bị này phục vụ như một công tắc của người chết. Máy tính phải báo hiệu cho cơ quan giám sát cứ sau một phút nói rằng nó vẫn còn sống. Khi máy tính gặp sự cố, ví dụ bằng cách chạy vào một vòng lặp vô tận, nó sẽ không báo hiệu cho cơ quan giám sát, nó vẫn chạy như dự định, nhân dịp cơ quan giám sát sẽ thực hiện thiết lập lại phần cứng. Điều này đã được chứng minh trong loạt phim truyền hình nổi tiếng về kẻ hủy diệt, trong đó một robot bị đánh bật bởi sự đột biến của điện áp cao. nó sẽ tự thiết lập lại sau 2 phút.
Quay lại IBM PC-1 cũ, bộ điều khiển bàn phím, thật kỳ lạ, đã xử lý khởi động lại. IBM đã nhúng một bộ vi xử lý nhỏ để xử lý bàn phím và nó có một số dòng I / O dự phòng, vì vậy họ đã sử dụng một trong các dòng để điều khiển dòng thiết lập lại của CPU chính. Một lệnh được gửi đến bộ điều khiển bàn phím sẽ dẫn đến việc CPU được thiết lập lại như thể nguồn vừa được bật.
Tôi đoán truyền thống này tiếp tục tốt trong thời đại "AT", và có thể có dấu tích của nó còn tồn tại trong ACPI ngày nay.
Đã thêm: Có một chi tiết thú vị về sơ đồ đặt lại ở trên. Trong chuỗi khởi động sớm, mã tìm kiếm một mẫu cụ thể trong RAM có thể được đặt bởi mã thực thi trước đó. Nếu mã này có mặt, một số chẩn đoán POST (tự kiểm tra bật nguồn) đã bị bỏ qua. Các mẫu sẽ chỉ có mặt trên một khởi động "ấm".