Ми говорили про те, як апаратне забезпечення у вашому телефоні може мати значення, коли справа стосується власного досвіду. Тепер прийшов час поговорити про програмне забезпечення.
Програмне забезпечення є найбільш важливою частиною будь-якого комп'ютера. Чи говоримо ми про маленький комп'ютер, який ви тримаєте в кишені, або кластери розміром з кімнату, які виконують такі речі, як управління космічними польотами, без програмного забезпечення всі ці схеми, дроти і мікросхеми нічого б не зробили. Для включення і запуску телефону потрібне навіть програмне забезпечення, перш ніж ви зможете побачити, що він щось робить. Незалежно від того, наскільки дорого або нове обладнання у вашому телефоні, воно буде марним без будь-якої роботи з програмування, щоб щось зробити.
Ми збираємося зосередитися на Android з цим, тому що це те, що ми робимо тут, але багато ідей, про які ми збираємося поговорити, однакові для будь-якого комп'ютера, який ви можете купити або зробити самостійно. Найбільші відмінності (і проблеми) полягають у тому, що наші телефони є мобільними пристроями, які не дуже великі, і це означає, що все зроблено з прицілом на енергоефективність. Найвища енергоефективність. Після того, як правильні деталі спроектовані і зібрані, щоб спробувати забезпечити кращий користувальницький досвід з крихітним джерелом живлення, прийшов час для команд програмного забезпечення приступити до роботи.
Що таке Android
:
Зображення надано Android Open Source Project.
Ми згадували про це раніше, але варто повторити ще раз - Android, ймовірно, не те, що ви думаєте. Слово вживається по-різному: Android - це бренд, Android - це операційна система, а Android - це вихідний код. На базовому рівні Android являє собою набір коду, який можна використовувати для запуску програм. Він постачається з базовим інтерфейсом користувача до основних функцій, але вимагає багато часу і розробки, щоб він працював на будь-якому пристрої, на якому він призначений.
Незважаючи на те, що все, що вам потрібно для створення образу завантажувального програмного забезпечення, включено в вихідний код Android, ви не можете створити один образ і програму установки, які можна використовувати для будь-якого обладнання. Підтримка конкретного обладнання повинна бути оголошена перед тим, як ви спробуєте вбудувати його у щось, що дійсно буде працювати. Після того, як це буде зроблено, ви можете зібрати працюючу операційну систему Linux і встановити її за призначенням.
Однак перш ніж ви зможете щось відвантажити, вам потрібно буде налаштувати і змінити багато з цього - це те, що ми маємо на увазі, коли говоримо про оптимізацію.
Операційна система
Існує два рівні програмного забезпечення - операційна система і пов'язані з нею додаткові функції і програми, які встановлені для запуску на нім. Люди, які зробили ваш телефон, повинні не тільки піклуватися про те, щоб операційна система працювала добре, але і підтримувати сумісність з мільйонами або близько того додатками. Зверніть увагу, що ми сказали: «Підтримувати сумісність», а не оптимізувати що-небудь для сторонніх додатків. Це зовсім інше питання, і Google виконує більшу частину роботи з платформою додатків Android - все, що потрібно зробити виробнику телефону, це спробувати не зламати нічого з цього. І це більше роботи, ніж ви думаєте, через те, як ці компанії змінюють те, як виглядає і відчуває себе Android.
Кожна модель Android працює на різних програмах.
Немає двох моделей Android однакових. Навіть телефони одного і того ж виробника з одним і тим же ім'ям можуть працювати з різним програмним забезпеченням в різних регіонах (або для різних клієнтів - вашої телефонної компанії), і вони це роблять. І це має сенс. У нас немає гігабайт дискового простору, тому підтримка кожної окремої моделі Samsung Galaxy S7 - існує більше 30 версій цього телефону - вбудована в одне програмне забезпечення недоцільна. Ось чому, наприклад, ви не можете завантажити оновлення Verizon для S7 і використовувати його на своїй моделі AT & T. Але, за винятком невеликих змін, внесених для різних SKU однієї і тієї ж моделі, базове програмне забезпечення, що використовується на кожному Galaxy S7 (з процесором Qualcomm), однаково.
Щоб продовжити з нашим прикладом Galaxy S7, ви повинні також пам'ятати, що «Touchwiz» - це не скін або лаунчер. Це операційна система. Samsung бере це базове програмне забезпечення, надане Google, і змінює його відповідно до його потреб. Як це виглядає, які функції він має, а також які параметри і налаштування були створені Samsung і додані в Android таким чином, щоб сторонні програми можна було встановлювати і запускати. У коді Android є багато частин, які Samsung не змінює (або не може змінити), тому що Google вимагає збереження певних речей, щоб використовувати їх магазин і програми. Google повинен поліпшити і підтримувати ці частини, але більша частина операційної системи залишена на розсуд Samsung для оптимізації під конкретне обладнання, на якому вона буде встановлена.
Що таке оптимізація?
Оптимізація програмного забезпечення є неминучим злом. Це забирає багато часу і складно. Але без цього користувальницький досвід постраждає. Google постійно оптимізує код Android на апаратно-незалежному рівні. Такі методи, як розгортання циклу, використання меншої кількості викликів функцій і більш ефективні процедури використання пам'яті, - ось ті речі, які приносять користь кожному пристрою з Android. Але Samsung (у нашому прикладі) необхідно розширити їх для обладнання, яке вони використовують, щоб зменшити загальну довжину шляху інструкцій (кількість необхідних циклів ЦП зменшується з меншою кількістю інструкцій) і зменшити обсяг займаної пам'яті, а також спиратися на такі речі, як планування та оптимізація кешу для конкретної моделі процесора. Все це при додаванні додаткових функцій і функцій користувачеві і підтримці сумісності з Google Play. Як правило, процес йде приблизно так:
- Вирішіть, які функції хочуть ваші клієнти. Потім викиньте 80% з них і вирішіть, які функції можливі.
- Визначте конкретне обладнання, яке буде використовуватися.
- Збирання завантажувальної версії операційної системи з необхідними функціями все працює.
- Знайдіть вузькі місця, спробуйте їх виправити, сповісніть і повторіть.
Знайти ці вузькі місця складно. Виправити їх ще складніше. І є кілька способів впоратися з усім цим. Один із способів - не додавати до операційної системи функції, які створюють накладні витрати, що дає вам менше можливостей для неправильної роботи. Ось де Мото G 2015 сяяв. Це був дуже простий телефон з дуже простим програмним забезпеченням. Після того, як талановита команда оптимізувала програмне забезпечення, що поставляється на телефон, це стало одним з найбільш динамічних додатків для Android в цьому році - поки ви не додали в додаток кілька додатків з Google Play. Тоді було очевидно, що апаратне забезпечення всередині не було здатне робити багато речей одночасно, як дорожчі телефони. Використане обладнання було недорогим, тому телефон міг бути недорогим, а оптимізація програмного забезпечення тільки для операційної системи була чудовою.
Другий спосіб - продовжувати оптимізувати платформу, не прибираючи при цьому ніяких важливих функцій, і дозволяючи більш якісному обладнанню допомогти мінімізувати вплив. Galaxy S7 є продуктом кожної роботи, яку виконала команда розробників програмного забезпечення в Samsung з моменту появи оригінальної Galaxy S, що працює на обладнанні, досить потужному, щоб доставити його в зручній і дружній упаковці. В результаті телефон отримав широку оцінку як галузі, так і користувачів. Помилки, пов'язані з управлінням пам'яттю і повільністю, які ми спостерігали, включаючи Galaxy S6, практично зникли, і якщо ви любите або ненавидите кінцевий продукт, ви не можете сказати, що це не один з кращих телефонів Android, який ви можете купити сьогодні, коли справа доходить до продуктивність.
Керування пам'яттю
Ми не можемо піти від цієї теми, не звертаючись до управління пам'яттю. Це один з тих термінів, які зустрічаються, тому що деякі люди бачать якусь проблему, коли вони роблять якісь речі, і рушійна сила починає рухатися. Це може бути (і було) справжньою проблемою.
Операційна система вирішує, коли слід завершити (як при закритті, так і не в фоновому режимі) програми і процеси, що зберігаються в оперативній пам'яті. Запис і читання з ОЗП відбувається швидко - набагато швидше, ніж запис і читання зі сховища. Але це обмежено. Навіть для телефону з 6 ГБ ОЗУ все одно необхідно встановити параметри для кращої продуктивності. І не вся оперативна пам'ять, встановлена всередині вашого телефону, доступна для використання операційною системою. Частини зарезервовані для запуску ядра, графічного процесора і стільникового радіозв'язку. Під час завантаження зазвичай використовується принаймні 512 МБ (або більше) ОЗП, яке використовується і недоступне. Це добре - цим функціям потрібен «миттєвий» доступ до процесора.
Те, що залишилося, управляється багаторівневим способом. Деякі програми та процеси мають більш високий пріоритет, ніж інші, і їм буде призначено вищий рівень, ніж іншим, іноді необов'язковим, об'єктам, що працюють у фоновому режимі. Коли загальний обсяг вільної оперативної пам'яті скорочується до попередньо визначеного рівня, процеси знищуються відповідно до пріоритету. Мета полягає в тому, щоб зберегти якомога більше речей у фоновому режимі, залишаючи достатньо місця, щоб почати щось нове. Поки ці нові речі запускаються, ОЗУ скидається до тих пір, поки у них не буде достатньо для завантаження, і підтримується вільний буфер. Ось чому ви чуєте, як люди кажуть, що «вільна оперативна пам'ять витрачається даремно, коли мова йде про Linux» - Android працює поверх ядра Linux.
Налаштування керування оперативною пам'яттю - це процес проб і помилок. Тоді більше проб і помилок. Це важко.
Всі ці параметри (за межами зарезервованої області для ядра) налаштовуються людьми, які створили операційну систему. Вони можуть вирішити, скільки ОЗП необхідно, щоб залишатися вільним, і скільки ОЗП може використовуватися кожним рівнем процесів. Вони також можуть написати своє програмне забезпечення так, щоб частини були призначені певному рівню в дереві. Зручний трюк полягає в тому, щоб постійно запускати додаток запуску - те, що ви бачите на головному екрані (ах) і в панелі програм - в ОЗУ. Це означає, що інтерфейс користувача для речей, з якими ви, ймовірно, будете витрачати найбільше часу, завжди зберігається в ОЗП і буде більш гнучким, оскільки при зчитуванні і дотику не витрачається час на читання зі сховища і запис в ОЗУ.
Проблеми можуть виникати, коли занадто багато або занадто мало ОЗП залишається вільним або занадто багато речей «позначені» як важливі і зберігаються в ОЗУ. Ось чому, наприклад, ви можете почати вводити щось у форму на веб-сторінці, переключитися на інший додаток і повернутися, щоб побачити, що все, що ви написали, зникло, тому що сторінка повинна була оновитися. Система як і раніше буде намагатися зберегти те, що ви використовуєте найчастіше в оперативній пам'яті, але вона не може цього зробити.
Це все виправно, за умови, що встановлено достатньо ОЗП. Це ще одна частина процесу оптимізації, і її важко зрозуміти правильно.
Всі андроїди не створені рівними
І ми не повинні цього хотіти. Програмне забезпечення адаптоване до конкретного використовуваного обладнання, а метод проб і помилок і Red Bull є частиною процесу оптимізації. Це є частиною того, що робить кожен телефон Android унікальним і надає вибір для всіх.

