جهاز Linux Block ذو حجم غريب (ولا حتى)
سؤال
هل من الممكن إنشاء جهاز كتلة Linux (2.6) (مثل جهاز الاسترجاع) بحجم فردي؟ لم أستطع تحقيق ذلك. losetup
يبدو أن يدور إلى 512 بايت. ال ubd
أجهزة Linux من وضع المستخدم ubd
يبدو أن الأجهزة تدور حتى 512 بايت. في struct request
, ، نملك sector_t __sector
لعملية إزاحة الكتلة لعمليات القراءة/الكتابة.
أنا أطرح هذا السؤال فقط لأغراض تعليمية. يمكنني التعامل مع حدود 512 بايت ، لكنني ما زلت مهتمًا إذا كان من الممكن تجاوزها. في هذا السؤال ، لست مهتمًا بطبقات أخرى من التجريد (مثل استخدام الملفات العادية أو أجهزة الأحرف).
المحلول
لا. لا تفهم طبقة كتلة Linux 2.6 أي شيء أصغر من 512 بايت. أي شيء أصغر (لا سيما قوة 2) يتطلب إعادة كتابة كبيرة لكثير من التعليمات البرمجية.
نصائح أخرى
هذا هو ما يجعل جهاز الكتلة بدلاً من جهاز الأحرف: الحبيبات كتلة. يوجد الانقسام لأنه أكثر كفاءة في تصميم أجهزة حقيقية تعمل في وقت واحد كتجريد يتعامل أيضًا مع الكتل. للقيام بخلاف ذلك ، من شأنه أن يحول كل عملية إلى حساب أكثر تكلفة بكثير.
الطريقة لتجاوزها ، كما ذكرت ، لاستخدام جهاز موجه نحو الأحرف أو التجريد. هذا أمر أساسي لنموذج جهاز UNIX: كل شيء عبارة عن سلسلة من الثمانيات ، باستثناء الأشياء التي يمكن أن تكون افتراضية فقط كواحد.