پیشگفتار
سیستمهای عامل بخش عمدهای در هر سیستم کامپیوتر است. به همین ترتیب یک دوره آموزشی درباره سیستمهای عامل هم بخش عمدهای از هر آموزش در علوم کامپیوتر است. این زمینه دستخوش تغییر سریعی است، به طوری که اکنون در واقع در هر عرصه از زندگی روزانه ـ از دستگاههای اختصاصی در اتومبیلها تا پیچیدهترین ابزارهای برنامهریز برای دولت و شرکتهای چند ملیتی، متداول شده است. در عین حال مفاهیم اساسی نسبتاً روشن است، و بر این اساس ما این کتاب را بنا نهادهایم.
ما این کتاب را به منظور یک دوره آموزش مقدماتی درباره سیستمهای عامل در سطح سالهای آخر دورههای کارشناسی و بالاتر یا سال اول دورههای ارشد نوشتهایم. ما امیدواریم تکنیسینها هم آن را مفید بیابند. به عنوان پیشنیاز، فرض میکنیم خواننده با ساختارهای داده پایه، سازمان کامپیوتر، و زبانهای سطح بالا، مانند C یا Java آشناست. عناوین سختافزاری لازم برای درک سیستمهای عامل در فصل 1 پوشش یافته است. در این فصل، مروری بر ساختارهای داده بنیادی به عمل آمده که در بسیاری از سیستمهای عامل رایج است. برای مثالهایی از کد، ما زبان غالب C را همراه با Java به کار میبریم، ولی خواننده هنوز میتواند الگوریتمها را بدون آگاهی کامل از این زمانها، درک کند.
مفاهیم با استفاده از توصیف مبتنی بر درک ارائه شدهاند. نتایج مهم تئوریک پوشش یافتهاند، ولی اثباتها عمدتاً نادیده گرفته شدهاند. یادداشتهای مربوط به تاریخچه در انتهای هر فصل حاوی اشارههایی به مقالات تحقیقاتی است که برای اولین بار اثبات و ارائه شده است، و نیز برای خواندنیهای بیشتر هم برای مراجع فراهم شده است. به جای اثبات، شکلها و مثالها برای پاسخها به کار رفتهاند تا حدس بزنیم چرا انتظار داریم که نتایج حاصل درست باشند.
مفاهیم بنیادی و الگوریتمهای پوشش یافته در این کتاب اغلب براساس همانهایی است که در سیستمهای عامل تجاری و منبع ـ آزاد به کار رفتهاند. هدف ما ارائه این مفاهیم و الگوریتمها به طور کلی است و به یک سیستم عامل خاص وابسته نیست. با این وجود، ما تعداد زیادی مثال مرتبط با رایجترین و ابداعیترین سیستمهای عامل را ارائه نمودهایم، از جمله لینوکس، ویندوز ماکروسافت، اپل مکینتاش OSX و سولاریس را میتوان نام برد. همچنین مثالهایی از اندروید و iOS ارائه شده است که دو سیستم عامل موبایل رایج هستند.
سازمان کتاب منعکس کننده سالها تدریس در سیستمهای عامل و خط مشیهای دورهای چاپ شده ما به وسیله IEEE Compuling Society و Association omputing Machinary (ACM) است. توجهی نیز به پسخوردهای مرور کنندگان متن، همراه با توضیحات و پیشنهاد دریافتی از خوانندگان ویرایشهای قبلی و دانشجویان جاری و قبلی شده است.
محتوای این کتاب
کتاب در هشت بخش عمده سازمان یافته است.
مرور. فصلهای 1 و 2 توضیح میدهند که سیستم عامل چیست، آنها چکار میکنند، و چگونه طراحی و ساخته میشوند. این فصلها توضیح میدهند که ویژگیهای یک سیستم عامل چیست، و یک سیستم عامل برای کاربر چه کاری انجام میدهد. ما هر دو نوع سیستم عامل PC قدیمی و سرور را پوشش دادهایم، همچنین سیستم عامل برای موبایل هم مورد بحث قرار گرفته است. ارائه طبیعتاً انگیزهدار و توصیفی است. ما در این فصل از هرگونه بحث درباره چگونگی انجام چیزها در داخل پرهیز کردهایم. بنابراین، آنها برای آموختن هر خوانندهای در کلاسهای پائینتر که بخواهند بدانند سیستم عامل چیست، مناسباند، بدون آن که نیاز به ورود به جزئیات الگوریتمهای داخلی داشته باشند.
مدیریت فرآیند. فصلهای 3 تا 7 مفهوم فرآیند و همروندی را به عنوان قلب سیستمهای عامل مدرن توصیف میکنند. یک فرآیند واحدی از کار در یک سیستم است. چنین سیستمی کلکسیونی از فرآیندهاست که به طور همروند در حال اجرا هستند، که بعضی از آنها فرآیندهای سیستم عامل (آنهایی که کد سیستم را اجرا میکنند) و به وسیله فرآینداهی کاربرند (آنهایی که کد کاربر را اجرا مینمایند). این فصلها روشهایی را برای زمانبندی، محاوره بین فرآیندی، همزمانی یا سنکرون کردن فرآیند، و مدیریت بنبست را پوشش میدهند. همچنین بحثی در مورد نخها و سیستمهای چند هستهای و برنامهنویسی موازی آورده شده است.
مدیریت حافظه. فصلهای 8 و 9 مدیریت حافظه اصلی را در زمان اجرای یک فرآیند بحث مینمایند. برای اصلاح به کارگیری CPU و سرعت پاسخ آن به کاربرانش، کامپیوتر باید چند فرآیند را در حافظه نگه دارد. چندین روش مدیریت حافظه وجود دارد که منعکس کننده انواع طرق مختلف اداره حافظه است، و مؤثر واقع شدن یک الگوریتم خاص به موقعیت بستگی دارد.
مدیریت ذخیرهساز. فصلهای 10 الی 13 توصیف میکنند که چگونه ذخیره کنندههای حجیم، سیستم فایل و I/O یک سیستم کامپیوتر جدید اداره میشوند. سیستم فایل مکانیزمی برای ذخیرهسازی آنلاین فراهم میسازد و دستیابی به دادهها و برنامهها را میسر میسازد. ما الگوریتمهای داخلی کلاسیک، و ساختارهای مدیریت ذخیرهساز را فراهم مینمائیم و درکی عملی از الگوریتمهای به کار رفته را تهیه میکنیم ـ یعنی خواص آنها، مزایا و معایب آنها را تهیه مینمائیم. چون دستگاههای I/O متصل به کامپیوتر به طور گسترده در حال تغییرند، سیستم عامل باید قابلیت عملیاتی گستردهای را برای برنامههای کاربردی داشته باشد، تا به آنها اجازه کنترل تمام جنبههای این دستگاهها را بدهد. ما سیستم I/O را به طور عمیق مورد بحث قرار میدهیم و از جمله طراحی سیستم I/O ، واسطها، و ساختار سیستم داخلی و عملکردشان را مورد بررسی قرار دادهایم. در بسیاری از کارها، دستگاههای I/O کندترین قطعات کامپیوترند. چون آنها گلوگاه کارآیی را ارائه میدهند، ما موضوعات کارآیی با دستگاههای I/O را هم بررسی کردهایم.
حفاظت و امنیت. فصلهای 14 و 15 مکانیزمهایی را توصیف میکنند که برای حفاظت و امنیت سیستمهای کامپیوتر لازماند. فرآیندها در یک سیستم عامل باید از فعالیت یکدیگر حفاظت شوند، و برای فراهم کردن چنین حفاظتی، ما باید مطمئن باشیم که تنها فرآیندهایی که مسئولیت صحیحی از سیستم عامل دریافت کردهاند میتوانند روی فایلها، حافظهها، CPU ، و دیگر امکانات سیستم عمل نمایند. حفاظت مکانیزمی برای کنترل دستیابی به برنامهها، فرآیندها، یا کاربران به امکانات سیستم ـ کامپیوتر است. این مکانیزم باید کنترلهایی که باید اعمال شوند واداشتنهایی را شناسایی کند. امنیت یکپارچگی اطلاعات ذخیره شده در سیستم (هم داده و هم کد) و نیز امکانات فیزیکی در سیستم و امکانات (منابع) سیستم را از دستیابی افراد غیرمجاز، تخریب یا تغییر، و معرفی ناسازگاریهای اتفاقی حفظ میکند.
عناوین پیشرفته. فصلهای 16 و 17 ماشینهای مجازی و سیستمهای توزیع شده را مورد بحث قرار میدهد. فصل 16 فصل جدیدی است که مروری از ماشینهای مجازی و رابطه آنها را با سیستمهای عامل امروزی فراهم ساخته است. در این فصل تکنیکهای سختافزاری و نرمافزاری که مجازیسازی را ممکن میسازد مرور شدهاند. فصل 17 سه فصل از ویرایش قبلی را از فشرده کرده و به روزآوری کرده است. این تغییر به خاطر این است که مدرسین در زمان محدود باقیمانده دو ترم در طول ترم مطالب را به پایان برساند و نیز دانشجویان درک خوبی از ایده درک محاسبات توزیع شده را سریعتر کسب کنند.
مطالعات پژوهشی. فصلهای 18 و 19 در متن، همراه با پیوستهای (الف) و (ب) که در سایت (http://www.os.book.com) در دسترسند، جزئیات مطالعات پژوهشی سیستمهای عامل واقعی را ارائه نمودهاند، از جمله آنها لینوکس، ویندوز 7 ، Free BSD و Mach میباشند. پوشش لینوکس و ویندوز 7 در سرتاسر این متن پوشش یافته است؛ با این وجود، مطالعات پژوهشی جزئیات بیشتری دارد. نکته جالب این است که دو سیستم کاملاً متفاوت با هم مقایسه و مقابله شدهاند. فصل 20 چند سیستم عامل مطرح دیگر را به طور خلاصه توصیف کرده است.
ویرایش نهم
در ضمن نوشتن ویرایش نهم تحت عنوان مفاهیم سیستم عامل، با رشد فعلی در راستای سه زمینه بنیادی که سیستمهای عامل را تحت تأثیر قرار میدهند هدایت شدیم:
سیستمهای چند هستهای
محاسبات موبایلی
مجازیسازی
در تأکید این عناوین ما پوشش مناسبی را در سرتاسر این ویرایش جدید یکپارچه کردیم ـ و در مورد مجازیسازی، یک فصل جدیدی را به طور کامل نوشتیم. به علاوه ما مطالب را تقریباً با تکرار مطالب قدیمی به روز کردهایم و مطالبی که دیگر جالب نیستند و یا نامناسبد را حذف نمودهایم.
همچنین تغییرات قابل توجهی در سازماندهی به وجود آمده است. مثلاً، فصل سیستمهای بلادرنگ را حذف کرده و در عوض در سرتاسر کتاب آن را لحاظ نمودهایم. ما ترتیب فصلها را در مدیریت ذخیرهسازها عوض کرده و سنکرونسازی فرآیند را تغییر جا دادهایم به طوری که در قبل از زمانبندی فرآیند ظاهر شده است. اغلب این تغییرات سازمانی بر تجربه ما مبتنی است که در حین تدریس درس سیستمهای عامل حاصل شده هاست.
در ادامه، رئوس خلاصهای از تغییرات عمده برای فصلهای مختلف آمده است.
فصل 1 ، مقدمه، شامل مطالب به روز شدهای از چند پردازندهها و سیستمهای چند هستهای است، و نیز بخش جدیدی در رابطه با ساختارهای کرنل داده آمده است. به علاوه، پوششی بر محیطهای محاسباتی فعلی شامل سیستمهای موبایل و ابری هم لحاظ شده است. همچنین مروری از سیستمهای بلادرنگ صورت گرفته است.
فصل 2 ، ساختارهای سیستمهای عامل، پوشش جدیدی از واسطهای کاربر برای دستگاههای موبایل فراهم میسازد، که از جمله آنها بحثهای iOS ، و Android بوده و پوشش توسعهیافتهای ازMac OS X که به عنوان نوعی سیستم هیبرید آورده شده است.
فصل 3 ، فرآیندها، اینک شامل پوششی است از چند وظیفهای در سیستمهای عامل موبایل است که پشتیبانیای برای مدل چند فرآیندی در مرورگر وب Googleʼs Chrome ، و فرآیندهای zombie و orphan در UNIX را فراهم ساخته است.
فصل 4 ، نخ، پوشش گسترش یافتهای از موازیسازی و قانون Amdahl است. در این فصل یک بخش جدید در مورد نخ ضمنی شامل OpenMP و Appleʼs Grand Central Dispateh نیز اضافه شده است.
فصل 5 ، همزمانسازی (سنکرونسازی) فرآیند (قبلاً فصل 6)، یک بخش جدیدی در مورد قفلهای Mutex و نیز پوششی بر همزمانسازی با استفاده از OpenMP ، و نیز زبانهای عملیاتی اضافه شده است.
فصل 6 ، زمانبندی CPU (قبلاً فصل 5)، حاوی پوشش جدیدی از زمانبندی CGS لینوکس و زمانبندی مد ـ کاربر ویندوز میباشد. پوشش الگوریتمهای زمانبندی بلادرنگ نیز در این فصل ادغام شده است.
فصل 7 ، بنبستها، تغییر عمدهای نداشته است.
فصل 8 ، حافظه اصلی، شامل پوشش جدیدی از معاوضه (تعویض) در سیستمهای موبایل و معماریهای Intel 32 و 64 بیتی میباشد.
فصل 9 ، حافظه مجازی، مدیریت حافظه کرنل برای لحاظ حافظه Linux SLUB و SLOP .
فصل 10 ، ساختار ذخیرهسازی حجیم، (قبلاً فصل 12)، پوششی بر دیسکهای حالت جامد میافزاید.
فصل 11 ، واسط سیستم فایل (قبلاً فصل 10) با اطلاعاتی درباره تکنولوژیهای جاری به روز شده است.
فصل 12 ، پیادهسازی سیستم فایل (قبلاً فصل 11)، با پوششی بر تکنولوژیهای جاری به روز شده است.
فصل 13 ، I/O ، تکنولوژیها تعداد کارآییها را به روز میکند، پوشش همزمان / غیرهمزمان را گسترش داده و I/O بلوکی و غیربلوکی را پوشش داده و یک بخش درباره I/O اضافه شده است.
فصل 14 ، حفاظت، تغییر عمدهای نکرده است.
فصل 15 ، امنیت، یک بخش رمزنگاری اصلاح شده با نشانههای جدید و یک توضیح اصلاح شده از روشهای رمزگذاری و کاربرد آن است. فصل شامل پوشش جدیدی از امنیت ویندوز 7 است.
فصل 16 ، ماشینهای مجازی، فصل جدیدی است که مروری بر مجازیسازی و چگونگی ارتباط آن با سیستمهای عامل جدید میباشد.
فصل 17 ، سیستمهای توزیع شده، یک فصل جدید است که گزیدهای از مطالب در فصلهای 16 ، 17 و 18 را ترکیب و به روزآوری کرده است.
فصل 18 ، سیستم Linux (قبلاً فصل 21)، به روزآوری شده تا کرنل Linux 3.2 را پوشش دهد.
فصل 19 ، ویندوز 7 ، فصل جدیدی است که یک Case study از ویندوز 7 را ارائه میدهد.
فصل 20 ، سیستمهای عامل تأثیرگذار (قبلاً فصل 23) تغییر چندانی نیافته است.
محیطهای برنامهنویسی
این کتاب از چند مثال نمونه از سیستمهای عامل بلادرنگ برای تشریح مفاهیم اصلی سیستم عامل استفاده میکند. توجه خاصی به لینوکس و ویندوز ماکروسافت شده، ولی ما به انواع یونیکس (شامل سولاریس، BSD و Mac OS X نیز اشاره کردهایم.
کتاب، چند برنامه هم که در C و Java نوشته شدهاند را هم فراهم کرده است. این برنامهها برای اجرا در محیطهای برنامهنویسی زیر اجرا خواهند شد:
POSX . Posix (که به معنی Portable Operating System Interface میباشد) مجموعهای از استانداردهاست که ابتدا برای سیستمهای عامل مبتنی بر UNIX پیادهسازی شد. گرچه سیستمهای ویندوز میتوانند برنامههای POSIX معینی را اجرا کنند، پوشش ما از posix بر سیستمهای UNIX و Linux تمرکز دارد. سیستمهای موافق ـ POSIX باید هسته posix استاندارد را پیادهسازی کنند. (POSIX.1)؛ لینوکس، سولاریس، و Mac OSX مثالهایی از سیستمهای موافق ـ posix اند. همچنین posix چندین توسعه را برای استانداردها تعریف میکند، از جمله توسعههای بلادرنگ (POSIX1.b)، و یک توسعه برای کتابخانه از نخها (POSIX1.c ، که بیشتر به نام Pthread معروف است) تعریف شدهاند. ما چندین مثال برنامهنویسی را که در C نوشته شده و API مبتنی بر POSIX و Plhreads و توسعه برای برنامهنویسی بلادرنگ را شرح میدهند، تهیه نمودهایم. این برنامههای نمونه روی سیستمهای لینوکس 2.6 و 3.2 Mac OSX107 و سولاریس 10 با استفاده از کامپایلر gcc 4.0 تست شدهاند.
Java . Java یک زبان برنامهنویسی است که به طور گسترده به کار رفته همراه با یک API غنی و پشتیبانی زبان درونی برای پشتیبانی در ایجاد و مدیریت نخ است. برنامههای جاوا روی هر سیستم عاملی که ماشین مجازی Java (JVM) را پشتیبانی کنند، اجرا میگردند. ما انواع سیستم عامل و مفاهیم شبکه با برنامههای Java را که با Java 1.6 JVM تست شده شرح خواهیم داد.
سیستمهای ویندوز. محیط برنامهنویسی اصلی برای سیستمهای ویندوز، Window API است، که مجموعه جامعی از توابع را برای مدیریت فرآیند، نخها، حافظه و دستگاههای جانبی فراهم میسازند. ما چند برنامه C را که این API تشریح میکند، تهیه کردهایم. برنامهها روی سیستمهای در حال اجرای ویندوز XP و ویندوز 7 تست شدهاند.
ما این سه محیط برنامهنویسی را به این دلیل اختیار کردهایم زیرا معتقدیم آنها به بهترین وجه مدلهای سیستم عامل رایج ـ یعنی ویندوز و یونیکس / لینوکس ـ را همراه با محیط Java که به طور گسترده به کار میرود، نشان میدهد. اغلب برنامههای نمونه در C نوشته میشوند، و ما انتظار داریم که خوانندگان با این زبان آشنا باشند. خوانندگانی که با هر دو زبان C و Java باشند باید به سادگی با اغلب برنامههای تهیه شده در این کتاب را بفهمند.
در بعضی از مثالها ـ مانند ایجاد نخ ـ ما یک مفهوم خاص را شرح میدهیم که هر سه محیط را به کار میبرد، و به خواننده اجازه میدهد تا بر سه کتابخانه متفاوت که به وظیفه یکسانی اشاره دارند، تمرکز کند. در دیگر جوامع، ما ممکن است فقط یکی API ها را برای نمایش یک مفهوم به کار ببریم. مثلاً ما حافظه مشترک را فقط با POSIX API شرح میدهیم؛ برنامهنویسی سوکت در TP/IP با Java API توصیف شده است.
ماشین مجازی لینوکس
برای کمک به دانشجویان در کسب درک بهتر از سیستم لینوکس، ما یک ماشین مجازی لینوکس را تهیه کردهایم که شامل کد منبع لینوکس بوده و برای دانلود از سایت وب پشتیبان این کتاب (http://www.os.book.com) قابل دستیابی است همچنین این ماشین مجازی شامل یک محیط گسترش gcc همراه با کامپایلر و انکدر است. اغلب تمرینهای برنامهنویسی در این کتاب میتوانند در این ماشین مجازی تکمیل شوند، به جز تمرینهایی که Java یا ویندوز API لازم دارند.
همچنین ما سه تمرین برنامهنویسی که کرنل لینوکس را از طریق مدولهای کرنل اصلاح میکنند، فراهم نمودهایم.
افزودن یک مدول کرنل پایه به کرنل لینوکس.
افزودن یک مدول کرنل که از انواع ساختارهای داده کرنل استفاده مینماید.
افزودن یک مدول کرنل که روی وظایف در یک سیستم لینوکس در حال اجرا تکرار میکند.
به تدریج توجه ما به افزودن تمرینهای مدول کرنل اضافی در سایت وب پشتیبانی جلب خواهد شد.
سایت وب پشتیبانی
وقتی که شما سایت وب پشتیبان این کتاب را ویزیت میکنید (http://www.os.book.com)، میتوانید امکانات زیر را دانلود نمائید.
ماشین مجازی لینوکس
کد سورس C و Java
اسلایدهای نمونه
مجموعه اسلایدهای پاورپوینت
مجموعه شکلها و توضیحات
مطالعات پژوهشی FreeBSD و Mach .
راهنمای مطالعه برای دانشجویان
اصلاحات
یادداشتهایی برای مدرسین
برای این کتاب در سایت وب، ما چند نمونه از کارها با روشهای مختلف، را برای استفاده از کتاب در هر دو سطح درسی مقدماتی و پیشرفته فراهم نمودهایم. به عنوان یک قانون کلی، ما مدرسین را به پیشروی متوالی فصلها تشویق میکنیم، زیرا این استراتژی مناسبترین روش مطالعه سیستمهای عامل را فراهم میکند. با این وجود، با استفاده از این هجا، یک مدرس میتواند ترتیب متفاوتی از فصلها یا زیر بخشهای یک فصل را برگزیند.
در این ویرایش ما بیش از شصت تکلیف جدید را اضافه کردهایم و بیش از بیست مسئله برنامهنویسی و پروژه را افزودهایم. اغلب تمرینهای برنامهنویسی شامل فرآیندها، نخها و سنکرونسازی فرآیند، و مدیریت حافظه است. بعضی مربوط به افزودن مدولهای کرنل به سیستم لینوکس است که نیازمند استفاده از ماشین مجازی لینوکس، یا هر توزیع لینوکس دیگری است که این کتاب را همراهی میکند.
حل تمرینات نوشته شده و تکلیفهای برنامهنویسی برای مدرسینی در دسترساند که این کتاب را برای کلاس سیستم عامل خود برگزیدهاند. برای به دست آوردن این بخشهای کمکی با فروشنده یا نماینده John Wiley & Sons تماس بگیرید. http://www.wiley.com/college ما برای شما آرزوی موفقیت در مطالعه سیستمهای عامل را داریم.
یادداشتهایی برای دانشجویان
ما شما را برای استفاده از مزیت تمرینهای عملی که در آخر هر فصل میآید ترغیب مینمائیم. راهحلها برای دانلود از سایت وب همراه http://www.os-book.com قابل برداشتند. همچنین شما را برای خواندن راهنمای مطالعه که به وسیله یکی از دانشجویان تهیه شده تشویق مینمائیم. بالاخره برای دانشجویانی که با سیستمهای UNIX و Linux آشنا نیستند، پیشنهاد میکنیم شما ماشین مجازی لینوکس را که ما در سایت وب گذاشتهایم دانلود نمائید. این کار نه فقط یک تجربه جدید را برای شما به ارمغان میآورد، بلکه طبیعت منبع باز (آزاد) لینوکس به شما اجازه میدهد تا جزئیات داخلی این سیستم عامل مطرح را بررسی کنید.
تماس با ما
ما تلاش بسیاری در راستای حذف غلطهای حروفچینی و باگها از کتاب نمودهایم. اما در نسخههای جدید نرمافزار مطمئناً این باگها باقی میمانند. لیستی از اصلاحات که از سایت وب کتاب قابل دستیابی است ارائه شده است. ما قطعاً خوشحال خواهیم شد اگر ما را از وجود هر غلط املایی یا موضوعی در مورد کتاب و یا جا افتادگی در لیست جاری را به آدرس پشت جلد مطلع نمائید.
فهرست مطالب
بخش 1 مرور 1
فصل 1 مقدمه 3
1.1 سيستمهاي عامل چه كاري انجام ميدهند 4
1.1.1 ديدگاه كاربر (user view) 4
1.1.2 ديدگاه سيستمي (system view) 5
1.1.3 تعريف سيستمهاي عامل 6
1.2 سازمان سيستم كامپيوتر 7
1.2.1 عملكرد سيستم كامپيوتر 7
1.2.2 ساختار ذخيرهساز 10
1.2.3 ساختار I/O 12
1.3 معماري سيستم كامپيوتر 13
1.3.1 سيستمهاي تكپردازندهاي 13
1.3.2 سيستمهاي چند پردازندهاي 14
1.3.3 سيستمهاي كلاستري 17
1.4 ساختار سيستم عامل 19
1.5 عمليات سيستم عامل 22
1.5.1 عمليات دو حالته و چند حالته 22
1.5.2 تايمر 25
1.6 مديريت فرآيند 25
1.7 مديريت حافظه 26
1.8 مديريت ذخيرهسازي 27
1.8.1 مديريت سيستم فايل 27
1.8.2 مديريت ذخيرهساز حجيم 28
1.8.3 كَش كردن 29
1.8.4 سيستمهاي ورودي خروجي (I/O) 31
1.9 حفاظت و امنيت 31
1.10 ساختار داده كرنل 32
1.10.1 ليستها، پشتهها و صفها 32
1.10.2 درختها 34
1.10.3 توابع هَش و نگاشتها 34
1.10.4 بيت مپ 35
1.11 محيطهاي محاسباتي 36
1.11.1 محاسبه سنتي 36
1.11.2 عمليات متحرك (موبايل) 37
1.11.3 سيستمهاي توزيع شده 38
1.11.4 عمليات سرور- كلاينت 39
1.11.5 عمليات نظير به نظير (همتا به همتا) 40
1.11.6 مجازيسازي 41
1.11.7 عمليات ابري 43
1.11.8 سيستمهاي اختصاصي بلادرنگ 44
1.12 سيستمهاي عامل رايگان (متن باز) 45
1.12.1 تاريخچه 46
1.12.2 لينوكس 46
1.12.3 يونيكس BSD 47
1.12.4 سولاريس 48
1.12.5 سيستمهاي رايگان بهعنوان ابزارهاي آموزشي 48
1.13 خلاصه 48
تمرينها 51
مراجع 54
فصل 2 ساختار سيستمهاي عامل 57
2.1 سرويسهاي سيستم عامل 57
2.2 واسط كاربر سيستم عامل 60
2.2.1 مفسرهاي فرمان 60
2.2.2 واسطهاي گرافيكي كاربر 61
2.2.3 انتخاب واسط 62
2.3 فراخوانهاي سيستم (system calls)
2.4 انواع فراخوانيهاي سيستم 68
2.4.1 كنترل فرآيند 69
2.4.2 مديريت فايل 72
2.4.3 مديريت دستگاه 73
2.4.4 نگهداري اطلاعات 73
5.4.2 ارتباطات 74
2.4.6 حفاظت 75
2.5 برنامههاي سيستمي 75
2.6 طراحي و پيادهسازي سيستم عامل 77
2.6.1 اهداف طراحي 77
2.6.2 راهكارها و سياستها 77
2.6.3 پيادهسازي 78
2.7 ساختار سيستم عامل 79
2.7.1 ساختار ساده 80
2.7.2 روش لايهاي 81
2.7.3 ريزكرنل 83
2.7.4 مدولها 84
2.7.5 سيستمهاي هيبريد 85
2.8 اشكالزدايي سيستم عامل 87
2.8.1 تحليل خرابي 87
2.8.2 تنظيم كارايي 87
2.8.3 DTrace 89
2.9 توليد سيستم عامل 93
2.10 بوت (راهاندازي) سيستم 94
2.11 خلاصه 95
تمرينها 96
مراجع 102
بخش 2 مديريت فرآيند 105
فصل 3 فرآيندها 107
3.1 مفهوم فرآيند 107
3.1.1 فرآيند 108
3.1.2 حالت فرآيند 109
3.1.3 بلوك كنترل فرآيند 110
3.1.4 نخها 111
3.2 زمانبندي فرآيند 112
3.2.1 صفهاي زمانبندي 112
3.2.2 زمانبنديها 114
3.2.3 تعويض متن 115
3.3 عمليات در فرآيندها 117
3.3.1 ايجاد فرآيند 117
3.3.2 پايان فرآيند 121
3.4 ارتباطات بين فرآيندها 122
3.4.1 سيستمهاي حافظه مشترك 125
3.4.2 سيستمهاي مبادله پيام 127
3.5 مثالهايي از سيستمهاي IPC 130
3.5.1 مثال حافظه مشترك در POSIX 130
3.5.2 مثال: mach 132
3.5.3 مثال: ويندوز 134
3.6 ارتباط در سيستمهاي كلاينت- سرور 135
3.6.1 سوكتها 136
3.6.2 فراخوانيهاي رويه راه دور 138
3.6.3 لولهها 141
3.7 خلاصه 146
تمرينها 148
فصل 4 نخها 159
4.1 مرور 159
4.1.1 انگيزه وجود نخها 159
4.1.2 مزاياي برنامهنويسي چند نخي 161
4.2 برنامهنويسي چند هستهاي 162
4.2.1 چالشهاي برنامه نويسي 163
4.2.2 انواع موازيسازي 164
4.3 مدلهاي چند نخي 165
4.3.1 مدل چند- به- يك 165
4.3.2 مدل يك به يك 166
4.3.3 مدل چند- به- چند 166
4.4 كتابخانههاي نخ 167
4.4.1 Pthreads 168
4.4.2 نخهاي ويندوز 170
4.4.3 نخهاي جاوا 172
4.5 نخسازي ضمني 173
4.5.1 مخزن نخها 175
4.5.2 OpenMP 175
4.5.3 تكنولوژي Grand Central Dispatch 178
4.5.4 روشهاي ديگر 179
4.6 نكات مربوط به نخسازي 179
4.6.1 فراخوانهاي سيستم fork( ) و exec( ) 179
4.6.2 اداره كردن سيگنال 179
4.6.3 لغو نخ 181
4.6.4 ذخيره محلي نخ 182
4.6.5 فعالسازي زمانبند 183
4.7 مثالهايي از سيستم عامل 184
4.7.1 نخهاي ويندوز 184
4.7.2 نخهاي لينوكس 185
4.8 خلاصه 146
تمرينها 187
مراجع 196
فصل 5 همگامسازي فرآيند199
5.1 زمينه 199
5.2 مسئله بخش- حياتي 201
5.3 راه حل پيترسون 203
5.4 سختافزار همگامسازي 204
5.5 قفلهاي انحصاري 207
5.6 سمافورها 208
5.6.1 كاربرد سمافور 209
5.6.2 پيادهسازي سمافور 209
5.6.3 بنبستها و گرسنگي 211
5.6.4 معكوس كردن اولويت 212
5.7 مسائل كلاسيك همگامي 213
5.7.1 مسئله بافر محدود 2135.7.2 مسئله خوانندگان و نويسندگان 214
5.7.3 مسئله تغذيه فيلسوفان 217
5.8 ناظرها 217
5.8.1 كاربرد ناظرها (monitors) 219
5.8.2 راهحل مسئله تغذيه فيلسوفان با استفاده از ناظرها 221
5.8.3 پيادهسازي يك ناظر با استفاده از سمافورها 221
5.8.4 از سرگيري فرآيندها در ناظر 223
5.9 مثالهايي از همگامسازي 226
5.9.1 همگامي در ويندوز 226
5.9.2 همگامي در لينوكس 227
5.9.3 همگامي در سولاريس 228
5.9.4 همگامي Pthreads 230
5.10 روشهاي ديگر 232
5.10.1 حافظه تراكنش 232
5.10.2 Open MP 233
5.10.3 زبانهاي برنامهنويسي عملياتي 234
5.11 خلاصه 235
تمرينها 235
مراجع 249
فصل 6 زمانبندي cpu 251
6.1 مفاهيم اصلي 251
6.1.1 چرخه انفجار CPU-I/O 252
6.1.2 زمانبند CPU 252
6.1.3 زمانبندي قبضهاي (پيشدستانه) 253
6.1.4 توزيعگر 254
6.2 معيارهاي زمانبندي 255
6.3 الگوريتمهاي زمانبندي 256
6.3.1 زمانبندي ورود- اول، سرويس اول 256
6.3.2 زمانبندي كوتاهترين كار- اول 257
6.3.3 زمانبندي با اولويت 260
6.3.4 زمانبندي نوبت گردشي 261
6.3.5 زمانبندي صف چند سطحي 264
6.3.6 زمانبندي صف چند سطحي پسخوردي (فيدبك) 265
6.4 زمانبندي نخ 266
6.4.1 زمينه رقابت 266
6.4.2 زمانبندي Pthread 267
6.5 زمانبندي چند پردازندهاي 267
6.5.1 روشهاي زمانبندي چند پردازندهاي268
6.5.2 وابستگي به پردازنده 269
6.5.3 روشهاي زمانبندي چندپردازندهاي 270
6.5.4 پردازندههاي چندهستهاي 271
6.6 زمانبندي CPU بلادرنگ 272
6.6.1 حداقل كردن تأخير 273
6.6.2 زمانبندي مبتني بر اولويت 275
6.6.3 زمانبندي يكنواخت- سريع 276
6.6.4 زمانبندي مهلت زودتر- اول 278
6.6.5 زمانبندي اشتراك نسبي 279
6.6.6 زمانبندي بلادرنگ POSIX 279
6.7 مثالهايي از سيستمهاي عامل 281
6.7.1 مثال زمانبندي لينوكس 281
6.7.2 مثال زمانبندي ويندوز 283
6.7.3 مثال زمانبندي سولاريس 286
6.8 ارزیابی الگوریتم 289
6.8.1 مدلسازي قطعي 289
6.8.2 مدلهاي صفبندي 290
6.8.3 شبيهسازي 291
6.8.4 پيادهسازي 292
6.9 خلاصه 293
تمرينها 294
مراجع 300
فصل 7 بنبستها 305
7.1 مدل سيستم 305
7.2 مشخصههاي بنبست 307
7.2.1 شرايط ضروري 308
7.2.2 گراف تخصيص منبع 309
7.3 روشهاي اداره كردن بنبست311
7.4 پيشگيري از بنبست 312
7.4.1 انحصار متقابل 312
7.4.2 نگهداري و انتظار 313
7.4.3 بدون قبضه كردن 313
7.4.4 انتظار چرخشي 314
7.5 اجتناب از بنبست 316
7.5.1 حالت امن 317
7.5.2 الگوريتم گراف تخصيص – منبع 318
7.5.3 الگوريتم بانكدار 319
7.6 تشخيص بنبست 322
7.6.1 حالت تك نمونه از هر نوع منبع 323
7.6.2 چند نمونه از يك نوع منبع 323
7.6.3 كاربرد الگوريت تشخيص 325
7.7 خروج از حالت بنبست 325
7.7.1 خاتمه فرآيند 325
7.7.2 قبضه منبع 326
7.8 خلاصه 327
تمرينها 327
مراجع 334
بخش3 مديريت حافظه 335
فصل 8 حافظه اصلي 337
8.1 زمينه 337
8.1.1 سختافزار پايه 338
8.1.2 مرتبط سازي آدرس 340
8.1.3 فضاي آدرس منطقي در برابر فيزيكي 342
8.1.4 بار كردن ديناميكي 343
8.1.5 پيوندزني ديناميكي و كتابخانههاي مشترك 343
8.2 مبادله 344
8.2.1 مبادله استاندارد 345
8.2.2 مبادله بر روي سيستمهاي متحرك 346
8.3 تخصيص حافظه همجوار 347
8.3.1 حفاظت حافظه 347
8.3.2 تخصيص حافظه 349
8.3.3 چند تكه شدن 350
8.4 قطعهبندي 351
8.4.1 روش پايه 351
8.4.2 سختافزار قطعهبندي 352
8.5 صفحهبندي 353
8.5.1 روش پايه 354
8.5.2 پشتيباني سختافزاري 359
8.5.3 حفاظت 362
8.5.4 صفحات مشترك 364
8.6 ساختار جدول صفحه 365
8.6.1 صفحهبندي سلسله مراتبي 365
8.6.2 جداول صفحه درهم شده 368
8.6.3 جداول صفحه معكوس شده 368
8.6.4 Oracle SPARC Solaris 370
8.7 مثال معماري 32 بيت و 64 بيتي اينتل 371
8.7.1 معماري 32-IA 371
8.7.2 64-X86 374
8.8 مثال معماري ARM 375
8.9 خلاصه 376
تمرينها 377
مراجع 382
فصل 9 حافظه مجازي 385
9.1 زمينه 385
9.2 صفحهبندي درخواستي 388
9.2.1 مفاهيم اساسي 389
9.2.2 كارايي صفحهبندي درخواستي 393
9.3 كپي در نوشتن 395
9.4 جايگزيني صفحه 397
9.4.1 جايگزيني صفحه پايه 398
9.4.2 جايگزيني صفحه FIFO 401
9.4.3 جايگزيني صفحه بهينه 402
9.4.4 جايگزيني صفحه LRU 403
9.4.5 جايگزيني صفحه LRU تقريبي 405
9.4.6 جايگزيني صفحه مبتني بر شمارش 407
9.4.7 الگوريتمهاي بافر كردن صفحه 408
9.4.8 كاربردها و جايگزيني صفحه 408
9.5 تخصيص فريمها 409
9.5.1 حداقل تعداد فريمها 409
9.5.2 الگوريتمهاي تخصيص 410
9.5.3 تخصيص سراسري در برابر محلي 411
9.5.4 دستيابي غيريكنواخت به حافظه (NUMA) 412
9.6 كوبيدگي 413
9.6.1 علت كوبيدگي 413
9.6.2 مدل مجموعه- كاري 415
9.6.3 فركانس خطاي صفحه 417
9.6.4 نتيجهگيري 417
9.7 فايلهاي نگاشت در حافظه 418
9.7.1 مكانيزم اصلي 418
9.7.2 حافظه مشترك در API ويندوز 420
9.7.3 I/O نگاشت به حافظه 420
9.8 تخصيص حافظه كرنل 423
9.8.1 سيستم رفاقتي 423
9.8.2 تخصيص ورقي 424
9.9 ساير ملاحظات 426
9.9.1 پيش صفحهبندي 426
9.9.2 سايز صفحه 427
9.9.3 حافظه قابل دسترسي از TLB 428
9.9.4 جداول صفحه معكوس شده 429
9.9.5 ساختار برنامه 430
9.9.6 ميان قفلي I/O و قفل صفحه 431
9.10 مثالهايي از سيستم عامل 432
9.10.1 ويندوز 432
9.10.2 سولاريس 431
9.11 خلاصه 435
تمرينها 436
مراجع 447
بخش 4 مديريت ذخيرهسازي 451
فصل 10 ساختار ذخيرساز انبوه 453
10.1 مروري بر ساختار ذخيرهساز انبوه 453
10.1.1 ديسكهاي مغناطيسي 453
10.1.2 ديسكهاي حالت جامد 455
10.1.3 نوارهاي مغناطيسي 456
10.2 ساختار ديسك 456
10.3 پيوست ديسك 457
10.3.1 ذخيرهساز پيوست ميزبان 457
10.3.2 ذخيرهساز پيوست شبكه 458
10.3.3 شبكه ناحيه ذخيرهسازي 458
10.4 زمانبندي ديسك 459
10.4.1 زمانبندي FCFS 460
10.4.2 زمانبندي SSTF 460
10.4.3 زمانبندي پيمايش (SCAN) 461
10.4.4 زمانبندي پيمايش حلقوي (C-SCAN)462
10.4.5 زمانبندي LOOK 463
10.4.6 گزينش يك الگوريتم زمانبندي ديسك 463
10.5 مديريت ديسك 464
10.5.1 فرمت كردن ديسك 464
10.5.2 بلوك بوت 465
10.5.3 بلوكهاي خراب 466
10.6 مديريت فضاي مبادله 469
10.6.1 كاربرد فضاي مبادله 469
10.6.2 مكان فضاي مبادله 469
10.6.3 مديريت فضاي مبادله: مثال 469
10.7 ساختار RAID 470
10.7.1 اصلاح قابليت اعتماد با افزودگي 471
10.7.2 بهبود عملكرد با موازيسازي 472
10.7.3 سطوح RAID 472
10.7.4 انتخاب يك سطح RAID 477
10.7.5 بسط RAID 478
10.7.6 مشكلات همراه RAID 478
10.8 پيادهسازي ذخيرهساز پايدار 481
10.9 خلاصه 481
تمرينها 482
مراجع 487
فصل 11 واسط سيستم فايل 489
11.1 مفهوم فايل 489
11.1.1 صفات فايل 490
11.1.2 عمليات فايل 492
11.1.3 انواع فايلها 496
11.1.4 ساختار فايل 498
11.1.5 ساختار داخلي فايلها 498
11.2 روشهاي دستيابي 499
11.2.1 دستيابي ترتيبي 499
11.2.2 دستيابي مستقيم 500
11.2.3 ديگر روشهاي دستيابي 501
11.3 دايركتوري و ساختار ديسك 502
11.3.1 ساختار ذخيرهساز 503
11.3.2 مروري بر دايركتوري 504
11.3.3 دايركتوري يك سطحي 505
11.3.4 دايركتوري دو سطحي 505
11.3.5 دايركتوريهاي ساختار درختي 507
11.3.6 دايركتوريهاي گراف بيچرخه 509
11.3.7 دايركتوري گراف عمومي 512
11.4 نصب سيستم فايل 513
11.5 اشتراك فايل 515
11.5.1 چند كاربره 515
11.5.2 سيستمهاي فايل راه دور 516
11.5.3 مفاهيم سازگاري 519
11.6 حفاظت 520
11.6.1 انواع دستيابي 521
11.6.2 كنترل دستيابي 521
11.6.3 روشهاي ديگر حفاظت 524
11.7 خلاصه 525
تمرينها 526
مراجع 528
فصل 12 پيادهسازي سيستم فايل 529
12.1 ساختار سيستم- فايل 529
12.2 پيادهسازي سيستم فايل 532
12.2.1 مرور 532
12.2.2 پارتيشنها و سوار كردن (نصب) 534
12.2.3 سيستم فايلهاي مجازي 535
12.3 پيادهسازي دايركتوري 538
12.3.1 ليست خطي 538
12.3.2 جدول درهمسازي 539
12.4 روشهاي تخصيص 540
12.4.1 تخصيص همجواري 540
12.4.2 تخصيص پيوندي 542
12.4.3 تخصيص انديسدار 545
12.4.4 كارآيي 547
12.5 مديريت فضاي آزاد 548
12.5.1 بردار بيتي 548
12.5.2 ليست پيوندي 549
12.5.3 گروهبندي 550
12.5.4 شمارش 550
12.5.5 نگاشتهاي فضا 550
12.6 كارآمدي و كارآيي 551
12.6.1 كارآمدي 551
12.6.2 كارآيي 552
12.7 ترميم 555
12.7.1 چك كردن سازگاري 556
12.7.2 سيستم فايلها با ساختار كارنامه (گزارش) 556
12.7.3 راهحلهاي ديگر 557
12.7.4 تهيه پشتيبان و بازيابي (بازگرداني) 548
12.8 NFS 559
12.8.1 مرور كلي 559
12.8.2 پروتكل سوار كردن (نصب) 561
12.8.3 پروتكل NFS 562
12.8.4 تبديل نام مسير 564
12.8.5 عمليات راهدور 564
12.9 مثال: سيستم فايل WAFL 565
12.10 خلاصه 567
تمرينها 568
مراجع 573
فصل 13 سيستمهاي I/O 575
13.1 مرور 575
13.2 سختافزار I/O 576
13.2.1 سركشي 579
13.2.2 وقفهها 580
13.2.3 دستيابي مستقيم به حافظه(DMA) 584
13.2.4 خلاصه سختافزار I/O 585
13.3 واسط I/O برنامه كاربردي 586
13.3.1 دستگاههاي بلوكي و كاراكتري 588
13.3.2 دستگاههاي شبكه 589
13.3.3 ساعتها و تايمرها 590
13.3.4 I/O غيرمسدود و غيرهمزمان 591
13.3.5 I/O برداري 593
13.4 زير سيستم I/O كرنل 593
13.4.1 زمانبندي I/O 593
13.4.2 بافركردن 594
13.4.3 كشكاري (نهانكاري) 596
13.4.4 اسپولينگ و رزرو كردن دستگاه 596
13.4.5 اداره خطا 597
13.4.6 حفاظت I/O 597
13.4.7 ساختمانهاي داده كرنل 599
13.4.8 خلاصه زير سيستم I/O كرنل 599
13.5 تبديل درخواستهاي I/O به عمليات سختافزار 600
13.6 جريانها (STREAMS) 602
13.7 كارآيي 604
13.8 خلاصه 606
تمرينها 608
مراجع 610
بخش 5 حفاظت و امنيت 611
فصل 14 حفاظت 613
14.1 اهداف حفاظت 613
14.2 اصول حفاظت 613
14.3 حوزه حفاظت 615
14.3.1 ساختار دُمين (حوزه) 616
14.3.2 يك مثال: يونيكس 617
14.3.3 مثال: Multics 618
14.4 ماتريس دستيابي 620
14.5 پيادهسازي ماتريس دستيابي624
14.5.1 جدول كلي 624
14.5.2 ليست دستيابيها براي اشياء 624
14.5.4 مكانيزم كليد- قفل 625
14.5.5 مقايسه 626
14.6 كنترل دستيابي 627
14.7 ابطال حق دستيابي 628
14.8 سيستمهاي مبتني بر قابليتها629
14.8.1 يك مثال: Hydra 629
14.8.2 سيستم CAP، كمبريج 631
14.9 حفاظت مبتني بر زبان 632
14.9.1 تحميل مبتني بر كامپايلر 633
14.9.2 حفاظت در جاوا 635
14.10 خلاصه 637
تمرينها 638
مراجع 640
فصل 15 امنيت 643
15.1 مسئله امنيت 643
15.2 تهديدهاي برنامه 647
15.2.1 اسب ترواي (trojan horse) 647
15.2.2 روزنه (Trap Door) 649
15.2.3 بمب منطقي 649
15.2.4 پشته و سرريز بافر 649
15.2.5 ويروسها 653
15.3 تهديدهاي سيستم و شبكه 656
15.3.1 كرمها (worms) 656
15.3.2 پيمايش پورت 659
15.3.3 انكار سرويس 660
15.4 رمزنگاري بهعنوان يك ابزار امنيت 661
15.4.1 رمزگذاري 662
15.4.2 پيادهسازي رمزنگاري 668
15.4.3 يك مثال: SSL 670
15.5 تأييد كاربر 672
15.5.1 پسورد (رمز عبور) 672
15.5.2 آسيبپذيري پسورد 672
15.5.3 ايمن كردن پسورد 674
15.5.4 پسوردهاي يكبار مصرف 675
15.5.5 بيومتريكها 676
15.6 پيادهسازي دفاعهاي امنيتي 676
15.6.1 سياست ايمني 677
15.6.2 ارزيابي آسيبپذيري 677
15.6.3 شناسايي مزاحمت 679
15.6.4 حفاظت ويروس 681
15.6.5 مميزي، حسابداري و گزارشگيري 683
15.7 فايروال براي حفاظت سيستمها و شبكهها 683
15.8 دستهبندي امنيت كامپيوتر 685
15.9 مثال: ويندوز 7 687
15.10 خلاصه 689
تمرينها 690
مراجع 692
بخش 6 عناوين پيشرفته 697
فصل 16 ماشينهاي مجازي 699
16.1 مرور 699
16.2 تاريخچه 701
16.3 مزايا ويژگي 702
16.4 ساختارهاي بلوكي 705
16.4.1 تقليد- و- تله 705
16.4.2 ترجمه دودويي 706
16.4.3 كمك سختافزاري 708
16.5 انواع ماشينهاي مجازي و پيادهسازي آنها 710
16.5.1 چرخه حيات ماشين مجازي 710
16.5.2 هايپروايزور نوع o 711
16.5.3 هايپروايزور نوع 1 712
16.5.4 هايپروايزور نوع 2 712
16.5.5 فوق مجازيسازي 713
16.5.6 مجازيسازي محيط برنامهنويسي 714
16.5.7 تقليد (امولاسيون) 714
16.5.8 محدودسازيبرنامه كاربردي 715
16.6 مجازيسازي و اجزاء سيستم عامل 716
16.6.1 زمانبندي CPU 716
16.6.2 مديريت حافظه 717
16.6.3 I/O 719
16.6.4 پمديريت ذخيرهساز 720
16.6.5 انتقال زنده 721
16.7 مثالها 722
16.7.1 VMware 723
16.7.2 ماشين مجازي جاوا 723
16.8 خلاصه 725
تمرينها 725
مراجع 726
فصل 17 سيستمهاي توزيع شده 729
17.1 مزاياي سيستمهاي توزيع شده729
17.1.1 اشتراك امكانات (منابع) 729
17.1.2 افزايش سرعت محاسبات 730
17.1.3 قابليت اعتماد 730
17.1.4 ارتباط 731
17.2 انواع سيستمهاي عامل مبتني بر شبكه 731
17.2.1 سيستم عاملهاي شبكه 731
17.2.2 سيستمهاي عامل توزيع شده 732
17.3 ساختار شبكه 735
17.3.1 شبكههاي محلي 735
17.3.2 شبكههاي گسترده (WAN) 737
17.4 ساختار ارتباط 738
17.4.1 نامگذاري و تبديل نام 738
17.4.2 راهكارهاي مسيريابي 740
17.4.3 راهكارهاي بستهبندي 742
17.4.4 راهكارهاي اتصال 742
17.5 پروتكلهاي ارتباط 743
17.6 يك مثال: TCP/IP 747
17.7 توانمندي 748
17.7.1 شناسايي خرابي 749
17.7.2 پيكربندي مجدّد 749
17.7.3 بازگشت از خرابي 750
17.7.4 تحمل نقص 750
17.8 نكات طراحي 751
17.9 سيستم فايلهاي توزيع شده753
17.9.1 نامگذاري و شفافيت 754
17.9.2 دستيابي راه دور به فايل 757
17.10 خلاصه 761
تمرينها 762
مراجع 764
بخش 7 مطالعات پژوهشي 767
فصل 18 سيستم لينوكس 769
18.1 تاريخچه لينوكس 769
18.1.1 كرنل لينوكس 770
18.1.2 سيستم لينوكس 772
18.1.3 توزيعهاي لينوكس 773
18.1.4 مجوزگيري لينوكس 773
18.2 اصول طراحي 774
18.2.1 اجزاء يك سيستم لينوكس 775
18.3 مدولهاي كرنل 777
18.3.1 مديريت مدول 778
18.3.2 ثبت درايور 779
18.3.3 جلوگيري از تضادها 779
18.4 مديريت فرآيند 780
18.4.1 مد فرآيند fork() و exec() 780
18.4.2 فرآيندها و نخها 783
18.5 زمانبندي 784
18.5.1 زمانبندي فرآيند 784
18.5.2 زمانبندي بلادرنگ 786
18.5.3 همگامي كرنل 786
18.5.4 چند پردازش متقارن 768
18.6 مديريت حافظه 768
18.6.1 مديريت حافظه فيزيكي 789
18.6.2 حافظه مجازي 792
18.6.3 اجرا و بار كردن برنامههاي كاربر 795
18.7 سيستم فايلها 797
18.7.1 سيستم فايل مجازي 797
18.7.2 سيستم فايل ext3 از لينوكس 799
18.7.3 گزارشگري 802
18.7.4 سيستم فايل فرآيند لينوكس 802
18.8 ورودي/ خروجي 804
18.8.1 دستگاههاي بلوكي 805
18.8.2 دستگاههاي كاراكتري 805
18.9 ارتباط ميان فرآيندي 806
18.9.1 همگامي و سيگنالها 806
18.9.2 ارسال دادهها ميان فرآيندها 807
18.10 ساختار شبكه 807
18.11 امنيت 810
18.11.1 تأييد 810
18.11.2 كنترل دستيابي 811
18.12 خلاصه 812
تمرينها 813
مراجع 815
فصل 19 ويندوز 7 817
19.1 تاريخچه 817
19.2 اصول طراحي 819
19.2.1 امنيت 820
19.2.2 قابليت اعتماد 821
19.2.3 سازگاري برنامههاي كاربردي ويندوز و POSIX 822
19.2.4 كارآيي بالا 822
19.2.5 گسترشپذيري 824
19.2.6 قابليت حمل 825
19.2.7 براي دستيابي بينالمللي 825
19.2.8 كارآمدي انرژي 826
19.2.9 پشتيباني ديناميكي دستگاه 826
19.3 اجزاء سيستم 826
19.3.1 لايه تجريد يا ابستره - سختافزار (HAL) 827
19.3.2 كرنل 828
19.3.3 مدير اجرايي 833
19.4 سرويسهاي پايانه و تعويض كاربر سريع 852
19.5 سيستم فايل 853
19.5.1 طرح داخلي NTFS 853
19.5.2 بازيابي 856
19.5.3 امنيت 856
19.5.4 مديريت ولوم و تحمل خرابي 857
19.5.5 فشردهسازي 859
19.5.6 نقاط نصب، پيوندهاي سمبليك و پيوندهاي سخت 859
19.5.7 تغيير گزارش 859
19.5.8 كپيهاي ساده ولوم 860
19.6 شبكهبندي 860
19.6.1 رابطهاي شبكه 860
19.6.2 پروتكلها 860
19.6.3 هدايتگرها و سرورها 863
19.6.4 دُمينها 864
19.6.5 دايركتوري فعال (Active directory) 864
19.7 رابط برنامه نويسي 865
19.7.1 دستيابي به اشياء كرنل 865
19.7.2 اشتراك اشياء بين فرآيندها 865
19.7.3 مديريت فرآيند 866
19.8 خلاصه 875
تمرينها 875
مراجع 877
فصل 20 سيستم عامل موثر 879
20.1 انتقال ويژگي 879
20.2 سيستمهاي Eavly 880
20.2.1 سيستمهاي كامپيوتري خاص 881
20.2.2 سيستمهاي كامپيوتر اشتراكي 882
20.2.3 I/O همپوشان 884
20.3 Atlas 886
20.4 XDS-940 887
20.5 THE 888
20.6 RC4000 889
20.7 CTSS 889
20.8 MULTICS 890
20.9 IBM OS/360 890
20.10 TOPS- 20 892
20.11 CP/M و MS/DOS 892
20.12 سيستم عامل مكينتاش و ويندوز 893
20.13 Mach 894
20.14 سيستمهاي ديگر 895
تمرينها 895
مراجع 897