العمليات التي يقوم بها الكمبيوتر يمكن تصنيفها إلى نوعين إما Compute و إما IO , الأولى يعني ان العملية تتم بالكامل على معالج الكمبيوتر مثل حساب عملية رياضية , او تنفيذ خوارزمية و النوع الأخر IO هي العمليات التي فيها تواصل مع اجهزة خارجية مثل الشبكة او الهاردسك.
(سلسلة)
اللي يهمنا هنا هو النوع الثاني , اللي تحتاجه لما تطلب معلومة من موقع خارجي او لما تستعلم في قاعدة البيانات او حتى لما تكتب او تقرأ من ملف في الهاردسك. عادة هذي العمليات هي اللي تأخذ وقت في الأنظمة.
أي برنامج تكتبه فالويندوز مثلاً يغلفه بداخل Process و هذي الProcess مقسمة لقسمين رئيسين , الUser Mode اللي فيه الStack و الHeap و القسم الاخر الKernel Mode اللي
يديره الويندوز فقط و تكون الThreads فعّاله بداخل هذي الProcess. (هناك تعقيد تخطيته للتبسيط)
اللي يصير انك لما مثلاً تكتب كود لقراءة ملف بالسي شارب و تستخدم ميثود Read من كلاس FileStream فهذا الميثود من خلال الThread ينادي ميثود ReadFile في مكتبة الWin32 اللي بدوره ينشيء object للطلب يسمى اختصاراً IRP فيه معلومات الطلب مثل اي ملف و من أين و هل للقراءة او للكتابه الخ.
يقوم نفس الThread و يمرر الIRP إلى Kernel Mode اللي يشوف أي جهاز مسؤول عن هذا الطلب و يقوم ايضاً نفس الThread بارساله لذلك الجهاز واللي هو في حالتنا الHarddisk او على الاقل للDriver الخاص به.