Friday, January 4, 2013

الطرق المختلفة للتحكم في سريان البيانات بين طرفين Data Control Flow



1- Sliding Windows

هو نوع من أنواع التحكم في سريان البيانات بين طرفين.
حيث يعتدم في هذه الحالة علي حجم Buffer  الخاص بالمستقبل, ففيه يتفق المستقبل والمرسل علي حجم معين من البيانات –يساوي حجم البافر للمستقبل- يقوم المرسل بإرساله كحد أقصي لا يرسل بعده طالما أن البافر ممتلأ حيث يكون هناك حد أقصي لعدد الFrames  التي يمكن إرسالها للمستقبل.

لكن كيف يعلم المرسل أن البافر الخاص بالمستقبل ممتلأ؟
هنا يأتي دور ال Handshaking حيث يقوم المستقبل بإرسال Ack للمرسل بآخر رقم للFrame  قام المستقبل بالإنتهاء منه وبمعلومية حجم الframe  وآخر واحد تم إرساله يستطيع المرسل أن يحدد هل يرسل أم لا.
حيث يقوم المرسل قبل إرسال أي Frame  بحسبة بسيطة حيث يطرح آخر frame  تم إرساله مع آخر Frame تم عمل Ack  له من المستقبل يستطيع المرسل تحدد إذا كان يحق له إرسال frame  آخر من عدمه


مثال :
لنفترض أن حجم البافر الخاص بالمستقبل 10 ميجا وحجم الframe  مثلا 1 ميجا, فإن العدد الأقصي لعدد الframes  التي يمكن إرسالها دون رد من المستقبل هو 10 فقط , فلنفترض أن المرسل أرسل 8 ثم إستلم +Ack  بأن المرسل قد إنتهي من الفريم الخامسة هذا يعني أن البافر يحتوي علي 3 فيرمات فقط ولذلك يستطيع المرسل إرسال فريمات حتي الفريم رقم 15 إذا لم يحصل في هذه المدة علي +Ack من المستقبل فإنه ستوقف بعدها عن الإرسال.
لمعلومات أكثر إضغط هنا

Thursday, January 3, 2013

الفرق بين Buffer و Spooler



كلاهما حل وسيط بين البروسيسور السريع وبين الأجهزة الخارجية البطيئة وكل منهما له طريقته في حل هذه المشكلة حيث إختيار أحدهما يتوقف علي اداء البروسيسور وما نريده منه

Buffer
 ففيها يكون الوسيط عبارة عن RAM حيث عندما نقوم بالكتابة علي الكيبورد لا تتم مقاطعة البروسيسور مع كل حرف ولكن تذهب هذه الحروف إلي جزء من الذاكرة موجود داخل الكيبورد وعندما يكون هناك قدر كافي من البيانات تستحق إهتمام البروسيسور أو غالبا تكون الإستجابة سريعة وشبه لحظية حيث لا يشعر المستخدم بهذا التأخر إلا إذا كانت الآلة التي يعمل عليها بطيئة جدا , يقوم البروسيسور بنقل هذه البيانات إليه وينفذها.
وبالنسبة لوسائل الإخراج غالبا ما تكون هذه الذاكرة في الجهاز الخارجي نفسه مثل الطابعة حيث ينقل البروسيسور الملف المراد طباعته كاملا مرة واحد إلي RAM الموجودة بداخل الطابعة
ولكن هذه الطريقة تتطلب مقاطعة البروسيسور أثناء عمله إذا تخيلنا أن هناك 5 أجهزة إدخال و5 إخراج وكلهم يقومون بعمل interrupt للبروسيسور لتنفيذ مهمة ما...بالتالي هذه الطريقة تعطي المستخدم إستجابة سريعة لتفاعل المستخدم مع الكومبيوتر ولكنها تكون علي حساب العمليات الأخري التي يقوم البروسيسور بتنفيذها
أيضا المشكلة الأخري في هذه الطريقة هي أنه قد يكون حجم الملف المراد تخزينه مؤقتا في RAM أكبر من مساحتها, مما يعني أنه قد يحدث Overflow للبيانات في الميموري أو يقوم البروسيسور بتقسيم الملف الكبير إلي أجزاء ينقلها إلي الBUFFER واحدة بعد أخري.


Spooler 
تستخدم فقط عند إخراج البيانات من البروسيسور -السريع جدا- إلي جهاز إخراج -بطئ جدا مقارنة بالبروسيسور- مثل الطابعة.
وفي هذه الحالة عندما نقوم بإعطاء الكومبيوتر أمر بطباعة ملف فإنه يأخذ هذا الملف ويضعه في ذاكرة تخزينية مؤقتة تكون علي HardDisk ويكمل البروسيسور أعماله التي يقوم بها وعندما يفرغ منها جميعا ليصل إلي مرحلة IDLE -البروسيسور لا يعمل شئ- يذهب البروسيسور إلي الهارد ديسك ليقوم بنقل الملفات الي الطابعة بنفس سرعة الطابعة,
مميزات هذه الطريقة أنها لا تقوم بعمل مقاطعة للبروسيسور كثيرا وبالتالي تعطي أداء أعلي وأيضا لأنها تستخدم الهارد ديسك الذي عادة ما تكون مساحته التخزينية كبيرة جدا فإنها لا تحتاج إلي أي جهد إضافي بتقسيم الملف إلي أجزاء صغيرة تناسب حجم الRAM كما في الBuffer
ولكن العيب الوحيد أن عملية الطباعة قد تكون بطيئة جدا إذا كان البروسيسور مشغول غالبا ولا يكون في وضعية IDLE إلا نادرا.