UNIX یک سیستم عامل قدرتمند است که ابتدا توسط کن تامپسون و دنیس ریچی در آزمایشگاه های AT&T Bell در سال 1970 توسعه یافت. سیستم عامل یونیکس به دلیل ویژگیهای بسیار قابل تقدیرش مانند چند وظیفهای (multitasking)، انعطافپذیری و غیره، در موسسات علمی، مهندسی و آموزشی رایج است. در UNIX، فایل سیستم یک ساختار سلسله مراتبی از فایلها و دایرکتوریها می باشد که کاربران با استفاده از آن می توانند فایلها و اطلاعات را ذخیره و بازیابی نمایند.
ویژگیهای سیستم عامل یونیکس
در این بخش به بررسی کامل ویژگیهای سیستم عامل یونیکس پرداخته می شود.
تصویر(1)
چند وظیفهای: سیستم عامل یونیکس یک سیستم عامل چند وظیفهای است که به شما امکان اجرای چندین وظیفه از طریق یک ترمینال را میدهد، به طوری که یک کار در پیش زمینه (foreground) و وظایف دیگر در پسزمینه (background) انجام می شوند.
چند کاربره: در سیستم عامل UNIX امکان پشتیبانی از چند کاربر جهت دسترسی به منابع کامپیوتری همانند حافظه (memory) اصلی، دیسک سخت، tape drive (دستگاه ذخیره داده است که فرایند خواندن و نوشتن را روی یک نوار مغناطیسی انجام می دهد) و... وجود دارد. کاربران میتوانند از ترمینالهای مختلف وارد سیستم شده و وظایف متفاوتی را اجرا نمایند. در این حالت، از منابع یک سیستم یا سرور به صورت اشتراکی استفاده می شود. سیستم عامل UNIX بر اساس اصل اشتراک گذاری زمان (time-sharing) عمل میکند. به این منظور یک زمانبندی (scheduler) صورت می گیرد و زمان پردازنده (CPU) را به چندین قسمت کوچک که به آنها برش زمانی یا time slice گفته میشود، تقسیم می نماید و طبق برنامه، هر بخش آن به یک کاربر اختصاص می یابد. این برش زمانی بسیار کوتاه است و زمانی که به پایان میرسد، کنترل به کاربر بعدی در سیستم منتقل میشود. هر کاربر دستورات را طی برش زمانی خود اجرا میکند.
قابلیت حمل: این ویژگی باعث میشود که UNIX روی انواع ماشینها و پلتفرمها کار کند و با انتقال آسان کد به هر سیستم کامپیوتری، با آنها سازگار شود. قابلیت حمل، به دلیل اینکه بخش قابل توجهی از سیستم عامل یونیکس به زبان C می باشد و تنها بخش کوچکی به زبان اسمبلی برای سختافزارهای خاص کدنویسی شده، به وجود آمده است.
امنیت و حفاظت فایل: به عنوان یک سیستم چند کاربره، UNIX اهمیت ویژهای به امنیت فایل و سیستم میدهد. در یونیکس سطوح امنیتی مختلفی از جمله اختصاص نام کاربری و رمز عبور به هر کاربر جهت انجام فرایند احراز هویت، وجود دارد. برای فایلها نیز سطوح دسترسی مختلفی اعمال می شود که شامل خواندن، نوشتن و اجرای فایلها می باشد. در نهایت، با استفاده از رمزگذاری، فایلها به یک فرمت غیرقابلخواندن تغییر پیدا کرده و از دسترسی غیرمجاز جلوگیری می شود.
ساختار دستورات: دستورات UNIX ساده و قابل درک هستند. از جمله این دستورات می توان به "cp"، "mv" و.. اشاره کرد. دستورات یونیکس به حروف بزرگ و کوچک حساس هستند و باید با حروف کوچک وارد شوند.
ارتباطات: یک ویژگی عالی در UNIX است که به کاربر امکان برقراری ارتباط با سراسر جهان را میدهد. این سیستم عامل از ابزارهای مختلف ارتباطی همچون دستورات write، mail، talk و.. پشتیبانی می کند.
متن باز: UNIX یک سیستم عامل متن باز می باشد و به صورت آزاد در دسترس همه کاربران است. UNIX یک پروژه توسعه جامعه محور به شمار می رود.
مانیتورینگ و مدیریت منابع: UNIX گزارشی از کارهایی که توسط کاربر انجام شده است را نگهداری میکند. این ویژگی باعث بهبود عملکرد سیستم از نظر نظارت بر پردازنده مرکزی (CPU) و بررسی فضای دیسک میشود. این قابلیت به شما اجازه میدهد تا گزارش مصرف دیسک هر کاربر را داشته باشید و در خصوص استفاده از فضای دیسک محدودیت اعمال نمایید. همچنین میتوانید به هر کاربر میزان فضای مشخصی از دیسک را اختصاص دهید. کاربر روت میتواند وظایف مربوط به مدیریت منابع را با استفاده از دستورات مختلف مانند quota، df، du و.. انجام دهد.
ابزارها و امکانات یونیکس: سیستم عامل UNIX دارای امکانات و ابزارهای مختلفی همچون UNIX grep,، sed و awk و.. می باشد. این سیستم عامل حاوی ابزارهای عمومی دیگری همچون کامپایلرها، مفسرها، برنامههای شبکه و... است و انواع برنامههای سرور با ابزارهای خدمات راه دور و مدیریتی را نیز شامل می شود.
ساختار لایههای سیستم عامل یونیکس به شرح زیر است:
تصویر(2)
در حین کار با سیستم عامل یونیکس، چندین لایه از این سیستم عامل، بین سختافزار کامپیوتر و کاربر تعامل برقرار میکنند. در ادامه به بررسی هر یک از لایههای سیستم یونیکس پرداخته می شود.
لایه یک: سختافزار
این لایه از UNIX شامل تمام اطلاعات مرتبط با سختافزار در محیط یونیکس است.
لایه دوم: هسته (کرنل)
قلب سیستم عامل که مسئول کنترل کل عملکرد آن است، هسته یا کرنل نامیده میشود. هسته UNIX روی سختافزار مشخصی اجرا میگردد و به طور موثر با سختافزار تعامل دارد.
تصویر(3)
همچنین به عنوان device manager (مدیر دستگاه)، توابع ارزشمندی را برای پروسه هایی که نیازمند دسترسی به دستگاههای جانبی متصل به کامپیوتر هستند، فراهم می کند. کرنل این دستگاهها را از طریق درایورهای مرتبط با آنها، کنترل خواهد کرد.
کرنل مدیریت حافظه را نیز انجام میدهد. پروسه ها برنامههای اجرا شده ای هستند که توسط مالک آن که می تواند کاربر یا سیستم باشد، آغاز شده اند. سیستم باید دسترسی لازم به حافظه را برای تمامی پروسه ها فراهم نماید. برخی از پروسه ها نیازمند حافظه زیادی جهت اجرا هستند. به منظور استفاده بهینه از حافظه اصلی و اختصاص مقدار کافی حافظه به هر پروسه، از تکنیکهایی همچون paging، swapping و حافظه مجازی استفاده میشود.
لایه ۳: شل یا پوسته
شل یک مفسر است که دستورات وارد شده توسط کاربر در ترمینال را تفسیر نموده و برنامهی مورد نظر را فقط با یک دستور ساده فراخوانی میکند. همچنین، تاریخچهای از لیست دستوراتی که شما وارد کردهاید را ذخیره مینماید. چنانچه نیاز به تکرار یک دستور باشد میتوانید به سادگی با استفاده از کلیدهای جهت بالا و پایین، بین لیست دستورات وارد شده اسکرول نمایید. همچنین با دستور history، لیست دستورات قبلی قابل مشاهده خواهد بود. شل از دستورات مختلفی مانند cat، mv، grep، id، wc و.. پشتیبانی میکند.
تصویر زیر، انواع شل در سیستم عامل یونیکس را نمایش می دهد:
تصویر(4)
Bourne Shell: این پوسته به طور ساده shell خطاب می شود و اولین شل پیش فرض در سیستم های یونیکس است. Bourne Shell هنوز هم پرکاربردترین شل موجود در سیستمهای یونیکس به شمار می رود.
C Shell: یک شل محبوب دیگر است که به صورت پیشفرض در سیستمهای یونیکس موجود می باشد. C Shell توسط دانشگاه کالیفرنیا در برکلی توسعه داده شده و برخی از نقایص Bourne Shell را برطرف نموده است.
Korn Shell: این شل توسط دیوید کورن ساخته شده است تا مشکلات مربوط به تعامل کاربر در Bourne Shell و عیوب اسکریپتنویسی در C shell را رفع نماید.
لایه ۴: لایه برنامههای کاربردی
این لایه به عنوان بیرونی ترین لایه، وظیفه اجرای برنامههای کاربردی خارجی را بر عهده دارد. توزیعهای یونیکس معمولاً با چندین برنامهی کاربردی مفید به صورت استاندارد عرضه میشوند. از جمله این برنامه ها می توان به ویرایشگر emacs، StarOffice، مشاهدهگر تصویر xv، کامپایلر g++ و.. اشاره کرد.