ورودی و خروجی رایانه
ورودی/خروجی
بخش ورودی/خروجی (I/O) این امکان را به رایانه میدهد تا اطلاعات را از جهان بیرون تهیه و نتایج آنها را به همان جا برگرداند. محدوده فوق العاده وسیعی از دستگاههای ورودی/خروجی وجود دارد، از خانواده آشنای صفحهکلیدها، نمایشگرها، نَرمدیسک گرفته تا دستگاههای کمی غریب مانند رایابینها (webcams). (از سایر ورودی/خروجیها میتوان موشواره mouse، قلم نوری، چاپگرها (printer)، اسکنرها، انواع لوحهای فشرده(CD, DVD) را نام برد).
چیزی که تمامی دستگاههای عمومی در آن اشتراک دارند این است که آنها رمزکننده اطلاعات از نوعی به نوع دیگر که بتواند مورد استفاده سیستمهای رایانه دیجیتالی قرار گیرد، هستند. از سوی دیگر، دستگاههای خروجی آن اطلاعات به رمز شده را رمزگشایی میکنند تا کاربران آنها را دریافت نمایند. از این رو یک سیستم رایانه دیجیتالی یک نمونه از یک سامانه دادهپردازی میباشد.
دستورالعملها
هر رایانه تنها دارای یک مجموعه کم تعداد از دستورالعملهای ساده و تعریف شده میباشد. از انواع پرکاربردشان میتوان به دستورالعمل «محتوای خانه ۱۲۳ را در خانه ۴۵۶ کپی کن!»، «محتوای خانه ۶۶۶ را با محتوای خانه ۰۴۲ جمع کن، نتایج را در خانه ۰۱۳ کن!»، «اگر محتوای خانه ۹۹۹ برابر با صفر است، به دستورالعمل واقع در خانه ۳۴۵ رجوع کن!».
دستورالعملها در داخل رایانه بصورت اعداد مشخص شدهاند - مثلاً کد دستور العمل (copy instruction) برابر ۰۰۱ میتواند باشد. مجموعه معین دستورالعملهای تعریف شده که توسط یک رایانه ویژه پشتیبانی میشود را زبان ماشین مینامند. در واقعیت، اشخاص معمولاً به زبان ماشین دستورالعمل نمینویسند بلکه بیشتر به نوعی از انواع سطح بالای زبانهای برنامهنویسی، برنامهنویسی میکنند تا سپس توسط برنامه ویژهای (تفسیرگرها (interpreters) یا همگردانها (compilers) به دستورالعمل ویژه ماشین تبدیل گردد. برخی زبانهای برنامهنویسی از نوع بسیار شبیه و نزدیک به زبان ماشین که اسمبلر (یک زبان سطح پایین) نامیده میشود، استفاده میکنند؛ همچنین زبانهای سطح بالای دیگری نیز مانند پرولوگ نیز از یک زبان انتزاعی و چکیده که با زبان ماشین تفاوت دارد بجای دستورالعملهای ویژه ماشین استفاده میکنند.
معماریها
در رایانههای معاصر واحد محاسبه و منطق را به همراه واحد کنترل در یک مدار مجتمع که واحد پردازشی مرکزی (CPU) نامیده میشود، جمع نمودهاند. عموما، حافظه رایانه روی یک مدار مجتمع کوچک نزدیک CPU قرار گرفته. اکثریت قاطع بخشهای رایانه تشکیل شدهاند از سامانههای فرعی (به عنوان نمونه، منبع تغذیه رایانه) و یا دستگاههای ورودی/خروجی.
برخی رایانههای بزرگتر چندین CPU و واحد کنترل دارند که بصورت همزمان با یکدیگر درحال کارند. اینگونه رایانهها بیشتر برای کاربردهای پژوهشی و محاسبات علمی بکار میروند.
کارایی رایانهها بنا به تئوری کاملاً درست است. رایانه دادهها و دستورالعملها را از حافظهاش واکشی (fetch) میکند. دستورالعملها اجرا میشوند، نتایج ذخیره میشوند، دستورالعمل بعدی واکشی میشود. این رویه تا زمانی که رایانه خاموش شود ادامه پیدا میکند. واحد پردازنده مرکزی در رایانههای شخصی امروزی مانند پردازندههای شرکت ای-ام-دی و شرکت اینتل از معماری موسوم به خط لوله استفاده میشود و در زمانی که پردازنده در حال ذخیره نتیجه یک دستور است مرحله اجرای دستور قبلی و مرحله واکشی دستور قبل از آن را آغاز میکند. همچنین این رایانهها از سطوح مختلف حافظه نهانگاهی استفاده میکنند که در زمان دسترسی به حافظه اصلی صرفهجویی کنند.
برنامهها
برنامه رایانهای فهرستهای بزرگی از دستورالعملها (احتمالاً به همراه جدولهائی از داده) برای اجرا روی رایانه هستند. خیلی از رایانهها حاوی میلیونها دستورالعمل هستند، و بسیاری از این دستورها به تکرار اجرا میشوند. یک رایانه شخصی نوین نوعی (درسال ۲۰۰۳) میتواند در ثانیه میان ۲ تا ۳ میلیارد دستورالعمل را پیاده نماید. رایانهها این مقدار محاسبه را صرف انجام دستورالعملهای پیچیده نمیکنند. بیشتر میلیونها دستورالعمل ساده را که توسط اشخاص باهوشی «برنامه نویسان» در کنار یکدیگر چیده شدهاند را اجرا میکنند. برنامهنویسان خوب مجموعههایی از دستورالعملها را توسعه میدهند تا یکسری از وظایف عمومی را انجام دهند (برای نمونه، رسم یک نقطه روی صفحه) و سپس آن مجموعه دستورالعملها را برای دیگر برنامهنویسان در دسترس قرار میدهند. (اگر مایلید «یک برنامهنویس خوب» باشید به این مطلب مراجعه نمایید.)
رایانههای امروزه، قادرند چندین برنامه را در آن واحد اجرا نمایند. از این قابلیت به عنوان چندکارگی (multitasking) نام برده میشود. در واقع، CPU یک رشته دستورالعملها را از یک برنامه اجرا میکند، سپس پس از یک مقطع ویژه زمانی دستورالعملهایی از یک برنامه دیگر را اجرا میکند. این فاصله زمانی اکثرا بهعنوان یک برش زمانی (time slice) نام برده میشود. این ویژگی که CPU زمان اجرا را بین برنامهها تقسیم میکند، این توهم را بوجود میآورد که رایانه همزمان مشغول اجرای چند برنامهاست. این شبیه به چگونگی نمایش فریمهای یک فیلم است، که فریمها با سرعت بالا در حال حرکت هستند و به نظر میرسد که صفحه ثابتی تصاویر را نمایش میدهد. سیستمعامل همان برنامهای است که این اشتراک زمانی را بین برنامههای دیگر تعیین میکند.
سیستمعامل
کامپیوتر همیشه نیاز دارد تا برای بکار انداختنش حداقل یک برنامه روی آن در حال اجرا باشد. تحت عملکردهای عادی این برنامه همان سیستمعامل یا OS که مخفف واژههای Operating System است. سیستم یا سامانه عامل بر اساس پیشفرضها تصمیم میگیرد که کدام برنامه برای انجام چه وظیفهای اجرا شود، چه زمان، از کدام منابع (مثل حافظه، ورودی/خروجی و...) استفاده شود. همچنین سیستمعامل یک لایه انتزاعی بین سختافزار و برنامههای دیگر که میخواهند از سختافزار استفاده کنند، میباشد، که این امکان را به برنامه نویسان میدهد تا بدون اینکه جزئیات ریز هر قطعه الکترونیکی از سختافزار را بدانند بتوانند برای آن قطعه برنامهنویسی نمایند. در گذشته یک اصطلاح متداول بود که گفته میشد با تمام این وجود کامپیوترها نمیتوانند برخی از مسائل را حل کنند که به این مسائل حل نشدنی گفته میشود مانند مسائلی که در مسیر حلشان در حلقه بینهایت میافتند. به همین دلیل نیاز است که با کمک روشهای خاص بطور مثال به چند بخش تقسیم نمودن مساله یا روشهای متداول دیگر از رخ دادن این خطا تا حد امکان جلوگیری نمود. از جمله سیستم عاملهای امروزی میتوان به مایروسافت ویندوز، مکینتاش اپل و لینوکس و بی اس دی اشاره کرد.
کاربردهای رایانه
نخستین رایانههای رقمی، با قیمتهای زیاد و حجم بزرگشان، در اصل محاسبات علمی را انجام میدادند، انیاک یک رایانهٔ قدیمی ایالات متحده اصولاً طراحی شده تا محاسبات پرتابهای توپخانه و محاسبات مربوط به جدول چگالی نوترونی را انجام دهد. (این محاسبات بین دسامبر ۱۹۴۱ تا ژانویه ۱۹۴۶ روی حجمی بالغ بر یک میلیون کارت پانچ انجام پذیرفت! که این خود طراحی و سپس تصمیم نادرست بکارگرفته شده را نشان میدهد) بسیاری از ابررایانههای امروزی صرفاً برای کارهای ویژهٔ محاسبات جنگافزار هستهای استفاده میگردد.
CSIR Mk I نیز که نخستین رایانه استرالیایی بود برای ارزیابی میزان بارندگی در کوههای اسنوئی (Snowy)این کشور بکاررفت، این محاسبات در چارچوب یک پروژه عظیم تولید برقابی انجام گرفت.
برخی رایانهها نیز برای انجام رمزگشایی بکارگرفته میشد، برای مثال Colossus که در جریان جنگ جهانی دوم ساخته شد، جزو اولین کامپیوترهای برنامهپذیر بود (البته ماشین تورینگ کامل نبود). هرچند رایانههای بعدی میتوانستند برنامهریزی شوند تا شطرنج بازی کنند یا تصویر نمایش دهند و سایر کاربردها را نشان دهد.
سیاستمداران و شرکتهای بزرگ نیز رایانههای اولیه را برای خودکارسازی بسیاری از مجموعههای داده و پردازش کارهایی که قبلا توسط انسانها انجام میگرفت، بکار بستند - برای مثال، نگهداری و بروزرسانی حسابها و داراییها. در موسسات پژوهشی نیز دانشمندان رشتههای مختلف شروع به استفاده از رایانه برای مقاصدشان نمودند.
کاهش پیوسته قیمتهای رایانه باعث شد تا سازمانهای کوچکتر نیز بتوانند آنها را در اختیار بگیرند. بازرگانان، سازمانها، و سیاستمداران اغلب تعداد زیادی از کامپیوترهای کوچک را برای تکمیل وظایفی که قبلا برای تکمیلشان نیاز به رایانه بزرگ (mainframe) گرانقیمت و بزرگ بود، به کار بگیرند. مجموعههایی از رایانههای کوچکتر در یک محل اغلب بهعنوان خادم سر (server farm) نام برده میشود.
با اختراع ریزپردازندهها در دههٔ ۱۹۷۰ این امکان که بتوان رایانههایی بسیار ارزان قیمت را تولید نمود بوجود آمد. رایانههای شخصی برای انجام وظایف بسیاری محبوب گشتند، از جمله کتابداری، نوشتن و چاپ مستندات. محاسبات پیش بینیها و کارهای تکراری ریاضی توسط صفحات گسترده (spreadsheet)، ارتباطات توسط پست الکترونیک، و اینترنت. حضور گسترده رایانهها و سفارشی کردن آسانشان باعث شد تا در امورات بسیار دیگری بکارگرفته شوند.
در همان زمان، رایانههای کوچک، که معمولاً با یک برنامه ثابت ارائه میشدند، راهشان را بسوی کاربردهای دیگری باز مینمودند، کاربردهایی چون لوازم خانگی، خودروها، هواپیماها، و ابزار صنعتی. این پردازشگرهای جاسازی شده کنترل رفتارهای آن لوازم را سادهتر کردند، همچنین امکان انجام رفتارهای پیچیده را نیز فراهم نمودند (برای نمونه، ترمزهای ضدقفل در خودروه). با شروع قرن بیست و یکم، اغلب دستگاههای الکتریکی، اغلب حالتهای انتقال نیرو، اغلب خطوط تولید کارخانهها توسط رایانهها کنترل میشوند. اکثر مهندسان پیش بینی میکنند که این روند همچنان به پیش برود... یکی از کارهایی که میتوان بهوسیله رایانه انجام داد برنامه گیرنده ماهوارهاست.
نیز تنها ۴۹۵ دلار قیمت داشت! قیمت آن کامپیوتر نیز ۳٬۰۰۵ دلار بود و IBM در آن زمان توانست ۶۷۱٬۵۳۷ دستگاه از آن را بفروشد.
انواع رایانه
رایانههای توکار (جاسازی شده)
رایانههایی هم وجود دارند که تنها برای کاربردهایی ویژه طراحی میشوند. در ۲۰ سال گذشته، هرچند برخی ابزارهای خانگی که از نمونههای قابل ذکر آن میتوان جعبههای بازیهای ویدئویی را که بعدها در دستگاههای دیگری از جمله تلفن همراه، دوربینهای ضبط ویدئویی، و PDAها و دهها هزار وسیله خانگی، صنعتی، خودروسازی و تمام ابزاری که در درون آنها مدارهایی که نیازهای ماشین تورینگ را مهیا ساختهاند، گسترش یافت، را نام برد (اغلب این لوازم برنامههایی را در خود دارند که بصورت ثابت روی ROM تراشههایی که برای تغییر نیاز به تعویض دارند، نگاشته شدهاند). این رایانهها که در درون ابزارهای با کاربرد ویژه گنجانیده شدهاند «ریزکنترلگرها» یا رایانههای توکار" (Embedded Computers) نامیده میشوند. بنا بر این تعریف این رایانهها به عنوان ابزاری که با هدف پردازش اطّلاعات طراحی گردیده محدودیتهایی دارد. بیشتر میتوان آنها را به ماشینهایی تشبیه کرد که در یک مجموعه بزرگتر به عنوان یک بخش حضور دارند مانند دستگاههای تلفن، ماکروفرها و یا هواپیما که این رایانهها بدون تغییری فیزیکی به دست کاربر میتوانند برای هدفهای گونهگونی به کارگرفته شوند.
رایانههای شخصی
اشخاصی که با انواع دیگری از رایانهها ناآشنا هستند از عبارت رایانه برای رجوع به نوع خاصی استفاده میکنند که رایانه شخصی (PC) نامیده میشوند. رایانهای است که از اجزای الکترونیکی میکرو (ریز) تشکیل شده که جزو کوچکترین و ارزانترین رایانهها به شمار میروند و کاربردهای خانگی و اداری دارند. شرکت آیبیام رایانه شخصی را در سال ۱۹۸۱ میلادی به جهان معرفی کرد.
نخستین رایانه آیبیام از برخی از ماشین حسابهای امروزی نیز ضعیفتر است ولی در آن زمان شگفت انگیز بود. رایانه شخصی سی سال پیش دارای حافظه ROM با ظرفیت 40K و حافظه RAM با ظرفیت 64K بود. البته کاربر میتوانست حافظه RAM را تا 256K افزایش دهد. قیمت هر ماژول 64K حافظه والانیوز
سرمایهگذاری
صنعت رایانه همواره صنعتی رو به رشد، چه در حوزهٔ سختافزارى و چه در حوزهٔ نرمافزارى بوده است، این صنعت پیوسته مورد توجه سرمایه گذاران بوده و سرمایهها را به خود جذب کرده است. آیندهٔ روشن این فنّاوری همواره سرمایه داران را ترغیب میکند تا روی این صنعت سرمایهگذاری کنند.
نرمافزار
نرمافزار (به انگلیسی: Software) یا برنامه، مجموعهای از دستورالعملهای دقیق و مرحله به مرحله است که هدف خاصی را دنبال میکنند.
ظاهراً، اولین بار جان توکی در سال ۱۹۵۸ این واژه را بهاین معنا بهکار بردهاست. احتمالاً این واژه در مقابل سختافزار (به انگلیسی: Hardware) به کار بردهاند که بسیار پیش از پیدایش رایانه (به معنای اسباب و اشیاء) بهکار میرفتهاست.
دو گروه کلی نرمافزارها
نرمافزارهای رایانه را میتوان به دو دسته بزرگ تقسیم کرد:
نرمافزار سیستم (به انگلیسی: System software)
نرمافزار کاربردی (به انگلیسی: Application software)
میتوان گفت نرمافزارهای کاربردی، برنامههای مورد استفاده کاربرند و نرمافزارهای سیستمی، مدیریت رایانه را برعهده دارند. مهمترین نرمافزار سیستم، سیستمعامل است.
سیستم عامل
وقتی برنامهای را روی رایانه خود نصب میکنید، اجزای سختافزاری آن به فرمان آن برنامه در میآیند. برای نمونه هنگامی که با یک برنامه اجرای موسیقی کار میکنید، کارت صدای رایانه تان با برنامه پخش موسیقی همکاری میکند و یک آهنگ یا پرونده (فایل) صوتی را از طریق بلندگوی رایانه تان پخش میکند.
این ارتباط میان نرمافزار و سختافزار توسط سیستم عامل انجام میشود. این تنها قسمتی از کار سیستم عامل است.
سیستم عامل خود یک برنامه نرم افزاری است با این تفاوت که چون تمام منابع و امکانات سخت افزاری در اختیار وی می باشد دارای ویژگی منحصر به فرد می باشد بنابراین آن را در رده نرم افزارها می خوانیم با این ویژگی که از اهمیت خاصی برخوردار است. به بیان دیگر سیستم عامل یک برنامه جامع است که اجازه در اختیار قراردادن منابع و امکانات سخت افزاری را برای نرم افزارها صادر می کند و این سیستم عامل است که مسئول صحت عملکرد سیستم و منابع آن است.
سیستم عامل شامل 4 بخش مهم است
1- مدیریت پردازش و پردازشگر
2- مدیریت حافظه
3- مدیریت دستگاههای ورودی و خروجی (I/O)
4- مدیریت فایل
سه گروه کلی نرمافزارهای معماری
از دیدگاه ساختاری (معماری) (architecture)، نرمافزارها به دستههای زیر تقسیم میشوند:
کاربر-بنیان یا Client Base
کارگزار-بنیان یا Server Base
کاربر کارگزار بنیان یا Client-Server Base
امروزه واژه نرمافزار را در معناهایی به جز معنی برنامه رایانهای نیز بهکار میبرند. مثلاً در دانش مدیریت برای اشاره به روشها و دانش فنی (در برابر وسایل و تجهیزات و نیروی انسانی). نرمافزارها انواع گوناگونی دارند که مهم ترین دسته بندی آنها دستهٔ تجاری و آزاد است. به ویژه با رویکردهای طرحهای گنو و لینوکس معنای ژرف تری به نرمافزارهای آزاد داده شده تا آنجا که برخی نرمافزارها را نماد فرهنگ می دانند. نرمافزارها را برنامه نویسان تدوین کرده و انتشار میدهند. این برنامه نویسان ممکن است در یک شرکت مشغول کار باشند یا در خانه برنامه نویسی کنند مانند برنامه نویسان برخی نرمافزارهای لینوکس. امروزه بیشتر کاربران تنها با ظاهر گرافیکی این برنامهها کار میکنند و اقدامات بسیاری از آنها از دید کاربر پنهان میماند به عبارتی هر نرمافزار مجموعهای از رمزها است که از الگوریتمی خاص پشتیبانی میکنند این رمزها خود با رمزهای گرافیکی آمیخته شده و بسیاری از اقدامات برنامه به دور از چشم کاربر عادی رخ میدهد. برنامهها با رمزهایی نوشته میشوند که بعداً یک رمزخوان آن را در رایانه کاربر اجرا میکند.
رقابت نرمافزاری
در حال حاضر نرمافزارهای کامپیوتری فراوان را میتوان در بازار یافت که به طور جدی به رقابت خود برای بقا ادامه میدهند. از مسائل قابل ذکر در این مورد میتوان به خرید سهام شرکتهای نرمافزاری کوچک و بزرگ توسط شرکتهای دیگر اشاره نمود. همچنان که شرکت بزرگ گوگل به خرید سهام شرکتهای بزرگ همچنان ادامه میدهد، در مدت کمی توانسته بسیاری از شرکتها را تحت سلطه خود درآورد.
نرمافزار سیستم
نرمافزار سیستم به نرمافزاری در رایانه گفته میشود که به کارکرد سیستم رایانه یا کاربردهای سطح پایین (یا Low Level) رایانه مربوط باشد. این نرمافزارها به ساختار فیزیکی سختافزار رایانه وابسته هستند و در نوشتن آنها از زبانهای سطح پائین مانند زبان اسمبلی استفاده میشود. سیستمعامل و درایورها از نرمافزارهای سیستم هستند. از جمله زبان هایی که برای نگارش نرمافزارهای سیستمی استفاده میشود، زبان برنامه نویسی C میباشد. کار کردن با سی برای برنامه نویسان راحت تر است و آنان این زبان را به اسمبلی ترجیح میدهند. اگر برای نگارش نرمافزار سیستمی مشکل محدودیت فضای سختافزاری داشته باشیم بهتر است با زبان اسمبلی کار کنیم که حجم آن پایین تر است. نرمافزارهای سیستمی به سختافزار وابسته اند.
در برابر نرمافزار سیستم، نرمافزار کاربردی قرار دارد که برای کاربردهای سطح بالا و غیرسیستمی رایانه است و معمولاً به زبانهای سطح بالا نوشته میشود که از جزئیات سختافزاری سیستم مستقل است.
نرمافزار کاربردی
نرمافزار کاربردی (به انگلیسی: Application software) عبارت است از نرمافزاری که با استفادهٔ مستقیم از منابع و قابلیتهای رایانه کاری را مستقیماً برای کاربر انجام میدهد. باید توجه داشت که این عبارت در مقابل عبارت نرمافزار سیستمی معنی پیدا میکند.
نرمافزار سیستمی در مقابل در پسزمینه عمل میکند و خدماتی را فراهم میکند که دیگر نرمافزارها و یا سیستمعامل میتوانند برای انجام کارهای خود از آن استفاده کنند. اما در عوض معمولاً مستقیماً با کاربر عادی در تماس نیست و خدماتی را به او ارایه نمیدهد.
در عمل بیشتر نرمافزارهایی که کاربران با آنها سر و کار دارند از این دسته محسوب میشوند. برای مثال میتوان به نرمافزارهای رومیزی یعنی واژهپردازها، صفحه گستردهها، نرمافزارهای طراحی گرافیکی، بازیهای رایانهای و امثال آنها اشاره کرد.
بسیاری نرمافزارهای کاربردی، برای توسعهدهندگان ابزار رابط برنامهنویسی کاربردی هم فراهم میکنند تا بتوان از قابلیتهای نرمافزار در نرمافزارهای جدید استفاده کرد. برای مثال نرمافزار ادوبی آکروبات هنگام نصب ایپیآی فراهم میکند که برنامهنویس میتواند با استفاده از آن تواناییهای آکروبات را در برنامهٔ خود به کار گیرد.
برای عنوان نمونههای دیگر میتوان به نرمافزارهای پردازش متن، برگههای گسترده (صفحات گسترده) و نرمافزارهای پخش نوا و نما اشاره کرد.
شبکه
شبکه عبارتست از مجموعه یا سیستم درون پیوندی(interconnected) انسانی یا فیزیکی که دسترسی به قابلیت یا توانایی خاصی را در محدوده ای از مکان و زمان فراهم می کند و در حالت مطلوب محدودیت مکانی و زمانی ندارد.
موارد زیر نمونههای انواع شبکه میباشند:
شبکههای فناوری:
شبکههای آبرسانی← قابلیت و توانایی " آبرسانی "
شبکه الکتریکی← قابلیت و توانایی " برق رسانی "
شبکه گازرسانی← قابلیت و توانایی " گاز رسانی "
شبکه مخابراتی← قابلیت و توانایی " گفتگو "
شبکه حمل و نقل← قابلیت و توانایی " جابجایی "
شبکه داده یا data ← قابلیت و توانایی " انتقال داده یا data "
شبکه رایانهای
شبکههای رسانهای:
شبکه رادیویی← قابلیت و توانایی " صوت "
شبکه تلویزیونی← قابلیت و توانایی " صوت و تصویر"
شبکههای انسانی:
شبکه اقتصادی← قابلیت و توانایی " درآمد "
شبکه اجتماعی← قابلیت و توانایی " همزیستی "
دیگر شبکهها:
شبکه فضایی
شبکه عصبی
بدیهی است بهره برداری از قابلیت و توانایی شبکه ها در مکانهای خاصی امکان دارد که گره (Node) نام دارند و مستلزم تجهیزات خاصی میباشند.
حافظه مجازی
حافظه مجازی یکی ازبخشهای متداول در اکثر سیستمهای عامل کامپیوترهای شخصی است. سیستم فوق با توجه به مزایای عمده، بسرعت متداول و با استقبال کاربران کامپیوتر مواجه شدهاست.
در حقیقت حافظه مجازی دارای دو وظیفه اصلی میباشد:
به پزدازشها اجازه میدهد بدون نگرانی از دیگر کدهای در حال اجرا از حافظه استفاده نمایند.
محدود کردن پردازشها از دخالت کردن در استفاده حافظه توسط سیستمعامل و دیگر پردازشها. به نوعی تامین امنیت محدوده اشغال شده توسط پردازشهای دیگر
دیسک سخت بجای حافظه اصلی
اکثر کامپیوترها در حال حاضر از حافظههای محدود با ظرفیت ۶۴، ۱۲۸ و یا ۲۵۶ مگابایت استفاده مینمایند. حافظه موجود در اکثر کامپیوترها بمنظور اجرای چندین برنامه بصورت همزمان توسط کاربر، پاسخگو نبوده و با کمبود حافظه مواجه خواهیم شد. مثلاً در صورتیکه کاربری بطور همزمان، سیستمعامل، یک واژه پرداز، مرورگر وب و یک برنامه برای ارسال نامه الکترونیکی را فعال نماید، ۳۲ و یا ۶۴ مگابایت حافظه، ظرفیت قابل قبولی نبوده و کاربران قادر به استفاده از خدمات ارائه شده توسط هر یک از نرمافزارهای فوق نخواهند بود. یکی از راهکارهای غلبه بر مشکل فوق افزایش و ارتقای حافظه موجود به صورت فیزیکی است. با ارتقای حافظه و افزایش آن ممکن است مشکل فوق در محدودهای دیگر مجدداً بروز نماید. یکی دیگر از راهکارهای موجود در این زمینه، استفاده از حافظه مجازی است .
در تکنولوژی حافظه مجازی از حافظههای جانبی ارزان قیمت نظیر هارد دیسک استفاده میگردد. در چنین حالتی اطلاعات موجود در حافظه اصلی که کمتر مورد استفاده قرار گرفتهاند، از حافظه خارج و در محلی خاص بر روی هارد دیسک ذخیره میگردند. بدین ترتیب بخش ی از حافظه اصلی آزاد و زمینه استقرار یک برنامه جدید در حافظه فراهم خواهد شد. عملیات ارسال اطلاعات از حافظه اصلی بر روی هارد دیسک بصورت خودکار انجام میگیرد.
ایجاد امنیت دسترسی به حافظه
قبل از آنکه سیستمعامل، پردازنده را به یک فرایند یا پردازش تحویل دهد، یک جدول حافظه را تنظیم مینماید بصورتیکه آن پردازش در سطح دسترسی پایینتری به حافظه قرار داده میشود و آدرس حافظهای که در کد پردازش مورد نظر قرار میگیرد بعداً توسط پردازنده به آدرس اصلی و فیزیکی حافظه RAM که در جدول حافظه تنظیم شده در قبل، دکر شده است ترجمه گردد. بنابراین آدرسهای حافظهای که در هر یک از کدهای پردازش توسط سیستمعامل قرار میگیرند آدرسهای مجازی هستند نه آدرسهای حقیقی.
این تطابق آدرسهای مجازی به آدرسهای حقیقی در قطعاتی که به آنها صفحه یا Page گفته میشوند انجام میشود. در معماری سیستمهای x86 امروزی معمولاً اندازه این صفحه ۴کیلوبایت میباشد.
زمانی که یک پردازش از آدرسی در یک صفحه که به آن پردازش تطابق داده نشده است استفاده نماید، باعث ایجاد یک خطای استثناء سختافزاری میگردد که به آن Pagefault گفته میشود.
وقتی که یک صفحه مورد استفاده قرار نگیرد، سیستمعامل میتواند آنرا به دیسک سخت انتقال دهد. و وقتی که آن صفحه توسط یک پردازش مورد تقاضا قرار گرفت دوباره به حافظه اصلی RAM بازخواهد گشت.
مسئله سرعت
سرعت خواندن و نوشتن اطلاعات بر روی هارد دیسک بمراتب کندتر از حافظه اصلی کامپیوتر است. در صورتیکه سیستم مورد نظر دارای عملیاتی حجیم در رابطه با حافظه مجازی باشد، کارآئی سیستم بشدت تحت تأثیر قرار خواهد گرفت. در چنین مواردی لازم است که نسبت به افزایش حافظه موجود در سیستم، اقدام گردد. در مواردی که سیستمعامل مجبور به جابجائی اطلاعات موجود بین حافظه اصلی و حافظه مجازی باشد (هارد دیسک)، باتوجه به تفاوت محسوس سرعت بین آنها، مدت زمان زیادی صرف عملیات جایگزینی میگردد. در چنین حالتی سرعت سیستم بشدت افت کرده و عملاً در برخی حالات غیرقابل استفاده میگردد.
محل نگهداری اطلاعات بر روی هارد دیسک را یک Page file میگویند. در فایل فوق، صفحات مربوط به حافظه اصلی ذخیره و سیستمعامل در زمان مورد نظر اطلاعات فوق را مجدداً به حافظه اصلی منتقل خواهد کرد. در ماشین هائی که از سیستمعامل ویندوز استفاده مینمایند، فایل فوق دارای انشعاب swp است.
پیکربندی حافظه مجازی
ویندوز ۹۸ دارای یک برنامه هوشمند برای مدیریت حافظه مجازی است. در زمان نصب ویندوز، پیکربندی و تنظیمات پیش فرض برای مدیریت حافظه مجازی انجام خواهد شد. تنظیمات انجام شده در اغلب موارد پاسخگو بوده و نیازی به تغییر آنها وجود نخواهد داشت. در برخی موارد لازم است که پیکربندی مدیریت حافظه مجازی بصورت دستی انجام گیرد. برای انجام این کار در ویندوز ۹۸، گزینه System را از طریق Control panel انتخاب و در ادامه گزینه Performance را فعال نمائید. در بخش Advanced setting، گزینه Virtual memory را انتخاب نمائید.
با نمایش پنجره مربوط به Virtual Memory، گزینه «Let me specify my own virtual memory setting» را انتخاب تا زمینه مشخص نمودن مکان و طرفیت حداقل و حداکثر فایل مربوط به حافظه مجازی فراهم گردد..در فیلد Hard disk محل ذخیره نمودن فایل و درفیلدهای دیگر حداقل و حداکثر ظرفیت فایل را بر حسب مگابایت مشخص نمائید. برای مشخص نمودن حداکثر فضای مورد نیاز حافظه مجازی میتوان هر اندازهای را مشخص نمود. تعریف اندازه ائی به میزان دو برابر حافظه اصلی کامپیوتر برای حداکثر میزان حافظه مجازی توصیه میگردد.
میزان حافظه موجود هارد دیسک که برای حافظه مجازی در نظر گرفته خواهد شد بسیار حائر اهمیت است. در صورتیکه فضای فوق بسیار ناچیز انتخاب گردد، همواره با پیام خطائی مطابق «Out of Memory»، مواجه خواهیم شد. پیشنهاد میگردد نسبت حافظه مجازی به حافظه اصلی دو به یک باشد. یعنی در صورتیکه حافظه اصلی موجود ۱۶ مگابایت باشد، حداکثر حافظه مجازی را ۳۲ مگابایت در نظر گرفت.
یکی از روش هائی که بمنظور بهبود کارائی حافظه مجاری پیشنهاد شدهاست، (مخصوصاً در مواردیکه حجم بالائی از حافظه مجازی مورد نیاز باشد) در نظر گرفتن ظرفیت یکسان برای حداقل و حداکثر انداره حافظه مجازی است. در چنین حالتی در زمان راه اندازی کامپیوتر، سیستمعامل تمام فضای مورد نیاز را اختصاص و در ادامه نیازی با افزایش آن همزمان با اجرای سایر برنامهها نخواهد بود. در چنین حالتی کارآئی سیستم بهبود پیدا خواهد کرد.
یکی دیگر از فاکتورهای مهم در کارآئی حافظه مجازی، محل فایل مربوط به حافظه مجازی است. در صورتیکه سیستم کامپیوتری دارای چندین هارد دیسک فیزیکی باشد، (منظور چندین درایو منظقی نیست) میتوان حجم عملیات مربوط به حافظه مجازی را بین هر یک از درایوهای فیزیکی موجود توزیع کرد. روش فوق در مواردیکه از حافظه مجازی در مقیاس بالائی استفاده میگردد، کارآئی مطلوبی را بهدنبال خواهد داشت.
سیستمعامل
سیستمعامل یا سامانهٔ عامل (به انگلیسی: Operating System) نرمافزاری است که مدیریت منابع رایانه را به عهده گرفته و بستری را فراهم میسازد که نرمافزار کاربردی اجرا شده و از خدمات آن استفاده کنند. سیستمعامل جزء ضروریترین نرمافزارهای یک سیستم کامپیوتری است. سیستمعامل خدماتی به برنامههای کاربردی و کاربر ارائه میدهد. برنامههای کاربردی یا از طریق واسطهای برنامه نویسی کاربردی (به انگلیسی: Application User Interface-APIs) و یا از طرق فراخوانیهای سیستم به این خدمات دسترسی دارند. با فراخوانی این واسطها، برنامههای کاربردی میتوانند سرویسی را از سیستمعامل درخواست کنند، پارامترها را انتقال دهند، و پاسخ عملیات را دریافت کنند. ممکن است کاربران با بعضی انواع واسط کاربری نرمافزار مثل واسط خط فرمان یا یک واسط گرافیکی کاربر با سیستمعامل تعامل کنند. برای کامپیوترهای دستی و رومیزی، عموما واسط کاربری به عنوان بخشی از سیستمعامل در نظر گرفته میشود. در سیستمهای بزرگ و چند کاربره مثل یونیکس و سیستمهای شبیه یونیکس، واسط کاربری معمولاً به عنوان یک برنامه کاربردی که خارج از سیستمعامل اجرا میشود پیادهسازی میشود. نمونههایی از محبوبترین سیستمعاملهای نوین شامل: اندروید، بیاسدی، آیاواس، لینوکس، اواس ده، کیواناکس، مایکروسافت ویندوز، ویندوز فون و زد/اواس میباشند.
انواع سیستمعامل
سیستمهای بیدرنگ
سیستمهای بیدرنگ یا زمان واقعی یک سیستم عامل چند وظیفهای است که معمولا بعنوان یک کنترل کننده در یک کاربرد خاص استفاده میشوند. سیستم در این حالت میبایست در زمانی مشخص و معین حتما جواب مورد نظر را بدهد. سیستمهای کنترل آزمایشهای علمی، تصویربرداری پزشکی، کنترل صنعتی و برخی از سیستمهای نمایش از این دستهاند. هدف اصلی استفاده از سیستمهای بیدرنگ واکنش سریع و تضمین شده در برابر یک رویداد خارجی میباشد. در سیستمهای بیدرنگ معمولا وسایل ذخیرهسازی ثانویه وجود ندارد و به جای آن از حافظههای ROM استفاده میشود. سیستمعاملهای پیشرفته نیز در این سیستمها وجود ندارند چرا که سیستمعامل کاربر را از سختافزار جدا میکند و این جداسازی باعث عدم قطعیت در زمان پاسخگویی میشود. سیستمهایی که در آن مهلت زمانی(به انگلیسی: Deadline) باید پاسخ داده شود را بیدرنگ سخت و سیستمهایی که مهلت زمانی را پشتیبانی نمیکنند بیدرنگ نرم مینامند. از کاربرد سیستمهای بیدرنگ سخت میتوان به کنترل موتور یک خودرو(پاسخ با تاخیر میتواند نتایج فاجعهباری را به همراه داشته باشد) و در سیستمهای بیدرنگ نرم میتوان به اسکن بارکد در پایانه فروشگاه(با اینکه سرعت پاسخدهی باید سریع باشد اما به حادّی سیستمهای سخت نمیباشد) اشاره کرد.
سیستمهای چند کاربره
سیستمهای چند کاربره اجازه میدهند تا کاربران متعدد بصورت همزمان به یک سیستم کامپیوتری دسترسی داشته باشند. سیستمهای اشتراک زمانی و کارساز وب را میتوان بعنوان سیستمهای چند کاربره طبقهبندی کرد. در سیستمهای اشتراک زمانی تنها یک پردازنده قرار دارد که توسط مکانیزمهای زمانبندی بین برنامههای مختلف کاربرها با سرعت زیاد سوئیچ میشود و بنابراین هر کاربر تصور میکند کل کامپیوتر در اختیار اوست.
سیستمعامل تک پردازنده
این نوع سیستمعاملها، سیستمعاملهای نسل چهارم (نسل فعلی) هستند که بر روی یک پردازنده اجرا میشوند.از قبیل XP,Vista,۹۸,Me که بیشتر محصول شرکت مایکرو سافت میباشند.
سیستمعامل شبکهای
سیستم عاملهایی مثل ناول نت که بیشترین استفاده و ا مکانات این سیستم عامل برای شبکه می باشد
سیستمعامل توزیع شده
این سیستمعاملها خود را مانند سیستمعاملهای تک پردازنده به کاربر معرفی میکنند، اما در عمل از چندین پردازنده استفاده میکنند. این نوع سیستمعامل در یک محیط شبکهای اجرا میشود در این نوع سیستم یک برنامه پس از اجرا در کامپوترهای مختلف جواب نهایی به سیستم اصلی کاربر بر میگردد سرعت پردازش در این نوع سیستم بسیار بالاست.
دلایل ایجاد سیستمعامل
یک سیستم کامپیوتری پیشرفته از یک یا چند پردازنده، مقداری حافظه اصلی، دیسکها، چاپگرها، صفحهکلید، صفحهنمایش، واسطهای شبکهای و دیگر دستگاههای ورودی و خروجی تشکیل شدهاست. اگر سیستم یکپارچهای برای مدیریت این منابع وجود نداشته باشد، هر برنامه باید به تنهایی این کار را انجام دهد. سیستمعامل یک لایه نرمافزاری فراهم میکند که وظیفه مدیریت منابع سیستم را از دوش برنامههای کاربردی رهانیده و کار برنامهنویسی را سادهتر مینماید. که با توجه به نسخههای جدید سیستم عاملها که به دلیل بهرهمندی از تکنولوژی گرافیک و امکان استفاده از ماوس، امکان استفاده ساده و آسان را برای کاربران مبتدی فراهم نمودهاست. در حقیقت سیستمعامل واسط بین سختافزار رایانه و کاربر میباشد.
وظایف سیستمعامل
سیستمعامل دو کار عمده انجام میدهد:
در نگرش پایین به بالا، منابع منطقی (مانند فایلها) و منابع فیزیکی (مانند دستگاههای سختافزاری) رایانه را مدیریت و کنترل میکند.
در نگرش بالا به پایین، وظیفه سیستمعامل این است که یک ماشین توسعه یافته (Extended Machine) یا ماشین مجازی را به کاربران ارائه کند تا آنها بتوانند آسانتر برنامهنویسی نمایند و درگیر پیچیدگیهای سختافزاری رایانه نشوند.
به طور کلی، وظایف سیستمعامل شامل موارد زیر است:
استفاده بهینهتر از منابع و جلوگیری از به هدر رفتن آنها
تخصیص و آزاد سازی منابع
اداره صفها و زمانبندی استفاده از منابع
حسابداری میزان استفاده از منابع
ایجاد امنیت
ایجاد، حذف و اداره فرایندها
ایجاد مکانیسمهای ارتباط بین فرایندها و همگامسازی آنها
مدیریت فایلها و پوشهها
مدیریت حافظههای اصلی و جانبی
برقراری امکان دسترسی چندتایی (Multiaccess) و اجرای هم روند (Concurrent) فرایندها
به اشتراک گذاری منابع (Resource Sharing)
تعیین راهکارهایی برای اداره بنبست (Deadlock)
جلوگیری از وضعیت رقابتی (Race Condition) و تداخل یا در هم قفل شدن (Interlock) فرایندها
جلوگیری از گرسنگی (Starvation)
سیستمعاملهای فعلی
در سالهای اخیر رقابت بیشتر بین سیستمعاملهای مایکروسافت ویندوز، اپل مک اواس و لینوکس جریان دارد که آماری که در ماه ژوییه ۲۰۱۱ توسط وبگاه W3Schools به ثبت رسیده حاکی از آن است که هم اکنون بیش از ۸۰ درصد کاربران اینترنت از سیستمعامل ویندوز استفاده میکنند.
آمار موجود که مربوط به اوت ۲۰۱۰ میباشد به شرح زیر است:
ویندوز ۷: ۳۷٫۸٪
ویندوز ویستا: ۶٫۷٪
ویندوز اکس پی: ۳۹٫۷٪
ویندوز ۲۰۰۳: ۰٫۹٪
مک اواس: ۸٫۱٪
توزیعهای گنو/لینوکس: ۵٫۲٪
از سیستمعاملهای مشهور کامپیوترهای شخصی میتوان به اسامی زیر اشاره کرد:
یونیکس
گنو/لینوکس
مک اواس
ویندوز اکسپی
ویندوز ویستا
ویندوز انتی
ویندوز ۷
ویندوز ۸
ویندوز سیای
سولاریس
بی اس دی
داس
ام وی اس
ویلز
پالم
همچنین از سیستمعاملهای موجود روی گوشیهای تلفن همراه نسل جدید میتوان به اسامی زیر اشاره کرد:
اندروید
iOS
ویندوز موبایل
ویندوز فون
سیمبین
یوآیکیو
بادا
بلک بری
میگو
پالم
تاریخچه
در آغاز
اولین کامپیوترها فاقد سیستمعامل بودند. در اوایل سال ۱۹۶۴ فروشندگان کامپیوترهای تجاری ابزار کاملا گستردهای را برای تسهیل توسعه، زمانبندی، و اجرای کارها روی یک سیستم پردازش دستهای فراهم میکردند. برای مثال کامپیوتر تولید شده توسط UNI VAC.
در ابتدا سیستمعامل روی مین فریمها مستقر میشد و کمی بعد سیستمعامل میکروکامپیوترهای ابتدایی که فقط از یک برنامه در هر زمان پشتیبانی میکردند و به یک زمانبند بسیار ابتدایی نیاز داشتند. هر برنامه زمانی که در حال اجرا بود تحت کنترل کامل ماشین قرار داشت. چند وظیفهای (اشتراک زمانی) اولین بار در مین فریمها و در ۱۹۶۰ عرضه شد. ابتدا کامپیوترها بسیار بزرگ و جاگیر بودند اما امروزه در کف یک دست جا میگیرند.
مین فریمها
میکرو کامپیوترها
میکروکامپیوترهای اولیه نیاز یا ظرفیت داشتن یک سیستمعامل پیچیده که روی مین فریمها توسعه یافته بود نداشتند.
ویژگیها
وقفهها
دستهبندی وقفهها
برنامه وقفههایی که به دلیل بعضی شرایظ حاصل از یک دستورالعمل بروز میکند. شامل سریز شدن محاسباتی، تقسیم بر صفر، تلاش برای اجرای یک دستورالعمل ماشین غیر مجاز و مراجعه به آدرسی خارج از فضای مجاز کاربر.
زمانسنج وقفهای که توسط زمانسنج داخلی تولید میشود. این وقفه به سیستمعامل اجازه میدهد، بعضی اعمال را به طور مرتب انجام دهد.
ورودی/خروجیوقفههایی که به وسیله کنترل کننده ورودی/خروجی تولید میشود، تا کامل شدن طبیعی یک عمل یا شرایط خطا را اعلام نماید.
نقص سختافزار وقفههایی که با نقص سختافزاری تولید میشود، مثل نقص برق یا خطای توازن حافظه.
یونیکس
یونیکس یک سیستمعامل چندوظیفهای و چندکاربره است که در سال ۱۹۶۹ به دست گروهی از کارمندان آزمایشگاههای بل متعلق به شرکت ایتیاندتی (AT&T Bell Labs) نوشته شد. این گروه را کنت تامسون، دنیس ریچی، برایان کرنیگان، داگلاس مکیلروی مایکل لسک و جو اوسانا شکل میدادند. یونیکس در آغاز به زبان اسمبلی نوشته شد اما در سال ۱۹۷۳ به طور کلی به زبان سی بازنوشته شد، که این کار توسعه یونیکس را در آینده آسانتر میکرد و هم پورت کردن آن به دیگر سکوها را سادهتر. در سال ۱۹۷۴، یونیکس در ابتدا توسط گرگ چسون و دونالد گیلیس تحت مجوز دانشگاه ایلینوی در اربانا-شمپین درآمد. توسعه و تکامل یونیکس امروزی به شاخههای مختلفی تقسیم شده که توسط ایتیاندتی و همچنین دیگر فروشندگان تجاری، دانشگاهها (مانند نسخه بیاسدی از دانشگاه برکلی) و سازمانهای غیر انتفاعی توسعه مییابند.
امروزه نشان تجاری یونیکس در اختیار موسسه اپن گروپ قرار دارد و این گروه این نشان را به نام خود ثبت کرده است. تنها سیستمهایی که به صورت کامل با مشخصات یونیکس یکتا سازگار باشند، و مبلغی پول به موسسه اپن گروپ بپردازند، واجد شرایط استفاده از نام یونیکس اند. دیگر سیستمها میتوانند شبه یونیکس نامیده شوند، هرچند که موسسه اپن گروپ این نام را رد کرده است.
در اواخر دهه ۱۹۷۰ و اوایل دهه ۱۹۸۰، نفوذ یونیکس در محافل دانشگاهی (خصوصا ویرایش بیاسدی که از دانشگاه برکلی سرچشمه گرفته) باعث پذیرش گسترده یونیکس توسط بازرگانان نوپا شد و نسخههایی تجاری از یونیکس بوجود آمد که مهمترین این یونیکسها سولاریس، اسکوئنت, اچپی-یواکس, ایآیاکس هستند.
علاوه بر یونیکسهای تایید شده که اسامی آنها در بالا ذکر شد، سیستمعاملهایی هم وجود دارند که شبه یونیکس نامیده میشوند مانند مینیکس، نوادگان بیاسدی مانند فریبیاسدی, نتبیاسدی, اپنبیاسدی, دراگونفلیبیاسدی و لینوکس. این سیستمها با آنکه با استانداردها سازگار هستند، اما توسط موسسه اپن گروپ تایید نشدهاند و حق استفاده از نام Unix را ندارند. اصطلاح یونیکس سنتی ممکن است برای توصیف سیستمعاملهایی که مشخصات و ویژگیهای نسخه ۷ یونیکس یا نسخه ۵ یونیکس را دارند، استفاده شود. هنگامی که کن تامسون هنوز به مولتیکس دسترسی داشت، شبیهسازهایی برای سیستم صفحهبندی و سیستم فایل نوشت. او همینطور یک بازی رایانهای به نام سفر فضایی نوشت، اما این بازی برای اجرا شدن به یک ماشین کارامدتر و ارزانتر احتیاج داشت و سرانجام او یک پیدیپی-۷ کم استفاده در آزمایشگاههای بل پیدا کرد. در سال ۱۹۶۹ تیمی به رهبری تامسون و ریچی، بر روی این ماشین پیدیپی-۷ یک سیستم فایل سلسله مراتبی، مفاهیم فرایند رایانه و فایل دستگاه، یک مفسر خط فرمان و تعدادی برنامه کوچک دیگر نوشتند.
اگر گفته شود یونیکس آغازگر «دوره اطلاعات» و در امتداد آن «عصر اینترنت» است، کوچکترین سخنی به گزافه گفته نشدهاست. در واقع تا همین امروز هم، تقریباً ٪۱۰۰ پیمانهای مهم و باز که جنبش اینترنت را پدید آوردهاند، مانند وب، از خانوادهٔ یونیکس آمده و میآیند. اینترنت در آغاز در یونیکس گسترش یافت و تا سالها، واژهٔ «اینترنت» در میان کاربران یونیکس واژهای کاملاً عادی و روزمره بود، درحالی که دیگران حتی این واژه را نشنیده بودند و یا با اکراه تمام به آن بی اعتنائی و حتی آن را مسخره میکردند.
سیستمهای یونیکس امروزی به شاخههای مختلفی تبدیل شده است که در مرور زمان به دست ایتیاندتی توسعه داده شده. یونیکس طوری طراحی شده است تا قابل انتقال به هر سیستمی، چند کاره و همچنین چند کاربره باشد. سیستمهای یونیکس با ایدههای جدیدی که مطرح کردهاند، شناخته میشوند: پروندههای متنی ساده، مترجمهای خط فرمان و سامانه پروندهگردانی (File System) سلسله مراتبی و غیره. در مهندسی نرمافزار، یونیکس به خاطر زبان برنامهنویسی سی و فلسفه یونیکس ذکر میشود.
صاحب علامت تجاری یونیکس در حال حاضر open group است. در حالی که مدعی در حال حاضر متن برنامههای یونیکس The sco group و Novell است.
پیشینه
از آغاز تا عرضه
داستان از سال ۱۹۶۰ آغاز میشود. در این زمان فکر سامانههای اشتراک زمان مطرح بود و نخستین سیستمعامل چند کاربره طراحی شد که به عنوان کارگزار(Server) میتوانست با نصب شدن بر روی یک رایانه به چند رایانه دیگر سرویس دهد. این سیستمعامل که CTSS نام داشت و میتوانست ۲۰ کاربر را با یک رایانه IBM ۷۰۹۰ به خوبی اداره کند به شدت مورد توجه و مفید واقع شد و همه دریافتند که بخش عظیمی از رایانههای آینده از این فناوری بهره خواهند گرفت. به طوری که در سال ۱۹۶۵ سه شرکت از برجستهترین نقش آفرینان رایانه در جهان، مؤسسه فناوری ماساچوست، آزمایشگاههای بل و جنرال الکتریک، یک سیستمعامل اشتراک زمان آزمایشی برای مینفریم جیای-۶۴۵ طراحی کردند که مولتیکس نامیده میشد.
مولتیکس نوآوریهای بسیاری را پیش روی نهاد، اما در عوض مشکلات فراوانی هم داشت. این سیستم اجزای زیادی داشت و از حد معین بزرگتر شد. آزمایشگاههای بل که از پیچیدگی زیاد مولتیکس ناامید شده بود، به آهستگی از پروژه کناره گرفت. آخرین محققان آنها، کن تامسون, دنیس ریچی, داگلاس مکیلروی و جو اوسانا تصمیم گرفتند کار را از آغاز اما در مقیاسی کوچکتر از سر بگیرند. ریچی گفت «چیزی که ما میخواستیم، تنها یک محیط خوب برای برنامهنویسی نبود، بلکه سامانهای بود که بتوان گرد آن دوستی را شکل داد.»
در ۱۹۷۰، پیتر نیومن نام Unics را برای پروژه ابداع کرد. این نام در حقیقت یک جور بازی با نام مولتیکس (Multics) بود. دنیس ریچی، کن تامسون و برین کرنیگان، یونیکس (Unics) را بر اساس مولتیکس در آزمایشگاه بل پدید آوردند. بعدها که Unics توانست همزمان به چند کاربر سرویس دهد، به Unix آوازه یافت.
تا آن زمان، هیچ حمایت مالی از طرف آزمایشگاههای بل وجود نداشت. وقتی که گروه تحقیقات علوم رایانه میخواست از یونیکس بر روی یک رایانه بزرگتر از پیدیپی-۷ استفاده کند، تامسون و ریچی قول دادند که برای ماشین پیدیپی۱۱/۲۰، قابلیتهای پردازش متن را به یونیکس اضافه کنند. این کار باعث حمایت مالی آزمایشگاه بل شد. برای اولین بار در سال ۱۹۷۰، سیستمعامل یونیکس رسما نامگذاری و بر روی یک پیدیپی۱۱/۲۰ اجرا شد. یک برنامه قالببندی متن به نام roff و یک ویرایشگر متن هم اضافه شدند. تمام این سه جزء (یونیکس، roff و ویرایشگر متن) به زبان اسمبلی ماشین پیدیپی۱۱/۲۰ نوشته شده بودند. آزمایشگاههای بل از این سیستمِ پردازش متن اولیه که از یونیکس، roff و ویرایشگر تشکیل شده بود، برای پردازش متن برنامههای پتنت شده استفاده کرد. roff به زودی به troff، اولین برنامه چاپ و نشر الکترونیکی با قابلیت کامل حروفچینی تبدیل شد. کتاب راهنمای برنامهنویسان یونیکس هم در سوم نوامبر ۱۹۷۱ چاپ شد.
از آن جا که ایتیاندتی، یکی از شرکتهای دست اندرکار، از پروژه کنار گرفته بود، بنا بر قوانین آمریکا نمیتوانست از یونیکس استفادهٔ بازرگانی کند؛ به این ترتیب یونیکس رایگان به بازار عرضه شد. ایتیاندتی نیز یونیکس را برای دانشگاههای مختلف فرستاد و یونیکس کمکم در محافل علمی محبوب شد.
بازنوشتن به زبان سی
در ۱۹۷۲، یونیکس به زبان سی بازنوشته شد. این برخلاف پندار همگانی آن زمان بود که میگفت «هر چیز پیچیدهای مثل یک سیستمعامل که باید با رویدادهای حساس به زمان سر و کار داشته باشد، باید منحصرا به زبان اسمبلی نوشته شود.» نتیجه مهاجرت از زبان اسمبلی به زبان سطح بالاتر سی این بود که کد یونیکس پرتابلتر و قابل حملتر شد و برای اجرا بر روی ماشینهای دیگر تنها کافی بود قسمتهای کوچکی از آن به زبان اسمبلی مخصوص همان ماشین نوشته شوند.
ایتیاندتی کد منبع یونیکس را تحت مجوزهایی در دسترس دانشگاهها، شرکتهای تجاری و دولت ایالات متحده قرار دارد. مجوزها در همه جای کد منبع قرار داده شده بودند، حتی کدهای وابسته به ماشین در داخل هسته سیستمعامل، که به زبان اسمبلی پیدیپی-۱۱ نوشته شده بودند. در اواخر دهه ۱۹۷۰، کدهای منبع یونیکس در کتابی به نام «نسخه ۶ یونیکس به روایت لیونز، به همراه کد منبع» که توسط جان لینوز نوشته شده بود، به صورت گسترده منتشر شد. این کار باعث شد یونیکس به شکل قابل توجهی برای مقاصد آموزشی استفاده گردد.
ویرایشهای گوناگون
نسخههای سیستمعامل یونیکس، توسط ویرایشهای کتاب راهنمای کاربرانش مشخص میشدند. برای مثال «پنجمین ویرایش یونیکس» و «نسخه ۵ یونیکس» هر دو برای اشاره به یک نسخه استفاده میشدند. توسعه یونیکس با انتشار نسخههای ۴، ۵ و ۶ که در سال ۱۹۷۵ ادامه یافت. در این نسخهها مفهوم تازه ی لولهها اضافه شده بود که به طراحی ماژولار یونیکس و چرخه توسعه سریعتر آن کمک کرد. نسخه ی ۵ و به ویژه نسخه ی ۶، به پیدابش نسخههای مختلفی از یونیکس، چه در داخل آزمایشگاههای بل و چه در خارج از آن انجامید. مانند پیدبلیوبی/یونیکس و همچنین اولین نسخه تجاری یونیکس یعنی آیاس/۱. همان طور که قسمتهای بیشتری از یونیکس به زبان سی بازنویسی میشد، پورتابل بودن آن هم افزایش مییافت و آسانتر میشد آن را به دیگر سکوها انتقال داد. یونیکس توسط گروهی در دانشگاه ولونگوگ به اینتردیتا ۷/۳۲ پورت شد. آزمایشگاههای بل هم چند نسخه مختلف برای اهداف تحقیقاتی و استفاده داخلی در همان جا توسعه داد.
در سال ۱۹۷۴ دانشجویان دانشگاه برکلی آغاز به برنامهنویسی برای یونیکس میکردند و آن را برای دانشگاههای دیگر و ایتیاندتی فرستادند وبا ادامهٔ این کار یونیکس در سال ۱۹۷۷ به یک سیستمعامل کامل تبدیل میشود. در می ۱۹۷۵، دارپا مزایای سیستم اشتراک زمانی یونیکس که «چند قابلیت جالب ارائه کرده بود» را در RFC 681 مستند کرد. در ۱۹۷۸، یونیکس/۳۲وی برای ویایاکس، سیستم جدید DEC عرضه شد. در آن هنگام، یونیکس به اَشکال مختلفی بر روی ۶۰۰ ماشین اجرا میشد. آخرین نسخه تحقیقاتی از یونیکس، یعنی نسخه ۷ یونیکس، در سال ۱۹۷۹ منشتر شد. نسخههای ۸، ۹ و ۱۰ هم در دهه ۱۹۸۰ نوشته شدند اما فقط در بین چند دانشگاه منتشر شدند. دانشگاههای دیگر نیز مانند امآیتی، Purdue، استنفورد و... کارهای بسیاری برای یونیکس کردند. با نوشتن برنامههای اینترنتی برای یونیکس در سال ۱۹۸۰ به وسیلهٔ دانشگاه برکلی یونیکس در سازمانهای دولتی و شرکتهای شبکه و کارگزارها(Servers) به گستردگی به کار گرفته شد.
سیستم عاملهای یونیکس مانند
از این زمان شمار فراوانی از شرکتهای بازرگانی نیز از یونیکس برای کارهای بازرگانی خود بهره میجویند و نسخههای بازرگانی یونیکس هم به بازار میآیند که از این گروه میتوان پخشهای زیر را نام برد.
Xenix by Microsoft
AIX by IBM
HP-UX by HP
ULTRIX by Digital
SunOS by Sun
گذشته از سیستم عاملهایی که موسسه ی اپن گروپ، آنها را کاملا سازگار با مشخصات یونیکس یکتا دانسته، سیستم عاملهای فراوانی در عرضه شده اند که اگرچه استانداردهای لازم را فراهم آورده اند اما با نام شبه یونیکس آوازه دارند. ویرایشهای پرشمار سیستم عامل متن باز لینوکس از این دسته اند. همچنین سیستم عامل نکستستپ (NextStep) که بر مبنای بیاسدی دانشگاه برکلی پدید آمد، خود پایه ی سیستم عامل مک اُ.اس (Mac OS X) شرکت اپل شد. اپل آی.اُ.اس (iOS) را نیز بر پایه ی مک اُ.اس گسترش داد. بسیاری از سیستمعاملهای دیگر مانند اُربیت (Orbis) که بر روی پلی استیشن چهار ارائه میشود نیز بر مبنای یکی از انواع سیستم عامل بیاسدی گسترش یافته اند.
لینوکس
لینوکس (به انگلیسی: Linux) به هسته ی سیستمعاملهای شبه یونیکس میگویند که که در سال ۱۹۹۱ توسط لینوس تروالدز توسعه یافت. برخی به سیستم عاملهایی که از هستهٔ لینوکس استفاده میکنند (به این خاطر که نام لینوکس به طور گسترده در رسانهها استفاده میشود و نامی رایج تر است) نیز لینوکس میگویند (در این مقاله هم منظور از لینوکس، سیستم عاملهایی است که از هستهٔ لینوکس استفاده میکنند).
لینوکس قابل نصب بر روی انواع سختافزارهاست، از ساعت (Linux Watch)، تلفنهای همراه، تبلتها، مسیریابها، و کنسولهای بازی گرفته تا رایانههای رومیزی، رایانههای بزرگ و ابررایانهها.
به مجموعهای از نرمافزارهای بنا شده بر اجزای گفته شده توزیع لینوکس (linux distribution) میگویند که به طور معمول شامل ابزارهای گسترش نرمافزار، پایگاههای داده، سرویس دهندههای وب مثل آپاچی، محیطهای رومیزی مانند گنوم و کیدیای و اکسافسیای و مجموعههای اداری مانند اُپن آفیس هستند.
در ابتدا لینوکس برای استفادهٔ ریزپردازندهها با معماری ۸۰۳۸۶ اینتل طراحی شده بود؛ اما امروزه انواع گوناگون معماریها را پشتیبانی میکند و در انواع و اقسام وسایل از کامپیوترهای شخصی گرفته تا ابررایانهها و تلفنهای همراه به کار میرود. این سیستمعامل که در ابتدا بیشتر توسط افراد مشتاق گسترش پیدا میکرد و به کار گرفته میشد، توانسته است پشتیبانی شرکتهای سرشناسی چون آیبیام و هیولت-پاکارد را به دست آورد و با بسیاری از نسخههای خصوصی یونیکس رقابت کند. طرفداران لینوکس و بسیاری از تحلیلگران این موفقیت را ناشی از استقلال از فروشنده، کمهزینه بودن پیادهسازی، سرعت بالا، امنیت و قابلیت اطمینان آن میدانند.
پیشینه
در سال ۱۹۸۳ میلادی ریچارد استالمن که رئیس بنیاد نرمافزارهای آزاد بود پروژه گنو (GNU) را آغاز کرد. در این پروژه که یک جنبش نرمافزاری محسوب میشد برنامهنویسان با یکدیگر همکاری میکردند که این همکاری تا به حال نیز ادامه دارد.
آن زمان بیشتر ابزارهای پروژه گنو که با زبان برنامهنویسی سی و اسمبلی نوشته شده بود آماده کار بود و تنها یک هستهٔ مناسب و آزاد کم بود. حتی سیستمعامل مینیکس نیز با وجود در دسترس بودن کد منبع آن، آزاد نبود و حق نشر مخصوص داشت. کار در پروژه گنو به سمت طراحی یک هسته مناسب متمرکز میشد اما به نظر میرسید که برای ایجاد این هسته حداقل چند سال دیگر زمان نیاز است.
این تأخیر برای لینوس توروالدز قابل تحمل نبود. بنابراین خودش دست به کار شد و با الهام از کد مینیکس کار را آغاز کرد. سرانجام در ۲۵ اوت سال ۱۹۹۱ در ساعت ۲۰:۵۷ (به وقت گرینویچ) پیامی تاریخی به گروه خبری comp.os.minix از طرف لینوس توروالدز ارسال شد. او یک دانشجوی فنلاندی بود که آن زمان در دانشگاه هلسینکی درس میخواند.
متن پیام او چنین بود:
درود به هر کس که آن بیرون از مینیکس استفاده میکند. من هماکنون روی سیستمعاملی آزاد برای رایانههای AT ۳۸۶(۴۸۶) کار میکنم (فقط برای سرگرمی؛ مانند پروژهٔ گنو بزرگ و حرفهای نیست). از ماه آوریل کار را آغاز کردهام و هماکنون این سیستمعامل آمادهاست و کار میکند. دوست دارم از دیدگاه دیگران در مورد سیستمعاملم با خبر شوم. چه آنان که مینیکس را دوست دارند و چه آنان که دوست ندارند. چرا که سیستمعامل من تا حدی شبیه به مینیکس است.
در حال حاضر (۱٫۰۸)bash و(۱٫۴۰) gcc را بر روی آن دارم و چیزهای دیگری که به نظر میرسد همه درست کار میکنند. این بدان معناست که طی چند ماه آینده چیز بهدردبخوری فراهم خواهم کرد و دوست دارم بدانم مردم بیشتر چه امکاناتی لازم دارند. به هر پیشنهاد و نظری خوشآمد میگویم اما قول نمیدهم که آن را انجام دهم!
لینوس (torvalds@kruuna.helsinki.fi).
پ. ن: بله این نرمافزار آزاد است. البته قابل انتقال بر روی انواع دیگر رایانه نیست (چرا که دستورات AT۳۸۶ را به کار میبرد) و ممکن است غیر از سختدیسک AT چیز دیگری را پشتیبانی نکند. این همه چیزی است که من دارم!
لینوکس برخلاف مینیکس (یک سیستمعامل ساده نوشته شده توسط پروفسور اندرو تننبام که برای آموزش طراحی سیستمعامل به کار میرفت) که از معماری ریزهسته استفاده میکرد، با ایده هستههای یکپارچه طراحی شده بود. اولین نسخهٔ لینوکس در سپتامبر ۱۹۹۱ در اینترنت منتشر شد. دومین نسخهٔ آن به فاصلهٔ کمی در اکتبر همان سال منتشر شد. از آن پس هزاران برنامهنویس و هکر در سراسر دنیا در این پروژه شرکت کردند. مقالهٔ «کلیسای جامع و بازار» اثر اریک ریموند مدل گسترش هسته لینوکس و نرمافزارهای مشابه را تشریح میکند.
پنگوئن تاکس نشانه و مایه خوش شانسی هستهٔ لینوکس است. لینوس توروالدز مالک علامت تجاری لینوکس است که به عنوان «نرمافزار سیستمعامل رایانه برای تسهیل در استفاده و عملیات رایانه» به ثبت رسیدهاست.
مجوز
هستهٔ لینوکس و بیشتر بخشهای گنو تحت اجازهنامه عمومی همگانی گنو (جیپیاِل) منتشر میشوند. جیپیال لازم میداند که تغییرات کد منبع و کارهای مشتق شده نیز تحت مجوز جیپیال منتشر شوند.
گنو/لینوکس
از آنجایی که ابزارهای گنو که بخش عمدهٔ توزیعهای لینوکس را تشکیل میدهند از پروژه سیستمعامل آزاد گنو (که بسیار سابقهدارتر از هستهٔ لینوکس است) ریشه گرفتهاند، ریچارد استالمن و بنیاد نرمافزار آزاد درخواست کردهاند که سیستم ترکیب شده (از هستهٔ لینوکس و ابزارهای گنو) بدون توجه به نام توزیعاش، «گنو/لینوکس» خوانده شود.
برخلاف این که بعضی از توزیعها (مانند «گنو/لینوکس دبیان») از این نام استفاده میکنند، بسیاری تنها به گفتن «لینوکس» اکتفا میکنند. تفاوت بین هستهٔ توروالدز و سیستمی که شامل این هسته است، همیشه باعث سردرگمی میشود و نامگذاری همچنان بحثانگیز باقی ماندهاست.
توزیعهای لینوکس
لینوکس تقریباً همیشه یکی از اجزاء یک توزیع لینوکس (به انگلیسی: Distro) است. توزیعهای لینوکس توسط افراد، گروههای نه چندان متشکل و سازمانهای حرفهای گوناگون ایجاد میشوند. این توزیعها شامل تعدادی نرمافزار سیستم و برنامههای کاربردی به همراه روالی مشخص برای نصب آنها بر رایانه هستند. توزیعها معمولاً برای منظورهای مختلفی از جمله محلیسازی، پشتیبانی از یک معماری خاص، کاربردهای بیدرنگ (real-time applications) و سامانههای توکار (embedded systems) به وجود میآیند و برخی از آنها آگاهانه تنها از نرمافزارهای آزاد استفاده میکنند.
یک توزیع همه-منظورهٔ معمولی شامل هسته لینوکس، کتابخانهها و ابزارهای گنو، پوستههای خط فرمان و انبوه بیشماری از نرمافزارهای کاربردی از مجموعههای اداری و سیستم پنجرهای اِکس گرفته تا مفسرها، ویرایشگرهای متن و ابزارهای علمی است.
گستره
در بیش از یک میلیارد دلار: برآورد اندازه گنو/لینوکس که مقاله تحقیقی است بر روی توزیع رِدهت ۷٫۱، تعداد خطوط کد منبع ۳۰ میلیون عنوان شدهاست. در این تحقیق با استفاده از روش (Constructive Cost Model – COCOMO) برآورد شدهاست که بر روی این توزیع نزدیک به ۸ هزار نفر-سال کار گسترش انجام گرفتهاست. چنانکه این نرمافزار با روشهای متعارف خصوصی گسترش مییافت، هزینه گسترشاش در ایالات متحده با روشهای گسترش متعارف خصوصی بالغ بر ۱/۰۸ میلیارد دلار (با قیمت دلار سال ۲۰۰۰) میشد.
بخش بزرگی از کد (۷۱٪) با زبان برنامهنویسی C نوشته شدهاست اما از بسیاری از زبانهای دیگر همچون ++C، لیسپ، اسمبلی، پرل، فرترن، پایتون و زبانهای اسکریپتنویسی گوناگون استفاده شدهاست. اندکی بیش از نیمی از خطوط کد، تحت مجوز عمومی گنو (جیپیاِل) هستند. هسته لینوکس ۲٫۴ میلیون خط کد است و ۸٪ کل کد را تشکیل میدهد.
در پژوهشی جدید که بر روی توزیع لینوکس دبیان نسخه ۴٫۰ که در سال ۲۰۰۷ عرضه شده صورت گرفت، مشخص شد این توزیع دارای نزدیک به ۲۸۳ میلیون خط کد بود که تخمین زده میشود هزینه گسترشاش با روشهای گسترش متعارف خصوصی بالغ بر ۸٫۰۷ میلیارد دلار (با قیمت دلار سال ۲۰۱۳) و زمان مورد نیاز حدود هفتاد و سه هزار نفر-سال میشود.
کاربردهای سیستمعاملهای شکل گرفته بر پایه لینوکس
در گذشته یک کاربر لینوکس برای پیکربندی و نصب سیستم خود، نیازمند دانش بالایی از رایانه بود. این دلیل به علاوه جذاب بودن دسترسی به درون سیستم، باعث شده بود که به طور سنتی کاربران لینوکس را (بر خلاف کاربران ویندوز یا مَکاواِس) کسانی شکل بدهند که با تکنولوژی بیشتر دمخور هستند. افرادی که معمولاً با القاب «هَکِر» و «گیک» شناخته میشوند. این نگرش در سالهای اخیر با افزایش راحتی کار در لینوکس و گسترده شدن استفاده از بسیاری از توزیعها، اعتبار خود را از دست دادهاست. لینوکس در بازار سرورها و کاربردهای ویژه (مانند پردازش تصویر و سرویسهای وِب) پیشرفت قابل ملاحظهای کرده و در حال ورود به بازار بزرگ رایانههای رومیزی است.
لینوکس اساس مجموعه نرمافزار سرور موسوم به ل. آ. م. پ ((ل) ینوکس، (آ) پاچی، (م) ایاسکیوال, (پ) رل/(پ) یاچپی/(پ) ایتون) را تشکیل میدهد که میان گسترشدهندگان وب محبوبیت گستردهای کسب کردهاست. بدلیل پایداری و انعطاف لینوکس، این سیستمعامل حضور پررنگی به عنوان سیستمعاملی برای کامپیوترهای کارساز دارد. بر اساس آمار در سال ۲۰۰۸، از میان ۱۰ تا از معتبرترین شرکت هاستینگ دنیا، ۵ شرکت سیستمعامل لینوکس را در کارسازهای وب خود بکار میگیرند. توزیعهای لینوکس به طور گستردهای به عنوان سیستم عامل در ابر رایانهها استفاده میشود: از نوامبر سال ۲۰۱۰، از ۵۰۰ سیستم برتر، ۴۵۹ مورد (۹۱٫۸ ٪)تحت اجرای توزیعهای لینوکس هستند. لینوکس همچنین به عنوان سیستم عامل برای سکویا آی بی ام قوی ترین ابر رایانه جهان که در سال ۲۰۱۱ به بهرهبرداری میرسد، به کار خواهد رفت.
از لینوکس همچنین بیشتر در سیستمهای کارگذاشته استفاده میشود. رایگان، متن باز و آزاد بودن آن باعث میشود انتخابی ایدهآل برای ابزارهایی مانند سیمپیوتر (رایانهای که برای جمعیت کم درآمد کشورهای در حال گسترش طراحی شده) باشد.
لینوکس با داشتن محیطهای رومیزی مانند گنوم و کیدیای، رابط کاربری همچون اپل مکینتاش و مایکروسافت ویندوز را در کنار دیگر محیطهای گرافیکی و رابط خط فرمان یونیکس-مانند سنتیاش، عرضه میکند. هرچند نرمافزارهای گرافیکی لینوکس برای بسیاری از مصارف وجود دارند، در بسیاری زمینهها نرمافزارهای خصوصی هنوز از گستره و میزان محبوبیت بیشتری برخوردارند.
نرمافزارهای کارسازِ تحت لینوکس
کارساز (به انگلیسی: Server) به سیستم رایانهای پرتوانی گفته میشود که در یک شبکه برای وظیفهای خاص، نقشی را بر عهده میگیرد. سیستمهای کامپیوتری کارساز معمولاً از سختافزاری پرقدرت و نرمافزاری منعطف و پایدار برای ارائهٔ خدمت مورد نظر به مشتریان زیاد استفاده میکنند. سیستمعاملهای شکل گرفته بر پایه لینوکس، به دلیل پایداری و انعطاف، گزینههای خوبی برای نصب بر روی سیستمهای کارساز هستند.
نمونه نرمافزارهای مشهوری که معمولاً تحت لینوکس به عنوان نرمافزار کارساز استفاده میشوند:
اسکوئید (SQUID)
کارساز پروکسی-کش (Proxy-Cache)
بایند (بایند)
کارساز سامانه نام دامنه (DNS)
آپاچی (APACHE)
کارساز وب
پستفیکس(Postfix)
کارساز پست الکترونیکی
مایاسکیوال (MySQL)
کارساز پایگاه داده
نصب
در ابتدا مشکل بودن نصب سیستمهای بر پایه لینوکس مانعی برای پذیرش آن بود؛ اما در سالهای اخیر نصب لینوکس بسیار آسان شدهاست. بسیاری از توزیعها دارای نصبی آسان و قابل مقایسه با نسخههای ویندوز هستند؛ بهگونهای که توزیع اوبونتو با چند کلیک نصب میشود. علاوه بر این، رایانههای شخصی که با توزیعهای لینوکس وارد بازار شدهاند و به آسانی از بسیاری از فروشندههای اصلی، همچون دل، هیولت-پاکارد و وال-مارت قابل تهیه است.
بیشتر شیوههای عمومی نصب لینوکس، توسط همه توزیعهای مهم پشتیبانی میشود که شامل اجرا از طریق لوح فشرده، حاوی برنامههای نصب و راهاندازی نرمافزارهاست. این لوح فشرده میتواند از طریق تصویر استاندارد (ISO image) بارگذاری شده باشد، به تنهایی و به قیمت بسیار پایین خریداری شود، یا میتواند در مجموعه نرمافزارهای تجاری اضافی ارائه شود.
برخی توزیعها همچون دبیان (Debian) با فلاپی دیسک نیز قابل نصب هستند. پس از نصب ابتدایی، بیشتر نرمافزارها از طریق اینترنت و لوح فشرده قابل بارگذاری و نصب هستند.
بسیاری از توزیعها میتوانند بیدرنگ از طریق دیسکهای زنده بسیار سریعتر از نصب بر روی دیسک سخت اجرا شوند. به این صورت که یکبار از لوح فشرده راهاندازی میشود و میتوان از لینوکس بدون هیچگونه تغییری در محتویات دیسک سخت استفاده کرد. به همین نحو برخی توزیعهای حداقل، همچون تامزروتبوت (Tomsrtbt)، بدون نیاز به تغییر محتویات دیسک سخت از طریق فلاپی دیسک قابل اجرا هستند.
همچنین بسیاری توزیعها از راه انداری بر روی شبکه پشتیبانی میکنند، پس همه مراحل نصب و پیکربندی دستگاه میتواند بر روی شبکه انجام شود.
پیکربندی
بیشتر فایلهای پیکربندی در پوشهای با نام «etc/» ذخیره شدهاست. اگر کاربر مخصوص باشد، فایلهای پنهان در پوشه خانه کاربر قرار دارد. تعدادی از برنامهها از پایگاه داده پیکربندی به عوض فایل استفاده میکنند.
راههای بسیاری برای ایجاد تغییرات وجود دارد. آسانترین راه، استفاده از ابزارهای آماده همچون یاست (YaST) در توزیع SUSE یا مرکز کنترل در مندریک (Mandrake) استفاده کرد. انواع دیگر آن، مانند لینوکسکانف (Linuxconf)، ابزارهای سیستم گنوم، و وبمین (Webmin) برای توزیعهای ویژه نیستند. آنها شامل بسیاری از امکانات پیکربندی توسط خط فرمان هستند. از آنجا که به طور متداول بیشتر تنظیمات در فایلهای متنی ذخیره شدهاند، آنها را میتوان با هر ویرایشگر متنی پیکر بندی نمود.
پشتیبانی
فروشندگان تجاری و دیگر کاربران گنو/لینوکس در اجتماعات آنلاین (کانالهای آیآرسی)، گروههای خبری، فهرستهای پستی و انجمنهای اینترنتی پشتیبانی فنی ارائه میکنند. گروه کاربران لینوکس (LUGs) در همه جهان به کاربران بسیاری به رایگان یاری میرساند.
مدل کسب و کار بیشتر فروشندگان تجاری لینوکس (بمانند ردهت و ناول) بر پایه دریافت حقالزحمه جهت پشتیبانی است. اینگونه دریافت پشتیبانی در برابر پرداخت پول برای کاربران تجاری لینوکس حایز اهمیت است.
مک اواس
مک او اس (MAC OS) یک نوع سیستمعامل دارای رابط کاربری است که شرکت اپل آن را توسعه داده است. این سیستمعامل که همراه با ارائه اولین مدل مکینتاش عرضه شد تا قبل از نسخه ۷٫۶ با نام «نرمافزار سیستم» شناخته میشد و از نسخه ۷٫۶ به بعد مک اواس نام گرفت.
طراحی
از همان ابتدا، اپل با استفاده از طراحی به عمد به دنبال به حداقل رساندن نیاز به فهم کامل سیستم عامل توسط کاربر بود به عنوان مثل. کارهایی که بر روی محصولات دیگر نیاز به دانش صریح و آشکاری در کار سیستم عامل را میطلبید بر روی مکینتاش توسط حرکات موس و استفاده از پانل کنترل گرافیکی انجام می گرفته است. در نتیجه مقصود این بود که محصولی کاربر پسند تر و قابل تسلط به راحتی تولید شود. و این عامل تمایز آن از دستگاههایی بود که از محیط عاملهای دیگر، مانند ماشینهای MS - DOS استفاده میکردند، که به اصطلاح بسیار فنی بودند.
در ابتدا هسته اصلی "نرمافزار سیستم" در ROM بود، که بعدها با به روز رسانی به طور معمول به رایگان بر روی فلاپی در اختیار نمایندگیهای اپل قرار گرفت تا دخالت کاربر در هنگام ارتقاء سیستم عامل نیز تنها به اجرای یک فایل نصبی به حداقل برسد، و یا به سادگی جایگزین کردن فایلهای سیستم باشد، سادگی که دوباره محصول این شرکت را از دیگر محصولات متفاوت کرد.
نسخهها
نسخههای اولیه سیستم عامل مک تنها با مکینتاش موتورولا ۶۸۰۰۰ سازگار بودند. و رایانههای اپل با عنوان PowerPC معرفی شدند و درست از زمانی که رایانههای PowerPC معرفی شدند سیستم عامل را نیز برای حمایت از این معماری توسعه دادند. سیستم عامل Mac OS ۸٫۱ آخرین نسخه از برنامه است که میتواند بر روی پردازنده "۶۸K" یا (۶۸۰۴۰) اجرا شود. سیستم عامل Mac OS X، که جایگزین نسخه "کلاسیک" سیستم عامل مک است، از نسخه ۱۰٫۰ ("یوز پلنگ") به نسخه ۱۰٫۳ ("پلنگ") تنها با پردازشگرهای PowerPC سازگار است. و در نسخه ۱۰٫۴ ("ببر"، اینتل تنها پس از بروز رسانی) و نسخه ۱۰٫۵ ("پلنگ") پردازندههای اینتل و PowerPC را پشتیبانی میکند. و بعد از نسخه ۱۰٫۶ ("پلنگ برفی") تنها از پردازندههای اینتل پشتیبانی میکند.
سیستم عامل مکینتاش اولیه در ابتدا از دو بخش نرمافزاری، به نام "سیستم" و "فایندر (finder)"، که هر کدام با شماره نسخه خود را شامل است عرضه شد. سیستم ۷٫۵٫۱ اولین سیستم عامل مک شامل آرم (تغییر در آیکون اصلی که در شروع مک نمایش داده میشود) و Mac OS ۷٫۶ اولین بار به نام "سیستم عامل مک" نام گذاری شد.
ویندوز اکسپی
ویندوز اکسپی (به انگلیسی: Windows XP) یکی از سیستمعاملهایی است که اسم رمز «ویسلر» (Whistler) را بر خود داشت، چرا که در طول توسعهٔ ویندوز ایکسپی بسیاری از کارکنان مایکروسافت در تفریحگاه ویسلر کانادا مشغول اسکی بودند. ویندوز ایکس پی بر روی هسته ویندوز انتی و ۲۰۰۰ پایهگذاری شد و جانشین دو ویندوز ۲۰۰۰ و امیی گردید.
شرکت مایکروسافت ویندورز اکسپی را به منظور بهروزکردن رابط کاربر (شکل ظاهری برنامه)، افزودن ویژگیهای تازه، یکدستکردن «مبنای کد» بین اعضای مختلف خانواده مایکروسافت ویندوز و فراهم آوردن یک پلتفرم باثباتتر، پایهگذاری و در سال ۲۰۰۱ روانه بازار کرد.
ویندوز اکس پی که در اکتبر ۲۰۰۱ عرضه شد، یکی از محبوبترین سیستمهای عامل کامپیوتر در جهان به شمار میرود که گفته میشود بیش از چهارصد میلیون نسخه از آن در حال استفاده است. با این حال مایکروسافت اعلام کرده دیگر به شرکتهای عمده سازنده کامپیوتر نظیر دل، اچ پی و توشیبا مجوز نصب سیستمعامل قبلی را بر روی کامپیوترهای تولیدی نخواهد داد، و از ژانویه ۲۰۰۸ ویندوز اکس پی بر روی کامپیوترهای جدید عرضه نخواهد شد.
ویندوز اکسپی در ابتدا در دو نسخه خانگی و حرفهای عرضه شدهبود. ویندوز اکسپی از چندین زبان مختلف پشتیبانی میکند.
سختافزار لازم
ویرایشها
ویندوز XP در ویراشهای مختلفی ارائه شدهاست که از رایجترین آنها میتوان به ویندوز XP ویرایش خانگی برای کاربران خانگی ویندوز XP حرفهای که قابلیتهای دیگری همچون پشتیبانی از دامنه ویندوز سرور را دارد مناسب کاربران حرفهای و تجاری است، اشاره کرد. ویندوز XP ویرایش Media Center نیز در حقیقت همان ویندوز XP حرفهای است که قابلیتهای اضافی در مورد سیستمهای چند رسانهای همچون تماشای TV، مشاهده DVD و شنیدن موزیک دارد. ویندوز XP ویرایش Tablet PC برای اجرا در پلت فرمهای Table PC طراحی شدهاست. همچنین دو ویرایش ۶۴ بیتی از ویندوز XP وجود دارد: ویندوز XP ویرایش ۶۴ بیتی برای پردازندههای تیانیوم و ویندوز XP ویرایش حرفهای x۶۴ برای پردازندههای x۸۶-۶۴
ویندوز XP به خاطر بهبود کارایی و پایداری نسخههای قبلی ویندوز، مورد توجه قرار گرفتهاست. در ویندوز XP، واسط گرافیکی کاربر کاملاً از نو طراحی شدهاست و بسیار کاربرپسندتر از نسخههای قبلی ویندوز مایکروسافت است. قابلیتهای مدیریت نرمافزاری جدیدی در XP معرفی شدهاند که کاربران را از جهنم DLLها که در نسخههای قبلی همه را به ستوه درمی آورد، رهایی میبخشد. XP اولین نسخه از ویندوز است که از فعال سازی محصول برای مقابله با قوانین تخلف نرمافزاری استفاده میکند. با وجود تمام قابلیتهای موجود، XP به خاطر آسیب پذیریهای امنیتی، وجود برنامههای جانبی مایکروسافت همچون اینترنت اکسپلورر و ویندوز مدیا پلیر در ویندوز به صورت پیش فرض و برخی زمینههای واسط کاربر، مورد انتقاد کاربران قرار گرفتهاست. در ویرایش اصلی ویندوز، ویرایش خانگی برای کاربران خانگی و ویرایش حرفهای، برای کاربران حرفهای و تجاری است. علاوه بر این ویرایش Media Center نیز موجود میباشد.
در زیر برخی از قابلیتهای اضافی ویندوز XP نسخه حرفهای نسبت به نسخه خانگی آمدهاست:
توانایی پیوستن به دامنه ویندوز سرور، گروهی از کامپیوترها که از راه دور به وسیله یک یا چند سرور مرکزی مدیریت میشوند (اکثر کسب و کارهایی که از ویندوز استفاده میکنند دامنه و ویندوز سرور دارند).
استفاده از طرحهای لیست کنترل دسترسی برای تعیین اجازه دسترسی به فایلها به کاربران خاص، البته کاربران میتوانند از ابزارهایی برای از بین بردن این اجازه دسترسیها استفاده کنند. رفتن به Safe Mode یکی از راههای اصلاح لیست کنترل دسترسیها است.
سرور سرویسهای ترمینال که امکان استفاده از ویندوز را به کاربران کامپیوترهای دیگر از طریق شبکهٔ محلی یا اینترنت میدهد.
فولدر و فایلهای offline که به PC امکان ذخیره و اجرای یک کپی از فایلهای کامپیوترهای دیگر موجود در شبکه در حالت قطع بودن اتصال را میدهد.
سیستم فایل رمزنگاری شده، که فایلهای ذخیره شده در هارد دیسک را رمزنگاری میکند و در نتیجه به کاربران غیرمجاز دیگر اجازه خواندن آنها را نخواهد داد.
قابلیتهای مدیریتی متمرکز شده، شامل سیاستهای گروهی، نصب و نگهداری خودکار نرمافزار، سرویسهای نصب از راه دور (RIS)
پشتیبانی از دو واحد پردازش مرکزی و تواناییهای هایپر تردینگ که در پردازندههای مدرن به عنوان بخشی از یک پردازنده فیزیکی در نظر گرفته میشود.
ویندوز XP برای سختافزارهای خاص
مایکروسافت نسخههای سفارشی از ویندوز XP برای بازار سختافزارهای خاص را نیز عرضه کردهاست. پنج نسخه از XP برای سختافزارهای خاص است که دوتای آنها مخصوص پردازندههای ۶۴ بیتی است.
ویرایش ۶۴ بیتی ویندوز اکسپی
«ویرایش ۶۴ بیتی ویندوز XP» برای کامپیوترهای با پردازنده اتیانیوم طراحی شدهاست. عرضه این نسخه در سال ۲۰۰۵ پس از اتمام تولید سیستمهای ایتانیوم، توسط کمپانی Hewlett Packard آخرین کمپانی عرضه کننده سیستمهای ایتانیوم متوقف شد. البته در نسخههای سرور ویندوز همچنان از پردازندههای ایتانیوم پشتیبانی میشود.
ویرایش x۶۴ ویندوز XP حرفهای
«ویرایش x۶۴ ویندوز حرفهای» بر اساس ویندوز سرور ۲۰۰۳ طراحی شدهاست و پردازندههای AMD ۶۴ و نسخه توسعه یافته معماری IA-۳۲ اینتل را پشتیبانی میکند. این معماری در چیپهای اوپترون و Athlon ۶۴ شرکت AMD و نسخههای توسعه یافته اکس۸۶-۶۴ با سازگاری گسترده چیپهای اینتل یافت میشود. مایکروسافت در نسخههای قبلی ویندوز نیز میکروپروسسورهای خاص را پشتیبانی میکرد. البته ویندوز NT پردازندههای ۶۴ بیتی را به عنوان ۳۲ بیتی در نظر میگرفت. فایلهای لازم برای تمام معماریهای مختلف پردازندهها در CD نصب XP موجود است و نیازی به خرید نسخههای مجزا نمیباشد.
ویرایش Media Center ویندوز اکسپی
«ویرایش Media Center ویندوز XP» برای کامپیوترهای media center پیادهسازی شدهاست. این نسخه تنها در همان کامپیوترها موجود است و به صورت مجزا به فروش نمیرسد. در سال ۲۰۰۳ این نسخه تحت عنوان «ویندوز XP ویرایش Media center ۲۰۰۳» به هنگام شد که قابلیتهای جدیدی همچون امکان استفاده از رادیو FM به آن اضافه شده بود. در سالهای ۲۰۰۴ و ۲۰۰۵ نیز این ویرایش ارتقاء داده شد.
ویرایش Tablet PC ویندوز اکسپی
مایکروسافت این نسخه را به طور خاص برای کامپیوترهای لپ تاپ/نت بوک که به آنها اصطلاحاً Tablet PC میگویند، طراحی کردهاست. این ویرایش یادداشتهای دست نوشته، صفحات نمایش تصویر-گرا و صفحات نمایش حساس به قلم را پشتیبانی میکنند. این ویرایش نیز به همراه کامپیوتر Tablet به فروش میرسد و امکان خرید مجزای آن وجود ندارد.
ویندوز XP نهفته
این ویرایش برای کاربرد در وسایل الکترونیکی خاصی همچون بستههای Set-top، کیوسکها، دستگاههای خودپرداز، وسایل پزشکی، دستگاههای POS و مولفههای پروتکل صدا روی اینترنت (VOIP) پیادهسازی شدهاست.
ویندوز پایه برای کامپیوترهای شخصی قدیمی
در ژوئیه ۲۰۰۶ مایکروسافت یک نسخه محدود شده(thin-client) از ویندوز XP برای PCهای قدیمی ارائه کرد که تنها برای مشتریان بیمه نرمافزاری مایکروسافت مایکروسافت که میخواهند سیستم عامل خود را به XP ارتقا دهند ولی به هر دلیل تمایلی به خرید سختافزارهای مورد نیاز برای XP ندارند، عرضه میشود.
ویرایش مبتدی ویندوز XP
این ویرایش ویندوز XP نسخه ارزان قیمتی است که در کشورهای تایلند، ترکیه، مالزی، اندونزی، روسیه، هند، برزیل، آرژانتین، شیلی، مکزیک، اکوادور، اروگوئه و ونزوئلا موجود است. این ویرایش شبیه ویرایش خانگی است ولی محدودیتهای خاصی همچون اجازه اجرای تنها سه برنامه به طور همزمان را دارد. بر طبق گفته انتشارات مایکروسافت، ویرایش مبتدی ویندوز XP، «یک ویرایش ارزان قیمت مایکروسافت ویندوز XP است که برای کاربران مبتدی PC در کشورهای در حال توسعه طراحی شدهاست.»
ویرایش مبتدی امکانات خاصی برای بازارهای غیرآمریکایی، جایی که مشتریان ممکن است سواد کامپیوتری نداشته باشند، دارد. به عنوان مثال امکانات راهنمای محلی شده برای آنهایی که به زبان انگلیسی صحبت نمیکنند، تصاویر پس زمینه مخصوص هر کشور و محافظ صفحه نمایشهایی مخصوص و تنظیمات پیش فرض دیگری که برای استفاده راحتتر از ویندوز XP طراحی شدهاست، برخی از امکانات مخصوص این ویرایش است. به علاوه این ویرایش محدودیتهایی دارد که اعمال آنها باعث ارزانتر شدن آن نسبت به نسخههای دیگر ویندوز XP شدهاست.
در این ویرایش تنها سه برنامه به طور همزمان اجازه اجرا دارند و هر برنامه نیز حداکثر میتواند سه پنجره باز داشته باشد. بیشترین رزولوشن به ۷۶۸×۱۰۲۴ محدود شدهاست و هیچ پشتیبانی از دامنه و شبکههای کارگروهی نمیشود. همچنین این ویرایش برای پردازندههای کم توانی همچون سلرون اینتل و Duron کمپانی AMD ساخته شدهاست. در این ویرایش حداکثر حافظه اصلی ۲۵۶ مگابایت و ۸۰ گیگا بایت هارد دیسک را پشتیبانی میکند. (البته مایکروسافت به صورت واضح اعلام نکردهاست که این محدودیت برای اندازه کل دیسک است با برای هر پارتیشن) و بالاخره اینکه گزینههای محدودی برای سفارشی سازی تمها، دسک تاپ و نوار ابزار موجود است.
در ۱۹ اکتبر ۲۰۰۶ مایکروسافت اعلام کرد که ۱٫۰۰۰٫۰۰۰ نسخه از ویرایش مبتدی ویندوز XP را به فروش رساندهاست. اما در تولید انبوه این ویرایش توفیق چندانی نداشتهاست. نسخههای کرک شده و استفاده بدون مجوز از این ویرایش نیز بسیار موجود است.
بخش ورودی/خروجی (I/O) این امکان را به رایانه میدهد تا اطلاعات را از جهان بیرون تهیه و نتایج آنها را به همان جا برگرداند. محدوده فوق العاده وسیعی از دستگاههای ورودی/خروجی وجود دارد، از خانواده آشنای صفحهکلیدها، نمایشگرها، نَرمدیسک گرفته تا دستگاههای کمی غریب مانند رایابینها (webcams). (از سایر ورودی/خروجیها میتوان موشواره mouse، قلم نوری، چاپگرها (printer)، اسکنرها، انواع لوحهای فشرده(CD, DVD) را نام برد).
چیزی که تمامی دستگاههای عمومی در آن اشتراک دارند این است که آنها رمزکننده اطلاعات از نوعی به نوع دیگر که بتواند مورد استفاده سیستمهای رایانه دیجیتالی قرار گیرد، هستند. از سوی دیگر، دستگاههای خروجی آن اطلاعات به رمز شده را رمزگشایی میکنند تا کاربران آنها را دریافت نمایند. از این رو یک سیستم رایانه دیجیتالی یک نمونه از یک سامانه دادهپردازی میباشد.
دستورالعملها
هر رایانه تنها دارای یک مجموعه کم تعداد از دستورالعملهای ساده و تعریف شده میباشد. از انواع پرکاربردشان میتوان به دستورالعمل «محتوای خانه ۱۲۳ را در خانه ۴۵۶ کپی کن!»، «محتوای خانه ۶۶۶ را با محتوای خانه ۰۴۲ جمع کن، نتایج را در خانه ۰۱۳ کن!»، «اگر محتوای خانه ۹۹۹ برابر با صفر است، به دستورالعمل واقع در خانه ۳۴۵ رجوع کن!».
دستورالعملها در داخل رایانه بصورت اعداد مشخص شدهاند - مثلاً کد دستور العمل (copy instruction) برابر ۰۰۱ میتواند باشد. مجموعه معین دستورالعملهای تعریف شده که توسط یک رایانه ویژه پشتیبانی میشود را زبان ماشین مینامند. در واقعیت، اشخاص معمولاً به زبان ماشین دستورالعمل نمینویسند بلکه بیشتر به نوعی از انواع سطح بالای زبانهای برنامهنویسی، برنامهنویسی میکنند تا سپس توسط برنامه ویژهای (تفسیرگرها (interpreters) یا همگردانها (compilers) به دستورالعمل ویژه ماشین تبدیل گردد. برخی زبانهای برنامهنویسی از نوع بسیار شبیه و نزدیک به زبان ماشین که اسمبلر (یک زبان سطح پایین) نامیده میشود، استفاده میکنند؛ همچنین زبانهای سطح بالای دیگری نیز مانند پرولوگ نیز از یک زبان انتزاعی و چکیده که با زبان ماشین تفاوت دارد بجای دستورالعملهای ویژه ماشین استفاده میکنند.
معماریها
در رایانههای معاصر واحد محاسبه و منطق را به همراه واحد کنترل در یک مدار مجتمع که واحد پردازشی مرکزی (CPU) نامیده میشود، جمع نمودهاند. عموما، حافظه رایانه روی یک مدار مجتمع کوچک نزدیک CPU قرار گرفته. اکثریت قاطع بخشهای رایانه تشکیل شدهاند از سامانههای فرعی (به عنوان نمونه، منبع تغذیه رایانه) و یا دستگاههای ورودی/خروجی.
برخی رایانههای بزرگتر چندین CPU و واحد کنترل دارند که بصورت همزمان با یکدیگر درحال کارند. اینگونه رایانهها بیشتر برای کاربردهای پژوهشی و محاسبات علمی بکار میروند.
کارایی رایانهها بنا به تئوری کاملاً درست است. رایانه دادهها و دستورالعملها را از حافظهاش واکشی (fetch) میکند. دستورالعملها اجرا میشوند، نتایج ذخیره میشوند، دستورالعمل بعدی واکشی میشود. این رویه تا زمانی که رایانه خاموش شود ادامه پیدا میکند. واحد پردازنده مرکزی در رایانههای شخصی امروزی مانند پردازندههای شرکت ای-ام-دی و شرکت اینتل از معماری موسوم به خط لوله استفاده میشود و در زمانی که پردازنده در حال ذخیره نتیجه یک دستور است مرحله اجرای دستور قبلی و مرحله واکشی دستور قبل از آن را آغاز میکند. همچنین این رایانهها از سطوح مختلف حافظه نهانگاهی استفاده میکنند که در زمان دسترسی به حافظه اصلی صرفهجویی کنند.
برنامهها
برنامه رایانهای فهرستهای بزرگی از دستورالعملها (احتمالاً به همراه جدولهائی از داده) برای اجرا روی رایانه هستند. خیلی از رایانهها حاوی میلیونها دستورالعمل هستند، و بسیاری از این دستورها به تکرار اجرا میشوند. یک رایانه شخصی نوین نوعی (درسال ۲۰۰۳) میتواند در ثانیه میان ۲ تا ۳ میلیارد دستورالعمل را پیاده نماید. رایانهها این مقدار محاسبه را صرف انجام دستورالعملهای پیچیده نمیکنند. بیشتر میلیونها دستورالعمل ساده را که توسط اشخاص باهوشی «برنامه نویسان» در کنار یکدیگر چیده شدهاند را اجرا میکنند. برنامهنویسان خوب مجموعههایی از دستورالعملها را توسعه میدهند تا یکسری از وظایف عمومی را انجام دهند (برای نمونه، رسم یک نقطه روی صفحه) و سپس آن مجموعه دستورالعملها را برای دیگر برنامهنویسان در دسترس قرار میدهند. (اگر مایلید «یک برنامهنویس خوب» باشید به این مطلب مراجعه نمایید.)
رایانههای امروزه، قادرند چندین برنامه را در آن واحد اجرا نمایند. از این قابلیت به عنوان چندکارگی (multitasking) نام برده میشود. در واقع، CPU یک رشته دستورالعملها را از یک برنامه اجرا میکند، سپس پس از یک مقطع ویژه زمانی دستورالعملهایی از یک برنامه دیگر را اجرا میکند. این فاصله زمانی اکثرا بهعنوان یک برش زمانی (time slice) نام برده میشود. این ویژگی که CPU زمان اجرا را بین برنامهها تقسیم میکند، این توهم را بوجود میآورد که رایانه همزمان مشغول اجرای چند برنامهاست. این شبیه به چگونگی نمایش فریمهای یک فیلم است، که فریمها با سرعت بالا در حال حرکت هستند و به نظر میرسد که صفحه ثابتی تصاویر را نمایش میدهد. سیستمعامل همان برنامهای است که این اشتراک زمانی را بین برنامههای دیگر تعیین میکند.
سیستمعامل
کامپیوتر همیشه نیاز دارد تا برای بکار انداختنش حداقل یک برنامه روی آن در حال اجرا باشد. تحت عملکردهای عادی این برنامه همان سیستمعامل یا OS که مخفف واژههای Operating System است. سیستم یا سامانه عامل بر اساس پیشفرضها تصمیم میگیرد که کدام برنامه برای انجام چه وظیفهای اجرا شود، چه زمان، از کدام منابع (مثل حافظه، ورودی/خروجی و...) استفاده شود. همچنین سیستمعامل یک لایه انتزاعی بین سختافزار و برنامههای دیگر که میخواهند از سختافزار استفاده کنند، میباشد، که این امکان را به برنامه نویسان میدهد تا بدون اینکه جزئیات ریز هر قطعه الکترونیکی از سختافزار را بدانند بتوانند برای آن قطعه برنامهنویسی نمایند. در گذشته یک اصطلاح متداول بود که گفته میشد با تمام این وجود کامپیوترها نمیتوانند برخی از مسائل را حل کنند که به این مسائل حل نشدنی گفته میشود مانند مسائلی که در مسیر حلشان در حلقه بینهایت میافتند. به همین دلیل نیاز است که با کمک روشهای خاص بطور مثال به چند بخش تقسیم نمودن مساله یا روشهای متداول دیگر از رخ دادن این خطا تا حد امکان جلوگیری نمود. از جمله سیستم عاملهای امروزی میتوان به مایروسافت ویندوز، مکینتاش اپل و لینوکس و بی اس دی اشاره کرد.
کاربردهای رایانه
نخستین رایانههای رقمی، با قیمتهای زیاد و حجم بزرگشان، در اصل محاسبات علمی را انجام میدادند، انیاک یک رایانهٔ قدیمی ایالات متحده اصولاً طراحی شده تا محاسبات پرتابهای توپخانه و محاسبات مربوط به جدول چگالی نوترونی را انجام دهد. (این محاسبات بین دسامبر ۱۹۴۱ تا ژانویه ۱۹۴۶ روی حجمی بالغ بر یک میلیون کارت پانچ انجام پذیرفت! که این خود طراحی و سپس تصمیم نادرست بکارگرفته شده را نشان میدهد) بسیاری از ابررایانههای امروزی صرفاً برای کارهای ویژهٔ محاسبات جنگافزار هستهای استفاده میگردد.
CSIR Mk I نیز که نخستین رایانه استرالیایی بود برای ارزیابی میزان بارندگی در کوههای اسنوئی (Snowy)این کشور بکاررفت، این محاسبات در چارچوب یک پروژه عظیم تولید برقابی انجام گرفت.
برخی رایانهها نیز برای انجام رمزگشایی بکارگرفته میشد، برای مثال Colossus که در جریان جنگ جهانی دوم ساخته شد، جزو اولین کامپیوترهای برنامهپذیر بود (البته ماشین تورینگ کامل نبود). هرچند رایانههای بعدی میتوانستند برنامهریزی شوند تا شطرنج بازی کنند یا تصویر نمایش دهند و سایر کاربردها را نشان دهد.
سیاستمداران و شرکتهای بزرگ نیز رایانههای اولیه را برای خودکارسازی بسیاری از مجموعههای داده و پردازش کارهایی که قبلا توسط انسانها انجام میگرفت، بکار بستند - برای مثال، نگهداری و بروزرسانی حسابها و داراییها. در موسسات پژوهشی نیز دانشمندان رشتههای مختلف شروع به استفاده از رایانه برای مقاصدشان نمودند.
کاهش پیوسته قیمتهای رایانه باعث شد تا سازمانهای کوچکتر نیز بتوانند آنها را در اختیار بگیرند. بازرگانان، سازمانها، و سیاستمداران اغلب تعداد زیادی از کامپیوترهای کوچک را برای تکمیل وظایفی که قبلا برای تکمیلشان نیاز به رایانه بزرگ (mainframe) گرانقیمت و بزرگ بود، به کار بگیرند. مجموعههایی از رایانههای کوچکتر در یک محل اغلب بهعنوان خادم سر (server farm) نام برده میشود.
با اختراع ریزپردازندهها در دههٔ ۱۹۷۰ این امکان که بتوان رایانههایی بسیار ارزان قیمت را تولید نمود بوجود آمد. رایانههای شخصی برای انجام وظایف بسیاری محبوب گشتند، از جمله کتابداری، نوشتن و چاپ مستندات. محاسبات پیش بینیها و کارهای تکراری ریاضی توسط صفحات گسترده (spreadsheet)، ارتباطات توسط پست الکترونیک، و اینترنت. حضور گسترده رایانهها و سفارشی کردن آسانشان باعث شد تا در امورات بسیار دیگری بکارگرفته شوند.
در همان زمان، رایانههای کوچک، که معمولاً با یک برنامه ثابت ارائه میشدند، راهشان را بسوی کاربردهای دیگری باز مینمودند، کاربردهایی چون لوازم خانگی، خودروها، هواپیماها، و ابزار صنعتی. این پردازشگرهای جاسازی شده کنترل رفتارهای آن لوازم را سادهتر کردند، همچنین امکان انجام رفتارهای پیچیده را نیز فراهم نمودند (برای نمونه، ترمزهای ضدقفل در خودروه). با شروع قرن بیست و یکم، اغلب دستگاههای الکتریکی، اغلب حالتهای انتقال نیرو، اغلب خطوط تولید کارخانهها توسط رایانهها کنترل میشوند. اکثر مهندسان پیش بینی میکنند که این روند همچنان به پیش برود... یکی از کارهایی که میتوان بهوسیله رایانه انجام داد برنامه گیرنده ماهوارهاست.
نیز تنها ۴۹۵ دلار قیمت داشت! قیمت آن کامپیوتر نیز ۳٬۰۰۵ دلار بود و IBM در آن زمان توانست ۶۷۱٬۵۳۷ دستگاه از آن را بفروشد.
انواع رایانه
رایانههای توکار (جاسازی شده)
رایانههایی هم وجود دارند که تنها برای کاربردهایی ویژه طراحی میشوند. در ۲۰ سال گذشته، هرچند برخی ابزارهای خانگی که از نمونههای قابل ذکر آن میتوان جعبههای بازیهای ویدئویی را که بعدها در دستگاههای دیگری از جمله تلفن همراه، دوربینهای ضبط ویدئویی، و PDAها و دهها هزار وسیله خانگی، صنعتی، خودروسازی و تمام ابزاری که در درون آنها مدارهایی که نیازهای ماشین تورینگ را مهیا ساختهاند، گسترش یافت، را نام برد (اغلب این لوازم برنامههایی را در خود دارند که بصورت ثابت روی ROM تراشههایی که برای تغییر نیاز به تعویض دارند، نگاشته شدهاند). این رایانهها که در درون ابزارهای با کاربرد ویژه گنجانیده شدهاند «ریزکنترلگرها» یا رایانههای توکار" (Embedded Computers) نامیده میشوند. بنا بر این تعریف این رایانهها به عنوان ابزاری که با هدف پردازش اطّلاعات طراحی گردیده محدودیتهایی دارد. بیشتر میتوان آنها را به ماشینهایی تشبیه کرد که در یک مجموعه بزرگتر به عنوان یک بخش حضور دارند مانند دستگاههای تلفن، ماکروفرها و یا هواپیما که این رایانهها بدون تغییری فیزیکی به دست کاربر میتوانند برای هدفهای گونهگونی به کارگرفته شوند.
رایانههای شخصی
اشخاصی که با انواع دیگری از رایانهها ناآشنا هستند از عبارت رایانه برای رجوع به نوع خاصی استفاده میکنند که رایانه شخصی (PC) نامیده میشوند. رایانهای است که از اجزای الکترونیکی میکرو (ریز) تشکیل شده که جزو کوچکترین و ارزانترین رایانهها به شمار میروند و کاربردهای خانگی و اداری دارند. شرکت آیبیام رایانه شخصی را در سال ۱۹۸۱ میلادی به جهان معرفی کرد.
نخستین رایانه آیبیام از برخی از ماشین حسابهای امروزی نیز ضعیفتر است ولی در آن زمان شگفت انگیز بود. رایانه شخصی سی سال پیش دارای حافظه ROM با ظرفیت 40K و حافظه RAM با ظرفیت 64K بود. البته کاربر میتوانست حافظه RAM را تا 256K افزایش دهد. قیمت هر ماژول 64K حافظه والانیوز
سرمایهگذاری
صنعت رایانه همواره صنعتی رو به رشد، چه در حوزهٔ سختافزارى و چه در حوزهٔ نرمافزارى بوده است، این صنعت پیوسته مورد توجه سرمایه گذاران بوده و سرمایهها را به خود جذب کرده است. آیندهٔ روشن این فنّاوری همواره سرمایه داران را ترغیب میکند تا روی این صنعت سرمایهگذاری کنند.
نرمافزار
نرمافزار (به انگلیسی: Software) یا برنامه، مجموعهای از دستورالعملهای دقیق و مرحله به مرحله است که هدف خاصی را دنبال میکنند.
ظاهراً، اولین بار جان توکی در سال ۱۹۵۸ این واژه را بهاین معنا بهکار بردهاست. احتمالاً این واژه در مقابل سختافزار (به انگلیسی: Hardware) به کار بردهاند که بسیار پیش از پیدایش رایانه (به معنای اسباب و اشیاء) بهکار میرفتهاست.
دو گروه کلی نرمافزارها
نرمافزارهای رایانه را میتوان به دو دسته بزرگ تقسیم کرد:
نرمافزار سیستم (به انگلیسی: System software)
نرمافزار کاربردی (به انگلیسی: Application software)
میتوان گفت نرمافزارهای کاربردی، برنامههای مورد استفاده کاربرند و نرمافزارهای سیستمی، مدیریت رایانه را برعهده دارند. مهمترین نرمافزار سیستم، سیستمعامل است.
سیستم عامل
وقتی برنامهای را روی رایانه خود نصب میکنید، اجزای سختافزاری آن به فرمان آن برنامه در میآیند. برای نمونه هنگامی که با یک برنامه اجرای موسیقی کار میکنید، کارت صدای رایانه تان با برنامه پخش موسیقی همکاری میکند و یک آهنگ یا پرونده (فایل) صوتی را از طریق بلندگوی رایانه تان پخش میکند.
این ارتباط میان نرمافزار و سختافزار توسط سیستم عامل انجام میشود. این تنها قسمتی از کار سیستم عامل است.
سیستم عامل خود یک برنامه نرم افزاری است با این تفاوت که چون تمام منابع و امکانات سخت افزاری در اختیار وی می باشد دارای ویژگی منحصر به فرد می باشد بنابراین آن را در رده نرم افزارها می خوانیم با این ویژگی که از اهمیت خاصی برخوردار است. به بیان دیگر سیستم عامل یک برنامه جامع است که اجازه در اختیار قراردادن منابع و امکانات سخت افزاری را برای نرم افزارها صادر می کند و این سیستم عامل است که مسئول صحت عملکرد سیستم و منابع آن است.
سیستم عامل شامل 4 بخش مهم است
1- مدیریت پردازش و پردازشگر
2- مدیریت حافظه
3- مدیریت دستگاههای ورودی و خروجی (I/O)
4- مدیریت فایل
سه گروه کلی نرمافزارهای معماری
از دیدگاه ساختاری (معماری) (architecture)، نرمافزارها به دستههای زیر تقسیم میشوند:
کاربر-بنیان یا Client Base
کارگزار-بنیان یا Server Base
کاربر کارگزار بنیان یا Client-Server Base
امروزه واژه نرمافزار را در معناهایی به جز معنی برنامه رایانهای نیز بهکار میبرند. مثلاً در دانش مدیریت برای اشاره به روشها و دانش فنی (در برابر وسایل و تجهیزات و نیروی انسانی). نرمافزارها انواع گوناگونی دارند که مهم ترین دسته بندی آنها دستهٔ تجاری و آزاد است. به ویژه با رویکردهای طرحهای گنو و لینوکس معنای ژرف تری به نرمافزارهای آزاد داده شده تا آنجا که برخی نرمافزارها را نماد فرهنگ می دانند. نرمافزارها را برنامه نویسان تدوین کرده و انتشار میدهند. این برنامه نویسان ممکن است در یک شرکت مشغول کار باشند یا در خانه برنامه نویسی کنند مانند برنامه نویسان برخی نرمافزارهای لینوکس. امروزه بیشتر کاربران تنها با ظاهر گرافیکی این برنامهها کار میکنند و اقدامات بسیاری از آنها از دید کاربر پنهان میماند به عبارتی هر نرمافزار مجموعهای از رمزها است که از الگوریتمی خاص پشتیبانی میکنند این رمزها خود با رمزهای گرافیکی آمیخته شده و بسیاری از اقدامات برنامه به دور از چشم کاربر عادی رخ میدهد. برنامهها با رمزهایی نوشته میشوند که بعداً یک رمزخوان آن را در رایانه کاربر اجرا میکند.
رقابت نرمافزاری
در حال حاضر نرمافزارهای کامپیوتری فراوان را میتوان در بازار یافت که به طور جدی به رقابت خود برای بقا ادامه میدهند. از مسائل قابل ذکر در این مورد میتوان به خرید سهام شرکتهای نرمافزاری کوچک و بزرگ توسط شرکتهای دیگر اشاره نمود. همچنان که شرکت بزرگ گوگل به خرید سهام شرکتهای بزرگ همچنان ادامه میدهد، در مدت کمی توانسته بسیاری از شرکتها را تحت سلطه خود درآورد.
نرمافزار سیستم
نرمافزار سیستم به نرمافزاری در رایانه گفته میشود که به کارکرد سیستم رایانه یا کاربردهای سطح پایین (یا Low Level) رایانه مربوط باشد. این نرمافزارها به ساختار فیزیکی سختافزار رایانه وابسته هستند و در نوشتن آنها از زبانهای سطح پائین مانند زبان اسمبلی استفاده میشود. سیستمعامل و درایورها از نرمافزارهای سیستم هستند. از جمله زبان هایی که برای نگارش نرمافزارهای سیستمی استفاده میشود، زبان برنامه نویسی C میباشد. کار کردن با سی برای برنامه نویسان راحت تر است و آنان این زبان را به اسمبلی ترجیح میدهند. اگر برای نگارش نرمافزار سیستمی مشکل محدودیت فضای سختافزاری داشته باشیم بهتر است با زبان اسمبلی کار کنیم که حجم آن پایین تر است. نرمافزارهای سیستمی به سختافزار وابسته اند.
در برابر نرمافزار سیستم، نرمافزار کاربردی قرار دارد که برای کاربردهای سطح بالا و غیرسیستمی رایانه است و معمولاً به زبانهای سطح بالا نوشته میشود که از جزئیات سختافزاری سیستم مستقل است.
نرمافزار کاربردی
نرمافزار کاربردی (به انگلیسی: Application software) عبارت است از نرمافزاری که با استفادهٔ مستقیم از منابع و قابلیتهای رایانه کاری را مستقیماً برای کاربر انجام میدهد. باید توجه داشت که این عبارت در مقابل عبارت نرمافزار سیستمی معنی پیدا میکند.
نرمافزار سیستمی در مقابل در پسزمینه عمل میکند و خدماتی را فراهم میکند که دیگر نرمافزارها و یا سیستمعامل میتوانند برای انجام کارهای خود از آن استفاده کنند. اما در عوض معمولاً مستقیماً با کاربر عادی در تماس نیست و خدماتی را به او ارایه نمیدهد.
در عمل بیشتر نرمافزارهایی که کاربران با آنها سر و کار دارند از این دسته محسوب میشوند. برای مثال میتوان به نرمافزارهای رومیزی یعنی واژهپردازها، صفحه گستردهها، نرمافزارهای طراحی گرافیکی، بازیهای رایانهای و امثال آنها اشاره کرد.
بسیاری نرمافزارهای کاربردی، برای توسعهدهندگان ابزار رابط برنامهنویسی کاربردی هم فراهم میکنند تا بتوان از قابلیتهای نرمافزار در نرمافزارهای جدید استفاده کرد. برای مثال نرمافزار ادوبی آکروبات هنگام نصب ایپیآی فراهم میکند که برنامهنویس میتواند با استفاده از آن تواناییهای آکروبات را در برنامهٔ خود به کار گیرد.
برای عنوان نمونههای دیگر میتوان به نرمافزارهای پردازش متن، برگههای گسترده (صفحات گسترده) و نرمافزارهای پخش نوا و نما اشاره کرد.
شبکه
شبکه عبارتست از مجموعه یا سیستم درون پیوندی(interconnected) انسانی یا فیزیکی که دسترسی به قابلیت یا توانایی خاصی را در محدوده ای از مکان و زمان فراهم می کند و در حالت مطلوب محدودیت مکانی و زمانی ندارد.
موارد زیر نمونههای انواع شبکه میباشند:
شبکههای فناوری:
شبکههای آبرسانی← قابلیت و توانایی " آبرسانی "
شبکه الکتریکی← قابلیت و توانایی " برق رسانی "
شبکه گازرسانی← قابلیت و توانایی " گاز رسانی "
شبکه مخابراتی← قابلیت و توانایی " گفتگو "
شبکه حمل و نقل← قابلیت و توانایی " جابجایی "
شبکه داده یا data ← قابلیت و توانایی " انتقال داده یا data "
شبکه رایانهای
شبکههای رسانهای:
شبکه رادیویی← قابلیت و توانایی " صوت "
شبکه تلویزیونی← قابلیت و توانایی " صوت و تصویر"
شبکههای انسانی:
شبکه اقتصادی← قابلیت و توانایی " درآمد "
شبکه اجتماعی← قابلیت و توانایی " همزیستی "
دیگر شبکهها:
شبکه فضایی
شبکه عصبی
بدیهی است بهره برداری از قابلیت و توانایی شبکه ها در مکانهای خاصی امکان دارد که گره (Node) نام دارند و مستلزم تجهیزات خاصی میباشند.
حافظه مجازی
حافظه مجازی یکی ازبخشهای متداول در اکثر سیستمهای عامل کامپیوترهای شخصی است. سیستم فوق با توجه به مزایای عمده، بسرعت متداول و با استقبال کاربران کامپیوتر مواجه شدهاست.
در حقیقت حافظه مجازی دارای دو وظیفه اصلی میباشد:
به پزدازشها اجازه میدهد بدون نگرانی از دیگر کدهای در حال اجرا از حافظه استفاده نمایند.
محدود کردن پردازشها از دخالت کردن در استفاده حافظه توسط سیستمعامل و دیگر پردازشها. به نوعی تامین امنیت محدوده اشغال شده توسط پردازشهای دیگر
دیسک سخت بجای حافظه اصلی
اکثر کامپیوترها در حال حاضر از حافظههای محدود با ظرفیت ۶۴، ۱۲۸ و یا ۲۵۶ مگابایت استفاده مینمایند. حافظه موجود در اکثر کامپیوترها بمنظور اجرای چندین برنامه بصورت همزمان توسط کاربر، پاسخگو نبوده و با کمبود حافظه مواجه خواهیم شد. مثلاً در صورتیکه کاربری بطور همزمان، سیستمعامل، یک واژه پرداز، مرورگر وب و یک برنامه برای ارسال نامه الکترونیکی را فعال نماید، ۳۲ و یا ۶۴ مگابایت حافظه، ظرفیت قابل قبولی نبوده و کاربران قادر به استفاده از خدمات ارائه شده توسط هر یک از نرمافزارهای فوق نخواهند بود. یکی از راهکارهای غلبه بر مشکل فوق افزایش و ارتقای حافظه موجود به صورت فیزیکی است. با ارتقای حافظه و افزایش آن ممکن است مشکل فوق در محدودهای دیگر مجدداً بروز نماید. یکی دیگر از راهکارهای موجود در این زمینه، استفاده از حافظه مجازی است .
در تکنولوژی حافظه مجازی از حافظههای جانبی ارزان قیمت نظیر هارد دیسک استفاده میگردد. در چنین حالتی اطلاعات موجود در حافظه اصلی که کمتر مورد استفاده قرار گرفتهاند، از حافظه خارج و در محلی خاص بر روی هارد دیسک ذخیره میگردند. بدین ترتیب بخش ی از حافظه اصلی آزاد و زمینه استقرار یک برنامه جدید در حافظه فراهم خواهد شد. عملیات ارسال اطلاعات از حافظه اصلی بر روی هارد دیسک بصورت خودکار انجام میگیرد.
ایجاد امنیت دسترسی به حافظه
قبل از آنکه سیستمعامل، پردازنده را به یک فرایند یا پردازش تحویل دهد، یک جدول حافظه را تنظیم مینماید بصورتیکه آن پردازش در سطح دسترسی پایینتری به حافظه قرار داده میشود و آدرس حافظهای که در کد پردازش مورد نظر قرار میگیرد بعداً توسط پردازنده به آدرس اصلی و فیزیکی حافظه RAM که در جدول حافظه تنظیم شده در قبل، دکر شده است ترجمه گردد. بنابراین آدرسهای حافظهای که در هر یک از کدهای پردازش توسط سیستمعامل قرار میگیرند آدرسهای مجازی هستند نه آدرسهای حقیقی.
این تطابق آدرسهای مجازی به آدرسهای حقیقی در قطعاتی که به آنها صفحه یا Page گفته میشوند انجام میشود. در معماری سیستمهای x86 امروزی معمولاً اندازه این صفحه ۴کیلوبایت میباشد.
زمانی که یک پردازش از آدرسی در یک صفحه که به آن پردازش تطابق داده نشده است استفاده نماید، باعث ایجاد یک خطای استثناء سختافزاری میگردد که به آن Pagefault گفته میشود.
وقتی که یک صفحه مورد استفاده قرار نگیرد، سیستمعامل میتواند آنرا به دیسک سخت انتقال دهد. و وقتی که آن صفحه توسط یک پردازش مورد تقاضا قرار گرفت دوباره به حافظه اصلی RAM بازخواهد گشت.
مسئله سرعت
سرعت خواندن و نوشتن اطلاعات بر روی هارد دیسک بمراتب کندتر از حافظه اصلی کامپیوتر است. در صورتیکه سیستم مورد نظر دارای عملیاتی حجیم در رابطه با حافظه مجازی باشد، کارآئی سیستم بشدت تحت تأثیر قرار خواهد گرفت. در چنین مواردی لازم است که نسبت به افزایش حافظه موجود در سیستم، اقدام گردد. در مواردی که سیستمعامل مجبور به جابجائی اطلاعات موجود بین حافظه اصلی و حافظه مجازی باشد (هارد دیسک)، باتوجه به تفاوت محسوس سرعت بین آنها، مدت زمان زیادی صرف عملیات جایگزینی میگردد. در چنین حالتی سرعت سیستم بشدت افت کرده و عملاً در برخی حالات غیرقابل استفاده میگردد.
محل نگهداری اطلاعات بر روی هارد دیسک را یک Page file میگویند. در فایل فوق، صفحات مربوط به حافظه اصلی ذخیره و سیستمعامل در زمان مورد نظر اطلاعات فوق را مجدداً به حافظه اصلی منتقل خواهد کرد. در ماشین هائی که از سیستمعامل ویندوز استفاده مینمایند، فایل فوق دارای انشعاب swp است.
پیکربندی حافظه مجازی
ویندوز ۹۸ دارای یک برنامه هوشمند برای مدیریت حافظه مجازی است. در زمان نصب ویندوز، پیکربندی و تنظیمات پیش فرض برای مدیریت حافظه مجازی انجام خواهد شد. تنظیمات انجام شده در اغلب موارد پاسخگو بوده و نیازی به تغییر آنها وجود نخواهد داشت. در برخی موارد لازم است که پیکربندی مدیریت حافظه مجازی بصورت دستی انجام گیرد. برای انجام این کار در ویندوز ۹۸، گزینه System را از طریق Control panel انتخاب و در ادامه گزینه Performance را فعال نمائید. در بخش Advanced setting، گزینه Virtual memory را انتخاب نمائید.
با نمایش پنجره مربوط به Virtual Memory، گزینه «Let me specify my own virtual memory setting» را انتخاب تا زمینه مشخص نمودن مکان و طرفیت حداقل و حداکثر فایل مربوط به حافظه مجازی فراهم گردد..در فیلد Hard disk محل ذخیره نمودن فایل و درفیلدهای دیگر حداقل و حداکثر ظرفیت فایل را بر حسب مگابایت مشخص نمائید. برای مشخص نمودن حداکثر فضای مورد نیاز حافظه مجازی میتوان هر اندازهای را مشخص نمود. تعریف اندازه ائی به میزان دو برابر حافظه اصلی کامپیوتر برای حداکثر میزان حافظه مجازی توصیه میگردد.
میزان حافظه موجود هارد دیسک که برای حافظه مجازی در نظر گرفته خواهد شد بسیار حائر اهمیت است. در صورتیکه فضای فوق بسیار ناچیز انتخاب گردد، همواره با پیام خطائی مطابق «Out of Memory»، مواجه خواهیم شد. پیشنهاد میگردد نسبت حافظه مجازی به حافظه اصلی دو به یک باشد. یعنی در صورتیکه حافظه اصلی موجود ۱۶ مگابایت باشد، حداکثر حافظه مجازی را ۳۲ مگابایت در نظر گرفت.
یکی از روش هائی که بمنظور بهبود کارائی حافظه مجاری پیشنهاد شدهاست، (مخصوصاً در مواردیکه حجم بالائی از حافظه مجازی مورد نیاز باشد) در نظر گرفتن ظرفیت یکسان برای حداقل و حداکثر انداره حافظه مجازی است. در چنین حالتی در زمان راه اندازی کامپیوتر، سیستمعامل تمام فضای مورد نیاز را اختصاص و در ادامه نیازی با افزایش آن همزمان با اجرای سایر برنامهها نخواهد بود. در چنین حالتی کارآئی سیستم بهبود پیدا خواهد کرد.
یکی دیگر از فاکتورهای مهم در کارآئی حافظه مجازی، محل فایل مربوط به حافظه مجازی است. در صورتیکه سیستم کامپیوتری دارای چندین هارد دیسک فیزیکی باشد، (منظور چندین درایو منظقی نیست) میتوان حجم عملیات مربوط به حافظه مجازی را بین هر یک از درایوهای فیزیکی موجود توزیع کرد. روش فوق در مواردیکه از حافظه مجازی در مقیاس بالائی استفاده میگردد، کارآئی مطلوبی را بهدنبال خواهد داشت.
سیستمعامل
سیستمعامل یا سامانهٔ عامل (به انگلیسی: Operating System) نرمافزاری است که مدیریت منابع رایانه را به عهده گرفته و بستری را فراهم میسازد که نرمافزار کاربردی اجرا شده و از خدمات آن استفاده کنند. سیستمعامل جزء ضروریترین نرمافزارهای یک سیستم کامپیوتری است. سیستمعامل خدماتی به برنامههای کاربردی و کاربر ارائه میدهد. برنامههای کاربردی یا از طریق واسطهای برنامه نویسی کاربردی (به انگلیسی: Application User Interface-APIs) و یا از طرق فراخوانیهای سیستم به این خدمات دسترسی دارند. با فراخوانی این واسطها، برنامههای کاربردی میتوانند سرویسی را از سیستمعامل درخواست کنند، پارامترها را انتقال دهند، و پاسخ عملیات را دریافت کنند. ممکن است کاربران با بعضی انواع واسط کاربری نرمافزار مثل واسط خط فرمان یا یک واسط گرافیکی کاربر با سیستمعامل تعامل کنند. برای کامپیوترهای دستی و رومیزی، عموما واسط کاربری به عنوان بخشی از سیستمعامل در نظر گرفته میشود. در سیستمهای بزرگ و چند کاربره مثل یونیکس و سیستمهای شبیه یونیکس، واسط کاربری معمولاً به عنوان یک برنامه کاربردی که خارج از سیستمعامل اجرا میشود پیادهسازی میشود. نمونههایی از محبوبترین سیستمعاملهای نوین شامل: اندروید، بیاسدی، آیاواس، لینوکس، اواس ده، کیواناکس، مایکروسافت ویندوز، ویندوز فون و زد/اواس میباشند.
انواع سیستمعامل
سیستمهای بیدرنگ
سیستمهای بیدرنگ یا زمان واقعی یک سیستم عامل چند وظیفهای است که معمولا بعنوان یک کنترل کننده در یک کاربرد خاص استفاده میشوند. سیستم در این حالت میبایست در زمانی مشخص و معین حتما جواب مورد نظر را بدهد. سیستمهای کنترل آزمایشهای علمی، تصویربرداری پزشکی، کنترل صنعتی و برخی از سیستمهای نمایش از این دستهاند. هدف اصلی استفاده از سیستمهای بیدرنگ واکنش سریع و تضمین شده در برابر یک رویداد خارجی میباشد. در سیستمهای بیدرنگ معمولا وسایل ذخیرهسازی ثانویه وجود ندارد و به جای آن از حافظههای ROM استفاده میشود. سیستمعاملهای پیشرفته نیز در این سیستمها وجود ندارند چرا که سیستمعامل کاربر را از سختافزار جدا میکند و این جداسازی باعث عدم قطعیت در زمان پاسخگویی میشود. سیستمهایی که در آن مهلت زمانی(به انگلیسی: Deadline) باید پاسخ داده شود را بیدرنگ سخت و سیستمهایی که مهلت زمانی را پشتیبانی نمیکنند بیدرنگ نرم مینامند. از کاربرد سیستمهای بیدرنگ سخت میتوان به کنترل موتور یک خودرو(پاسخ با تاخیر میتواند نتایج فاجعهباری را به همراه داشته باشد) و در سیستمهای بیدرنگ نرم میتوان به اسکن بارکد در پایانه فروشگاه(با اینکه سرعت پاسخدهی باید سریع باشد اما به حادّی سیستمهای سخت نمیباشد) اشاره کرد.
سیستمهای چند کاربره
سیستمهای چند کاربره اجازه میدهند تا کاربران متعدد بصورت همزمان به یک سیستم کامپیوتری دسترسی داشته باشند. سیستمهای اشتراک زمانی و کارساز وب را میتوان بعنوان سیستمهای چند کاربره طبقهبندی کرد. در سیستمهای اشتراک زمانی تنها یک پردازنده قرار دارد که توسط مکانیزمهای زمانبندی بین برنامههای مختلف کاربرها با سرعت زیاد سوئیچ میشود و بنابراین هر کاربر تصور میکند کل کامپیوتر در اختیار اوست.
سیستمعامل تک پردازنده
این نوع سیستمعاملها، سیستمعاملهای نسل چهارم (نسل فعلی) هستند که بر روی یک پردازنده اجرا میشوند.از قبیل XP,Vista,۹۸,Me که بیشتر محصول شرکت مایکرو سافت میباشند.
سیستمعامل شبکهای
سیستم عاملهایی مثل ناول نت که بیشترین استفاده و ا مکانات این سیستم عامل برای شبکه می باشد
سیستمعامل توزیع شده
این سیستمعاملها خود را مانند سیستمعاملهای تک پردازنده به کاربر معرفی میکنند، اما در عمل از چندین پردازنده استفاده میکنند. این نوع سیستمعامل در یک محیط شبکهای اجرا میشود در این نوع سیستم یک برنامه پس از اجرا در کامپوترهای مختلف جواب نهایی به سیستم اصلی کاربر بر میگردد سرعت پردازش در این نوع سیستم بسیار بالاست.
دلایل ایجاد سیستمعامل
یک سیستم کامپیوتری پیشرفته از یک یا چند پردازنده، مقداری حافظه اصلی، دیسکها، چاپگرها، صفحهکلید، صفحهنمایش، واسطهای شبکهای و دیگر دستگاههای ورودی و خروجی تشکیل شدهاست. اگر سیستم یکپارچهای برای مدیریت این منابع وجود نداشته باشد، هر برنامه باید به تنهایی این کار را انجام دهد. سیستمعامل یک لایه نرمافزاری فراهم میکند که وظیفه مدیریت منابع سیستم را از دوش برنامههای کاربردی رهانیده و کار برنامهنویسی را سادهتر مینماید. که با توجه به نسخههای جدید سیستم عاملها که به دلیل بهرهمندی از تکنولوژی گرافیک و امکان استفاده از ماوس، امکان استفاده ساده و آسان را برای کاربران مبتدی فراهم نمودهاست. در حقیقت سیستمعامل واسط بین سختافزار رایانه و کاربر میباشد.
وظایف سیستمعامل
سیستمعامل دو کار عمده انجام میدهد:
در نگرش پایین به بالا، منابع منطقی (مانند فایلها) و منابع فیزیکی (مانند دستگاههای سختافزاری) رایانه را مدیریت و کنترل میکند.
در نگرش بالا به پایین، وظیفه سیستمعامل این است که یک ماشین توسعه یافته (Extended Machine) یا ماشین مجازی را به کاربران ارائه کند تا آنها بتوانند آسانتر برنامهنویسی نمایند و درگیر پیچیدگیهای سختافزاری رایانه نشوند.
به طور کلی، وظایف سیستمعامل شامل موارد زیر است:
استفاده بهینهتر از منابع و جلوگیری از به هدر رفتن آنها
تخصیص و آزاد سازی منابع
اداره صفها و زمانبندی استفاده از منابع
حسابداری میزان استفاده از منابع
ایجاد امنیت
ایجاد، حذف و اداره فرایندها
ایجاد مکانیسمهای ارتباط بین فرایندها و همگامسازی آنها
مدیریت فایلها و پوشهها
مدیریت حافظههای اصلی و جانبی
برقراری امکان دسترسی چندتایی (Multiaccess) و اجرای هم روند (Concurrent) فرایندها
به اشتراک گذاری منابع (Resource Sharing)
تعیین راهکارهایی برای اداره بنبست (Deadlock)
جلوگیری از وضعیت رقابتی (Race Condition) و تداخل یا در هم قفل شدن (Interlock) فرایندها
جلوگیری از گرسنگی (Starvation)
سیستمعاملهای فعلی
در سالهای اخیر رقابت بیشتر بین سیستمعاملهای مایکروسافت ویندوز، اپل مک اواس و لینوکس جریان دارد که آماری که در ماه ژوییه ۲۰۱۱ توسط وبگاه W3Schools به ثبت رسیده حاکی از آن است که هم اکنون بیش از ۸۰ درصد کاربران اینترنت از سیستمعامل ویندوز استفاده میکنند.
آمار موجود که مربوط به اوت ۲۰۱۰ میباشد به شرح زیر است:
ویندوز ۷: ۳۷٫۸٪
ویندوز ویستا: ۶٫۷٪
ویندوز اکس پی: ۳۹٫۷٪
ویندوز ۲۰۰۳: ۰٫۹٪
مک اواس: ۸٫۱٪
توزیعهای گنو/لینوکس: ۵٫۲٪
از سیستمعاملهای مشهور کامپیوترهای شخصی میتوان به اسامی زیر اشاره کرد:
یونیکس
گنو/لینوکس
مک اواس
ویندوز اکسپی
ویندوز ویستا
ویندوز انتی
ویندوز ۷
ویندوز ۸
ویندوز سیای
سولاریس
بی اس دی
داس
ام وی اس
ویلز
پالم
همچنین از سیستمعاملهای موجود روی گوشیهای تلفن همراه نسل جدید میتوان به اسامی زیر اشاره کرد:
اندروید
iOS
ویندوز موبایل
ویندوز فون
سیمبین
یوآیکیو
بادا
بلک بری
میگو
پالم
تاریخچه
در آغاز
اولین کامپیوترها فاقد سیستمعامل بودند. در اوایل سال ۱۹۶۴ فروشندگان کامپیوترهای تجاری ابزار کاملا گستردهای را برای تسهیل توسعه، زمانبندی، و اجرای کارها روی یک سیستم پردازش دستهای فراهم میکردند. برای مثال کامپیوتر تولید شده توسط UNI VAC.
در ابتدا سیستمعامل روی مین فریمها مستقر میشد و کمی بعد سیستمعامل میکروکامپیوترهای ابتدایی که فقط از یک برنامه در هر زمان پشتیبانی میکردند و به یک زمانبند بسیار ابتدایی نیاز داشتند. هر برنامه زمانی که در حال اجرا بود تحت کنترل کامل ماشین قرار داشت. چند وظیفهای (اشتراک زمانی) اولین بار در مین فریمها و در ۱۹۶۰ عرضه شد. ابتدا کامپیوترها بسیار بزرگ و جاگیر بودند اما امروزه در کف یک دست جا میگیرند.
مین فریمها
میکرو کامپیوترها
میکروکامپیوترهای اولیه نیاز یا ظرفیت داشتن یک سیستمعامل پیچیده که روی مین فریمها توسعه یافته بود نداشتند.
ویژگیها
وقفهها
دستهبندی وقفهها
برنامه وقفههایی که به دلیل بعضی شرایظ حاصل از یک دستورالعمل بروز میکند. شامل سریز شدن محاسباتی، تقسیم بر صفر، تلاش برای اجرای یک دستورالعمل ماشین غیر مجاز و مراجعه به آدرسی خارج از فضای مجاز کاربر.
زمانسنج وقفهای که توسط زمانسنج داخلی تولید میشود. این وقفه به سیستمعامل اجازه میدهد، بعضی اعمال را به طور مرتب انجام دهد.
ورودی/خروجیوقفههایی که به وسیله کنترل کننده ورودی/خروجی تولید میشود، تا کامل شدن طبیعی یک عمل یا شرایط خطا را اعلام نماید.
نقص سختافزار وقفههایی که با نقص سختافزاری تولید میشود، مثل نقص برق یا خطای توازن حافظه.
یونیکس
یونیکس یک سیستمعامل چندوظیفهای و چندکاربره است که در سال ۱۹۶۹ به دست گروهی از کارمندان آزمایشگاههای بل متعلق به شرکت ایتیاندتی (AT&T Bell Labs) نوشته شد. این گروه را کنت تامسون، دنیس ریچی، برایان کرنیگان، داگلاس مکیلروی مایکل لسک و جو اوسانا شکل میدادند. یونیکس در آغاز به زبان اسمبلی نوشته شد اما در سال ۱۹۷۳ به طور کلی به زبان سی بازنوشته شد، که این کار توسعه یونیکس را در آینده آسانتر میکرد و هم پورت کردن آن به دیگر سکوها را سادهتر. در سال ۱۹۷۴، یونیکس در ابتدا توسط گرگ چسون و دونالد گیلیس تحت مجوز دانشگاه ایلینوی در اربانا-شمپین درآمد. توسعه و تکامل یونیکس امروزی به شاخههای مختلفی تقسیم شده که توسط ایتیاندتی و همچنین دیگر فروشندگان تجاری، دانشگاهها (مانند نسخه بیاسدی از دانشگاه برکلی) و سازمانهای غیر انتفاعی توسعه مییابند.
امروزه نشان تجاری یونیکس در اختیار موسسه اپن گروپ قرار دارد و این گروه این نشان را به نام خود ثبت کرده است. تنها سیستمهایی که به صورت کامل با مشخصات یونیکس یکتا سازگار باشند، و مبلغی پول به موسسه اپن گروپ بپردازند، واجد شرایط استفاده از نام یونیکس اند. دیگر سیستمها میتوانند شبه یونیکس نامیده شوند، هرچند که موسسه اپن گروپ این نام را رد کرده است.
در اواخر دهه ۱۹۷۰ و اوایل دهه ۱۹۸۰، نفوذ یونیکس در محافل دانشگاهی (خصوصا ویرایش بیاسدی که از دانشگاه برکلی سرچشمه گرفته) باعث پذیرش گسترده یونیکس توسط بازرگانان نوپا شد و نسخههایی تجاری از یونیکس بوجود آمد که مهمترین این یونیکسها سولاریس، اسکوئنت, اچپی-یواکس, ایآیاکس هستند.
علاوه بر یونیکسهای تایید شده که اسامی آنها در بالا ذکر شد، سیستمعاملهایی هم وجود دارند که شبه یونیکس نامیده میشوند مانند مینیکس، نوادگان بیاسدی مانند فریبیاسدی, نتبیاسدی, اپنبیاسدی, دراگونفلیبیاسدی و لینوکس. این سیستمها با آنکه با استانداردها سازگار هستند، اما توسط موسسه اپن گروپ تایید نشدهاند و حق استفاده از نام Unix را ندارند. اصطلاح یونیکس سنتی ممکن است برای توصیف سیستمعاملهایی که مشخصات و ویژگیهای نسخه ۷ یونیکس یا نسخه ۵ یونیکس را دارند، استفاده شود. هنگامی که کن تامسون هنوز به مولتیکس دسترسی داشت، شبیهسازهایی برای سیستم صفحهبندی و سیستم فایل نوشت. او همینطور یک بازی رایانهای به نام سفر فضایی نوشت، اما این بازی برای اجرا شدن به یک ماشین کارامدتر و ارزانتر احتیاج داشت و سرانجام او یک پیدیپی-۷ کم استفاده در آزمایشگاههای بل پیدا کرد. در سال ۱۹۶۹ تیمی به رهبری تامسون و ریچی، بر روی این ماشین پیدیپی-۷ یک سیستم فایل سلسله مراتبی، مفاهیم فرایند رایانه و فایل دستگاه، یک مفسر خط فرمان و تعدادی برنامه کوچک دیگر نوشتند.
اگر گفته شود یونیکس آغازگر «دوره اطلاعات» و در امتداد آن «عصر اینترنت» است، کوچکترین سخنی به گزافه گفته نشدهاست. در واقع تا همین امروز هم، تقریباً ٪۱۰۰ پیمانهای مهم و باز که جنبش اینترنت را پدید آوردهاند، مانند وب، از خانوادهٔ یونیکس آمده و میآیند. اینترنت در آغاز در یونیکس گسترش یافت و تا سالها، واژهٔ «اینترنت» در میان کاربران یونیکس واژهای کاملاً عادی و روزمره بود، درحالی که دیگران حتی این واژه را نشنیده بودند و یا با اکراه تمام به آن بی اعتنائی و حتی آن را مسخره میکردند.
سیستمهای یونیکس امروزی به شاخههای مختلفی تبدیل شده است که در مرور زمان به دست ایتیاندتی توسعه داده شده. یونیکس طوری طراحی شده است تا قابل انتقال به هر سیستمی، چند کاره و همچنین چند کاربره باشد. سیستمهای یونیکس با ایدههای جدیدی که مطرح کردهاند، شناخته میشوند: پروندههای متنی ساده، مترجمهای خط فرمان و سامانه پروندهگردانی (File System) سلسله مراتبی و غیره. در مهندسی نرمافزار، یونیکس به خاطر زبان برنامهنویسی سی و فلسفه یونیکس ذکر میشود.
صاحب علامت تجاری یونیکس در حال حاضر open group است. در حالی که مدعی در حال حاضر متن برنامههای یونیکس The sco group و Novell است.
پیشینه
از آغاز تا عرضه
داستان از سال ۱۹۶۰ آغاز میشود. در این زمان فکر سامانههای اشتراک زمان مطرح بود و نخستین سیستمعامل چند کاربره طراحی شد که به عنوان کارگزار(Server) میتوانست با نصب شدن بر روی یک رایانه به چند رایانه دیگر سرویس دهد. این سیستمعامل که CTSS نام داشت و میتوانست ۲۰ کاربر را با یک رایانه IBM ۷۰۹۰ به خوبی اداره کند به شدت مورد توجه و مفید واقع شد و همه دریافتند که بخش عظیمی از رایانههای آینده از این فناوری بهره خواهند گرفت. به طوری که در سال ۱۹۶۵ سه شرکت از برجستهترین نقش آفرینان رایانه در جهان، مؤسسه فناوری ماساچوست، آزمایشگاههای بل و جنرال الکتریک، یک سیستمعامل اشتراک زمان آزمایشی برای مینفریم جیای-۶۴۵ طراحی کردند که مولتیکس نامیده میشد.
مولتیکس نوآوریهای بسیاری را پیش روی نهاد، اما در عوض مشکلات فراوانی هم داشت. این سیستم اجزای زیادی داشت و از حد معین بزرگتر شد. آزمایشگاههای بل که از پیچیدگی زیاد مولتیکس ناامید شده بود، به آهستگی از پروژه کناره گرفت. آخرین محققان آنها، کن تامسون, دنیس ریچی, داگلاس مکیلروی و جو اوسانا تصمیم گرفتند کار را از آغاز اما در مقیاسی کوچکتر از سر بگیرند. ریچی گفت «چیزی که ما میخواستیم، تنها یک محیط خوب برای برنامهنویسی نبود، بلکه سامانهای بود که بتوان گرد آن دوستی را شکل داد.»
در ۱۹۷۰، پیتر نیومن نام Unics را برای پروژه ابداع کرد. این نام در حقیقت یک جور بازی با نام مولتیکس (Multics) بود. دنیس ریچی، کن تامسون و برین کرنیگان، یونیکس (Unics) را بر اساس مولتیکس در آزمایشگاه بل پدید آوردند. بعدها که Unics توانست همزمان به چند کاربر سرویس دهد، به Unix آوازه یافت.
تا آن زمان، هیچ حمایت مالی از طرف آزمایشگاههای بل وجود نداشت. وقتی که گروه تحقیقات علوم رایانه میخواست از یونیکس بر روی یک رایانه بزرگتر از پیدیپی-۷ استفاده کند، تامسون و ریچی قول دادند که برای ماشین پیدیپی۱۱/۲۰، قابلیتهای پردازش متن را به یونیکس اضافه کنند. این کار باعث حمایت مالی آزمایشگاه بل شد. برای اولین بار در سال ۱۹۷۰، سیستمعامل یونیکس رسما نامگذاری و بر روی یک پیدیپی۱۱/۲۰ اجرا شد. یک برنامه قالببندی متن به نام roff و یک ویرایشگر متن هم اضافه شدند. تمام این سه جزء (یونیکس، roff و ویرایشگر متن) به زبان اسمبلی ماشین پیدیپی۱۱/۲۰ نوشته شده بودند. آزمایشگاههای بل از این سیستمِ پردازش متن اولیه که از یونیکس، roff و ویرایشگر تشکیل شده بود، برای پردازش متن برنامههای پتنت شده استفاده کرد. roff به زودی به troff، اولین برنامه چاپ و نشر الکترونیکی با قابلیت کامل حروفچینی تبدیل شد. کتاب راهنمای برنامهنویسان یونیکس هم در سوم نوامبر ۱۹۷۱ چاپ شد.
از آن جا که ایتیاندتی، یکی از شرکتهای دست اندرکار، از پروژه کنار گرفته بود، بنا بر قوانین آمریکا نمیتوانست از یونیکس استفادهٔ بازرگانی کند؛ به این ترتیب یونیکس رایگان به بازار عرضه شد. ایتیاندتی نیز یونیکس را برای دانشگاههای مختلف فرستاد و یونیکس کمکم در محافل علمی محبوب شد.
بازنوشتن به زبان سی
در ۱۹۷۲، یونیکس به زبان سی بازنوشته شد. این برخلاف پندار همگانی آن زمان بود که میگفت «هر چیز پیچیدهای مثل یک سیستمعامل که باید با رویدادهای حساس به زمان سر و کار داشته باشد، باید منحصرا به زبان اسمبلی نوشته شود.» نتیجه مهاجرت از زبان اسمبلی به زبان سطح بالاتر سی این بود که کد یونیکس پرتابلتر و قابل حملتر شد و برای اجرا بر روی ماشینهای دیگر تنها کافی بود قسمتهای کوچکی از آن به زبان اسمبلی مخصوص همان ماشین نوشته شوند.
ایتیاندتی کد منبع یونیکس را تحت مجوزهایی در دسترس دانشگاهها، شرکتهای تجاری و دولت ایالات متحده قرار دارد. مجوزها در همه جای کد منبع قرار داده شده بودند، حتی کدهای وابسته به ماشین در داخل هسته سیستمعامل، که به زبان اسمبلی پیدیپی-۱۱ نوشته شده بودند. در اواخر دهه ۱۹۷۰، کدهای منبع یونیکس در کتابی به نام «نسخه ۶ یونیکس به روایت لیونز، به همراه کد منبع» که توسط جان لینوز نوشته شده بود، به صورت گسترده منتشر شد. این کار باعث شد یونیکس به شکل قابل توجهی برای مقاصد آموزشی استفاده گردد.
ویرایشهای گوناگون
نسخههای سیستمعامل یونیکس، توسط ویرایشهای کتاب راهنمای کاربرانش مشخص میشدند. برای مثال «پنجمین ویرایش یونیکس» و «نسخه ۵ یونیکس» هر دو برای اشاره به یک نسخه استفاده میشدند. توسعه یونیکس با انتشار نسخههای ۴، ۵ و ۶ که در سال ۱۹۷۵ ادامه یافت. در این نسخهها مفهوم تازه ی لولهها اضافه شده بود که به طراحی ماژولار یونیکس و چرخه توسعه سریعتر آن کمک کرد. نسخه ی ۵ و به ویژه نسخه ی ۶، به پیدابش نسخههای مختلفی از یونیکس، چه در داخل آزمایشگاههای بل و چه در خارج از آن انجامید. مانند پیدبلیوبی/یونیکس و همچنین اولین نسخه تجاری یونیکس یعنی آیاس/۱. همان طور که قسمتهای بیشتری از یونیکس به زبان سی بازنویسی میشد، پورتابل بودن آن هم افزایش مییافت و آسانتر میشد آن را به دیگر سکوها انتقال داد. یونیکس توسط گروهی در دانشگاه ولونگوگ به اینتردیتا ۷/۳۲ پورت شد. آزمایشگاههای بل هم چند نسخه مختلف برای اهداف تحقیقاتی و استفاده داخلی در همان جا توسعه داد.
در سال ۱۹۷۴ دانشجویان دانشگاه برکلی آغاز به برنامهنویسی برای یونیکس میکردند و آن را برای دانشگاههای دیگر و ایتیاندتی فرستادند وبا ادامهٔ این کار یونیکس در سال ۱۹۷۷ به یک سیستمعامل کامل تبدیل میشود. در می ۱۹۷۵، دارپا مزایای سیستم اشتراک زمانی یونیکس که «چند قابلیت جالب ارائه کرده بود» را در RFC 681 مستند کرد. در ۱۹۷۸، یونیکس/۳۲وی برای ویایاکس، سیستم جدید DEC عرضه شد. در آن هنگام، یونیکس به اَشکال مختلفی بر روی ۶۰۰ ماشین اجرا میشد. آخرین نسخه تحقیقاتی از یونیکس، یعنی نسخه ۷ یونیکس، در سال ۱۹۷۹ منشتر شد. نسخههای ۸، ۹ و ۱۰ هم در دهه ۱۹۸۰ نوشته شدند اما فقط در بین چند دانشگاه منتشر شدند. دانشگاههای دیگر نیز مانند امآیتی، Purdue، استنفورد و... کارهای بسیاری برای یونیکس کردند. با نوشتن برنامههای اینترنتی برای یونیکس در سال ۱۹۸۰ به وسیلهٔ دانشگاه برکلی یونیکس در سازمانهای دولتی و شرکتهای شبکه و کارگزارها(Servers) به گستردگی به کار گرفته شد.
سیستم عاملهای یونیکس مانند
از این زمان شمار فراوانی از شرکتهای بازرگانی نیز از یونیکس برای کارهای بازرگانی خود بهره میجویند و نسخههای بازرگانی یونیکس هم به بازار میآیند که از این گروه میتوان پخشهای زیر را نام برد.
Xenix by Microsoft
AIX by IBM
HP-UX by HP
ULTRIX by Digital
SunOS by Sun
گذشته از سیستم عاملهایی که موسسه ی اپن گروپ، آنها را کاملا سازگار با مشخصات یونیکس یکتا دانسته، سیستم عاملهای فراوانی در عرضه شده اند که اگرچه استانداردهای لازم را فراهم آورده اند اما با نام شبه یونیکس آوازه دارند. ویرایشهای پرشمار سیستم عامل متن باز لینوکس از این دسته اند. همچنین سیستم عامل نکستستپ (NextStep) که بر مبنای بیاسدی دانشگاه برکلی پدید آمد، خود پایه ی سیستم عامل مک اُ.اس (Mac OS X) شرکت اپل شد. اپل آی.اُ.اس (iOS) را نیز بر پایه ی مک اُ.اس گسترش داد. بسیاری از سیستمعاملهای دیگر مانند اُربیت (Orbis) که بر روی پلی استیشن چهار ارائه میشود نیز بر مبنای یکی از انواع سیستم عامل بیاسدی گسترش یافته اند.
لینوکس
لینوکس (به انگلیسی: Linux) به هسته ی سیستمعاملهای شبه یونیکس میگویند که که در سال ۱۹۹۱ توسط لینوس تروالدز توسعه یافت. برخی به سیستم عاملهایی که از هستهٔ لینوکس استفاده میکنند (به این خاطر که نام لینوکس به طور گسترده در رسانهها استفاده میشود و نامی رایج تر است) نیز لینوکس میگویند (در این مقاله هم منظور از لینوکس، سیستم عاملهایی است که از هستهٔ لینوکس استفاده میکنند).
لینوکس قابل نصب بر روی انواع سختافزارهاست، از ساعت (Linux Watch)، تلفنهای همراه، تبلتها، مسیریابها، و کنسولهای بازی گرفته تا رایانههای رومیزی، رایانههای بزرگ و ابررایانهها.
به مجموعهای از نرمافزارهای بنا شده بر اجزای گفته شده توزیع لینوکس (linux distribution) میگویند که به طور معمول شامل ابزارهای گسترش نرمافزار، پایگاههای داده، سرویس دهندههای وب مثل آپاچی، محیطهای رومیزی مانند گنوم و کیدیای و اکسافسیای و مجموعههای اداری مانند اُپن آفیس هستند.
در ابتدا لینوکس برای استفادهٔ ریزپردازندهها با معماری ۸۰۳۸۶ اینتل طراحی شده بود؛ اما امروزه انواع گوناگون معماریها را پشتیبانی میکند و در انواع و اقسام وسایل از کامپیوترهای شخصی گرفته تا ابررایانهها و تلفنهای همراه به کار میرود. این سیستمعامل که در ابتدا بیشتر توسط افراد مشتاق گسترش پیدا میکرد و به کار گرفته میشد، توانسته است پشتیبانی شرکتهای سرشناسی چون آیبیام و هیولت-پاکارد را به دست آورد و با بسیاری از نسخههای خصوصی یونیکس رقابت کند. طرفداران لینوکس و بسیاری از تحلیلگران این موفقیت را ناشی از استقلال از فروشنده، کمهزینه بودن پیادهسازی، سرعت بالا، امنیت و قابلیت اطمینان آن میدانند.
پیشینه
در سال ۱۹۸۳ میلادی ریچارد استالمن که رئیس بنیاد نرمافزارهای آزاد بود پروژه گنو (GNU) را آغاز کرد. در این پروژه که یک جنبش نرمافزاری محسوب میشد برنامهنویسان با یکدیگر همکاری میکردند که این همکاری تا به حال نیز ادامه دارد.
آن زمان بیشتر ابزارهای پروژه گنو که با زبان برنامهنویسی سی و اسمبلی نوشته شده بود آماده کار بود و تنها یک هستهٔ مناسب و آزاد کم بود. حتی سیستمعامل مینیکس نیز با وجود در دسترس بودن کد منبع آن، آزاد نبود و حق نشر مخصوص داشت. کار در پروژه گنو به سمت طراحی یک هسته مناسب متمرکز میشد اما به نظر میرسید که برای ایجاد این هسته حداقل چند سال دیگر زمان نیاز است.
این تأخیر برای لینوس توروالدز قابل تحمل نبود. بنابراین خودش دست به کار شد و با الهام از کد مینیکس کار را آغاز کرد. سرانجام در ۲۵ اوت سال ۱۹۹۱ در ساعت ۲۰:۵۷ (به وقت گرینویچ) پیامی تاریخی به گروه خبری comp.os.minix از طرف لینوس توروالدز ارسال شد. او یک دانشجوی فنلاندی بود که آن زمان در دانشگاه هلسینکی درس میخواند.
متن پیام او چنین بود:
درود به هر کس که آن بیرون از مینیکس استفاده میکند. من هماکنون روی سیستمعاملی آزاد برای رایانههای AT ۳۸۶(۴۸۶) کار میکنم (فقط برای سرگرمی؛ مانند پروژهٔ گنو بزرگ و حرفهای نیست). از ماه آوریل کار را آغاز کردهام و هماکنون این سیستمعامل آمادهاست و کار میکند. دوست دارم از دیدگاه دیگران در مورد سیستمعاملم با خبر شوم. چه آنان که مینیکس را دوست دارند و چه آنان که دوست ندارند. چرا که سیستمعامل من تا حدی شبیه به مینیکس است.
در حال حاضر (۱٫۰۸)bash و(۱٫۴۰) gcc را بر روی آن دارم و چیزهای دیگری که به نظر میرسد همه درست کار میکنند. این بدان معناست که طی چند ماه آینده چیز بهدردبخوری فراهم خواهم کرد و دوست دارم بدانم مردم بیشتر چه امکاناتی لازم دارند. به هر پیشنهاد و نظری خوشآمد میگویم اما قول نمیدهم که آن را انجام دهم!
لینوس (torvalds@kruuna.helsinki.fi).
پ. ن: بله این نرمافزار آزاد است. البته قابل انتقال بر روی انواع دیگر رایانه نیست (چرا که دستورات AT۳۸۶ را به کار میبرد) و ممکن است غیر از سختدیسک AT چیز دیگری را پشتیبانی نکند. این همه چیزی است که من دارم!
لینوکس برخلاف مینیکس (یک سیستمعامل ساده نوشته شده توسط پروفسور اندرو تننبام که برای آموزش طراحی سیستمعامل به کار میرفت) که از معماری ریزهسته استفاده میکرد، با ایده هستههای یکپارچه طراحی شده بود. اولین نسخهٔ لینوکس در سپتامبر ۱۹۹۱ در اینترنت منتشر شد. دومین نسخهٔ آن به فاصلهٔ کمی در اکتبر همان سال منتشر شد. از آن پس هزاران برنامهنویس و هکر در سراسر دنیا در این پروژه شرکت کردند. مقالهٔ «کلیسای جامع و بازار» اثر اریک ریموند مدل گسترش هسته لینوکس و نرمافزارهای مشابه را تشریح میکند.
پنگوئن تاکس نشانه و مایه خوش شانسی هستهٔ لینوکس است. لینوس توروالدز مالک علامت تجاری لینوکس است که به عنوان «نرمافزار سیستمعامل رایانه برای تسهیل در استفاده و عملیات رایانه» به ثبت رسیدهاست.
مجوز
هستهٔ لینوکس و بیشتر بخشهای گنو تحت اجازهنامه عمومی همگانی گنو (جیپیاِل) منتشر میشوند. جیپیال لازم میداند که تغییرات کد منبع و کارهای مشتق شده نیز تحت مجوز جیپیال منتشر شوند.
گنو/لینوکس
از آنجایی که ابزارهای گنو که بخش عمدهٔ توزیعهای لینوکس را تشکیل میدهند از پروژه سیستمعامل آزاد گنو (که بسیار سابقهدارتر از هستهٔ لینوکس است) ریشه گرفتهاند، ریچارد استالمن و بنیاد نرمافزار آزاد درخواست کردهاند که سیستم ترکیب شده (از هستهٔ لینوکس و ابزارهای گنو) بدون توجه به نام توزیعاش، «گنو/لینوکس» خوانده شود.
برخلاف این که بعضی از توزیعها (مانند «گنو/لینوکس دبیان») از این نام استفاده میکنند، بسیاری تنها به گفتن «لینوکس» اکتفا میکنند. تفاوت بین هستهٔ توروالدز و سیستمی که شامل این هسته است، همیشه باعث سردرگمی میشود و نامگذاری همچنان بحثانگیز باقی ماندهاست.
توزیعهای لینوکس
لینوکس تقریباً همیشه یکی از اجزاء یک توزیع لینوکس (به انگلیسی: Distro) است. توزیعهای لینوکس توسط افراد، گروههای نه چندان متشکل و سازمانهای حرفهای گوناگون ایجاد میشوند. این توزیعها شامل تعدادی نرمافزار سیستم و برنامههای کاربردی به همراه روالی مشخص برای نصب آنها بر رایانه هستند. توزیعها معمولاً برای منظورهای مختلفی از جمله محلیسازی، پشتیبانی از یک معماری خاص، کاربردهای بیدرنگ (real-time applications) و سامانههای توکار (embedded systems) به وجود میآیند و برخی از آنها آگاهانه تنها از نرمافزارهای آزاد استفاده میکنند.
یک توزیع همه-منظورهٔ معمولی شامل هسته لینوکس، کتابخانهها و ابزارهای گنو، پوستههای خط فرمان و انبوه بیشماری از نرمافزارهای کاربردی از مجموعههای اداری و سیستم پنجرهای اِکس گرفته تا مفسرها، ویرایشگرهای متن و ابزارهای علمی است.
گستره
در بیش از یک میلیارد دلار: برآورد اندازه گنو/لینوکس که مقاله تحقیقی است بر روی توزیع رِدهت ۷٫۱، تعداد خطوط کد منبع ۳۰ میلیون عنوان شدهاست. در این تحقیق با استفاده از روش (Constructive Cost Model – COCOMO) برآورد شدهاست که بر روی این توزیع نزدیک به ۸ هزار نفر-سال کار گسترش انجام گرفتهاست. چنانکه این نرمافزار با روشهای متعارف خصوصی گسترش مییافت، هزینه گسترشاش در ایالات متحده با روشهای گسترش متعارف خصوصی بالغ بر ۱/۰۸ میلیارد دلار (با قیمت دلار سال ۲۰۰۰) میشد.
بخش بزرگی از کد (۷۱٪) با زبان برنامهنویسی C نوشته شدهاست اما از بسیاری از زبانهای دیگر همچون ++C، لیسپ، اسمبلی، پرل، فرترن، پایتون و زبانهای اسکریپتنویسی گوناگون استفاده شدهاست. اندکی بیش از نیمی از خطوط کد، تحت مجوز عمومی گنو (جیپیاِل) هستند. هسته لینوکس ۲٫۴ میلیون خط کد است و ۸٪ کل کد را تشکیل میدهد.
در پژوهشی جدید که بر روی توزیع لینوکس دبیان نسخه ۴٫۰ که در سال ۲۰۰۷ عرضه شده صورت گرفت، مشخص شد این توزیع دارای نزدیک به ۲۸۳ میلیون خط کد بود که تخمین زده میشود هزینه گسترشاش با روشهای گسترش متعارف خصوصی بالغ بر ۸٫۰۷ میلیارد دلار (با قیمت دلار سال ۲۰۱۳) و زمان مورد نیاز حدود هفتاد و سه هزار نفر-سال میشود.
کاربردهای سیستمعاملهای شکل گرفته بر پایه لینوکس
در گذشته یک کاربر لینوکس برای پیکربندی و نصب سیستم خود، نیازمند دانش بالایی از رایانه بود. این دلیل به علاوه جذاب بودن دسترسی به درون سیستم، باعث شده بود که به طور سنتی کاربران لینوکس را (بر خلاف کاربران ویندوز یا مَکاواِس) کسانی شکل بدهند که با تکنولوژی بیشتر دمخور هستند. افرادی که معمولاً با القاب «هَکِر» و «گیک» شناخته میشوند. این نگرش در سالهای اخیر با افزایش راحتی کار در لینوکس و گسترده شدن استفاده از بسیاری از توزیعها، اعتبار خود را از دست دادهاست. لینوکس در بازار سرورها و کاربردهای ویژه (مانند پردازش تصویر و سرویسهای وِب) پیشرفت قابل ملاحظهای کرده و در حال ورود به بازار بزرگ رایانههای رومیزی است.
لینوکس اساس مجموعه نرمافزار سرور موسوم به ل. آ. م. پ ((ل) ینوکس، (آ) پاچی، (م) ایاسکیوال, (پ) رل/(پ) یاچپی/(پ) ایتون) را تشکیل میدهد که میان گسترشدهندگان وب محبوبیت گستردهای کسب کردهاست. بدلیل پایداری و انعطاف لینوکس، این سیستمعامل حضور پررنگی به عنوان سیستمعاملی برای کامپیوترهای کارساز دارد. بر اساس آمار در سال ۲۰۰۸، از میان ۱۰ تا از معتبرترین شرکت هاستینگ دنیا، ۵ شرکت سیستمعامل لینوکس را در کارسازهای وب خود بکار میگیرند. توزیعهای لینوکس به طور گستردهای به عنوان سیستم عامل در ابر رایانهها استفاده میشود: از نوامبر سال ۲۰۱۰، از ۵۰۰ سیستم برتر، ۴۵۹ مورد (۹۱٫۸ ٪)تحت اجرای توزیعهای لینوکس هستند. لینوکس همچنین به عنوان سیستم عامل برای سکویا آی بی ام قوی ترین ابر رایانه جهان که در سال ۲۰۱۱ به بهرهبرداری میرسد، به کار خواهد رفت.
از لینوکس همچنین بیشتر در سیستمهای کارگذاشته استفاده میشود. رایگان، متن باز و آزاد بودن آن باعث میشود انتخابی ایدهآل برای ابزارهایی مانند سیمپیوتر (رایانهای که برای جمعیت کم درآمد کشورهای در حال گسترش طراحی شده) باشد.
لینوکس با داشتن محیطهای رومیزی مانند گنوم و کیدیای، رابط کاربری همچون اپل مکینتاش و مایکروسافت ویندوز را در کنار دیگر محیطهای گرافیکی و رابط خط فرمان یونیکس-مانند سنتیاش، عرضه میکند. هرچند نرمافزارهای گرافیکی لینوکس برای بسیاری از مصارف وجود دارند، در بسیاری زمینهها نرمافزارهای خصوصی هنوز از گستره و میزان محبوبیت بیشتری برخوردارند.
نرمافزارهای کارسازِ تحت لینوکس
کارساز (به انگلیسی: Server) به سیستم رایانهای پرتوانی گفته میشود که در یک شبکه برای وظیفهای خاص، نقشی را بر عهده میگیرد. سیستمهای کامپیوتری کارساز معمولاً از سختافزاری پرقدرت و نرمافزاری منعطف و پایدار برای ارائهٔ خدمت مورد نظر به مشتریان زیاد استفاده میکنند. سیستمعاملهای شکل گرفته بر پایه لینوکس، به دلیل پایداری و انعطاف، گزینههای خوبی برای نصب بر روی سیستمهای کارساز هستند.
نمونه نرمافزارهای مشهوری که معمولاً تحت لینوکس به عنوان نرمافزار کارساز استفاده میشوند:
اسکوئید (SQUID)
کارساز پروکسی-کش (Proxy-Cache)
بایند (بایند)
کارساز سامانه نام دامنه (DNS)
آپاچی (APACHE)
کارساز وب
پستفیکس(Postfix)
کارساز پست الکترونیکی
مایاسکیوال (MySQL)
کارساز پایگاه داده
نصب
در ابتدا مشکل بودن نصب سیستمهای بر پایه لینوکس مانعی برای پذیرش آن بود؛ اما در سالهای اخیر نصب لینوکس بسیار آسان شدهاست. بسیاری از توزیعها دارای نصبی آسان و قابل مقایسه با نسخههای ویندوز هستند؛ بهگونهای که توزیع اوبونتو با چند کلیک نصب میشود. علاوه بر این، رایانههای شخصی که با توزیعهای لینوکس وارد بازار شدهاند و به آسانی از بسیاری از فروشندههای اصلی، همچون دل، هیولت-پاکارد و وال-مارت قابل تهیه است.
بیشتر شیوههای عمومی نصب لینوکس، توسط همه توزیعهای مهم پشتیبانی میشود که شامل اجرا از طریق لوح فشرده، حاوی برنامههای نصب و راهاندازی نرمافزارهاست. این لوح فشرده میتواند از طریق تصویر استاندارد (ISO image) بارگذاری شده باشد، به تنهایی و به قیمت بسیار پایین خریداری شود، یا میتواند در مجموعه نرمافزارهای تجاری اضافی ارائه شود.
برخی توزیعها همچون دبیان (Debian) با فلاپی دیسک نیز قابل نصب هستند. پس از نصب ابتدایی، بیشتر نرمافزارها از طریق اینترنت و لوح فشرده قابل بارگذاری و نصب هستند.
بسیاری از توزیعها میتوانند بیدرنگ از طریق دیسکهای زنده بسیار سریعتر از نصب بر روی دیسک سخت اجرا شوند. به این صورت که یکبار از لوح فشرده راهاندازی میشود و میتوان از لینوکس بدون هیچگونه تغییری در محتویات دیسک سخت استفاده کرد. به همین نحو برخی توزیعهای حداقل، همچون تامزروتبوت (Tomsrtbt)، بدون نیاز به تغییر محتویات دیسک سخت از طریق فلاپی دیسک قابل اجرا هستند.
همچنین بسیاری توزیعها از راه انداری بر روی شبکه پشتیبانی میکنند، پس همه مراحل نصب و پیکربندی دستگاه میتواند بر روی شبکه انجام شود.
پیکربندی
بیشتر فایلهای پیکربندی در پوشهای با نام «etc/» ذخیره شدهاست. اگر کاربر مخصوص باشد، فایلهای پنهان در پوشه خانه کاربر قرار دارد. تعدادی از برنامهها از پایگاه داده پیکربندی به عوض فایل استفاده میکنند.
راههای بسیاری برای ایجاد تغییرات وجود دارد. آسانترین راه، استفاده از ابزارهای آماده همچون یاست (YaST) در توزیع SUSE یا مرکز کنترل در مندریک (Mandrake) استفاده کرد. انواع دیگر آن، مانند لینوکسکانف (Linuxconf)، ابزارهای سیستم گنوم، و وبمین (Webmin) برای توزیعهای ویژه نیستند. آنها شامل بسیاری از امکانات پیکربندی توسط خط فرمان هستند. از آنجا که به طور متداول بیشتر تنظیمات در فایلهای متنی ذخیره شدهاند، آنها را میتوان با هر ویرایشگر متنی پیکر بندی نمود.
پشتیبانی
فروشندگان تجاری و دیگر کاربران گنو/لینوکس در اجتماعات آنلاین (کانالهای آیآرسی)، گروههای خبری، فهرستهای پستی و انجمنهای اینترنتی پشتیبانی فنی ارائه میکنند. گروه کاربران لینوکس (LUGs) در همه جهان به کاربران بسیاری به رایگان یاری میرساند.
مدل کسب و کار بیشتر فروشندگان تجاری لینوکس (بمانند ردهت و ناول) بر پایه دریافت حقالزحمه جهت پشتیبانی است. اینگونه دریافت پشتیبانی در برابر پرداخت پول برای کاربران تجاری لینوکس حایز اهمیت است.
مک اواس
مک او اس (MAC OS) یک نوع سیستمعامل دارای رابط کاربری است که شرکت اپل آن را توسعه داده است. این سیستمعامل که همراه با ارائه اولین مدل مکینتاش عرضه شد تا قبل از نسخه ۷٫۶ با نام «نرمافزار سیستم» شناخته میشد و از نسخه ۷٫۶ به بعد مک اواس نام گرفت.
طراحی
از همان ابتدا، اپل با استفاده از طراحی به عمد به دنبال به حداقل رساندن نیاز به فهم کامل سیستم عامل توسط کاربر بود به عنوان مثل. کارهایی که بر روی محصولات دیگر نیاز به دانش صریح و آشکاری در کار سیستم عامل را میطلبید بر روی مکینتاش توسط حرکات موس و استفاده از پانل کنترل گرافیکی انجام می گرفته است. در نتیجه مقصود این بود که محصولی کاربر پسند تر و قابل تسلط به راحتی تولید شود. و این عامل تمایز آن از دستگاههایی بود که از محیط عاملهای دیگر، مانند ماشینهای MS - DOS استفاده میکردند، که به اصطلاح بسیار فنی بودند.
در ابتدا هسته اصلی "نرمافزار سیستم" در ROM بود، که بعدها با به روز رسانی به طور معمول به رایگان بر روی فلاپی در اختیار نمایندگیهای اپل قرار گرفت تا دخالت کاربر در هنگام ارتقاء سیستم عامل نیز تنها به اجرای یک فایل نصبی به حداقل برسد، و یا به سادگی جایگزین کردن فایلهای سیستم باشد، سادگی که دوباره محصول این شرکت را از دیگر محصولات متفاوت کرد.
نسخهها
نسخههای اولیه سیستم عامل مک تنها با مکینتاش موتورولا ۶۸۰۰۰ سازگار بودند. و رایانههای اپل با عنوان PowerPC معرفی شدند و درست از زمانی که رایانههای PowerPC معرفی شدند سیستم عامل را نیز برای حمایت از این معماری توسعه دادند. سیستم عامل Mac OS ۸٫۱ آخرین نسخه از برنامه است که میتواند بر روی پردازنده "۶۸K" یا (۶۸۰۴۰) اجرا شود. سیستم عامل Mac OS X، که جایگزین نسخه "کلاسیک" سیستم عامل مک است، از نسخه ۱۰٫۰ ("یوز پلنگ") به نسخه ۱۰٫۳ ("پلنگ") تنها با پردازشگرهای PowerPC سازگار است. و در نسخه ۱۰٫۴ ("ببر"، اینتل تنها پس از بروز رسانی) و نسخه ۱۰٫۵ ("پلنگ") پردازندههای اینتل و PowerPC را پشتیبانی میکند. و بعد از نسخه ۱۰٫۶ ("پلنگ برفی") تنها از پردازندههای اینتل پشتیبانی میکند.
سیستم عامل مکینتاش اولیه در ابتدا از دو بخش نرمافزاری، به نام "سیستم" و "فایندر (finder)"، که هر کدام با شماره نسخه خود را شامل است عرضه شد. سیستم ۷٫۵٫۱ اولین سیستم عامل مک شامل آرم (تغییر در آیکون اصلی که در شروع مک نمایش داده میشود) و Mac OS ۷٫۶ اولین بار به نام "سیستم عامل مک" نام گذاری شد.
ویندوز اکسپی
ویندوز اکسپی (به انگلیسی: Windows XP) یکی از سیستمعاملهایی است که اسم رمز «ویسلر» (Whistler) را بر خود داشت، چرا که در طول توسعهٔ ویندوز ایکسپی بسیاری از کارکنان مایکروسافت در تفریحگاه ویسلر کانادا مشغول اسکی بودند. ویندوز ایکس پی بر روی هسته ویندوز انتی و ۲۰۰۰ پایهگذاری شد و جانشین دو ویندوز ۲۰۰۰ و امیی گردید.
شرکت مایکروسافت ویندورز اکسپی را به منظور بهروزکردن رابط کاربر (شکل ظاهری برنامه)، افزودن ویژگیهای تازه، یکدستکردن «مبنای کد» بین اعضای مختلف خانواده مایکروسافت ویندوز و فراهم آوردن یک پلتفرم باثباتتر، پایهگذاری و در سال ۲۰۰۱ روانه بازار کرد.
ویندوز اکس پی که در اکتبر ۲۰۰۱ عرضه شد، یکی از محبوبترین سیستمهای عامل کامپیوتر در جهان به شمار میرود که گفته میشود بیش از چهارصد میلیون نسخه از آن در حال استفاده است. با این حال مایکروسافت اعلام کرده دیگر به شرکتهای عمده سازنده کامپیوتر نظیر دل، اچ پی و توشیبا مجوز نصب سیستمعامل قبلی را بر روی کامپیوترهای تولیدی نخواهد داد، و از ژانویه ۲۰۰۸ ویندوز اکس پی بر روی کامپیوترهای جدید عرضه نخواهد شد.
ویندوز اکسپی در ابتدا در دو نسخه خانگی و حرفهای عرضه شدهبود. ویندوز اکسپی از چندین زبان مختلف پشتیبانی میکند.
سختافزار لازم
ویرایشها
ویندوز XP در ویراشهای مختلفی ارائه شدهاست که از رایجترین آنها میتوان به ویندوز XP ویرایش خانگی برای کاربران خانگی ویندوز XP حرفهای که قابلیتهای دیگری همچون پشتیبانی از دامنه ویندوز سرور را دارد مناسب کاربران حرفهای و تجاری است، اشاره کرد. ویندوز XP ویرایش Media Center نیز در حقیقت همان ویندوز XP حرفهای است که قابلیتهای اضافی در مورد سیستمهای چند رسانهای همچون تماشای TV، مشاهده DVD و شنیدن موزیک دارد. ویندوز XP ویرایش Tablet PC برای اجرا در پلت فرمهای Table PC طراحی شدهاست. همچنین دو ویرایش ۶۴ بیتی از ویندوز XP وجود دارد: ویندوز XP ویرایش ۶۴ بیتی برای پردازندههای تیانیوم و ویندوز XP ویرایش حرفهای x۶۴ برای پردازندههای x۸۶-۶۴
ویندوز XP به خاطر بهبود کارایی و پایداری نسخههای قبلی ویندوز، مورد توجه قرار گرفتهاست. در ویندوز XP، واسط گرافیکی کاربر کاملاً از نو طراحی شدهاست و بسیار کاربرپسندتر از نسخههای قبلی ویندوز مایکروسافت است. قابلیتهای مدیریت نرمافزاری جدیدی در XP معرفی شدهاند که کاربران را از جهنم DLLها که در نسخههای قبلی همه را به ستوه درمی آورد، رهایی میبخشد. XP اولین نسخه از ویندوز است که از فعال سازی محصول برای مقابله با قوانین تخلف نرمافزاری استفاده میکند. با وجود تمام قابلیتهای موجود، XP به خاطر آسیب پذیریهای امنیتی، وجود برنامههای جانبی مایکروسافت همچون اینترنت اکسپلورر و ویندوز مدیا پلیر در ویندوز به صورت پیش فرض و برخی زمینههای واسط کاربر، مورد انتقاد کاربران قرار گرفتهاست. در ویرایش اصلی ویندوز، ویرایش خانگی برای کاربران خانگی و ویرایش حرفهای، برای کاربران حرفهای و تجاری است. علاوه بر این ویرایش Media Center نیز موجود میباشد.
در زیر برخی از قابلیتهای اضافی ویندوز XP نسخه حرفهای نسبت به نسخه خانگی آمدهاست:
توانایی پیوستن به دامنه ویندوز سرور، گروهی از کامپیوترها که از راه دور به وسیله یک یا چند سرور مرکزی مدیریت میشوند (اکثر کسب و کارهایی که از ویندوز استفاده میکنند دامنه و ویندوز سرور دارند).
استفاده از طرحهای لیست کنترل دسترسی برای تعیین اجازه دسترسی به فایلها به کاربران خاص، البته کاربران میتوانند از ابزارهایی برای از بین بردن این اجازه دسترسیها استفاده کنند. رفتن به Safe Mode یکی از راههای اصلاح لیست کنترل دسترسیها است.
سرور سرویسهای ترمینال که امکان استفاده از ویندوز را به کاربران کامپیوترهای دیگر از طریق شبکهٔ محلی یا اینترنت میدهد.
فولدر و فایلهای offline که به PC امکان ذخیره و اجرای یک کپی از فایلهای کامپیوترهای دیگر موجود در شبکه در حالت قطع بودن اتصال را میدهد.
سیستم فایل رمزنگاری شده، که فایلهای ذخیره شده در هارد دیسک را رمزنگاری میکند و در نتیجه به کاربران غیرمجاز دیگر اجازه خواندن آنها را نخواهد داد.
قابلیتهای مدیریتی متمرکز شده، شامل سیاستهای گروهی، نصب و نگهداری خودکار نرمافزار، سرویسهای نصب از راه دور (RIS)
پشتیبانی از دو واحد پردازش مرکزی و تواناییهای هایپر تردینگ که در پردازندههای مدرن به عنوان بخشی از یک پردازنده فیزیکی در نظر گرفته میشود.
ویندوز XP برای سختافزارهای خاص
مایکروسافت نسخههای سفارشی از ویندوز XP برای بازار سختافزارهای خاص را نیز عرضه کردهاست. پنج نسخه از XP برای سختافزارهای خاص است که دوتای آنها مخصوص پردازندههای ۶۴ بیتی است.
ویرایش ۶۴ بیتی ویندوز اکسپی
«ویرایش ۶۴ بیتی ویندوز XP» برای کامپیوترهای با پردازنده اتیانیوم طراحی شدهاست. عرضه این نسخه در سال ۲۰۰۵ پس از اتمام تولید سیستمهای ایتانیوم، توسط کمپانی Hewlett Packard آخرین کمپانی عرضه کننده سیستمهای ایتانیوم متوقف شد. البته در نسخههای سرور ویندوز همچنان از پردازندههای ایتانیوم پشتیبانی میشود.
ویرایش x۶۴ ویندوز XP حرفهای
«ویرایش x۶۴ ویندوز حرفهای» بر اساس ویندوز سرور ۲۰۰۳ طراحی شدهاست و پردازندههای AMD ۶۴ و نسخه توسعه یافته معماری IA-۳۲ اینتل را پشتیبانی میکند. این معماری در چیپهای اوپترون و Athlon ۶۴ شرکت AMD و نسخههای توسعه یافته اکس۸۶-۶۴ با سازگاری گسترده چیپهای اینتل یافت میشود. مایکروسافت در نسخههای قبلی ویندوز نیز میکروپروسسورهای خاص را پشتیبانی میکرد. البته ویندوز NT پردازندههای ۶۴ بیتی را به عنوان ۳۲ بیتی در نظر میگرفت. فایلهای لازم برای تمام معماریهای مختلف پردازندهها در CD نصب XP موجود است و نیازی به خرید نسخههای مجزا نمیباشد.
ویرایش Media Center ویندوز اکسپی
«ویرایش Media Center ویندوز XP» برای کامپیوترهای media center پیادهسازی شدهاست. این نسخه تنها در همان کامپیوترها موجود است و به صورت مجزا به فروش نمیرسد. در سال ۲۰۰۳ این نسخه تحت عنوان «ویندوز XP ویرایش Media center ۲۰۰۳» به هنگام شد که قابلیتهای جدیدی همچون امکان استفاده از رادیو FM به آن اضافه شده بود. در سالهای ۲۰۰۴ و ۲۰۰۵ نیز این ویرایش ارتقاء داده شد.
ویرایش Tablet PC ویندوز اکسپی
مایکروسافت این نسخه را به طور خاص برای کامپیوترهای لپ تاپ/نت بوک که به آنها اصطلاحاً Tablet PC میگویند، طراحی کردهاست. این ویرایش یادداشتهای دست نوشته، صفحات نمایش تصویر-گرا و صفحات نمایش حساس به قلم را پشتیبانی میکنند. این ویرایش نیز به همراه کامپیوتر Tablet به فروش میرسد و امکان خرید مجزای آن وجود ندارد.
ویندوز XP نهفته
این ویرایش برای کاربرد در وسایل الکترونیکی خاصی همچون بستههای Set-top، کیوسکها، دستگاههای خودپرداز، وسایل پزشکی، دستگاههای POS و مولفههای پروتکل صدا روی اینترنت (VOIP) پیادهسازی شدهاست.
ویندوز پایه برای کامپیوترهای شخصی قدیمی
در ژوئیه ۲۰۰۶ مایکروسافت یک نسخه محدود شده(thin-client) از ویندوز XP برای PCهای قدیمی ارائه کرد که تنها برای مشتریان بیمه نرمافزاری مایکروسافت مایکروسافت که میخواهند سیستم عامل خود را به XP ارتقا دهند ولی به هر دلیل تمایلی به خرید سختافزارهای مورد نیاز برای XP ندارند، عرضه میشود.
ویرایش مبتدی ویندوز XP
این ویرایش ویندوز XP نسخه ارزان قیمتی است که در کشورهای تایلند، ترکیه، مالزی، اندونزی، روسیه، هند، برزیل، آرژانتین، شیلی، مکزیک، اکوادور، اروگوئه و ونزوئلا موجود است. این ویرایش شبیه ویرایش خانگی است ولی محدودیتهای خاصی همچون اجازه اجرای تنها سه برنامه به طور همزمان را دارد. بر طبق گفته انتشارات مایکروسافت، ویرایش مبتدی ویندوز XP، «یک ویرایش ارزان قیمت مایکروسافت ویندوز XP است که برای کاربران مبتدی PC در کشورهای در حال توسعه طراحی شدهاست.»
ویرایش مبتدی امکانات خاصی برای بازارهای غیرآمریکایی، جایی که مشتریان ممکن است سواد کامپیوتری نداشته باشند، دارد. به عنوان مثال امکانات راهنمای محلی شده برای آنهایی که به زبان انگلیسی صحبت نمیکنند، تصاویر پس زمینه مخصوص هر کشور و محافظ صفحه نمایشهایی مخصوص و تنظیمات پیش فرض دیگری که برای استفاده راحتتر از ویندوز XP طراحی شدهاست، برخی از امکانات مخصوص این ویرایش است. به علاوه این ویرایش محدودیتهایی دارد که اعمال آنها باعث ارزانتر شدن آن نسبت به نسخههای دیگر ویندوز XP شدهاست.
در این ویرایش تنها سه برنامه به طور همزمان اجازه اجرا دارند و هر برنامه نیز حداکثر میتواند سه پنجره باز داشته باشد. بیشترین رزولوشن به ۷۶۸×۱۰۲۴ محدود شدهاست و هیچ پشتیبانی از دامنه و شبکههای کارگروهی نمیشود. همچنین این ویرایش برای پردازندههای کم توانی همچون سلرون اینتل و Duron کمپانی AMD ساخته شدهاست. در این ویرایش حداکثر حافظه اصلی ۲۵۶ مگابایت و ۸۰ گیگا بایت هارد دیسک را پشتیبانی میکند. (البته مایکروسافت به صورت واضح اعلام نکردهاست که این محدودیت برای اندازه کل دیسک است با برای هر پارتیشن) و بالاخره اینکه گزینههای محدودی برای سفارشی سازی تمها، دسک تاپ و نوار ابزار موجود است.
در ۱۹ اکتبر ۲۰۰۶ مایکروسافت اعلام کرد که ۱٫۰۰۰٫۰۰۰ نسخه از ویرایش مبتدی ویندوز XP را به فروش رساندهاست. اما در تولید انبوه این ویرایش توفیق چندانی نداشتهاست. نسخههای کرک شده و استفاده بدون مجوز از این ویرایش نیز بسیار موجود است.
جاوااسکریپت (به انگلیسی: JavaScript) زبان برنامه نویسی اسکریپت مبتی بر اشیاء
است که توسط NetScape تولید شدهاست. این زبان، یک زبان شیگرااست که بر اساس
استاندارد ECMA-262 Edition 3 نوشته شدهاست.
علیرغم اشتباه عمومی، زبان جاوا اسکریت با زبان جاوا ارتباطی ندارد، اگر چه ساختار این زبان به سی پلاس پلاس(++C) و جاوا شباهت دارد؛ که این امر برای یادگیری آسان در نظر گرفته شدهاست. از همینرو دستورهای متداول مانند if, for, try..catch ,"while" و... در این زبان هم یافت میگردند.
این زبان میتواند هم به صورت ساخت یافته و هم به صورت شی گرا مورد استفاده قرار گیرد. در این زبان اشیاء با اضافه شدن متدها و خصوصیات پویا به اشیاء خالی ساخته میشوند، بر خلاف جاوا. بعد از ساخته شدن یک شی به روش فوق، این شی میتواند به عنوان نمونهای برای ساخته شدن اشیاء مشابه مورد استفاده قرار گیرد.
به علت این قابلیت زبان جاوااسکریپت برای ساختن نمونه از سیستم مناسب میباشد.
کاربرد گسترده این زبان در سایتها و صفحات اینترنی میباشد و به کمک این زبان میتوان به اشیاء داخل صفحات HTML دسترسی پیدا کرد و آنها را تغییر داد. به همین علت برای پویا نمایی در سمت کاربر، از این زبان استفاده میشود.
جاوا اسکریپت را در ابتدا شخصی به نام برندان ایچ در شرکت Netscape با نام Mocha طراحی نمود. این نام بعدا به LiveScript و نهایتا به جاوا اسکریپت تغییر یافت.این تغییر نام تقریبا با افزوده شدن پشتیبانی از جاوا در مرورگر وب Netscape Navigator همزمانی دارد. اولین نسخهٔ جاوا اسکریپت در نسخه 2.0B3 این مرورگر در دسامبر ۱۹۹۵ معرفی و عرضه شد. این نام گذاری منجر به سردرگمیهای زیادی شده و این ابهام را ایجاد میکند که جاوا اسکریپت با جاوا مرتبط است در حالی که این طور نیست. عدهٔ زیادی این کار را یک ترفند تجاری برای به دست آوردن بخشی از بازار جاوا که در آن موقع زبان جدید مطرح برای برنامه نویسی تحت وب بود میدانند.
به دلیل موفقیت عمدهٔ جاوا اسکریپت در نقش زبان نویسهای سمت کارخواه (client side scripting language) برای صفحات وب، مایکروسافت یک نسخه سازگار از این زبان را ایجاد کرد و به علت مشکلات حقوقی آن را Jscript نامید. این زبان در نسخه ۳٫۰ از مرورگر اینترنت اکسپلورر و در آگوست ۱۹۹۶ داده شد. تفاوتهای این دو زبان به حدی جزیی است که اغلب Jscript و جاوا اسکریپت به جای هم به کار میروند. هرچند که مایکروسافت در اینجا چند ده دلیل برای تفاوت Jscript با استاندارد ECMA مطرح میکند.
Netscape جاوا اسکریپت را به سازمان Ecma International برای استاندارد سازی ارسال کردهاست و نتیجه نسخهٔ استاندارد شدهای به نام ECMA Script است.
جاوا اسکریپت به یکی از زبانهای برنامه نویسی پر طرفدار در وب تبدیل شدهاست. هر چند ابتدا بسیاری از برنامه نویسان حرفهای زبان را کم ارزش تلقی میکردند چون مخاطبین آن نویسندگان صفحات وب و آماتورهای این چنینی بودند. ظهور ایجکس بار دیگر جاوا اسکریپت را در معرض توجه قرار داد و برنامه نویسان حرفهای بیشتری را به خود جذب نمود. نتیجه ازدیاد فریمورک و کتابخانههای جامعی در این زمینه، بهبود شیوههای رایج برنامه نویسی در جاوا اسکریپت و افزایش کاربرد جاوا اسکریپت خارج از وب است.
زبان امری و ساخت یافته
جاوا اسکریپت از تمامی نحو ساختاری زبان C پشتیبانی میکند. مانند گزاره (if و switch و حلقههای while و...) یک مورد استثنا تعیین حوزهٔ متغیرهاست: تعریف حوزه در حد block در جاوا اسکریپت وجود ندارد. هر چند جاوا اسکریپت ۱٫۷ با کلمهٔ کلیدی let این نوع حوزه دهی را امکان پذیر میسازد. مانند c در جاوا اسکریپت بین عبارت و گزاره تفاوت وجود دارد.
پویایی
؛ تایپ دهی پویا: مانند اکثر زبانهای نویسهای تایپ به مقدارها منسوب میگردد و نه به متغیرها. برای مثال متغیر x ممکن است به یک عدد وابسته سازی شود، و بعداً به یک رشته. جاوا اسکریپت برای تعیین تایپ شی راههای مختلفی از جمله تایپ دهی اردکی (duck typing) را دارد.
؛ تایپ دهی ضعیف: زبان جاوا اسکریپت از نظر تایپ دهی ضعیف به شمار میآید و در آن نتیجهٔ عملیاتی مانند ۵ + “۳۷”، عبارت “۵۳۷” خواهد بود. (عدد را با رشته جمع کردهاست)
؛ اشیا به دید آرایههای انتسابی: جاوا اسکیرپت تقریبا تماما بر اساس اشیا است. اشیا، آرایههای انتسابی به همراه یک «ساختار شماتیک» هستند. نام ویژگی اشیا، کلیدهای آرایه انتسابی هستند و درواقع obj.x = ۱۰ با obj[“x”] = ۱۰ هم ارز هستند و شیوه نگارش با نقطه صرفا یک سهولت نحوی است. ویژگیها و مقدارهایشان در زمان اجرا قابلیت تغییر اضافه و حذف دارند. همچنین میتوان روی ویژگیهای یک شی با ساختار for … in پیمایش کرد.
؛ ارزیابی در زمان اجرا: جاوااسکریپا یک تابع eval دارد که قادر است گزارههای تولید شده در یک رشته در زمان اجرا را، اجرا کند.
تابعی بودن: توابع موجوداتی «درجه اول» محسوب میشوند، یعنی خود یک شی هستند. بنابراین میتوانند ویژگی داشته باشند، در آرگومانهای تابعها داده شوند و مانند هر شی دیگری با آنها رفتار شود
؛ توابع داخلی و بستارها: توابع داخلی (توابع تعریف شده داخل یک تابع دیگر) هر بار که تابع بیرونی فرا خوانده شود، ایجاد میشوند و متغیرهای توابع بیرونی تا زمانی که تابع داخلی وجود داشته باشد، وجود خواهند داشت، حتی پس از اتمام آن فراخوانی از تابع بیرونی. (مثال: اگر تابع داخلی به عنوان مقدار برگشتی تابع باشد، هنوز به متغیرهای تابع بیرونی دسترسی دارد) – این مکانیزم بستار گرفتن در جاوا اسکریپت است.
ساختار شماتیک» محوری
ساختار شماتیک: جاوا اسکریپت به جای ردهها برای تعریف ویژگیهای اشیا، که شامل متدها و وراثت است از «ساختار شماتیک» استفاده میکند (پیشنمونه). امکان شبیه سازی بسیاری از امکانات رده-محور با ساختارهای شماتیک جاوا اسکریپت امکان پذیر است.
توابع در نقش سازندهٔ اشیا
برای توابع علاوه بر نقش عادی، به عنوان سازنده ی اشیا هم عمل میکنند. آوردن یک new قبل فراخوانی تابع، آن را با کلمهٔ کلیدی this وابسته سازی شده به شی جدید اجرا میکند. ویژگی prototype از تابع مورد نظر، ساختار شماتیک شی جدید را مشخص میکند.
؛ توابع در نقش متد: بر خلاف بیشتر زبانهای شی گرا تفاوتی میان تعریف تابع و متد وجود ندارد. بلکه تفاوت در زمان فراخوانی تابع است، زمانی که یک تابع به عنوان متد یک شی فراخوانده میشود کلمهٔ کلیدی this محلی آن تابع به شی مورد نظر وابسته سازی میشود.
جاوا اسکریپت برای تامین اشیا و متدها که با آنها تعامل کند به یک محیط اجرایی (مانند مرورگر وب) نیاز دارد تا بتواند به این ترتیب با دنیای خارج ارتباط برقرار کند. همچنین برای دسترسی به سایر نویسهها (include) هم به این محیط نیازمند است (مانند تگ <script>در HTML). (البته این یک ویژگی زبانی نیست اما در عمل اغلب این طور پیاده سازی شدهاست)
؛ تعداد متغیر پارامتر (variadic): تعداد نامعینی پارامتر را میتوان به یک تابع ارسال نمود. تابع میتواند هم از طریق پارامترهای رسمی و هم از طریق شی محلی arguments به آنها دسترسی داشته باشد.
Literalهای آرایه و شی
مانند بسیاری از زبانهای نویسهای آرایهها و اشیا (که در زبانهای دیگر همان آرایههای انتسابی هستند) را میتوان با یک نحو موجز ایجاد و توصیف نمود. در واقع این شیوهٔ نگارش پایهٔ قالب دادهای جیسون هم هست.
عبارات منظم
جاوا اسکریپت به شیوهای مشابه زبان پرل از عبارات منظم پشتیبانی میکند که نحوی قدرتمند و موجز را به شکلی فراتر از توابع پیش ساخته برای کار با رشتهها، فراهم میکند.
انواع زیر جزو انواع دادههای قابل دسترس در زبان جاوا اسکریپت است. در استاندارد ECMA انواع دیگری هم تعریف شده که صرفا داخلی است و برای پیاده سازی است.
تعریف نشده: این تایپ فقط یک مقدار با نام undefined دارد و متعلق به تمام متغییرهای مقدار دهی نشدهاست
نوع تهی: نوع تهی هم فقط یک مقدار دارد با نام null
نوع دودویی: نمایندهٔ یک مقدار منطقی است و دو مقدار true و false را میپذیرد.
نوع رشته: در بر گیرندهٔ تمام رشتههای متناهی از ۰ یا بیشتر عنصر ۱۶ بیتی بدون علامت است. این عناصر با اندیسهای نامنفی قابل دسترسی هستند. طول رشته تعداد عناصر داخل آن و طول رشتهٔ تهی برابر ۰ است.
زمانی که رشته حاوی متن واقعی باشد هر عنصر به عنوان یک واحد UTF-16 در نظر گرفته میشود (مستقل از این که شیوهٔ واقعی نگه داری رشته چه باشد). تمام عملیات بر روی رشتهها آنها را به عنوان اعداد صحیح بدون علامت در نظر میگیرند و تضمین کنندهٔ تولید رشته به حالت normalize شده نیست و تضمینهای خاص زمانی هم ندارد. علت این تصمیم گیری سادگی در پیاده سازی ذکر شدهاست.
نوع عدد: نوع عدد در جاوا اسکریپت مطابق با استادارد IEEE برای اعداد شناور دودویی است (با اندکی تفاوت).
نوع شی: شی در جاوا اسکریپت یک مجموعه بدون ترتیب از ویژگیها است. هر ویژگی میتواند داخلی، فقط-خواندنی، غیر قابل حذف، و غیر قابل پیمایش باشد (یا ترکیبی از اینها یا هیچ کدام)
تبدیلات خودکار
این زبان دارای تبدیلات خود کار بین این انواع دادهای است.
زمانی که بخواهد یک if را ارزیابی کند یا از عملگرهای منطقی ! و && و || استفاده شود، تبدیل به نوع دودویی را انجام میدهد. مقادیر ۰ و ۰- و NaN به false و سایر مقادیر عددی به true نگاشت میگردد. همچنین رشتهٔ تهی false و سایر رشتهها true در نظر گرفته میشود. انواع شی و تابع true و undefined و null هم false در نظر گرفته میشود.
زمانی که یکی از عملوندهای عملگر + رشته باشد، تبدیل به رشته صورت میگیرد، مانند ۵ + “۳۷” که میشود “۵۳۷”
عملگرهای دیگری عددی (جز جمع) منجر به تبدیل به عدد میگردد مانند ۳ – “۵۷” که مقدار عددی ۳۴- را به دست میدهد.
علیرغم اشتباه عمومی، زبان جاوا اسکریت با زبان جاوا ارتباطی ندارد، اگر چه ساختار این زبان به سی پلاس پلاس(++C) و جاوا شباهت دارد؛ که این امر برای یادگیری آسان در نظر گرفته شدهاست. از همینرو دستورهای متداول مانند if, for, try..catch ,"while" و... در این زبان هم یافت میگردند.
این زبان میتواند هم به صورت ساخت یافته و هم به صورت شی گرا مورد استفاده قرار گیرد. در این زبان اشیاء با اضافه شدن متدها و خصوصیات پویا به اشیاء خالی ساخته میشوند، بر خلاف جاوا. بعد از ساخته شدن یک شی به روش فوق، این شی میتواند به عنوان نمونهای برای ساخته شدن اشیاء مشابه مورد استفاده قرار گیرد.
به علت این قابلیت زبان جاوااسکریپت برای ساختن نمونه از سیستم مناسب میباشد.
کاربرد گسترده این زبان در سایتها و صفحات اینترنی میباشد و به کمک این زبان میتوان به اشیاء داخل صفحات HTML دسترسی پیدا کرد و آنها را تغییر داد. به همین علت برای پویا نمایی در سمت کاربر، از این زبان استفاده میشود.
جاوا اسکریپت را در ابتدا شخصی به نام برندان ایچ در شرکت Netscape با نام Mocha طراحی نمود. این نام بعدا به LiveScript و نهایتا به جاوا اسکریپت تغییر یافت.این تغییر نام تقریبا با افزوده شدن پشتیبانی از جاوا در مرورگر وب Netscape Navigator همزمانی دارد. اولین نسخهٔ جاوا اسکریپت در نسخه 2.0B3 این مرورگر در دسامبر ۱۹۹۵ معرفی و عرضه شد. این نام گذاری منجر به سردرگمیهای زیادی شده و این ابهام را ایجاد میکند که جاوا اسکریپت با جاوا مرتبط است در حالی که این طور نیست. عدهٔ زیادی این کار را یک ترفند تجاری برای به دست آوردن بخشی از بازار جاوا که در آن موقع زبان جدید مطرح برای برنامه نویسی تحت وب بود میدانند.
به دلیل موفقیت عمدهٔ جاوا اسکریپت در نقش زبان نویسهای سمت کارخواه (client side scripting language) برای صفحات وب، مایکروسافت یک نسخه سازگار از این زبان را ایجاد کرد و به علت مشکلات حقوقی آن را Jscript نامید. این زبان در نسخه ۳٫۰ از مرورگر اینترنت اکسپلورر و در آگوست ۱۹۹۶ داده شد. تفاوتهای این دو زبان به حدی جزیی است که اغلب Jscript و جاوا اسکریپت به جای هم به کار میروند. هرچند که مایکروسافت در اینجا چند ده دلیل برای تفاوت Jscript با استاندارد ECMA مطرح میکند.
Netscape جاوا اسکریپت را به سازمان Ecma International برای استاندارد سازی ارسال کردهاست و نتیجه نسخهٔ استاندارد شدهای به نام ECMA Script است.
جاوا اسکریپت به یکی از زبانهای برنامه نویسی پر طرفدار در وب تبدیل شدهاست. هر چند ابتدا بسیاری از برنامه نویسان حرفهای زبان را کم ارزش تلقی میکردند چون مخاطبین آن نویسندگان صفحات وب و آماتورهای این چنینی بودند. ظهور ایجکس بار دیگر جاوا اسکریپت را در معرض توجه قرار داد و برنامه نویسان حرفهای بیشتری را به خود جذب نمود. نتیجه ازدیاد فریمورک و کتابخانههای جامعی در این زمینه، بهبود شیوههای رایج برنامه نویسی در جاوا اسکریپت و افزایش کاربرد جاوا اسکریپت خارج از وب است.
زبان امری و ساخت یافته
جاوا اسکریپت از تمامی نحو ساختاری زبان C پشتیبانی میکند. مانند گزاره (if و switch و حلقههای while و...) یک مورد استثنا تعیین حوزهٔ متغیرهاست: تعریف حوزه در حد block در جاوا اسکریپت وجود ندارد. هر چند جاوا اسکریپت ۱٫۷ با کلمهٔ کلیدی let این نوع حوزه دهی را امکان پذیر میسازد. مانند c در جاوا اسکریپت بین عبارت و گزاره تفاوت وجود دارد.
پویایی
؛ تایپ دهی پویا: مانند اکثر زبانهای نویسهای تایپ به مقدارها منسوب میگردد و نه به متغیرها. برای مثال متغیر x ممکن است به یک عدد وابسته سازی شود، و بعداً به یک رشته. جاوا اسکریپت برای تعیین تایپ شی راههای مختلفی از جمله تایپ دهی اردکی (duck typing) را دارد.
؛ تایپ دهی ضعیف: زبان جاوا اسکریپت از نظر تایپ دهی ضعیف به شمار میآید و در آن نتیجهٔ عملیاتی مانند ۵ + “۳۷”، عبارت “۵۳۷” خواهد بود. (عدد را با رشته جمع کردهاست)
؛ اشیا به دید آرایههای انتسابی: جاوا اسکیرپت تقریبا تماما بر اساس اشیا است. اشیا، آرایههای انتسابی به همراه یک «ساختار شماتیک» هستند. نام ویژگی اشیا، کلیدهای آرایه انتسابی هستند و درواقع obj.x = ۱۰ با obj[“x”] = ۱۰ هم ارز هستند و شیوه نگارش با نقطه صرفا یک سهولت نحوی است. ویژگیها و مقدارهایشان در زمان اجرا قابلیت تغییر اضافه و حذف دارند. همچنین میتوان روی ویژگیهای یک شی با ساختار for … in پیمایش کرد.
؛ ارزیابی در زمان اجرا: جاوااسکریپا یک تابع eval دارد که قادر است گزارههای تولید شده در یک رشته در زمان اجرا را، اجرا کند.
تابعی بودن: توابع موجوداتی «درجه اول» محسوب میشوند، یعنی خود یک شی هستند. بنابراین میتوانند ویژگی داشته باشند، در آرگومانهای تابعها داده شوند و مانند هر شی دیگری با آنها رفتار شود
؛ توابع داخلی و بستارها: توابع داخلی (توابع تعریف شده داخل یک تابع دیگر) هر بار که تابع بیرونی فرا خوانده شود، ایجاد میشوند و متغیرهای توابع بیرونی تا زمانی که تابع داخلی وجود داشته باشد، وجود خواهند داشت، حتی پس از اتمام آن فراخوانی از تابع بیرونی. (مثال: اگر تابع داخلی به عنوان مقدار برگشتی تابع باشد، هنوز به متغیرهای تابع بیرونی دسترسی دارد) – این مکانیزم بستار گرفتن در جاوا اسکریپت است.
ساختار شماتیک» محوری
ساختار شماتیک: جاوا اسکریپت به جای ردهها برای تعریف ویژگیهای اشیا، که شامل متدها و وراثت است از «ساختار شماتیک» استفاده میکند (پیشنمونه). امکان شبیه سازی بسیاری از امکانات رده-محور با ساختارهای شماتیک جاوا اسکریپت امکان پذیر است.
توابع در نقش سازندهٔ اشیا
برای توابع علاوه بر نقش عادی، به عنوان سازنده ی اشیا هم عمل میکنند. آوردن یک new قبل فراخوانی تابع، آن را با کلمهٔ کلیدی this وابسته سازی شده به شی جدید اجرا میکند. ویژگی prototype از تابع مورد نظر، ساختار شماتیک شی جدید را مشخص میکند.
؛ توابع در نقش متد: بر خلاف بیشتر زبانهای شی گرا تفاوتی میان تعریف تابع و متد وجود ندارد. بلکه تفاوت در زمان فراخوانی تابع است، زمانی که یک تابع به عنوان متد یک شی فراخوانده میشود کلمهٔ کلیدی this محلی آن تابع به شی مورد نظر وابسته سازی میشود.
جاوا اسکریپت برای تامین اشیا و متدها که با آنها تعامل کند به یک محیط اجرایی (مانند مرورگر وب) نیاز دارد تا بتواند به این ترتیب با دنیای خارج ارتباط برقرار کند. همچنین برای دسترسی به سایر نویسهها (include) هم به این محیط نیازمند است (مانند تگ <script>در HTML). (البته این یک ویژگی زبانی نیست اما در عمل اغلب این طور پیاده سازی شدهاست)
؛ تعداد متغیر پارامتر (variadic): تعداد نامعینی پارامتر را میتوان به یک تابع ارسال نمود. تابع میتواند هم از طریق پارامترهای رسمی و هم از طریق شی محلی arguments به آنها دسترسی داشته باشد.
Literalهای آرایه و شی
مانند بسیاری از زبانهای نویسهای آرایهها و اشیا (که در زبانهای دیگر همان آرایههای انتسابی هستند) را میتوان با یک نحو موجز ایجاد و توصیف نمود. در واقع این شیوهٔ نگارش پایهٔ قالب دادهای جیسون هم هست.
عبارات منظم
جاوا اسکریپت به شیوهای مشابه زبان پرل از عبارات منظم پشتیبانی میکند که نحوی قدرتمند و موجز را به شکلی فراتر از توابع پیش ساخته برای کار با رشتهها، فراهم میکند.
انواع زیر جزو انواع دادههای قابل دسترس در زبان جاوا اسکریپت است. در استاندارد ECMA انواع دیگری هم تعریف شده که صرفا داخلی است و برای پیاده سازی است.
تعریف نشده: این تایپ فقط یک مقدار با نام undefined دارد و متعلق به تمام متغییرهای مقدار دهی نشدهاست
نوع تهی: نوع تهی هم فقط یک مقدار دارد با نام null
نوع دودویی: نمایندهٔ یک مقدار منطقی است و دو مقدار true و false را میپذیرد.
نوع رشته: در بر گیرندهٔ تمام رشتههای متناهی از ۰ یا بیشتر عنصر ۱۶ بیتی بدون علامت است. این عناصر با اندیسهای نامنفی قابل دسترسی هستند. طول رشته تعداد عناصر داخل آن و طول رشتهٔ تهی برابر ۰ است.
زمانی که رشته حاوی متن واقعی باشد هر عنصر به عنوان یک واحد UTF-16 در نظر گرفته میشود (مستقل از این که شیوهٔ واقعی نگه داری رشته چه باشد). تمام عملیات بر روی رشتهها آنها را به عنوان اعداد صحیح بدون علامت در نظر میگیرند و تضمین کنندهٔ تولید رشته به حالت normalize شده نیست و تضمینهای خاص زمانی هم ندارد. علت این تصمیم گیری سادگی در پیاده سازی ذکر شدهاست.
نوع عدد: نوع عدد در جاوا اسکریپت مطابق با استادارد IEEE برای اعداد شناور دودویی است (با اندکی تفاوت).
نوع شی: شی در جاوا اسکریپت یک مجموعه بدون ترتیب از ویژگیها است. هر ویژگی میتواند داخلی، فقط-خواندنی، غیر قابل حذف، و غیر قابل پیمایش باشد (یا ترکیبی از اینها یا هیچ کدام)
تبدیلات خودکار
این زبان دارای تبدیلات خود کار بین این انواع دادهای است.
زمانی که بخواهد یک if را ارزیابی کند یا از عملگرهای منطقی ! و && و || استفاده شود، تبدیل به نوع دودویی را انجام میدهد. مقادیر ۰ و ۰- و NaN به false و سایر مقادیر عددی به true نگاشت میگردد. همچنین رشتهٔ تهی false و سایر رشتهها true در نظر گرفته میشود. انواع شی و تابع true و undefined و null هم false در نظر گرفته میشود.
زمانی که یکی از عملوندهای عملگر + رشته باشد، تبدیل به رشته صورت میگیرد، مانند ۵ + “۳۷” که میشود “۵۳۷”
عملگرهای دیگری عددی (جز جمع) منجر به تبدیل به عدد میگردد مانند ۳ – “۵۷” که مقدار عددی ۳۴- را به دست میدهد.