اگر امروز گوشی های اولیه اندرویدی مانند اچ تی سی دریم (HTC Dream) یا نسل اول سامسونگ گلکسی (Samsung Galaxy) را روشن کنید، ممکن است تصور کنید که در یک حلقه بوت (Boot Loop) گیر کردهاند و بالا نمیآیند! در گذشته، گوشی های اندرویدی پس از خاموش شدن کامل، یک یا حتی دو دقیقه طول میکشیدند تا دوباره راهاندازی شوند. در مقابل، زمان بوت شدن گوشی های هوشمند مدرن به چند ثانیه کاهش یافته است. در این مقاله، روشهای جذاب و هوشمندانهای را بررسی خواهیم کرد که سازندگان گوشی برای دستیابی به این سرعت خیره= کننده به کار بستهاند تا زمان بوت شدن گوشی های هوشمند را به حداقل برسانند. با ما در دیجی رو همراه باشید.
گذشته: زمان بوت شدن گوشی های هوشمند در حد دقیقه
حدود 12 تا 15 سال پیش، حتی گوشی های پرچمداری مانند نکسوس وان (Nexus One) یا سامسونگ گلکسی اس (Samsung Galaxy S) حدود 45 تا 120 ثانیه طول میکشید تا به طور کامل از حالت خاموش سرد (پس از خارج کردن باتری یا خاموش شدن کامل) راهاندازی شوند. حتی پس از رسیدن به صفحه اصلی، آیکونهای برنامهها به آهستگی ظاهر میشدند. اگر هم قبل از بارگذاری کامل تلاش میکردید با صفحه تعامل کنید، یک تأخیر محسوس را احساس میکردید.
در گوشی های ارزان قیمت آن دوران، وضعیت به مراتب بدتر بود و در آنها راهاندازی سرد معمولاً حدود 120 ثانیه یا بیشتر طول میکشید. گاهی اوقات هم این گوشیها در انیمیشن بوت گیر میکردند و برای رفع مشکل مجبور بودید باتری را خارج کرده و دوباره آن را روشن کنید!
امروز، جدیدترین گوشی در سری گلکسی اولترا برای بوت شدن کمتر از 10 ثانیه زمان نیاز دارد و به محض رسیدن به صفحه اصلی، بدون هیچ تأخیری کاملاً قابل استفاده است. البته، گوشی های قدیمیتر منابع کمتری برای کار داشتند؛ اغلب چند صد مگابایت رم و پردازندههای ضعیف. این مسئله تا حدی دلیل طولانی بودن زمان بوت شدن گوشی های هوشمند بود، اما خود سیستم بوت اندروید نیز در ابتدا طراحی و بهینهسازی ضعیفی داشت.
فرایند بوت: موانع نرمافزاری در اندرویدهای اولیه
اولین قطعه کدی که پس از فشردن دکمه پاور روی دستگاه اجرا میشود، بوتلودر (Bootloader) است. بوتلودر وظیفه بررسی سختافزار و بارگذاری یک نسخه “فشرده” از سیستم عامل در حافظه را بر عهده دارد. طبیعتاً این نسخه فشرده باید قبل از بارگذاری در حافظه، از حالت فشرده خارج شود.
پس از اینکه بوتلودر سیستم عامل را از حالت فشرده خارج کرد، شروع به راهاندازی برخی از عملکردهای اساسی مانند درایورهای سختافزاری میکند. در این مرحله، سیستم عامل کامل هنوز بارگذاری نشده است. این تنها هسته (Kernel) سیستم است؛ نوعی شالوده که سیستم عامل کامل بر روی آن قرار میگیرد. در طول کل این فرآیند، نسخههای قدیمیتر اندروید به طور مداوم برای ثبت خطاها (Logging) تلاش میکردند، که این کار زمان بوت شدن گوشی های هوشمند را بیش از پیش کند میکرد.
در مرحله بعدی، فضای کاربری (User Space) که تمامی برنامهها و سرویسهای عادی در آن اجرا میشوند، توسط فایلهای init.rc راهاندازی میشود. این فایلها در واقع فهرستی از برنامههایی هستند که باید بارگذاری شوند. نسخههای اندروید 1 و اندروید 2 دارای فایلهای init.rc بسیار بزرگی بودند که برنامههایی را راهاندازی میکردند که حتی نیازی به بوت شدن نداشتند؛ و از آن بدتر، این نسخههای قدیمیتر، برنامهها را به صورت تک به تک (Sequentially) بارگذاری میکردند. این بارگذاریهای متوالی یکی از اصلیترین دلایل طولانی بودن زمان بوت شدن گوشی های هوشمند بود.
رویکرد متفاوت اپل و کنترل بر زمان بوت شدن گوشی های هوشمند
سیستم عامل اندروید باید روی انواع مختلف سختافزارها با فرمهای طراحی متفاوت اجرا شود، بنابراین کنترلی که اپل بر روی آیفون دارد را در اختیار ندارد. اپل یک مجموعه کامل را کنترل میکند که از سختافزار تا نرمافزار و هر آنچه در این بین قرار دارد را شامل میشود. این کنترل کامل به اپل اجازه میدهد تا سیستم عامل خود را به طور خاص برای سختافزاری که قرار است روی آن اجرا شود، طراحی و بهینهسازی کند.
به همین دلیل، حتی در نسخههای اولیه آیفون نیز، زمان بوت شدن گوشی های هوشمند اپل بسیار سریعتر از گوشی های اندرویدی بود. آیفون اصلی میتوانست در کمتر از 30 ثانیه راهاندازی شود، و آیفونهای مدرن حتی از این هم سریعتر هستند. این تفاوت در کنترل اکوسیستم، یک مزیت بزرگ تاریخی برای اپل به شمار میرود.
بهینهسازیهای مدرن: کاهش زمان بوت شدن گوشی های هوشمند به چند ثانیه
همانطور که دیدیم، فرآیند بوت اولیه اندروید چندین گلوگاه جدی داشت. گوگل برای رفع این مشکلات، دست به کار شد و بهینهسازیهای نرمافزاری کلیدی را اعمال کرد:
1. اندروید جلی بین (Jellybean – نسخه 4) و Bootchart
با معرفی اندروید جلی بین، گوگل قابلیت Bootchart را معرفی کرد. این ابزار به توسعهدهندگان اجازه میداد تا فرآیند بوت را به صورت بصری مشاهده کرده و گلوگاهها را پیدا کنند. آنها از این سرنخها برای کاهش ثبت جزئیات استفاده کرده و تنها ثبت خطاهای حیاتی را حفظ کردند. Bootchart همچنین به تغییر اولویتبندی سرویسهای راهاندازی کمک کرد. برنامههای غیرضروری به منظور صرفهجویی در زمان، با تأخیر اجرا شدند و برخی از آنها نیز به طور کامل از فرآیند بوت اولیه حذف شدند. به عنوان مثال، به جای بارگذاری هر درایوری که ممکن بود وجود داشته باشد، سیستم عامل تنها درایورهای مربوط به سختافزار موجود را بارگذاری میکرد.
2. اندروید آبنبات چوبی (Lollipop – نسخه 5) و اجرای موازی
به یاد دارید که گفتیم فایلهای پیکربندی init.rc در گذشته برنامهها را به صورت تک به تک بارگذاری میکردند؟ اندروید آبنبات چوبی این امکان را فراهم کرد که این برنامهها به جای بارگذاری متوالی، به صورت موازی (Parallel) بارگذاری شوند. این تغییر به تنهایی زمان قابل توجهی را ذخیره کرد. در آن زمان، گوگل همچنین رابط کاربری جدید Material UI را معرفی کرد که بر پایه یک پشته گرافیکی جدید ساخته شده بود. این امر باعث شد که گوشی بلافاصله پس از راهاندازی سرد، پاسخگوتر باشد.
3. اندروید اوریو (Oreo – نسخه 8) و فشردهسازی سریعتر
از اندروید اوریو به این سو، سیستم عامل اندروید به یک الگوریتم فشردهسازی سریعتر به نام LZ4 روی آورد. این الگوریتم به بوتلودر اجازه داد تا هسته (Kernel) را سریعتر از حالت فشرده خارج کند. همچنین، انیمیشن بوت نیز بهینهسازی شد، به همراه چند بهبود دیگر در فرآیند بوت. گوگل ادعا کرد که اندروید اوریو دو برابر سریعتر از نسخه 7 بوت میشود.
تأثیر پوستههای سازندگان (OEM Skins) بر زمان بوت شدن گوشی های هوشمند
اندروید 15، مانند اندروید 14، حدود 12 تا 15 ثانیه طول میکشد تا بوت شود، البته این اعداد در دستگاههای پیکسل (Pixel) صادق است. نسخههای مدرن اندروید به طور کامل از حالت خاموش سرد بوت نمیشوند مگر اینکه سیستم به طور کامل خاموش شده باشد (به عنوان مثال، زمانی که باتری به 0 درصد میرسد). اگر فقط دکمه پاور را نگه دارید تا گوشی را راهاندازی مجدد (Restart) کنید، 50 درصد سریعتر از راهاندازی سرد، بالا آمده و آماده کار خواهد بود. دلیل این امر این است که وضعیت سیستم در حافظه ذخیره میشود، بنابراین سیستم عامل نیازی به راهاندازی مجدد کامل در هنگام راهاندازی مجدد ندارد.
تمام این بهینهسازیها برای اندروید خام (Stock) یا نزدیک به خام صادق است. اما برای اکثر ما، سازندگان گوشی و تبلت، اندروید را با پوستههای سفارشی و سرویسهای از پیش نصب شده به شدت تغییر میدهند. این برنامههای زائد یا بلوتویر (Bloatware) معمولاً مانند سرویسهای خام اندروید به صورت موازی شروع به کار نمیکنند و اغلب به صورت متوالی بارگذاری میشوند. بنابراین، این برنامههای اضافی به زمان بوت شدن گوشی های هوشمند افزوده و آن را کندتر میکنند.
نتیجهگیری: اندروید سرانجام به آیفون رسید
خوشبختانه، اندروید سرانجام توانسته است از نظر سرعت بوت به آیفون برسد. اگر یک گوشی هوشمند کاملاً جدید امروز بیش از 20 ثانیه طول میکشد تا بوت شود، احتمالاً به دلیل همین نرمافزارهای اضافی و بلوتویر است که فرآیند را کند میکند. تلاشهای مداوم گوگل برای بهینهسازی زمان بوت شدن گوشی های هوشمند در طول سالها، از تغییر الگوریتمهای فشردهسازی تا اجرای موازی سرویسها، منجر به تجربهای شده است که امروز از پرچمدارها انتظار داریم. به لطف این پیشرفتها، روزهای انتظار طولانی برای راهاندازی گوشی های هوشمند دیگر به تاریخ پیوسته است و زمان بوت شدن گوشی های هوشمند دیگر یک دغدغه جدی برای کاربران محسوب نمیشود.