17 تغريدة 174 قراءة Sep 18, 2022
طب انتوا عارفين يا شباب ليه بنحتاج نعمل Eject للفلاشة أصلًا وليه مبنحتاجش نعمل كدة للحاجات التانية زي الكيبورد والماوس مثلًا؟ تعالوا أحكيلكم في حلقة النهاردة من answering questions that nobody asked. 🧵
الفلاشة مصنّعة من حاجة اسمها ال Flash memory، ودا نوع من أنواع الذاكرة الغير متطايرة (اللي مش محتاجة كهربا عشان تفضل محتفظة بالبيانات جواها).
الفلاش ميموري متقسّمة من جوة لوحدات صغيرة كل وحدة منهم بتسمى صفحة (Page)، وحجمها بيبقى تقريبًا -في المعتاد- ٤ كيلو بايت.
الكمبيوتر لما بيحب ينقل ملف للفلاشة بيقسم الملف دا حتت صغيرة ويديهم للفلاشة حتّة حتّة، والمايكروبروسيسور الصغير اللي جوة الفلاشة بيحط كل حتة منهم في Page.
ندخل بقى لموضوعنا، ليه المفروض نعمل Eject للفلاشة؟ الموضوع دا ليه سببين أساسيين.
السبب الأول هو إن الكمبيوتر يبقى متأكد إنك مبتنقلش حاجة على الفلاشة، عشان لو بدأت تعمل كوبي لملف وجيت تعمل eject قبل ما الكوبي يخلص (نسيت إنك كنت بتعمل كوبي مثلًا أو أفتركته خلص وهو مخلصش)، أو لو كان فيه برنامج بيستخدم الفلاشة (مشغل من عليها فيديو مثلًا) طلبك لل eject هيترفض.
السبب التاني محتاج نحكي شوية بقى، ويستدعي إننا نرجع لموضوع ال pages دا.
ال pages ليها عمر افتراضي، أو عشان أكون دقيق، عدد افتراضي من عمليات الكتابة فيها، في المتوسط بيبقى من ١٠ آلاف ل ١٠٠ ألف مرة.
يعني كل page ينفع تتملي وتتمسح ١٠٠ ألف مرة كحد أقصى، وبعد كدة بتبوظ.
تلاحظ الموضوع دا كويس لو معاك فلاشة قديمة. هتلاقي مع الوقت إن مساحة الفلاشة بتصغر. ليه؟ لأن فيه pages جوّة اتكتب فيها بيانات واتشال منها بيانات أكتر من ١٠٠ ألف مرة وباظت خلاص. فمبقتش صالحة للأستخدام، عشان كدة بمرور الوقت ال flash memory مساحتها بتقل.
تخيل بقى معايا إنك موصل الفلاشة بالكمبيوتر وفاتح من على الفلاشة ملف وورد، وعمال تكتب فيه وكل سطرين تدوس ctrl+s عشان تعبك ميضيعش..
كل مرة تعمل فيها save فانت بتعمل عملية كتابة جديدة في الفلاشة، بس متنساش إن عدد عمليات الكتابة في الفلاشة محدود، ومع العدد دا من عمليات الكتابة المستمرة عمر الفلاشة الافتراضي هيقل جدًا.
فحلوا المشكلة دي ازاي؟
الويندوز مثلًا بيحل المشكلة دي عن طريق إنه بيخزن الملف اللي انت بتشتغل عليه في مكان اسمه الcache، وكل مرة إنت هتعمل save هو بيخزن التعديلات بتاعتك في الكاش دا، وعلى فترات متباعدة ينقل التعديلات دي كلها مرة واحدة للفلاشة. يبقى كدة وفرنا عمليات الكتابة وحافظنا على التعديلات
إنت ك user مبتبقاش شايف الحاجات دي كلها وهي بتحصل، فبالتالي أمر Eject بٍقى بيتأكد من إن كل التعديلات/الأوامر اللي في الكاش اتنقلت للفلاشة، وإن مكانتش اتنقلت بينقلها بالفعل، عشان كدة احيانًا بياخد ثانيتين تلاتة لحد ما يقولك safe to remove.
سبب تالت بس أقل أهمية وهو إن لو الفلاشة كانت بتكتب في واحدة من ال pages وإنت سحبت الفلاشة فجأة ولمّست منك وانت بتسحب فدا ممكن يطيّر ال page كلها. ولو إنه سيناريو مستبعد الحدوث يعني لكنها بتحصل.
هل دا بقى معناه إن ال eject مهم وإننا لازم نعمله؟
الحقيقة إنه لا. هو كان مهم زمان لكن دلوقتي أهميته أقل بكتير.، ليه بقى؟
لو إنت بتعمل كوبي لفايل وسحبت الفلاشة اثناء عمل الكوبي فدي مشكلتك بصراحة يسطا شيل شيلتك. أما موضوع الcache دا فالفلاشات الجديدة كلها بتنزل بinternal cache
يعني الفلاشة بيبقى جواها الفلاش ميموري المكونة من صفحات + كاش ميموري تانية صغيرة مبتحتفظش بأي بيانات غير لو متوصلة بالكهربا عشان كدة مينفعش نخزن عليها حاجة، لكن وظيفتها انها بتحتفظ بالتعديلات والأوامر مؤقتًا (بتحوشهم) عشان تقلل عمليات الكتابة المطلوبة على الفلاش ميموري.
ييجي واحد يقولي طب ماهو لو الكاش ميموري الي جوة الفلاشة عليها تعديلات لسة متنقلتش للفلاش ميموري، وأنا شيلت الفلاشة من الكمبيوتر (يعني قطعت عنها الكهربا)، مش دا معناه إن التعديلات اللي جوة الكاش ميموري ضاعت ومش هتروح الفلاش ميموري؟ أقوله كلامك صح ..
.. عشان كدة الفلاشات الجديدة بيبقى فيها مكثّف بيتشحن أول ما توصلها، ولما تفصل الفلاشة بيفضل يمدّ الكاش ميموري بالكهربا الكافية (بعد ما الفلاشة تتفصل) عشان تخلص نقل اللي فيها للفلاش ميموري.
إلى جانب التطور في صناعة الفلاش ميموري اللي وصّل العدد الأقصى لعمليات الكتابة فيها لأكتر من مليون مرّة، فبقى مستبعد جدًا إنك تخلصهم مهما عملت. (لاحظ إن الرقم دا لكل page على حدى، مش للفلاشة كلها)
وبالتالي مبقاش ضروري حاليًا إنك تعمل Safe removal، لأن معظم الفلاشات الحديثة بقت أقدر على تحمّل المشكلات بتاعت زمان دي. ومايكروسوفت كمان أعلنت نفس الكلام مؤخرًا.
theverge.com

جاري تحميل الاقتراحات...