CPU umum yang masuk ke ponsel cerdas, laptop, dan bahkan PC desktop memiliki laju jam variabel. Ketika scheduler mendeteksi bahwa ia memiliki waktu idle, ia dapat mengurangi laju jam, dan meningkatkannya lagi jika ada lebih banyak proses yang bersaing untuk waktu CPU.
CPU yang dioptimalkan untuk perangkat bertenaga baterai cenderung terdiri dari banyak komponen fungsional yang masing-masing memiliki jam sendiri (contoh: ARM Cortex A8 ). Ketika satu komponen idle, sistem operasi dapat mematikannya (atau mengurangi jamnya), yang menghemat daya. Misalnya, pada banyak CPU multicore (seperti yang ada di perangkat seluler kelas atas), setiap inti dapat dihidupkan atau dimatikan secara terpisah. ARM sangat bagus dalam permainan ini, yang merupakan salah satu alasan mengapa sebagian besar smartphone memiliki CPU ARM.
Memvariasikan laju jam atau mematikan jam komponen elektronik dikenal sebagai manajemen daya . Ini cenderung menjadi bagian yang kompleks dalam penulisan dan pengoptimalan sistem operasi untuk perangkat bertenaga baterai, dengan banyak ketergantungan pada model perangkat keras yang tepat.
Apa yang berlaku untuk CPU juga berlaku untuk periferal. Layar dengan lampu latar adalah konsumen utama daya pada smartphone, misalnya, diikuti oleh radio. Sistem operasi CPU dapat berperan dalam manajemen daya periferal; chip sekunder juga menjalankan firmware sendiri yang juga menjalankan manajemen daya.
Aplikasi memiliki peran mereka dalam menjaga konsumsi daya tetap rendah: mereka harus memungkinkan sistem operasi untuk melakukan hal itu. Hal terburuk yang bisa dilakukan aplikasi adalah polling - menjalankan loop seperti while (not_ready()) {}
. Bahkan memperkenalkan penundaan kecil karena while (not_ready()) {usleep(100);}
tidak membantu karena tidak memberikan cukup waktu bagi prosesor untuk masuk ke mode daya rendah, atau jika ya, setiap bangun yang tidak berbuah berarti membuang-buang energi. Dengan demikian API sistem operasi harus dirancang agar aplikasi tidak perlu melakukan polling, tetapi sebaliknya dapat berlangganan semacam mekanisme acara dan tetap siaga sampai pemberitahuan tentang peristiwa yang relevan. Aplikasi pada gilirannya perlu memanfaatkan mekanisme seperti itu, sehingga desain seluruh tumpukan perangkat lunak berdampak pada konsumsi daya.
Anda dapat memperoleh beberapa informasi tentang apa yang bertanggung jawab atas konsumsi daya PC Anda dengan utilitas Powertop Intel . Smartphone biasanya memiliki cara untuk melihat seberapa banyak daya yang dikonsumsi aplikasi juga. Menghitung konsumsi daya oleh aplikasi justru sulit: jika komponen bangun untuk dua aplikasi, waktu bangun mungkin diperhitungkan salah satu dari mereka agak sewenang-wenang atau tidak sama sekali; Konsumsi daya periferal juga tidak selalu mudah dilacak ke aplikasi yang bertanggung jawab.
Chip RAM tidak tahu bit mana yang menyimpan data proses aktif, jadi tidak bisa dimatikan secara selektif dengan cara ini. Konsumsi daya suatu proses tidak terkait dengan jumlah memori yang digunakannya (kecuali karena RAM mengakses daya konsumsi, tetapi menggunakan kembali memori yang sama atau menggunakan area RAM yang berbeda tidak ada bedanya sehubungan dengan konsumsi daya).
Seperti yang Anda ketahui, OS menyimpan berbagai daftar. Dua dari daftar ini adalah daftar siap dan daftar timer. Daftar siap mengidentifikasi tugas / utas mana yang siap dijalankan. Daftar pengatur waktu mengidentifikasi tugas / utas yang dalam keadaan diblokir dengan batas waktu.
Bayangkan bahwa OS memiliki daftar siap kosong. Artinya, telah kehabisan tugas yang siap dijalankan (itu dalam keadaan siaga). Beberapa prosesor (seperti x86) memiliki instruksi penghentian yang dapat dipanggil OS untuk menyebabkan prosesor berhenti sampai terbangun oleh interupsi eksternal (seperti tick interrupt). Selama periode waktu ini, ia mengkonsumsi lebih sedikit daya. Teknik ini dapat lebih ditingkatkan dengan mengintip daftar timer. Jika Anda menganggur dan Anda tahu bahwa tugas yang paling cepat dapat bangun dari kutu waktu adalah 100 kutu, laju kutu mungkin sementara dimodifikasi untuk mengatakan 100 kali lebih lambat. Dengan cara ini, prosesor dapat mengeluarkan energi lebih sedikit untuk periode waktu yang lebih lama karena tidak harus melayani hingga 100 tick interupsi.
Setelah interupsi eksternal tiba, tingkat centang harus dihitung ulang. Jika interupsi eksternal membuat tugas siap, tingkat centang kembali normal. Jika tidak, jumlah kutu yang tertidur harus dihitung ulang bersama dengan laju kutu yang baru (melambat).
Semoga ini membantu.
sumber
Untuk menambah jawaban lain:
Pertanyaan Anda menganggap iOS dan Android sebagai sistem operasi, tetapi "Sistem Operasi" hanya sebagian saja.
Baik Android dan iOS adalah kerangka kerja dan mencakup banyak bagian yang tidak dianggap sebagai bagian dari OS aktual tetapi aktif dalam mengurangi konsumsi daya.
Misalnya, Android by design memungkinkan pengembang aplikasi untuk menyimpan keadaan mereka saat disembunyikan, sehingga proses dapat dihentikan ketika tidak aktif digunakan dan dengan demikian mengurangi jumlah utas yang siap dan memungkinkan untuk shutdown inti dan pengurangan laju jam.
Ada beberapa fitur dalam "OS" yang mengatur kecerahan adaptif, kondisi tidur wi-fi, thread pembersihan, penyatuan jadwal, indikator LED, perilaku siaga seluler, dan aspek lain yang memengaruhi konsumsi daya secara drastis.
Selain itu, beberapa platform seluler telah bekerja keras untuk mengoptimalkan rasio penggunaan CPU / GPU, karena GPU lebih disesuaikan pada grafik dan merupakan tambahan yang relatif baru pada lanskap seluler, semakin banyak bagian terkait OS yang bergerak ke grafis. GPU, yang berfungsi dari CPU, dan memungkinkan penggunaan optimasi daya CPU untuk digunakan (dan dalam banyak kasus, juga mempercepat sistem secara keseluruhan).
sumber