Bagaimana komputer bisa hidup kembali sendiri? Setelah itu mati, bagaimana ia memberitahu dirinya untuk kembali lagi? Perangkat lunak apa yang dapat melakukan ini?
Bagaimana komputer bisa hidup kembali sendiri? Setelah itu mati, bagaimana ia memberitahu dirinya untuk kembali lagi? Perangkat lunak apa yang dapat melakukan ini?
Jawaban:
tl; dr: status daya di komputer Anda dikendalikan oleh implementasi ACPI (konfigurasi lanjutan dan antarmuka daya). Di akhir proses pematian, sistem operasi Anda menetapkan perintah ACPI yang menunjukkan bahwa komputer harus reboot. Sebagai tanggapan, motherboard me-reset semua komponen menggunakan perintah atau jalur reset masing-masing, dan kemudian mengikuti proses bootstrap. Motherboard tidak pernah benar-benar mati, hanya me-reset berbagai komponen dan kemudian berperilaku seolah-olah tombol power baru saja ditekan.
Panjang dan bertele-tele tetapi (menurut saya) jawaban yang lebih menarik:
Di masa lalu (well, oke, untuk seorang mahasiswa seperti saya tahun 90-an sudah lama), kami memiliki motherboard AT (Advanced Technology) dengan kekuatan ATpengelolaan. Sistem daya AT sangat, sangat sederhana. Tombol daya pada komputer Anda adalah pergantian perangkat keras (mungkin di bagian belakang kasing) dan input 120vac Anda menembusnya. Secara fisik menyalakan daya ke catu daya Anda dan mematikan, dan ketika saklar ini dalam posisi Off semua komputer Anda benar-benar mati (ini membuat baterai CMOS sangat penting, karena tanpa itu tidak ada catu daya untuk menjaga perangkat keras jam berdetak). Karena saklar daya adalah mekanisme fisik, tidak ada cara perangkat lunak untuk menghidupkan dan mematikan daya. Windows akan menampilkan pesan terkenal "Sekarang aman untuk mematikan komputer Anda" karena, meskipun semuanya diparkir dan siap dimatikan, tidak mungkin bagi OS untuk benar-benar mematikan saklar daya. Konfigurasi ini kadang-kadang disebut sebagaihard power , karena itu semua perangkat keras.
Saat ini segalanya berbeda, karena keajaiban motherboard ATX dan kekuatan ATX (itulah Advanced Technology eXtended jika Anda melacak). Seiring dengan sejumlah kemajuan lainnya (mini-DIN PS / 2, ada yang?), ATX menghadirkan soft power . Daya lunak berarti daya ke komputer dapat dikontrol oleh perangkat lunak. Ini membawa beberapa perubahan impor:
Jadi, sakelar daya Anda tidak lagi "menyalakan" komputer. Sebagai gantinya, itu terhubung ke pengontrol dasar motherboard Anda, yang mendeteksi bahwa tombol telah ditekan dan menjalankan sejumlah langkah untuk menyiapkan sistem, termasuk menyalakan PS_ON sehingga daya akan tersedia. Tombol daya bukan satu-satunya cara untuk memicu proses startup, perangkat pada bus ekspansi Anda juga dapat melakukannya. Ini penting karena adapter jaringan ethernet Anda benar-benar tetap hidup ketika komputer Anda mati dan mencari paket yang sangat spesifik yang sering disebut sebagai "paket ajaib." Jika mereka mendeteksi paket ini ditujukan ke alamat MAC mereka, mereka akan memicu proses startup. Beginilah cara "Wake-on-LAN" (WoL) bekerja. Jam juga dapat memulai boot (kebanyakan BIOS memungkinkan Anda untuk mengatur waktu kapan komputer harus booting setiap hari),
Baik, saya menjelaskan tentang Soft Power karena saya pikir ini menarik (selalu menjadi alasan utama saya menjelaskan banyak hal) dan karena ini memungkinkan Anda untuk memahami bagaimana daya dan kondisi komputer Anda yang mati / hidup semua dikendalikan oleh perangkat lunak. Di sebagian besar komputer saat ini, sistem perangkat lunak ini merupakan implementasi dari Konfigurasi Lanjut dan Antarmuka Daya, atau ACPI . ACPI adalah sistem standar dan terpadu yang memungkinkan perangkat lunak untuk mengontrol sistem daya komputer Anda. Anda mungkin pernah mendengar tentang status daya ACPI. Mekanisme dasar kontrol daya adalah "kondisi daya" ini, sistem operasi Anda beralih melalui mode daya dengan mempersiapkan sakelar (proses penonaktifan / hibernasi yang terjadi sebelum daya benar-benar mati), dan kemudian memerintahkan motherboard untuk mengalihkan status daya . Status daya terlihat seperti ini:
Anda akan melihat bahwa reboot bukan salah satu dari kondisi ini. Jadi apa yang sebenarnya terjadi ketika komputer Anda ketika reboot? Jawabannya mungkin mengejutkan, karena dari perspektif manajemen daya hampir tidak ada . Ada perintah reset ACPI. Ketika Anda memberitahu sistem operasi Anda untuk reboot, itu mengikuti proses shutdown yang normal (menghentikan semua proses Anda, melakukan sedikit pemeliharaan, menurunkan sistem file Anda, dll), dan kemudian sebagai langkah terakhir, alih-alih mengirim mesin ke status daya G2 (seperti yang akan terjadi jika Anda hanya menyuruhnya untuk Shut Down) itu menetapkan perintah Reset. Ini umumnya disebut sebagai "Reset register", karena seperti kebanyakan antarmuka ACPI itu hanya alamat yang nilai tertulisnya harus ditulis untuk meminta reset. Saya akan mengutip spesifikasi 2.0 tentang apa yang dilakukannya:
Mekanisme reset ACPI opsional menetapkan mekanisme standar yang menyediakan pengaturan ulang sistem lengkap. Ketika diimplementasikan, mekanisme ini harus mengatur ulang seluruh sistem. Ini termasuk prosesor, logika inti, semua bus, dan semua periferal. Dari perspektif OSPM, menegaskan mekanisme reset adalah setara logis dengan kekuatan bersepeda mesin. Setelah mendapatkan kontrol setelah reset, OSPM akan melakukan tindakan seperti boot dingin.
Jadi, ketika register reset diatur, beberapa hal terjadi secara berurutan.
Efek akhir dari dua langkah ini (yang sebenarnya memecah menjadi lebih banyak langkah) adalah terlihat seperti semuanya seperti komputer baru saja boot, tetapi daya sebenarnya ada di sepanjang waktu. Ini berarti lebih sedikit waktu yang diperlukan untuk mematikan dan memulai (karena Anda tidak perlu menunggu catu daya menjadi siap), dan yang penting memungkinkan bootup dimulai oleh sistem operasi yang dimatikan. Ini berarti pemicu startup lain tidak perlu digunakan (WoL dll), dan memungkinkan Anda untuk menggunakan Reboot sebagai cara yang efektif untuk mengatur ulang sistem dari jarak jauh, ketika Anda tidak memiliki cara untuk memicu booting.
Itu jawaban yang panjang. Tapi hei, semoga Anda tahu lebih banyak tentang manajemen daya komputer sekarang. Saya tentu belajar beberapa hal meneliti ini.
Inilah titik awalnya:
Keripik biasanya tidak mati lalu hidupkan. Sebagai gantinya, ada garis reset yang akan membawa prosesor dalam kondisi reset yang disebut ketika biasanya semua memori dihapus dan prosesor sepertinya baru saja dinyalakan. Ketika pin dipegang tinggi (atau rendah, tergantung pada prosesor), prosesor dalam pengaturan ulang. Setelah pin dilepaskan, pin akan melanjutkan booting secara normal, seperti jika diaktifkan untuk pertama kali. Intinya adalah tidak ada pemadaman listrik sendiri.
Jadi bagaimana skala ini ke sistem yang lebih besar seperti PC modern? Nah, komputer modern terbuat dari komputer yang terkadang terbuat dari komputer itu sendiri. Jadi, ketika Anda mengatur komputer untuk mengatur ulang, "komputer" yang membuat komputer akan mulai menyimpan status mereka (jika pengaturan ulang dikontrol), atau hanya dengan mengatur ulang pin yang disetel.
Beberapa prosesor dan mikrokontroler (yang merupakan miniatur komputer mandiri, biasanya 20 tahun di belakang komputer desktop modern) dapat mengatur ulang diri menggunakan sakelar internal. Seperti yang saya katakan, setelah sinyal yang menghasilkan reset hilang, komputer akan memulai. Jadi premis dalam pertanyaan itu tidak sepenuhnya benar. Komputer tidak tahu kapan harus dihidupkan. Di tahu kapan harus "off" atau di reset dan ketika sinyal yang menyimpannya hilang, itu akan menyala.
Perilaku ini mungkin terlihat aneh pada komputer modern yang dapat diatur untuk dihidupkan pada waktu tertentu atau melalui jaringan dan sebagainya. Seperti yang saya katakan komputer terbuat dari komputer. Jadi, sementara prosesor utama mungkin mati, mungkin ada banyak chip dan mikrokontroler lain di dalamnya yang aktif. Kasing yang paling jelas adalah jam waktu nyata yang sering menggunakan baterai. Kemudian dapat mengaktifkan chip lain yang akan mengaktifkan chip lain dan reaksi berantai berjalan sampai seluruh komputer menyala. Pada komputer saat ini, ada saluran PSU yang disebut +5 VDC Standby Voltage. Ini menyediakan sekitar 50 mW daya ke berbagai perangkat yang hidup ketika komputer "mati".
Sedikit trivia: Reset pin pada prosesor Intel 386 EX adalah pin nomor 110.
Pada Intel i7-900 itu adalah nomor tanah AL39.
Saya berharap bahwa seseorang akan dapat memberikan jawaban yang akan menjelaskan bagaimana hal-hal bekerja dari sudut pandang tingkat tinggi, karena sistemnya cukup rumit.
Posting blog ini menjelaskan bagaimana Linux memicu reboot.
Kutipan:
Linux memiliki banyak cara berbeda untuk mereset x86. Beberapa dari mereka hanya 32-bit dan saya hanya akan mengabaikannya karena jujur saja apa yang Anda lakukan dengan hidup Anda. Juga, mereka mengerikan. Jadi, itu membuat kami berlima.
kbd - reboot melalui pengontrol keyboard. IBM PC asli memiliki garis reset CPU yang diikat ke pengontrol keyboard. Menulis nilai magis yang sesuai membuat garis dan mesin me-reset. Ini semua sangat mudah, kecuali kenyataan bahwa mesin-mesin modern tidak memiliki pengontrol papan ketik (mereka sebenarnya adalah bagian dari pengontrol yang tertanam) dan bahkan mesin yang lebih modern bahkan tidak berpura-pura memiliki pengontrol papan ketik. Sekarang, pengendali tertanam menjalankan perangkat lunak. Dan, seperti kita semua tahu, perangkat lunak itu mengerikan. Tetapi, yang lebih buruk, perangkat lunak pada pengontrol tertanam telah ditulis oleh penulis BIOS. Jadi jelas segala kepura-puraan bahwa ini pernah berhasil adalah semacam fiksi yang rumit. Beberapa mesin sangat pilih-pilih tentang perangkat keras yang berada dalam kondisi tepat yang akan diprogram oleh Windows. Beberapa mesin bekerja 9 kali dari 10 dan kemudian mengunci karena beberapa masalah waktu yang aneh. Dan yang lain tidak bekerja sama sekali. Hore!
tiga upaya untuk menghasilkan kesalahan tiga. Ini dilakukan dengan memuat tabel deskriptor interupsi kosong dan kemudian memanggil int (3). Interupsi gagal (tidak ada IDT), penangan kesalahan gagal (tidak ada IDT) dan CPU memasuki kondisi yang, secara teori, kemudian memicu reset. Kecuali sepertinya tidak ada persyaratan bahwa ini terjadi dan itu tidak bekerja pada banyak mesin.
pci - tidak benar-benar pci. Akses ruang konfigurasi PCI tradisional dicapai dengan menulis nilai 32 bit ke io port 0xcf8 untuk mengidentifikasi bus, perangkat, fungsi, dan register konfigurasi. Port 0xcfc kemudian berisi register yang dimaksud. Tetapi jika Anda menulis pasangan nilai sihir yang sesuai ke 0xcf9, mesin akan reboot. Spektakuler! Dan tidak distandarisasi dengan cara apa pun (tentu saja bukan bagian dari spesifikasi PCI), jadi chipset yang berbeda mungkin memiliki persyaratan yang berbeda. Booo.
efi - layanan runtime EFI menyediakan titik masuk untuk mem-boot ulang mesin. Biasanya bahkan berfungsi! Selama layanan runtime EFI bekerja sama sekali, yang mungkin merupakan peregangan.
acpi - Versi terbaru dari spesifikasi ACPI memungkinkan Anda memberikan alamat (biasanya memori atau ruang IO sistem) dan nilai untuk menulis di sana. Idenya adalah bahwa menulis nilai ke alamat akan menyetel ulang sistem. Ternyata hal itu sering gagal. Tidak mungkin merepresentasikan metode reboot PCI melalui ACPI, karena metode reboot PCI membutuhkan sepasang nilai dan ACPI hanya memberi Anda satu.
Ini mengganggu lokasi I / O yang menarik garis data rendah yang memberitahu CPU bahwa ia harus menghentikan apa pun yang dilakukannya dan mulai menjalankan kode dari lokasi tertentu di BIOS.
Kembali di masa lalu sebelum manajemen daya, komputer masih bisa me-restart sendiri, tentu saja. (Adakah yang ingat ketika program yang dibekukan berarti Anda harus menggunakan Ctrl + Alt + Delete untuk mem-boot ulang komputer?)
Pada 486 lama saya, perintah bahasa rakitan JMP FFFF:0000
(yaitu, mengatur Instruksi Pointer CPU ke alamat tersebut) akan menyebabkan seluruh komputer restart. Dengan kata lain, FFFF: 0000 membahas lokasi di BIOS yang memiliki instruksi untuk apa yang harus dilakukan komputer saat pertama kali dimulai. Saya menduga Pin Reset yang dijelaskan oleh jawaban AndrejaKo, atau mengatur ulang tombol di masa pra-manajemen daya, juga akan memaksa Instruction Pointer ke alamat yang sama.
Sebuah pencarian Google untuk JMP FFFF: 0000 mengungkapkan banyak halaman yang menarik tentang hal ini.
Ada juga yang bernama pengawas. Perangkat ini berfungsi sebagai saklar orang mati. Komputer harus memberi sinyal kepada pengawas setiap menitnya bahwa itu masih hidup. Ketika komputer macet, misalnya dengan menjalankan loop tak berujung, ia akan gagal memberi sinyal kepada pengawas bahwa ia masih berjalan sebagaimana dimaksud, pada saat mana pengawas akan melakukan reset perangkat keras. Ini ditunjukkan dalam serial tv populer dari terminator, di mana robot tersingkir oleh lonjakan listrik tegangan tinggi. itu akan mereset sendiri dalam 2 menit.
Kembali pada IBM PC-1 lama, pengendali keyboard, anehnya, menangani reboot. IBM menyematkan mikroprosesor kecil untuk menangani keyboard, dan memiliki beberapa jalur I / O cadangan, sehingga mereka menggunakan salah satu jalur untuk menggerakkan garis reset CPU utama. Perintah yang dikirim ke pengontrol keyboard akan menghasilkan CPU diatur ulang seolah-olah listrik baru saja dihidupkan.
Saya menduga tradisi ini berlanjut hingga era "AT", dan mungkin masih ada sisa-sisa di ACPI hari ini.
Ditambahkan: Ada detail menarik tentang skema setel ulang di atas. Selama urutan boot awal, kode mencari pola tertentu dalam RAM yang mungkin telah ditetapkan oleh kode yang sebelumnya dijalankan. Jika kode ini ada, beberapa diagnostik POST (power-on self-test) dilewati. Pola hanya akan ada pada boot "warm".