مقالات انتقادی
در مورد محصولات اپل، همیشه روی نبودن پشتیبانی مالتی تسکینگ در ابزارهای
این شرکت مانور می دهند. در این مطلب به بررسی این موضوع می پردازیم که چرا
قابلیت MultiTask در برخی از محصولات اپل وجود ندارد و اینکه آیا باید
منتظر اضافه شدن این قابلیت به آنها باشیم یا نه؟
اولین نکته مهم این است که بدانیم آی.فون، آی.پد و آی.پاد
همگی از مالتی تسکینگ پشتیبانیمی کنند. ما در سال ۲۰۱۰ هستیم و هر
سیستم عاملی که این روزها وجود دارد، در یک سطح حداقلی باید این قابلیت را داشته باشد و محصولات
اپل هم در همان سطح حداقلی آن را دارند. در همه این ابزارها، در سطح سیستم
عامل چندین وظیفه مستقل به شکل همزمان در حال اجرا هستند و حتی در مورد
برخی نرم افزارهای رده بالاتر (مثلا پخش کننده موسیقی Music) این چندوظیفه
گی به راحتی قابل مشاهده برای کاربر هم هست.
اگر
بخواهیم دقیق تر صحبت کنیم باید بگوییم که چیزی که در این ابزارها کم است،
قابلیت اجرای همزمان چند برنامه نوشته شده توسط شرکت های مستقل است. در
حال حاضر، اگر برنامه ای که توسط شرکتی غیر از اپل نوشته شده بنا به دستور
کاربر فوکوس دستگاه را از دست بدهد، سیستم عامل آن را می بندد.
اپل ادعا می کند که این مساله
به خاطر عمر باتری و پایداری بالاتر دستگاه است اما این ادعا به
نظر واقعی نمی رسد. حداقل آی پد جدید توان پردازشی کافی برای مالتی تسک
دارد و باتری آن هم به هیچ وجه کم نیست. در عین حال شایعه ای هم وجود دارد
که اپل برنامه ای برای آینده دارد که قرار است آی پد و آیفون و آی پاد را
مالتی تسک کند و به این دلیل که تقریبا مطمئنیم اپل راهی برای عدم مصرف
باتری توسط برنامه های پشت زمینه اختراع نکرده، می توانیم مطمئن باشیم که
مشکل نبودن چندوظیفه گی، چیز دیگری است.
احتمالا
دلیل فنی پشت این جریان، چیز پیچیده تر و فنی تری است. دقت کنید که هر دوی
آی پد و آیفون، ۲۵۶ مگابایت حافظه داخلی دارند و چیزی مثل Swap هم در آن
ها فعال نیست که برنامه ها بتوانند به حافظه ای بیشتر از حافظه واقعی سیستم
دسترسی داشته باشند. این وضعیت یعنی هر برنامه دقیقا می داند که به چه
اندازه حافظه دسترسی دارد و به هیچ وجه نمی تواند جایی بیشتر از آن مقدار
را مصرف یا اشغال کند.
این
وضعیت در کامپیوتر شما کاملا برعکس است. در سیستم عامل شما (اگر در طول ده
سال اخیر ساخته شده باشد) برنامه ها به خاطر حضور Swap، این احساس را
دارند که هرچقدر فضا بخواهند در اختیارشان قرار خواهد گرفت. در این شرایط،
حساس ترین نکته مربوط به هر برنامه، میزان حافظه قابل مصرف است. حتی در
سیستم عامل اپل، مکانیزمی به نام Out Of Memory یا OOM تعبیه شده که در
صورت مصرف بیش از حد حافظه توسط یک برنامه، برنامه توسط سیستم عامل کشته
(بسته) خواهد شد. این مساله باعث شده بر خلاف دیگر پلتفرم های برنامه
نویسی، یک برنامه نویس آیپاد بداند دقیقا چقدر فضای حافظه در اختیار دارد و
کاملا مراقب باشد که بیشتر از آن مصرف نکند.
حالا اگر یک برنامه بخواهد با برنامه دیگر همزمان کار کند
(مالتی تسک شود) چه پیش می آید؟ بعضی برنامه ها باید به شیوه ای به پشت
صحنه بروند ولی کماکان در حال کار باشند. اما حافظه چه می شود؟ هرکدام از
این برنامه ها احساس می کنند که به کل حافظه سیستم (مثلا ۲۰۰ مگابایت)
دسترسی دارند ولی همین که به پشت حافظه می روند یا باید به خاطر مصرف بیش
از حد حافظه کشته شوند یا برنامه های جدید، حافظه کافی برای اجرا شدن
نخواهند داشت. در واقع دلیل اصلی که می توان برای نبودن مالتی تسک در آیپاد
در نظر گرفت، نبودن حافظه زیاد در سخت افزار و از آن مهمتر نبودن حافظه
Swap در سیستم عامل است.
به
احتمال زیاد در حال حاضر هم با کمی تلاش می شود مالتی تسک را به آیفون
اضافه کرد اما تا وقتی که به خاطر نبودن حافظه، برنامه های پس زمینه دائما
کشته شوند، اینکار فایده ای نخواهد داشت.
پس
راه حل چیست؟ در حال حاضر پلتفرم آندروید مشکل مشابهی را با استفاده از یک
مکانیزم ذخیره وضعیت برنامه به نام باندل حل کرده است.
برنامه ها بر اساس منطق قبلی به
پشت صحنه می روند و کشنده OOM هم در صورت کم آمدن حافظه برنامه ها را به
ترتیب قدیمی بودن می کشند اما چون برنامه ها از فریم ورک باندل استفاده
کرده اند، قبل از کشته شدن یا حین به پشت صحنه رفتن، وضعیت کاری خود را
ذخیره نموده اند. این فریم ورک چیزی است شبیه به هایبرنیت شدن نرم افزار و
در صورت اجرای دوباره (پس از کشته شدن توسط مکانیزم OOM)، به برنامه اجازه
می دهد که درست در حالتی که قبلا بوده است، ظاهر شود و با اینکار قدم اول
چند وظیفه گی یا حداقل احساسی بسیار نزدیک به آن، عملی می شود.
قدم دوم ایجاد امکان کار برای برنامه هایی است که
واقعا نیاز به اجرا شدن دائم دارند. مثلا برنامه های مسنجر، پخش کننده های
موسیقی و غیره. در آندروئید این برنامه ها از فریم ورکی به نامService استفاده می کنند که باعث می شود
مکانیزم OOM آن ها را نکشد و بتوانند به شکل دائمی سرویس بدهند.
به احتمال زیاد، اپل هم با اضافه کردن چنین کتابخانه
هایی به سیستم عامل و در اختیار برنامه نویسان گذاشتن فریم ورک مرتبط، به
ابزارهایش امکان مالتی تسک را خواهد داد. در صورت وقوع این اتفاق، تمام نرم
افزارها نیاز به بروزرسانی خواهند داشت اما در عوض، سخت افزار تغییری
نخواهد کرد. به عبارت دیگر، تمام کاربران قدیمی با آپدیت کردن دستگاه خود،
از قابلیت مالتی تسک لذت خواهند برد. اطلاع دارید که امشب قرار است پلتفرم
نرم افزاری جدید آیفون یعنی OS 4.0 معرفی شود. شاید پاسخ این سوالات را
امشب پیدا کنیم.
در انتها،
تاکید می کنم که این فقط یک بررسی فنی از وضعیت مالتی تسک در آی پاد، آیفون
و آی پد و مقایسه نهایی آن با تکنیک مالتی تسک در آندروید است. این مقاله
بر اساس حدس و بررسی فنی نوشته شده نه اطلاعات داخلی درز کرده از درون اپل.