الطريقة التي يتّبعها برنامج Photoshop لمعالجة ملفات أكبر من تلك التي تتسع للذاكرة

تعرّف على كيفية نجاح Adobe في السماح للمستخدمين بتعديل أكبر الملفات على إصدار الويب من تطبيق Photoshop البارز على الويب.

نبيل الشماة
نبيل الشماة

مقدمة

(تتوفر هذه المقالة أيضًا في شكل فيديو).

في عام 2021، وفّرت Adobe مع هندسة Chrome نسخة من Photoshop على الويب. يستخدم البرنامج WebAssembly بشكل مبتكر مع ميزات مثل SIMD وسعة التخزين العالية الأداء في نظام الملفات الخاصة المصدر ومساحة اللون P3 للوحة الرسم ومكونات الويب مع Lit. في هذه المقالة، نريد التركيز على كيفية حل هندسة Adobe Photoshop للعمل مع الملفات الأكبر حجمًا التي تتسع للذاكرة. وفي حالة WebAssembly، يمكن معرفة كيف يعمل Photoshop مع الملفات التي تتجاوز مساحة العنوان 32 بت التي تستخدمها Wasm32.

تطبيق Photoshop أثناء تعديل صورة لشعار Project Fugu

المشكلة

يتطلب فتح ملف لتعديله مساحة كبيرة من الذاكرة، وهو أكبر بكثير من فتح الملف لعرضه. غالبًا ما تتطلب الملفات المُعدَّلة في برنامج Photoshop ذاكرة أكبر من المساحة المتوفّرة للمستخدم على جهازه، وذلك بسبب الميزات العديدة التي يوفّرها البرنامج وأنواع التصميم الرقمي والتعديل الذي يتم استخدامه من أجله وإمكانيات أجهزة المستخدمين.

يخزِّن تنسيق ملف Photoshop البيانات بدون فقدان البيانات. عند قراءة ملف أو مستند، يتم فك ضغط جميع بيانات الصورة للسماح بمعالجة أكثر كفاءة. ونتيجة لذلك، يمكن أن يزيد حجم الذاكرة المطلوبة عدة مرات عن مقدار المساحة التي يستخدمها المستند على القرص أو في التخزين السحابي.

يدعم Photoshop سجلّ تراجع كبيرًا جدًا. إنّ العديد من العمليات في برنامج Photoshop هي عمليات تدميرية. ويعني ذلك أن إجراء تعديل مثل الرسم بفرشاة سينتج عنه بيانات بكسل جديدة يمكن أن تصل إلى حجم بيانات البكسل الأصلية. يؤدي إجراء هذه التعديلات في جلسة تعديل طويلة إلى إنشاء كميات كبيرة من بيانات البكسل التي يجب الاحتفاظ بها لإتاحة عمليات التراجع. وبالتالي، يمكن أن يزيد السجل إلى مئات الميغابايت أو العديد من الغيجابايت من البيانات.

وتعمل الأجهزة والأنظمة الأساسية، سواء كانت أجهزة كمبيوتر مكتبية أو أجهزة جوّالة أو متصفحات، على إدارة الذاكرة. ويتميز البعض بقدر أكبر من الذاكرة التي يوفرها للتطبيقات أكثر من غيرها. يختلف مقدار الذاكرة من جهاز لآخر أيضًا، كما تعرف عند طلب جهاز كمبيوتر أو جهاز جديد وتحديد مقدار ذاكرة الوصول العشوائي (RAM) المطلوبة. وتتيح العديد من هذه الأنظمة الأساسية أيضًا استخدام الذاكرة الافتراضية، والتي تسمح للتطبيق باستخدام ذاكرة أكبر مما هو متاح فعليًا. ويختلف هذا الدعم حسب نظام التشغيل ووقت التشغيل، كما في حالة WebAssembly، قد لا تكون قابلة للوصول إليه أو للاستخدام من خلال التطبيقات. علاوة على ذلك، فإن الأنظمة الافتراضية الحديثة لها حدود قصوى يمكن أن تتجاوزها بسهولة متطلبات برنامج Photoshop.

بشكل مثالي، ستستخدم التطبيقات أكبر قدر ممكن من الذاكرة. وهذا يتيح لها عمومًا تقديم أفضل أداء لمستخدميها. ومع ذلك، إذا استهلكت هذه التطبيقات مساحة كبيرة جدًا من الذاكرة، فقد يؤدي النظام الأساسي لوقت التشغيل إلى فرض عقوبات عليها أو قد تنفد الذاكرة، ما يؤدي إلى حدوث إخفاقات.

وكملاحظة سابقة، كانت المشكلة الأساسية التي كان برنامج Photoshop لحلّها هي تعديل ملفات دقة الطباعة على الإصدارات الأقدم من نظام التشغيل macOS، بتكلفة منخفضة تصل إلى 1 ميغابايت لنظام التشغيل وجميع التطبيقات. يبلغ حجم صورة الصفحة الكاملة التي تبلغ 300 نقطة لكل بوصة بتنسيق CMYK حوالى 32 ميغابايت عند فك ضغطها.

الحل

لحل مشكلة تجاوز التطبيق حد ذاكرة الوصول العشوائي (RAM)، استخدم Photoshop نظامًا للذاكرة الافتراضية البرمجية (VM). يستخدم Photoshop جهازه الافتراضي (VM) لإدارة بيانات المستندات، وخاصةً بيانات الصور، وجميع سجلّ التراجع والحالة، بالإضافة إلى مساحة التخزين المستخدَمة للأمر الحالي. ويتم أيضًا استخدامه للتخزين المؤقت لكوتات كبيرة من البيانات مثل أوصاف الفرشاة بحيث يلزم وضعها على شكل تسلسل من القرص مرة واحدة فقط.

وكمثال على أحد الجوانب التي يديرها الجهاز الافتراضي، يتم تخزين بيانات الصورة باستخدام تمثيل mipmap، وهو مجموعة هرمية من المربّعات، ما يوفّر بيانات صورة في مجموعة من درجات الدقة المنخفضة إلى العالية. ويتيح هذا لبرنامج Photoshop العمل على بيانات درجة الدقة المناسبة للاستجابة بشكل أسرع عند التكبير أو النظر إلى معاينة، بدلاً من التصغير.

مثال على تخزين صور mipmap: تكون الصورة الرئيسية التي تظهر على اليسار مصحوبةً بنُسخ تمت فلترتها ذات حجم مُخفَّض.

أثناء إعداد التطبيق، يحدِّد برنامج Photoshop حجم ذاكرة الوصول العشوائي (RAM) المتوفّر. وهي تخصص جزءًا واحدًا لتخزين البيانات في الجهاز الافتراضي (VM). وتتوفر ذاكرة الوصول العشوائي المتبقية لاحتياجات التطبيقات الأخرى عبر مكتبة وقت التشغيل القياسية لـ C++. يتم تقسيم ذاكرة الجهاز الافتراضي (VM) إلى صفحات. عادةً ما تكون كل صفحة متعددة من حجم صفحة الجهاز. عند استخدام الذاكرة لبيانات الصور، تتم الإشارة إلى الذاكرة كمربّعات. المربع هو مساحة مربعة مكونة من وحدات بكسل لطبقة واحدة تشمل الحدود الهندسية. يستهلك المربع صفحة واحدة أو أكثر.

ينشئ Photoshop ملفًا خدشًا واحدًا أو أكثر لتوفير نسخ احتياطي على أساس القرص لصفحات الأجهزة الافتراضية. يتم تخزين ملفات المكافآت الفورية هذه في نظام الملفات الخاصة المصدر. تعرض لقطة الشاشة تسلسلاً هرميًا مثاليًا لملفات الخدش (مميّز باللون الأصفر) والملفات الأخرى أثناء جلسة تعديل الصور. يمكن أن يحتوي كل ملف خدش على العديد من صفحات الأجهزة الافتراضية. عندما يحتاج الجهاز الافتراضي إلى مزيد من الدعم، فإنه ينشئ ملفات مكافآت فورية إضافية. وعندما يتم إخلاء بعض الصفحات، يمكن إعادة استخدام مساحتها في ملف خدش على صفحات جديدة.

فحص التسلسل الهرمي لملفات نظام الملفات الخاصة المصدر في Photoshop باستخدام إضافة OPFS Explorer في Chrome

عند معالجة بيانات الصور، يتكرر برنامج Photoshop عبر المربّعات، ويجري العمليات الحسابية بالبكسل. يمكن أن تشير كل عملية حسابية إلى مربّعات متعددة. يكون الجهاز الافتراضي مسؤولاً عن ضمان توفّر مربّعَي المصدر والوجهة في الذاكرة للتكرار الحالي، وتحميلهما من ملفات الخدش على النحو المطلوب. وفي الوقت نفسه، يمكنها نقل الصفحات إلى ملفات الخدش لتوفير مساحة في الذاكرة.

الاستنتاجات

على الرغم من أنّ تفاصيل التنفيذ الملموسة للجهاز الافتراضي (VM) ستتجاوز نطاق هذا المستند (وهي أيضًا مملوكة لشركة Adobe)، لقد وفّرنا لك في مكان يمكنك فيه فهم كيفية التعامل مع الملفات الكبيرة باستخدام Photoshop. يُعد نظام الملفات الخاصة الأصلي الذي يتميز بإمكانية الوصول للقراءة والكتابة إلى الملفات عالي الأداء من العناصر الرئيسية للحل.

شكر وتقدير

تمت مراجعة مشاركة المدونة هذه بواسطة أوليفر أونتر إيكر وراشيل أندرو. شكر خاص لـ "راسل ويليامز" على مستنداته المتميّزة حول Photoshop VM.