Bagaimana sistem operasi dapat mengetahui tingkat baterai?

34

Bahkan jika kita menghapus OS default dan menginstal yang baru itu dapat berinteraksi dengan baterai. Apakah ada driver untuk itu? Bagaimana cara kerjanya?

hijau
sumber

Jawaban:

33

Sistem operasi berinteraksi dengan firmware pengontrol tertanam yang merupakan bagian dari Konfigurasi Lanjut dan Antarmuka Daya (ACPI).

Wikipedia mendefinisikannya sebagai:

Di komputer, Konfigurasi Lanjut dan Antarmuka Daya (ACPI) memberikan standar terbuka yang dapat digunakan sistem operasi untuk menemukan dan mengkonfigurasi komponen perangkat keras komputer, untuk melakukan manajemen daya dengan (misalnya) meletakkan komponen yang tidak digunakan ke mode tidur, dan untuk melakukan pemantauan status . Pertama kali dirilis pada Desember 1996, ACPI bertujuan untuk menggantikan Advanced Power Management (APM), Spesifikasi MultiProcessor, dan Spesifikasi Plug and Play BIOS (PnP). [1] ACPI membawa manajemen daya di bawah kendali sistem operasi, berbeda dengan sistem sentris-BIOS sebelumnya yang mengandalkan firmware khusus platform untuk menentukan manajemen daya dan kebijakan konfigurasi.

Secara internal, ACPI mengiklankan komponen yang tersedia dan fungsinya ke kernel sistem operasi menggunakan daftar instruksi ("metode") yang disediakan melalui firmware sistem (Unified Extensible Firmware Interface (UEFI) atau BIOS), yang diurai oleh kernel. ACPI kemudian menjalankan operasi yang diinginkan (seperti inisialisasi komponen perangkat keras) menggunakan mesin virtual minimal tertanam.

Jawabannya adalah kemudian bahwa sirkuit atau chip mikro tertanam di motherboard, yang berisi sistem operasi mikro yang menyediakan beberapa layanan melalui firmware komputer - UEFI atau BIOS. Ini mengontrol banyak aspek manajemen daya dan perangkat.

Sistem operasi komputer memiliki driver sistem yang didedikasikan untuk berinteraksi dengan ACPI. Setelah ACPI diaktifkan, diperlukan kontrol eksklusif dari semua aspek manajemen daya dan konfigurasi perangkat.

Dalam banyak aspek ACPI adalah sistem operasi di belakang sistem operasi Anda, kecuali bahwa ia datang dengan motherboard dan tidak di bawah kendali Anda. Ada suara-suara yang menyamakannya dengan kuda Trojan dan menyebutnya risiko keamanan. Mungkin dinonaktifkan, tetapi beberapa komputer mungkin tidak bisa boot tanpa itu, dan kemudian manajemen daya lanjutan dalam keadaan apa pun juga dinonaktifkan.

Untuk informasi lebih lanjut tentang penggunaannya di Windows, lihat artikel Baterai dan desain perangkat keras subsistem daya .

harrymc
sumber
1
Saya mungkin salah tetapi kedengarannya seperti uraian paragraf terakhir benar-benar membingungkan ACPI dengan SMM dan / atau dengan ME / AMT Intel . ACPI sebagian besar merupakan struktur data statis, dengan sejumlah kecil bytecode yang harus ditafsirkan oleh OS itu sendiri, sedangkan ME adalah sistem yang sebenarnya.
grawity
1
@ kegembiraan: Jangan berpikir begitu. Anda dapat menemukan diskusi serupa di artikel ACPI Wikipedia.
harrymc
1
Saya tidak melihat banyak diskusi di sana di luar beberapa kutipan dari satu posting blog Shuttleworth, dan setelah membaca kedua halaman saya tidak yakin sedikit pun - tampaknya bagi saya bahwa dia hanya menggumpalkan segala sesuatu yang datang dengan sistem di bawah Nama "ACPI", baik itu BIOS atau Intel ME atau apa pun. Sejauh yang saya tahu, dari semua sampah yang datang dengan sistem modern, ACPI mungkin satu-satunya bagian yang tidak berjalan sendiri, dan tentu saja tidak di bawah OS.
grawity
2
@grawity ACPI juga menyertakan antarmuka eksekusi kode tingkat firmware, begitulah banyak interaksi firmware yang melibatkannya terjadi. Pada sistem tertentu, ini bahkan menggunakan SMM untuk eksekusi kode yang sebenarnya, meskipun untungnya semakin jarang terjadi.
Austin Hemmelgarn
@grawity: Ya, ACPI tidak melakukan apa pun dalam arti bahwa itu hanya sebuah pengontrol. UEFI / BIOS juga mengelola perangkat dan ditempatkan lebih tinggi dalam hierarki perangkat keras, dan salah satunya adalah ACPI. Fungsi dieksternalisasi pada setiap level, juga menjadi semakin digeneralisasi pada setiap level. Perangkat lunak seperti sistem operasi dirancang dalam pendekatan yang hampir sama dengan tingkat generalisasi, yaitu cara manusia menyerang masalah kompleks.
harrymc
57

Sebagai pelengkap jawaban yang lain, bagaimana perangkat lunak yang berjalan di komputer mengetahui tingkat baterai? Ia meminta baterai.

Sebagian besar baterai laptop adalah baterai pintar yang memiliki mikrokontroler mereka sendiri atau "pengukur bahan bakar" ASIC, yang tuan rumah dapat berkomunikasi dengan melalui SMBus. Orang-orang telah merekayasa balik beberapa contoh.

SMBus mungkin atau mungkin tidak terpapar langsung ke sistem operasi dengan cara yang memungkinkan administrator untuk menanyakannya secara langsung. Ada berbagai program seperti OpenHardwareMonitor atau Speccy atau lm-sensor yang dapat menginterogasi bus untuk mencari tahu tentang perangkat keras.

pjc50
sumber
penjelasan yang bagus untuk memahami konsep dasar secara umum! Meskipun saya akan menandai tanda kutip iklan di sekitar kata "meminta".
Albin
Tidak ada konflik dengan jawaban saya: SMBus adalah komponen yang dikelola oleh ACPI untuk komputer seluler yang ada.
harrymc
1
Antarmuka baterai pintar ini juga dapat diekspos melalui cara yang lebih standar, seperti USB. Sebagai contoh, banyak UPS memiliki port USB yang ketika dicolokkan ke komputer, memberi tahu komputer berapa banyak daya yang tersisa dan menampilkannya seperti halnya laptop.
TheHansinator
2
@TheHansinator Saya berpendapat bahwa SMBus adalah sarana standar untuk berkomunikasi dengan baterai pintar. Hampir semua telepon dan laptop menggunakannya, yang jauh lebih banyak sistem daripada menggunakan perangkat UPS eksternal.
Austin Hemmelgarn
@AustinHemmelgarn Benar. Mungkin kata yang lebih baik adalah "konvensional", karena sistem ini lebih kurang merupakan abstraksi OS yang dapat digunakan perangkat selain baterai yang disematkan.
TheHansinator
2

Secara umum, semua chip komputer memiliki dokumentasi yang memberi tahu perancang dan programmer apa yang mereka lakukan dan cara mengkonfigurasinya untuk melakukannya. Akses tingkat rendah ke chip ini dapat dilakukan dengan membaca dan menulis langsung ke register chip.

Chip yang lebih rumit dapat datang dengan program perangkat lunak yang disebut 'driver' yang memungkinkan akses tingkat tinggi ke sistem operasi atau bahkan aplikasi lain. Ponsel pintar Anda, misalnya, memiliki Application Programming Interface (API) yang memungkinkan akses ke banyak perangkat keras ponsel, GPS, akselerometer, baterai, kamera, dll. Saat Anda menulis "App", Anda dapat mengakses perangkat perangkat keras ini menggunakan API. sama seperti sistem operasi dapat (meskipun OS biasanya memiliki akses lebih luas daripada program yang berjalan di 'ruang pengguna'.)

Antarmuka ini didefinisikan dengan sangat baik sehingga ketika Anda membuat panggilan fungsi ke chip perangkat keras, ia akan merespons dengan informasi yang diminta. Chip pengontrol baterai hanyalah salah satu contoh dari infrastruktur generik ini.

Siapa pun yang menulis kode sistem operasi mendapatkan dokumentasi untuk chip tersebut dan menulis perangkat lunak untuk berkomunikasi dengan chip tersebut dan mengambil informasi yang diinginkannya.

Jadi pada saat Anda memuat 'driver' (atau dilakukan secara otomatis) untuk hard drive eksternal, USB thumb drive, atau yang lainnya, Anda akan memahami sedikit lebih banyak tentang bagaimana hal-hal terjadi 'di bawah tenda'.

CramerTV
sumber