۱-۳- تاريخچه توسعه و تكامل يونيكس

تاريخچه طولاني يونيكس كه مي توان گفت بخشي از آن خوب و بخشي از آن بد مي باشد , مطالعه اي است در پشتكار و استقامت, تغييرات ناگهاني در جهت توسعه نرم افزار, و جشن پيروزي تكنولوژي خوب بر روش برخورد هرج و مرج طلبانه اي كه بعضي اوقات صنعت كامپيوتر با محصولات خوب پيش مي گيرد .

به دهه ۱۹۶۰ برمي گرديم , هنگامي كه پيشرفت و توسعه كامپيوتر حوزه كاري تعداد اندكي شركتهاي پيشگام در صنعت و دانشگاههاي پيشرو بود . در اين دوران اغلب تحقيقات در آزمايشگاههاي بل , ام آي تي , و جنرال الكتريك ( توليدكننده پيشروي كامپيوتر در آن زمان) صورت مي گرفت . اين سه كانون تحقيقاتي بر روي سيستم عاملي به نام

( Multiplexed Information and Computing System) MULTICS براي كامپيوتر بزرگ GE 645 تشريك مساعي كرده بودند . MULTICS پيروزي كاملي نبود, و بنابراين با شايستگي كنار گذاشته شد ( به همين ترتيب تلاشهايي كه بر روي كامپيوترهاي GE صورت گرفت) .
در ۱۹۶۹, كن تامپسون محققي در آزمايشگاههاي بل و يكي از طراحان MULTICS , بازي Space Travel را براي MULTICS نوشته بود . در روزهاي اشتراك زماني, كاربران بايد براي زماني كه بر روي كامپيوتر بزرگ صرف مي كردند, هزينه مي پرداختند . احتمالا Space Travel بازي خوبي بوده است, اما بر روي كامپيوتر بزرگ GE به خوبي اجرا نمي شد و براي بازي ۷۵ دلار هزينه در بر داشت .

حتي براي يك آزمايشگاه تحقيقاتي نيز اين مقدار اسراف وحشتناكي محسوب مي شد, بنابراين كن تامپسون و همكارش دنيس ريچي بازي را باز نويسي كردند تا بر روي كامپيوتر DEC PDP-7 كه آن موقع در آزمايشگاههاي بل بدون استفاده بود, اجرا شد . اما به منظور بردن Space Travel به DEC , تامپسون بايد سيستم عامل جديدي براي آن مي نوشت و در همين نقطه بود كه يونيكس امروزي ريشه گرفت .برايان كرنيگان ديگر محقق آزمايشگاههاي بل به اين سيستم عامل, لقب (Uuniplexed Information and computing System) UNICS را داد .

سيستم عامل فوق در اين راه به عنوان يونيكس شناخته شد و به كامپيوترهاي قدرتمند تري منتقل گرديد . در سال ۱۹۷۲, يونيكس به طرز دقيق بر روي ۱۰ كامپيوتر در حال اجرا بود, و در سال بعد تامپسون و ريچي, يونيكس را با زبان برنامه نويسي C بازنويسي كردند . زبان برنامه نويسي C قابل حمل تر بود و كمك كرد كه يونيكس به سيستم عاملي تبديل شود كه مي توانست بر روي انواع متفاوتي از كامپيوترها اجرا گردد .يونيكس به عنوان يك محصول توسط سرپرست حقوقيش AT&T دچار مشكل شد, چون دولت از معرفي محصولات كامپيوتري به صورت تجاري جلوگيري مي كرد؛ اين موضوع تا پيش از تجزيه AT&T ساير بازيگران را از صحنه بازار كامپيوتر خارج سازد. به دليل تقاضا, AT&T اصلا يونيكس را به دانشگاهها, دولت و بعضي از شركتها بخشيد ( با مطالبه قيمتي اسمي به منظور پرداختن هزينه مواد اوليه )

.
يونيكس در بين سالهاي ۱۹۷۴ تا ۱۹۷۹ در واقع يك محصول تحقيقاتي بود كه در دانشگاهها به منظور مقاصد آموزشي محبوبيت يافته بود . يونيكس ۲۹۷۴ شباهت چنداني به يونيكس ۱۹۷۹ نداشت؛ در طي اين سالها برنامه هاي كمكي و ابزارهاي بسياري به يونيكس افزوده شدند و در همان زمان نيز صنعت كامپيوتر به سرعت توسعه يافت و با اين توسعه, بازار بالقوه يونيكس رشد پيدا مي كرد .

در اين زمان توسعه يونيكس به آزمايشگاههاي بل و AT&T محدود نمي شد . در سال ۱۹۷۴ دانشگاه بركلي كاليفرنيا كار خود را بر روي يونيكس آغاز كرد و Berkeley Software Distribution را توليد نمود . BSD, شامل بسياري از برنامه هاي كمكي متداول مانند ويرايشگر متن vi و پوسته C بود كه مي توانيم آنها را در يونيكس امروزي پيدا كنيم . تحقيق بر روي BSD تا امروز ادامه دارد .

اما يكي از معماران BSD به نام بيل جوي, سان ميكروسيستمز را پريشان و هيجان زده نمود و در آنجا كار تحقيقات و توسعه خود را بر روي يونيكس پيشرفت داد . امروزه سان يكي از رهبران بازار ايستگاه كاري يونيكس است ( مجموعه SPARCstation اين شركت براي اغلب مردم مترادف ايستگاه كاري يونيكس مي باشد ), و SunOs تقريبا نگارش بسط يافته BSD است .

چندين شركت ديگر نيز از سان سرمشق گرفتند و نگارشهاي مخصوص به خودشان از يونيكس را توسعه دادند . AIX از آي بي ام, Ultrix از DEC , و HP-UX از هيوات پاكارد, همگي مثالهايي از يونيكس نيمه اختصاصي مي باشند . بعضي از نگارشها, مانند Coherent از Mark Williams Company , واقعا يونيكس نيستند, بلكه اين نگارش فقط نرم افزاري است كه مانند يونيكس واقعي به فرمانهاي يونيكس پاسخ مي دهد .

در سال ۱۹۸۰ هنگامي كه مايكروسافت نگارش كاهش يافته اي از يونيكس به نام زنيكس را منتشر ساخت, يونيكس در دسترس كاربران ريزكامپوترها نيز قرار گرفت . شايد ميكرسافت به دليل شكل دادن اتحادي با آي بي ام مشهورتر باشد . اين اتحاد, ( Disk Operating System ) DOC ميكرسافت را به معروفترين سيستم عامل ريز كامپيوتر تبديل ساخت . مسئوايت توسعه زنيكس به عهده شركت سانتا كروز ( شركتي كه بخشي از آن در مالكيت ميكروسافت است ), گذاشته است و هم اكنون SCO UNIX محصول مهمي در دنياي يونيكس مي باشد .

پيش از سال ۱۹۸۳, يونيكس وضعيت مطلوبي نداشت زيرا به طور رسمي پشتيباني نمي شد ؛ AT&T هيچ تضميني درباره آينده يونيكس نمي داد . اين وضع در سال ۱۹۸۳ تغيير كرد, AT&T در اين سال نگارش Unix system V Release 1 را منتشر ساخت و قول داد نرم افزاري كه براي اين نگارش ايجاد مي شود با تمام نگارششهاي آينده يونيكس از AT&T سازگار خواهد بود .

اما ساير نگارشهاي يونيكس چه شدند ؟ در فرآيند توسعه يونيكس تعدادي ناسازگاري در نگارشهاي گوناگون به وجود آمده بود كه همين امر طراحي و توسعه يكنواخت نرم افزار را تا حدي مشكل مي ساخت و مي دانيم كه هر چقدر هم سيستم عامل خوب باشد, اگر برنامه هاي كاربردي سودمندي وجود نداشته باشند, هيچ كس تصميم به خريداري و استفاده از سيستم عامل را نخواهد گرفت .

AT&T به همين دليل, اتحاد بزرگ, يعني UNIX System V Release 4 را معرفي نمود. اين جديدترين نگارش يونيكس, محبوب ترين و پراستفاده ترين فرمانهاي SunOs, BSD, UNIX System V Release 3.2 و Xenix را تركيب مي كند .
هم اكنون يونيكس در مالكيت ناول است كه يونيكس را به عنوان بخشي از خريد UNIX System Labs به دست آورد . از آنجايي كه صنعت يونيكس به منظور تعيين استانداردها پيش مي رود, يونيكس فراتر از كنترل يك شركت است . حتي ناول نيز شعبه يونيكس را به گروه صنعتي X/Open واگذار نموده است .

هنوز هم نگارشهاي متفاوتي از يونيكس در سرتاسر بازار شناور هستند . سولاريس از سان را داريم كه براي ايستگاههاي كاري سان و كامپيوترهاي شخصي مبتني بر اينتل در دسترس است . Unixware از ناول را داريم ؛ و بسياري از كاربران نيز در حال كشف قدرت يونيكس با لينوكس هستند, نگارشي با كاري مشابه يونيكس كه به صورت مجاني در دسترس قرار دارد و براي كامپيوترهاي شخصي نوشته شده است .

به عنوان يك كاربر, مدير سيستم يا طراح نرم افزار, نبايد درباره اين نگارشهاي گوناگون و اين كه آيا مشكلاتي براي شما ايجاد خواهند كرد, نگران باشيد . اين نگارشهاي مختلف در يك مورد اشتراك دارند و آن يك مورد پيروي از استانداردها مي باشد . در واقع, امروزه نمي توانيد سيستم عامل, محدودتري پيدا كنيد كه آينده اش در دست تعدادي خاص باشد .
چرا استانداردها اهميت دارند ؟ زيرا استانداردها تضمين مي كنند برنامه اي كاربردي كه براي بك نوع كامپيوتر طراحي مي شود و از استانداردها پيروي مي كند بر روي كامپيوتري از نوع ديگر نيز اجرا خواهد شد . گروههاي مختلفي در شكل دهي استانداردهاي يونيكس شركت دارند : ANSI, UNIX System Labs ( موسسه استانداردهاي ملي آمريكايي كه استانداردهاي POSIX را توسط موسسه مهندسين برق و الكترونيك, IEEE , سرپرستي مي كند ) و X/Open .

۲-۳- چرا يونيكس ؟
يونيكس به دلايل گوناگوني به سيستم عامل بسيار محبوبي تبديل شده است :
يونيكس قابل حمل است . چون يونيكس به زبان برنامه نويسي C نوشته مي شود و مقيد به هيچ سخت افزار خاصي نمي باشد, تقريبا به هر نوع كامپيوتري برده شده است . كامپيوترهاي شخصي, آميگاها, مكينتاشها, ايستگاههاي كاري, كامپيوترهاي كوچك, كامپيوترهاي بزرگ, و سوپر كامپيوتر ها از هر نوعي, سيستم عامل يونيكس را اجرا مي كنند .

اين موضوع يعني نرم افزاري كه بر روي كامپيوتري نوشته مي شود , به كامپيوتر ديگري قابل انتقال است . شركتها ديگر به توليد كننده واحدي وابسته نمي باشند . آيا تا كنون عبارت فني سيستمهاي باز را شنيده ايد ؟ از ديدگاههاي مختلفي اين عبارت مترادف يونيكس مي باشد . در خريد سخت افزار و نرم افزاري كه بايستي بتواند در طرح محاسباتي شما مجتمع گردد, آزاد هستيد. بله, هميشه در هنگام آميختن انواع و معماريهاي سخت افزاري متفاوت مشكلاتي وجود خواهد داشت ,

اما حداقل لزومي ندارد كه تمام تجهيزات خود را از توليدكننده يا فروشنده واحدي خريداري كنيد . چنين توليدكننده اي مي تواند با سخت افزار و نرم افزار اختصاصي, شما را در موقعيت سختي قرار دهد . نمي خرد . در عوض, سيستم عاملي را انتخاب مي كنيد كه قادر به اجراي برنامه هاي كاربردي دلخواهتان باشد . يونيكس برنامه هاي كاربردي قدرتمندي را در تقريبا هر نوع نرم افزار از نشر الكترونيكي تا خوكارسازي اداري را دارا مي باشد .
• يونيكس سيستم عاملي چندكاره مي باشد . به طور همزمان بيش از يك كاربر مي توانند از سيستم يونيكس استفاده كنند . منابع سخت افزاري با ارزش مانند چاپگرها و سرويس دهنده هاي بزرگ توسط افراد بسياري قابل استفاده مي باشند.

• يونيكس سيستم عاملي چند وظيفه اي مي باشد . مي توانيد دو وظيفه را به طور همزمان انجام دهيد : به عنوان مثال مي توانيد در هنگامي كه پست الكترونيكي خود را مي خوانيد, در پس زمينه پرونده اي متني را قالب بندي كنيد . در حين آنكه مفهوم چند وظيفه اي احتمالا آن قدري كه براي نظريه دانان كامپيوتر اهميت دارد, براي اغلب كاربران حائز اهميت نيست, اما بعضي از اوقات عملي است كه در اختيارداشتن آن مفيد مي باشد .
• شبكه سازي در يونيكس تعبيه شده است . امروزه يكي از بزرگترين چالشها, متصل ساختن انواع متفاوتي از كامپيوترها در سرتاسر نواحي كوچك و بزرگ مي باشد . در يونيكس, شبكه سازي در برنامه ها و برنامه هاي كمكي گوناگوني تعبيه مي شود .

۳-۳- سيستم عاملهاي سازگار با يونيكس
برخي از سيستم هاي عامل سازگار با يونيكس در زير معرفي شده اند :
Solaria محصول شركت Sun Microsystems
IRIX محصول شركت Silicon Graphics
AIX محصول شركت IBM

HP-UX محصول شركت Hewlen Packard
SCO-UNIX محصول شركت Santa Cruz Operation.Inc
FreeBSD نسخه رايگان يونيكس محصول دانشگاه بركلي آمريكا
OpenBSD محصول دانشگاه بركلي به همراه كدهاي برنامه آن . اين سيستم عامل با شعار » تلاش براي خلق امن ترين سيستم دنيا « ارائه شده است .

• Linux سيستم عاملي است به همراه كدهاي رايگان كه ابتدا توسط يك دانشجوي فنلاندي به نام لينوس توروالدز نوشته شد و بعدا توسط شركتهاي مختلفي ( با قيمت ناچيز) توسعه يافت . اسامي شركتهايي كه نسخه هاي لينوكس را توليد و عرضه كرده اند, عبارتند از :

Readhat Caldera
Corel Debian
Slackware Storm
SuSE YellowDog
Turbo Linux Mandarke

• SunOS نسخه قديمي تر يونيكس كه قبل از سولاريس توسط شركت Sun Microsystem تهيه شده بود و هنوز در برخي از محيطها استفاده مي شود .
تمام اين نسخه هاي متعدد, عظيم و جهاني از تفكر افرادي نشات گرفته اند كه سي يال پيش در شركت AT&T و در سكوت و بدون حمايتهاي جهاني اقدام به پياده سازي يونيكس كردند . بسياري از آنها امروزه در دوران كهولت هستند و آن گذشته روشن را به دست فراموشي سپرده اند و برخي نيز در نقش پيش كسوتان و پدران معنوي هنوز در پالايش و رشد آن مي كوشند .

سيستم مديريت فايل, فراخواني روالهاي سيستمي, فرامين و برخي از گزينه هاي پيكر بندي در نسخه هاي گوناگون يونيكس به روشهاي متفاوتي پياده سازي شده اند كه اين تفاوتها ناشي از نياز تكنولوژيك روز بوده است ؛ ولي در مجموع خطوط اصلي اين سيستم عامل توسط دو موسسه تعيين مي شود :
• گروه توسعه يونيكس در شركت AT&T
• گروه توسعه يونيكس BSD در دانشگاه بركلي
سولاريس, HP-UX از خطوط تعيين شده توسط AT&T تبعيت مي كنند در حالي كه FreeBSD , OpenBSD و لينوكس به گروه توسعه BSD گرايش دارند . سيستمهاي عامل AIX و IRIX تلفيقي از نكات برجسته خط مشي هردو گرئه هستند لذا اندكي پيچيده تر به نظر مي رسند .

۴-۳- معماري يونيكس
يونيكس مانند MS-DOS و OS/2 يك سيستم عامل است : نرم افزاري كه كامپيوتر فيزيكي را كنترل و فرامين ما را تفسير مي كند .
سيستم عامل اعمال بسياري انجام مي دهد :
• عملا برنامه را اجرا مي كند . هنگامي كه نام پرونده را در خط فرمان وارد مي كنيد, سيستم عامل با بارگذاري برنامه در حافظه كامپيوتر و اجراي آن كنترل را به دست مي گيرد . تنظيمها در سيستم عامل مي توانند در كارآيي واقعي برنامه ها اثر بگذارند .

• تمام ورودي و خروجي را در كامپيوتر كنترل مي كند . هنگامي كه پرئنده اي را حذف مي كنيد سيستم عامل به كار خود ادامه مي دهد و ركوردي از اين پرونده را حذف مي نمايد . هنگامي كه پرونده اي را ذخيره مي كنيد, سيستم عامل تضمين مي كند كه پرونده فوق بر روي پرونده موجودي نوشته نمي شود . سيستم عامل آنچه را كه بر روي نمايشگر ( يا نمايشگرها ) نمايش مي يابد, كنترل مي كند و امكان مي دهد كه فرامين را توسط صفحه كليد يا ماوس وارد كنيد .

يونيكس اين اعمال را از طريق سه بخش مجزا اما بسيار يكپارچه انجام مي دهد : پوسته و. هسته .
هسته, مسئول تمام اعمال اوليه سيستم عامل مي باشد . هسته در اوليه ترين سطح خود, وظيفه اداره حافظه كامپيوتر و چگونگي تخصيص دستورالعملهاي نرم افزاري به اين حافظه, اجراي تمام فرامين, سرپرستي سيستم پرونده, رسيدگي به خطاها و غيره را به عهده دارد . هنگامي كه كامپيوتر روشن مي شود,

هسته شروع به كار مي كند و بدون توجه به نرم افزار يا يا پوسته اي كه اجرا مي كنيد, در حافظه باقي مي ماند . به عنوان يك كاربر, نيازي نيست كه درباره هسته فكر كنيد ؛ تنها بايد بدانيد كه هسته كار مي كند . سيستم پرونده به پيگيري پرونده ها و محل قرارگيري آنها مي پردازد . هر چيزي در يونيكس, خواه پرونده اي كه در يك پردازشگر متن ايجاد مي شود يا راه اندازي كه براي فرستادن دستورالعملها به چاپگر استفاده مي گردد, در پرونده اي شامل مي شود . اگر زمينه داس يا مكينتاش را داشته باشيد, متوجه شباهتهاي زيادي بين زيرفهرستها ي داس و زير فهرستهاي يونيكس خواهيد شد .
پوسته يا مفسر خط فرمان, بخشي از يونيكس است كه عملا در اغلب موارد در حال استفاده از آن خواهيد بود . در اصل پوسته ها دستورالعملها را مي گيرند و آنها را به دستوراتي قابل فهم توسط هسته تبديل مي كنند . هنگامي كه برنامه را اجرا مي كنيد, به پوسته مي گوييد كه برنامه اي از هسته را اجرا نمايد .

۱-۴-۳- هسته سيستم عامل و پروسه ها
يونيكس از ساختار پيمانه اي ( ماجولار) استفاده كرده است به گونه اي كه در پائين ترين سطح يك هسته با بستر سخت افزار درگير است و تمام برنامه ها به صورت هويتي مستقل حول هسته شكل مي گيرند . در يونيكس هسته خودش يك برنامه اجرايي است كه قبل از هر برنامه ديگر اجرا مي شودو كنترل كل سخت افزار را به دست مي گيرد و دسترسي پروسه ها به سخت افزار فقط از طريق هسته ممكن است . اين هسته در سيستم عامل يونيكس Kernel ناميده شده است . هسته، قلب ( و مغز) سيستم عامل محسوب مي شود و هيچ برنامه اي بدون آن نخواهد توانست از مؤلفه هاي سخت افزاري سيستم استفاده نمايد .

براي شروع اجراي يك برنامه در محيط يونيكس، هسته يك پروسه ايجاد مي نمايد . پروسه برنامه اي در حال اجراست كه دو قسمت زير را در بر مي گيرد :
كدهاي اجرايي برنامه
• حافظه اختصاص داده شده به آن برنامه به عنوان فضاي كاري ( Workspace ) ( تفاوت مفهوم برنامه – program – با پروسه – procces – از همين نكته ناشي مي شود .)

برنامه – program – در حال اجرا مثل سرويس دهنده وب و پست الكترونيكي كه فضا و منابع لازم را در اختيار دارند پروسه ناميده مي شوند . پروسه ها را به صورت حبابهايي (يا بادكنك) فرض كنيد كه بر روي هسته سيستم عامل تشكيل مي شوند و تمام هستي و بضاعت خود را از هسته دارند و هر گونه اختلال در هسته آنها را نابود خواهد كرد . هسته با ايجاد پروسه ها اين حبابها را خلق مي كند و بر عملكرد آنها نظارت دارد : CPU را در اختيار آنها قرار مي دهد به سادگي آنها را نابود مي كند .

محيط يونيكس محيطي چند وظيفه اي يا Multitask است و بالطبع در هر لحظه فقط يكي از پروسه ها، CPU را در اختيار دارد . پروسه هاي مختلف به صورت اشتراك زماني ( Time Sharing ) از CPU استفاده مي كنند و هسته به كمك سخت افزار، زمان در اختيار گرفتن CPU توسط يك پروسه را تنظيم و كنترل مي نمايد .
هسته سيستم عامل همچنين فضاي حافظه مورد نياز را در اختيار پروسه ها قرار مي دهد و باز هم به كمك سخت افزار جلوي تخطي پروسه ها از حريم فضاي حافظه اختصاص يافته به آنها را در بر مي گيرد . فضاي حافظه اختصاص داده شده به هر پروسه، از دسترس پروسه هاي ديگر مراقبت خواهد شد و هر پروسه اي كه سعي كند در خارج از فضاي حافظه خود چيزي بنويسد يا بخواند توسط هسته سيستم عامل متوقف (و نابود) خواهد شد .

۲-۴-۳- ساختار سيستم پرونده يونيكس
در سيستم عامل يونيكس هر چيزي به صورت يك پرونده تلقي و مدل مي شود مثلا حتي دستگاههاي جانبي مانند چاپگر يا پورتهاي مخابره داده در قالب يك فايل مدل شده اد و برنامه نويس وقتي مي خواهد اطلاعاتي را چاپ كند يا آنها را به منظور مخابره روي پورت COM بفرستد، به سادگي فايل استاندارد آن را باز كرده ، درون آن مي نويسد و سپس فايل را مي بندد .

اين يكي از مفاهيم عالي يونيكس است كه در سطح برنامه نويسي، برنامه نويس درگير جزئيات سخت افزاري و نرم افزاري اين ابزارها نخواهد شد بلكه اين جزئيات در سطح سيستم عامل حل و فصل مي شود . عناصر پروسه ها، صفها و بافرها نيز به صورت فايل مدل سازي شده اند . به بيان ساده، پرونده، ساختار كامپيوتر به منظور نگهداري اطلاعات مي باشد . اين اطلاعات در قالبي الكترونيكي قابل استفاده توسط كامپيوتر- بر حسب بيتها- ذخيره مي گردند .

بيت صفر يا يك است ؛ هنگامي كه اين بيتها در كنار يكديگر قرار مي گيرند، كاراكترهايي را شكل مي دهند كه من و شما قادر به تشخيص آنها مي باشيم . در هر بايت هشت بيت، در هر كيلوبايت ۱۰۲۴ بايت، و در هر مگابايت ۱۰۴۸۵۷۶ بايت وجود دارد .
البته نيازي به پيگيري تمام ۱۰۴۸۵۷۶ بايت در مستند يك مگا بايتي خود نداريد ؛ يونيكس نيز براي همين است . فقط بايد با استفاده از فرماني در يونيكس (مانند cat) يا برنامه اي كاربردي (واژه پرداز، صفحه گسترده، مدير پايگاه داده ها، برنامه نشر روميزي و غيره) پرونده را ايجاد و آن را نامگذاري كنيد .

هر پرونده اي داراي نام مي باشد . نام پرونده حداكثر ۱۴ كاراكتر مي باشد (در System V Release 4 طول اسامي پرونده مي تواند نامحدود باشد، اما اگر ۱۴ كاراكتر اول در دو پرونده مجزا يكسان باشند، Release 4 اسامي اين دو پرونده را يكسان در نظر مي گيرد) . در ساير نگارشهاي يونيكس، مانند BSD، مي توان اسامي پرونده بسيار طولاني تر تا ۲۵۶ كاراكتر را داشت.

در هنگام نامگذاري پرونده ها در سيستم يونيكس رسومي وجود دارد . با وجود اين كه پسوندهاي پرونده در يونيكس الزامي نمي باشند، اما اين پسوندهاي سه كاراكتري كه توسط داس تحميل مي گردند، به منظور نشان دادن محتوي پرونده به استانداردي غيررسمي در يونيكس تبديل شده اند .
ساختار پرونده در يونيكس را مي توانيد به عنوان نوعي شجره نامه در نظر بگيريد . اگر بخواهيم فني صحبت كنيم ، سيستم پرونده يونيكس، سيستم پرونده سلسله مراتبي ناميده مي شود .

نكته :
از آنجايي كه سيستم عامل يونيكس با زبان برنامه نويسي C نوشته شده است نسبت به بزرگي و كوچكي حروف حساس است .

در راس سيستم فايل يونيكس شاخه root قرار دارد كه به سادگي شاخه */* نامگذاري شده است و تمام شاخه ها و فايلها را در بر مي گيرد. تمام زير شاخه هاي ديگر ( Subdirectories ) درون اين شاخه قرار مي گيرند و كاربران فقط به برخي از آنان دسترسي خواهند داشت . عاليترين سطح دسترسي به سيستم فايل در اختيار كاربري است كه ريشه (با تمام زيرشاخه هاي آن) تسلط دارد . در محيط يونيكس اگر چنين مجوزي داشته با شيد با تغيير شاخه به شاخه / در راس سيستم فايل قرار خواهيد گرفت كه اين كار با اجراي دستور زير ممكن خواهد بود .
Ş cd \

هر فايل درون يكي از شاخه هاي اين ساختار درختي ذخيره مي شود و براي دسترسي به آن غير از نام فايل بايد سلسله مراتب شاخه هاي آن نيز مشخص باشد . مثلا اگر فايلي با نام hack.txt داشته باشيد كه در شاخه Usr ذخيره شده با آدرس usr/hack.tex قابل شناسايي و ذخيره و بازيابي است .

۳-۴-۳- پوسته يونيكس
هنگامي كه با سيستم يونيكس ارتباط برقرار مي كنيد، فورا به پوسته برقراري ارتباط خود مي رويد . اطلاعات مربوط به اين پوسته، همچنين ساير اطلاعات برقراري ارتباط، و اطلاعات برقراري ارتباط تمام كاربران سيستم، در پرونده /etc/passwd قرار دارد (واضح است كه اين پرونده ابزاري براي مدير سيستم مي باشد، و براي كاربر مدام نمي باشد) . اين پرونده بر حسب كاربر سازمان دهي مي شود كه در آن هر خط حاوي اطلاعات اوليه اي مانند، ID برقراري ارتباط و غيره درباره هر كاربر مي باشد .

آخرين فيلد در خط مربوط به شما، پوسته اي را كه بعد از برقراري ارتباط قصد اجراي آن را داريد، فهرست مي كند . اين امر نقش بسيار مهمي در استفاده روزمره از يونيكس ندارد، اما نشان مي دهد كه هر جنبه اي از كاربرد يونيكس به نوعي توسط پوسته اداره مي شود . پوسته مانند هر برنامه يونيكس يك برنامه مي باشد . اما با مسئوليت بسيار مهم و منحصر به فردي تقويت مي گردد :

پوسته نقش ميانجي بين را بين كاربر و سيستم يونيكس ايفا مي كند . به كلامي ديگر, پوسته دستورالعملهاي كاربر را به دستورالعملهاي قابل رسيدگي براي سيستم يونيكس ترجمه مي كند . پوسته تمام جنبه هاي استفاده از يونيكس را آسان مي سازد, به سيستم مي گويد كه پرونده هاي به خصوص را در كجا پيدا كند, فهرست شخصي شما در كجا قرار دارد و در كل چگونه با حضورتان به عنوان يك كاربر سروكار داشته باشيد . اين اطلاعات محيط يونيكس ناميده مي شود, واژه اي كه با شروع به تغيير دادن و پيشرفته ساختن استفاده خود از يونيكس مكررا با آن برخورد خواهيد كرد .

يونيكس, پوسته هاي بسياري دارد . در اغلب موارد, تمايل بر اين است كه از پوشه انتخاب شده توسط مدير سيستم استفاده كنيد, زيرا اين كار باعث به وجودآمدن سطحي از انطباق بين كاربران مي شود . ساير كاربران در ايستگاههاي كاري تك كاربره و ايستگاههاي شخصي در انتخاب پوسته كمي از آزادي بيشتري برخوردار هستند . در اينجا برخي از پوسته هاي معروف توضيح داده مي شوند :

• Sh , پوسته Bourene . اين پوسته اي است كه در سال ۱۹۷۹ با نشر System V از يونيكس عرضه گرديد, و از آن موقع تا كنون چندان تغيير نكرده است . اين پوسته نام طراح خود, Stephen Bourne را يدك مي كشد .
• Ksh , يا پوسته Korn . اين پوسته توسط David Korn در آزمايشگاههاي بل طراحي گرديد, پوسته Korn با افزودن خصوصيات مفيدي كه ابتدا در پوسته C معرفي شدند (مانند تاريخچه كار و نامهاي مستعار) بر مبناي عملكرد پوسته Bourne ساخته مي شود . علاوه بر اين دست نوشته ها و برنامه هايي كه براي پوسته Bourne نوشته مي شوند, بدون هيچ تغييري در پوسته Korn قابل استفاده هستند .

• Csh , پوسته C . اين پوسته توسط بيل جوي (بنيانگذار شركت Sun Microsystems ) در حالي كه بر روي نگارش يونيكس بركلي ( يا BSD ) كار مي كرد, طراحي گرديد . پوسته C با معرفي تاريخچه كار, نامهاي مستعار و ساير خصوصيات نسبت به پوسته Burn بهبود مي يابد . اين پوسته مانند زبان برنامه نويسي C , ساختيافته است . C و يونيكس تاريخچه مشترك مهمي دارند, خود يونيكس به زبان برنامه نويسي C طراحي شد و اين عامل مهمي براي بردن آن به بسياري از معمارريهاي متفاوت سخت افزاري بود .

اغلب طراحي برنامه يونيكس به زبان برنامه نويسي C صورت مي گيرد .
• Jsh , پوسته كار . گسترشي از پوسته Bourn مي باشد . پوسته كار ابزارهايي تخصصي را براي رسيدگي به چندين كار شكل مي دهد .
• bash يا Bourn Again Shell . اين پوسته توسط Free Software Foundation طراحي گرديد . پوسته bash نيز با افزودن خصوصيات مفيدي كه در پوسته هاي C و Korn يافت مي شود, بر مبناي پوسته Bourn ساخته مي گردد .

۵-۳- پروسه هاي كليدي يونيكس
تمام پروسه هايي كه به عنوان سرويس دهنده هاي كليدي سيستم اجرا مي شوند از عمومي ترين آنها يعني سرويس دهنده وب تا كم كاربردترين آنها (مثل Character Generator) بايد توسط پروسه هاي ديگر راه اندازي و فعال شوند . يعني پروسه هاي سرويس دهنده به صورت مستقل و قائم به خود اجرا نخواهند شد بلكه پروسه هاي كليدي ديگري آنها را راه اندازي خواهند كرد . به عبارت ديگر هسته خود را درگير اجراي پروسه هاي مختلف نمي كند بلكه چند پروسه مديريتي و كليدي را اجرا كرده و وظيفه فعال سازي و اجراي پروسه هاي سرويس دهنده را به اين پروسه هاي كليدي محول مي نمايد . اين پروسه هاي كليدي كه در حين راه اندازي سيستم اجرا مي شوند به شرح ذيل هستند :

۱-۵-۳- پروسه init
اين دايمون معمولا اولين پروسه اي است كه پس از هسته, شروع به كار مي كند و پدر تمام پروسه هاي كاربردي است كه پس از راه اندازي سيستم, اجرا مي شوند . اين پروسه پس از پوت شدن سيستم, اسكريپتهاي پيكر بندي پيكر بندي را اجرا مي نمايد تا راه اندازي سيستم با اجرا شدن پروسه هاي لازم تكميل گردد . محل قرارگرفتن اسكريپتهاي پيكربندي سيستم, به طور معمول /etc/rc.d. /etc/init.d مي باشد . بر اساس اين فايلها پروسه هاي ثبت وقايع (logger ), برنامه زمانبندي و پروسه هاي راه انداز واسطهاي شبكه (Network Interface ) پيكربندي و اجرا مي شوند . همچنين init , متولي راه اندازي پروسه سرويس دهنده هاي مهمي است كه پس از اجرا به صورت دايمون به يك شماره پورت خاص گوش مي دهند, ترافيك بسته هاي TPC يا UDP را دريافت و پردازش مي كنند و با كاربران در تمايل هستند . برخي از اين دايمونها عبارتند از :

 Httpd : سرويس دهنده وب كه تقاضاي HTTP و HTTPS را پردازش مي كند و به طور معمول به پورت شماره ۸۰ گوش مي دهد .
 Sendmail : سرويس دهنده پست الكترونيكي در محيط يونيكس كه به پورت شماره ۲۵ گوش مي كند .
 NFS : پروسه سرويس دهنده اي كه در محيط يونيكس فايلها را به اشتراك مي گذارد . (Network File System ) اين سرويس دهنده در ابتدا توسط شركت Sun Microsystems ابداع شد ولي بعدا تمام سيستمهاي عامل سازگار با يونيكس از آن بهره گرفتند .

در ادامه اين سه سرويس دهنده را اندكي بيشتر بررسي خواهيم كرد . اين پروسه ها پس از اجرا, به شماره پورت مربوطه گوش داده و به حالت انتظار فرو مي روند تا زماني كه تقاضاي يك ارتباط دريافت شود يا ترافيكي به آن شماره پورت وارد گردد .

دقت كنيد كه سه سرويس دهنده فوق داراي حجم ترافيك ورود بسيار بالايي هستند و بايد به طور دائم در حافظه آماده پردازش اين ترافيك باشند لذا احضار آنها روي سيستم فايل تاخير زيادي به سيستم تحميل خواهد كرد به همين دليل اين پروسه هاي سرويس دهنده, به طور مستقل توسط init در حين راه اندازي سيستم اجرا شده و به طور ثابت و دائم در حافظه باقي خواهند ماند . از طرف ديگر سرويسهاي ديگري مثل TelNet يا FTP به طور مداوم مورد استفاده قرار نمي گيرند و ترافيك زيادي ندارند لذا به صورت دائم و مستقل به حافظه بار نخواهند شد .

اگر تمام پروسه هاي سرويس دهنده اي كه به يك شماره پورت خاص گوش مي دهند به درون حافظه بار شوند و به طور مستقل و دائم به حالت انتظار بروند, كارآيي سيستم را كاهش داده و منابع آن با لاخص حافظه را تلف خواهند كرد . براي افزايش كارآيي و صرفه جويي در منابع سيستم به غير از پروسه هاي Httpd , NFS و Sendmail كه مستقيما توسط init اجرا مي شوند, هيچ پروسه اي نمي تواند به طور مستقل به يك شماره پورت گوش بدهد . در يونيكس پروسه اي به نام (Internet Daemon) inetd وجود دارد كه به تمام شماره پورتهاي TCP يا UDP گوش مي دهد و در هنگام ورود ترافيك به هر يك از پورتها پروسه هاي متناظر با آن را فراخواني كرده و اجرا مي نمايد .