خانه / بایگانی برچسب: سیستم عامل

بایگانی برچسب: سیستم عامل

دستورهای ترمینال سیستم عامل مک (macOS) — راهنمای مقدماتی

بسیاری از کارهای روزمره در سیستم‌عامل Mac یا همان macOS، با وجود رابط کاربری گرافیکی زیبای آن به راحتی و سرعت انجام می‌شود. اما برخی مواقع Finder به یک ابزار سرسخت تبدیل می‌شود. روش‌های سریع‌تری نیز برای کارهایی مانند یافتن یک فایل 5 گیگابایتی که مخفی شده و یا مسیر همه فایل‌های مرتبط با یک اپلیکیشن که تصور می‌شود حذف شده وجود دارد. برای اجرای این کارها و همچنین کارهای دیگر، خط فرمان یکی از بهترین ابزارها محسوب می‌شود. به همین منظور در این نوشته به معرفی ترمینال سیستم عامل مک می‌پردازیم و مقدمات کار با آن را مرور خواهیم کرد. ترمینال چیست؟ ترمینال ابزاری است که امکان تعامل با مک از طریق خط فرمان را می‌دهد. سیستم‌عامل لینوکس نیز ابزارهای مشابهی دارد چون هر دو سیستم لینوکس و macOS از ریشه مشترک سیستم‌های عامل «شبه یونیکس» (Unix-like) انشعاب یافته‌اند. «رابط خط فرمان» (Command Line Interface) یا به اختصار CLI زبانی است که با استفاده از آن دستورها را در ترمینال وارد می‌کنید تا با سیستم مک تعامل داشته باشید. این زبان bash نام دارد. هر چیزی که در این مقاله معرفی می‌شود یک دستور bash محسوب می‌..

توضیحات بیشتر »

مفهوم معماری کانتینر (Container) چیست؟ — به زبان ساده

شاید تاکنون از خود پرسیده باشید که کانتینرها چه تفاوتی با ماشین‌های مجازی دارند؟ در این نوشته قصد داریم به معرفی کانتینرها پرداخته و به این سؤال پاسخ دهیم. فناوری کانتینر به زودی به یک فناوری فراگیر تبدیل خواهد شد، زیرا ما هم اینک در عصر فناوری ابری (cloud) به سر می‌بریم و کانتینرها نیز یکی از فناوری‌های کلیدی ابر محسوب می‌شوند. مواردی که در این مقاله ارائه شده‌اند را می‌توان در فهرست زیر جمع‌بندی کرد: درک طرز کار سیستم عامل و کرنل که این دانش برای درک کانتینر ضروری است. طرز کار ماشین‌های مجازی چگونه است. ماهیت کانتینرها چیست. مزایا و معایب کانتینرها کدام است. کاربردهای کانتینر نرم‌افزاری چیست. کانتینرها به عنوان اپلیکیشن‌های نرم‌افزاری سبک‌وزن، مزیت‌های مختلفی دارند که شامل کاهش زمان عرضه اپلیکیشن، مقیاس‌پذیری، سهولت مدیریت اپلیکیشن و پشتیبانی از آن و همچنین بهبود تجربه کاربری است. پیش از آن که به بررسی مفهوم کانتینرها بپردازیم، باید با طرز کار سیستم عامل آشنا شویم. ما به طور خاص با نقش کرنل در قلب سیستم عامل آشنا خواهیم شد. آشنایی با مفاهیم مقدماتی طرز کار سیستم عامل سیستم عامل (..

توضیحات بیشتر »

چگونه یک سیستم عامل طراحی کنیم؟ — به زبان ساده

اگر تاکنون با رایانه کار کرده باشید، احتمالاً در مورد طرز کار سیستم عامل در سطوح پایین کنجکاو شده‌اید و یا حتی ممکن است خواسته باشید در مورد این که چگونه می‌توان یک سیستم عامل ایجاد کرد سؤالاتی به ذهنتان رسیده باشد. این که گفته شود توسعه کرنل کار دشواری است، به هیچ وجه حق مطلب را ادا نمی‌کند. در واقع این کار اوج برنامه‌نویسی محسوب می‌شود. در این راهنما ابزارهای پایه‌ای مورد نیاز برای این منظور را معرفی کردیم و یک سیستم عامل ساده را در C و x86 Assembly پیاده‌سازی خواهیم کرد. این تصویری از صفحه سیستم عامل Basilica است که در این نوشته قصد داریم آن را ایجاد کنیم. سیستمی که قصد داریم توسعه دهیم، به افتخار Terry Davis، توسعه‌دهنده تازه درگذشته TempleOS به صورت Basilica OS نامگذاری شده است. این سیستم بسیار ساده خواهد بود و به عنوان یک مقدمه برای توسعه سیستم عامل محسوب می‌شود. از این رو قصد نداریم هیچ موضوع مرتبط با نظریه سیستم عامل مانند قالب‌های اجرایی، ارتباط سریال و غیره را مطرح کنیم. ما پشتیبانی از کیبورد را در سیستم خود نخواهیم داشت؛ با این حال، یک سیستم عامل اولیه می‌سازیم. شروع به پیا..

توضیحات بیشتر »

مفاهیم مقدماتی فلاتر (Flutter) — به زبان ساده

فلاتر نام فریمورک چند پلتفرمی است که گوگل برای توسعه اپلیکیشن‌های مناسب برای اندروید و iOS ارائه کرده و از زمان معرفی سر و صدای زیادی در دنیای توسعه‌دهندگان به پا کرده است. اپلیکیشن‌هایی که در این پلتفرم نوشته می‌شوند به راحتی روی گوشی‌های مختلف اجرا می‌شوند و درک کدهای نوشته شده در این فریمورک کاملاً آسان است. با این حال هنوز در این مورد با کمبود منابع آموزشی مواجه هستیم و برخی جزییات گنگ هستند. همچنین با توجه به جدید بودن این فریمورک، زبان برنامه‌نویسی آن، رویکردها و حتی با احتساب این که دنیای توسعه موبایل هم به طور کلی قدمت چندانی ندارد، این کمبود منابع آموزشی بیشتر به چشم می‌آید. مقدمه بسیاری از افراد وقتی با مشکلی مواجه می‌شوند، نمی‌دانند که باید اشکال کار را در کجا جستجو کنند: Dart، Flutter، Window، Screen، Route یا Widget؟ از سوی دیگر مطالعه مستندات Dart، Flutter و همه ویجت‌های آن نیز ایده چندان مناسبی محسوب نمی‌شود چون به زمان بسیار زیادی نیاز دارد. به دلیل همه مطالبی که گفته شد، تصمیم گرفتیم در این مقاله به معرفی مفاهیم ضروری برای درک این فریمورک و توانایی نوشتن اپلیکیشن‌ها..

توضیحات بیشتر »

چرا باید زبان برنامه نویسی Go را بیاموزیم؟ — راهنمای به زبان ساده

در طی سال‌های اخیر شاهد رشد فزاینده‌ای در علاقه به زبان Go یا GoLang بوده‌ایم. شاید آموختن یک زبان جدید برای هیچ توسعه‌دهنده‌ای موضوع چندان خوشایندی نباشد؛ اما ما در این نوشته قصد داریم شما را قانع بکنیم که چرا باید شروع به یادگیری زبان Go بکنید. ما در این راهنما قصد نداریم روش نوشتن یک پروژه Hello World را به شما آموزش دهیم، چرا که راهنماهای آنلاین بسیار زیادی در این خصوص وجود دارند. از این رو در این نوشته قصد داریم وضعیت کنونی سخت‌افزار- نرم‌افزار رایانه و دلیل نیاز شما به یک زبان جدید مانند Go را توضیح دهیم؛ چون اگر مسئله‌ای نباشد، راه‌حلی نیز نخواهد بود. محدودیت‌های سخت‌افزار «قانون مور» (Moore’s law) در حال زوال است. نخستین پردازنده پنتیوم 4 با سرعت کلاک 3.0 گیگاهرتز در سال 2004 از سوی اینتل معرفی شده است. امروزه مک‌بوک های مدرن پردازنده‌ای با سرعت 2.9 گیگاهرتز دارند، از این رو می‌بینیم که در طی نزدیک به 15 سال شاهد رشد چندانی در زمینه توان پردازشی نبوده‌ایم. نمودار مقایسه افزایش توان پردازش در طی زمان را در نمودار زیر مشاهده می‌کنید: از روی نمودار فوق مشخص است که عملکرد تک-ن..

توضیحات بیشتر »

مفهوم کانتینر به زبان ساده — راهنمای مقدماتی

شما چه یک دانش‌آموز، چه توسعه‌دهنده‌ای در یک شرکت و یا فردی علاقه‌مند به نرم‌افزار باشید، در هر حال این احتمال وجود دارد که تاکنون با عبارت «کانتینر» مواجه شده باشید. همچنین ممکن است شنیده باشید که کانتینرها ماشین‌های مجازی سبکی هستند؛ اما مفهوم کانتینر دقیقاً چیست، کانتینرها دقیقاً چگونه کار می‌کنند و چرا تا این حد مهم هستند؟ در این نوشته قصد داریم به بررسی کانتینرها، ایده‌های اصلی فنی تشکیل دهنده و کاربردهای آن‌ها بپردازیم. ما انتظار نداریم شما در این زمینه هیچ دانش قبلی به جز درکی کلی از علوم رایانه داشته باشید. کرنل و سیستم عامل لپ‌تاپ شما و هر رایانه دیگری بر مبنای قطعات مختلفی از سخت‌افزار مانند سی‌پی‌یو، حافظه دائمی (هارددیسک یا SSD)، حافظه، کارت شبکه و غیره ساخته شده است. برای تعامل با این سخت‌افزار به نرم‌افزاری به نام سیستم عامل نیاز داریم. بخشی از سیستم عامل که با سخت‌افزاری تعامل دارد و به عنوان پلی بین سخت‌افزار و بقیه سیستم عمل می‌کند، کرنل (kernel) نام دارد. کرنل مسئولیت زمان‌بندی پردازش‌ها (برنامه‌ها) برای اجرا، مدیریت دستگاه‌ها (نوشتن و خواندن آدرس‌ها روی دیسک و حاف..

توضیحات بیشتر »

سیستم عامل لینوکس — راهنمای جامع

لینوکس یک نسخه محبوب از سیستم عامل یونیکس (UNIX) است. این سیستم عامل به صورت اوپن سورس است و کد منع آن به رایگان در اختیار همه قرار دارد. استفاده از آن نیز رایگان است. لینوکس با در نظر گرفتن سازگاری‌های UNIX طراحی شده است. فهرست کارکردهای آن شباهت بسیار زیادی به یونیکس دارد. اجزای سیستم لینوکس سیستم عامل لینوکس به طور عمده سه جزء دارد: کرنل (kernel) کرنل به بخش مرکزی لینوکس گفته می‌شود. این بخش مسئول همه فعالیت‌های اصلی این سیستم عامل است. کرنل شامل ماژول‌های مختلفی است و به طور مستقیم با سخت‌افزار سیستم در ارتباط است. کرنل لایه تجرید مورد نیاز برای پنهان‌سازی جزییات سطح پایین سخت‌افزاری برای سیستم یا برنامه‌های کاربردی را ارائه می‌کند. کتابخانه سیستم کتابخانه‌های سیستم کارکردها یا برنامه‌هایی خاصی هستند که برنامه‌های کاربردی یا ابزارهای سیستمی با استفاده از آن‌ها از امکانات کرنل بهره‌مند می‌شوند. این کتابخانه‌ها به پیاده‌سازی اغلب کارکردهای سیستم عامل می‌پردازند و نیازمند دسترسی‌های کد ماژول کرنل نیستند. ابزار سیستمی برنامه‌های ابزار سیستمی مسئول وظایف خاص و تخصصی در سیستم هستند. ..

توضیحات بیشتر »

امنیت در سیستم عامل — راهنمای جامع

منظور از امنیت، ارائه یک سیستم حفاظتی برای منابع سیستم رایانه‌ای مانند CPU، حافظه، دیسک، برنامه‌های نرم‌افزاری و مهم‌تر از همه داده‌ها و اطلاعات مهمی است که روی سیستم کامپیوتری ذخیره شده‌اند. اگر یک برنامه رایانه‌ای از سوی یک کاربر غیر مُجاز اجرا شود، در این صورت وی ممکن است به داده‌های ذخیره شده روی رایانه آسیب بزند. بنابراین یک سیستم رایانه‌ای باید در برابر دسترسی‌های غیر مجاز، دسترسی خرابکارانه به حافظه سیستم، ویروس، کرم و غیره محافظت شود. در این بخش از سلسله مطالب راهنمای جامع سیستم عامل به بررسی موضوعات زیر خواهیم پرداخت: احراز هویت رمزهای عبور یک بار مصرف تهدیدهای برنامه تهدیدهای سیستم طبقه‌بندی امنیت رایانه احراز هویت منظور از احراز هویت، شناسایی هر یک از کاربران سیستم و مرتبط کردن برنامه‌های اجرایی به هر یک از آن‌ها است. مسئولیت سیستم عامل ایجاد یک سیستم حفاظتی است که تضمین می‌کند کاربری که برنامه خاصی را اجرا می‌کند، قبلاً احراز هویت شده است. سیستم‌های عامل به طور کلی هویت کاربران را با استفاده از سه روش زیر احراز می‌کنند: نام کاربری/ رمز عبور – در این روش کاربر باید یک نام ..

توضیحات بیشتر »

مفهوم فایل در سیستم عامل — راهنمای جامع

فایل به مجموعه اطلاعات مرتبطی گفته می‌شود که با نام مشخصی روی یک حافظه ثانویه مانند دیسک مغناطیسی، نوار مغناطیسی و دیسک‌های نوری ذخیره شده است. به طور کلی سیستم فایل یک توالی از بیت‌ها، بایت‌ها، و خط‌های رکوردهایی است که معنای آن به وسیله ایجاد کننده و کاربر تعریف می‌شود. ساختار فایل ساختار فایل باید بر اساس یک قالب خاصی باشد که سیستم عامل بتواند درک کند. فایل ساختار تعریف شده خاصی بر حسب نوع دارد. فایل متنی یک توالی از کاراکترهای سازمان یافته در خطوط مختلف است. فایل منبع یک توالی از روال‌ها و تابع‌ها است. فایل Object یک توالی از بایت‌هایی است که در بلوک‌هایی سازمان یافته است که از سوی ماشین قابل درک هستند. وقتی سیستم عامل ساختارهای فایل مختلف را تعریف می‌کند، شامل کدی که از این ساختارها پشتیبانی می‌کند نیز می‌شود. یونیکس و MS-DOS از کمترین تعداد ساختارهای فایل پشتیبانی می‌کنند. نوع فایل منظور از نوع فایل، توانایی سیستم عامل برای تمییز بین انواع مختلفی از فایل‌ها مانند فایل‌های متنی، فایل‌های باینری و غیره است. سیستم‌های عامل مختلف از انواع بسیار متفاوتی از فایل‌ها پشتیبانی می‌کنند. ..

توضیحات بیشتر »

نرم‌افزارهای ورودی-خروجی (I/O) در سیستم عامل — راهنمای جامع

نرم‌افزارهای I/O غالباً در لایه‌های زیر سازماندهی می‌شود: کتابخانه‌های سطح کاربر – در این سطح واسط ساده‌ای برای برنامه کاربر ارائه می‌شود تا عملیات ورودی و خروجی را اجرا کند. برای نمونه stdio کتابخانه‌ای است که در زبان‌های برنامه‌نویسی C و ++C ارائه شده است. ماژول‌های سطح کرنل – در این سطح، درایورهای دستگاه‌ها برای تعامل با کنترلر دستگاه و ماژول‌های I/O مستقل از دستگاه که توسط درایورهای دستگاه استفاده می‌شود، ارائه شده‌اند. سخت‌افزار – در این لایه سخت‌افزار و کنترلر سخت‌افزار واقعی وجود دارد که با درایورهای دستگاه تعامل دارد و باعث تداوم عملکرد سخت‌افزار می‌شود. یک مفهوم کلیدی در طراحی نرم‌افزار I/O این است که چنین نرم‌افزاری باید هر کجا که امکان داشته باشد مستقل از دستگاه باشد تا بتوان برنامه‌هایی نوشت که بتوانند بدون نیاز به تعیین دستگاه از قبل به ورودی و خروجی آن دسترسی داشته باشند. برای نمونه برنامه‌ای که یک فایل را به صورت ورودی می‌خواند، می‌تواند یک فایل را از دیسک فلاپی یا هارددیسک یا CD-ROM بخواند و نیازی به تغییر دادن برنامه برای تعامل با هر یک از این دستگاه‌ها وجود ندارد. ..

توضیحات بیشتر »