تکنولوژی

تازه های تکنولوژی

داکر چیست؟ عملکرد Docker به چه صورت است؟

امیرمحمد | دوشنبه بیست و یکم آذر ۱۴۰۱ | 0:32

داکر چیست و چه کاربردی دارد؟

داکر (Docker) یک پلتفرم متن باز است که بر مبنای سیستم عامل لینوکس راه‌اندازی شده است. در پاسخ به سوال داکر چیست، خیلی ساده می‌توان گفت، ابزاری است که می‌تواند فرایند ایجاد، پیاده سازی و اجرای برنامه‌ها را با استفاده از Container ها بسیار ساده کند.

داکر چیست

پاسخ دیگر به سوال داکر چیست، می‌تواند این باشد که Docker، نوعی ماشین مجازی است و این امکان را برای برنامه‌ها فراهم می‌کند تا از یک Kernel واحد لینوکس استفاده کرده و از امکاناتی بهره مند شوند که در سیستم عامل میزبان ارائه نشده است. به این ترتیب می‌توانند به صورت مستقل از پیش نیازها و امکانات مازاد بهره برداری کنند. این موضوع باعث می‌شود سرعت و عملکرد برنامه بهبود قابل ملاحظه‌ای پیدا کند و حجم آن نیز کاهش یابد.

کانتینر (Container) چیست؟

نگهداری برنامه‌ها در محیطی ایزوله و به صورت مستقل، از اهداف سیستم‌های جدید توسعه نرم افزار است. به این ترتیب فعالیت آن‌ها بر روی یکدیگر تاثیری نداشته و کاملا مستقل از هم کار می‌کنند. یکی از راه‌های پیاده کردن این تکنولوژی استفاده از ماشین مجازی (Virtual Machine) است که برنامه‌ها را روی یک سخت افزار اما جدا از هم نگهداری می‌کند. در این حالت component ها با هم تداخل نداشته و رقابت برای استفاده از منابع سخت افزاری به حداقل می‌رسد.

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

می‌توان کانتینرها را به 3 بخش تقسیم کرد که عبارتند از:

سازنده (Builder):

فناوری مورد استفاده برای ساخت کانتینر

موتور (Engine):

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

تنظیم (Orchestration):

فناوری مورد استفاده برای تنظیمات و مدیریت کانتینر

کانتینر داکر چیست؟

هر چند مفهوم container از مدت‌ها قبل در حوزه IT مطرح بوده، اما معرفی و ارائه داکر به عنوان یک پروژه متن باز باعث شد استفاده از container ها دوباره فراگیر شود.

کانتینر (Container) این امکان را برای توسعه دهندگان فراهم می‌کند تا بسته کاملی از برنامه‌های خود همراه تمامی بخش‌های مورد نیاز آن ایجاد کرده و آن را در قالب یک بسته واحد ارسال کنند.

کانتینر داکر چیست

با وجود کانتینرها، توسعه دهندگان می‌توانند اطمینان داشته باشند که برنامه داکر در هر ماشین، با سیستم عامل لینوکس بدون توجه به تنظیمات سفارشی قابل اجرا و استفاده است. ماشین جدید می‌تواند تنظیماتی متفاوت با ماشینی که برنامه روی آن طراحی شده، داشته باشد.

برای ساخت یک برنامه داکر و همچنین کار با داکر باید از کامپوننت‌های مختلف استفاده کنیم. در ادامه این کامپوننت‌ها را معرفی و بررسی می‌کنیم.

Dockerfile

هر کانتینر داکر به وسیله یک فایل داکر شروع به کار می‌کند. در پاسخ به سوال داکر فایل چیست، به سادگی می‌توان گفت Dockerfile ها در واقع فایل‌های تنظیمات داکر هستند که با استفاده از آن‌ها می‌توانیم به داکر بگوییم که یک container را چگونه بالا بیاورد و تنظیم کند. به عنوان مثال، چه سرویس‌هایی را فعال کند و چطور به آن‌ها اجازه دسترسی دهد. در واقع داکر فایل مشخص می‌کند که پشت Container ما چه سیستم عاملی قرار بگیرد، همینطور از چه زبان ها، متغیرهای محلی، پورت‌های شبکه یا غیره استفاده شود. و مهم‌تر از همه اینکه مشخص کند Container ما بعد از اینکه واقعا اجرا شد قرار است چه کاری انجام دهد.

در جدول زیر کلمات کلیدی مورد استفاده در داکرفایل را توضیح داده ایم.

توضیح

دستور مورد استفاده

مشخص کردن image مورد استفاده در Container

FROM

سازنده و توصیحاتContainer

MAINTAINER

اجرا کردن دستور هنگام ساخته شدن Container

RUN

اجرا کردن یک دستور بعد از ساخته شدن Container

CMD

اجرا کردن یک دستور بعد از ساخته شدن Container

ENTERYPOINT

اضافه کردن متادیتا به Container

LABEL

مشخص کردن پورت هایی که Container بعد بالا آمدن اجازه دسترسی به آن را می دهد

EXPOSE

اضافه کردن متغییرهای محلی به Container

ENV

اضافه یا کپی یا لینک کردن فایل یا دایرکتوری به Container

ADD

اضافه یا کپی فایل یا دایرکتوری به Container بدون لینک کردن

COPY

اضافه کردن یک mount point در ماشین میزبان یا Containerهای دیگر

VOLUME

ست کردن یک user یا UID در Container

USER

ست کردن دایرکتوری اجرایی در Container

WORKDIR

Docker image

زمانی که کار نوشتن داکر فایل تمام شد، یک قابلیت به اسم Docker Build را فراخوانی می‌کنید که وظیفه دارد یک Image بر اساس محتویات Dockerfile شما بسازد. Docker Image یک فایل قابل حمل و شامل یک سری دستورالعمل است که مشخص می‌کند Container کدام کامپوننت‌های نرم افزاری را اجرا کند و اینکه چطور آن را اجرا کند.

Docker run

ویژگی Docker run در واقع نوعی دستور است که کانتینر را راه‌اندازی می‌کند. هر Container یک نمونه یا مثال از Image است و ماهیت کانتینر به صورت موقتی است. با این حال می‌توان آن‌ها را متوقف کرد یا مجددا راه‌اندازی نمود. هر Image به شرط وجود نام منحصر به فرد، می‌تواند تعداد زیادی کانتینر داشته باشد.

Docker Hub

قابلیت Docker Hub یک مخزن Saas برای مدیریت و به اشتراک گذاری کانتینرها است. در این قسمت می‌توانید تصاویر رسمی داکر که معمولا به صورت متن باز هستند را پیدا کنید.

Docker Engine

این بخش، هسته اصلی داکر به حساب می‌آید. در واقع وقتی کسی درباره داکر صحبت می‌کند، دارد درباره Docker Engine حرف می‌زند. این ویژگی در دو نسخه Enterprise و Community ارائه می‌شود. نسخه Community به صورت متن باز و کاملا رایگان است، در حالی که نسخه Enterprise، با ویژگی‌ها و قابلیت‌های اضافه، برای هر Node سالانه نزدیک به 1500 دلار هزینه دارد.

مکانیزم عملکرد داکر چیست؟

مکانیزم عملکرد داکر

تا اینجا دانستیم داکر چیست و کانتینرها به چه شکل عمل می‌کنند، در این بخش قصد داریم مکانیزم عملکرد داکر را بررسی کنیم.

داکر (Docker) یک لایه واسطه بین سیستم عامل اصلی و بسته نرم افزاری ایجاد می‌کند. در واقع با استفاده از این لایه، نرم افزارها را از یکدیگر تفکیک می‌کند. در سیستم عامل لینوکس قابلیت‌هایی برای تفکیک و ایزوله کردن منابع وجود دارد که هم هسته سیستم عامل و هم گروه‌ها و منابع سخت افزاری و نرم افزاری سیستم عامل را به صورت ایزوله و تفکیک شده در اختیار نرم افزارها قرار می‌دهد، که سیستم داکر نیز از آنها استفاده می‌کند.

به عنوان مثال، قابلیت‌هایی مانند cgroups و kernel namespaces از جمله مواردی هستند که Docker از آنها استفاده می‌کند.

و در انتها…

همان طور که بیان کردیم، داکر یک ابزار اپن سورس با بازدهی بسیار بالا برای طراحی و ساخت برنامه‌ها به کمک کانتینر است. Container به یک برنامه نویس کمک می‌کند تا پروژه خود را با تمام بخش‌های آن به صورت یک بسته درآورد. او با وجود این تکنیک، می‌تواند مطمئن باشد که پروژه اش در سیستم‌های دیگر بدون نیاز به ابزارها یا تنظیمات خاص، اجرا می‌شود.

زبان برنامه نویسی perl چیست؟

امیرمحمد | جمعه هجدهم آذر ۱۴۰۱ | 20:57

اطلاعات کامل در مورد زبان برنامه نویسی PERL

زبان برنامه نویسی PERL یک زبان برنامه نویسی با سطح بالا، که ساختارش شبیه به زبان برنامه c دارد. پیشینه زبان برنامه نویسی پرل توسط لری وال در سال 1987 منتشر گردید، معنی اصلی این کلمه به معنای مروارید است.

این زبان همه منظوره و دینامیک می باشد. پرل بعضی از خصوصیات زبانهایی چون Sed ،Sh lisp ،Awk را دارا می باشد و در اکثر سیستم عامل ها کاربرد دارد زبان برنامه نویسی پرل برای فایلهای نوشتنی مورد استفاده قرار میگیرد.

مخترع زبان پرل لری وال متولد سال 1954 آمریکا است وی نویسنده، زبان شناس و همینطور برنامه نویس است بیشترین شهرت وی بخاطرنوشتن زبان پرل می باشد.

اطلاعات کامل در مورد زبان برنامه نویسی PERL

دنیای برنامه نویسی بسیارگسترده است. هر زبان خصوصیات و ویژگی و کدهای دستوری مختص به خود را دارد که ما در اینجا میخواهیم در رابطه با خصوصیات زبان برنامه نویسی PERL و کاربردش آشنا شویم.

برنامه نویسی زبان کاملا ساده ای که حاوی مجموعه ای از دستورالعملهاست که به صورت کد و تکیه بر قانون های معین نوشته و به کامپیوتر داده می شود تا چه کاری را باید انجام دهد.

زبانی که از طریق آن با کامپیوتر ارتباط برقرار و به آن می گویید که باید چه کاری را انجام دهد، زبان برنامه نویسی اطلاق می شود. برنامه نویسی این امکان را برای برنامه نویسان فراهم کرده که در زمینه برنامه نویسی مثل ابزارهای پیچیده برنامه نویسی، محاسبه نوآوری داشته باشند.

این به این منظور است که دو برنامه نویس یک وظیفه را با دو زبان برنامه نویسی مختلف بنویسند و اجرا نمایند که کاملا به علم آن دو نسبت به زبان برمی گردد.

کاربرد زبان برنامه نویسی PERL

زبان برنامه نویسی PERL بصورتی بود که بر پایه سیستم عامل یونیکس (چندکاربره) پایه گذاری شد و روند گزارش گیری را راحت ساخت، همینطور روی ویندوز ماکروسافت نیز در حال اجرا می باشد.

در سال 2000 نسخه 6 زبان برنامه نویسی پرل که در واقع تکمیل نسخه 5 شروع به بازنگری کرد در واقع لری وال نسخه 5 پرل را بر پایه نسخه 4 زبان برنامه نویسی PERL جمع آوری و در سال 1994 منتشر کرد.

زبان برنامه نویسی perl چیست؟

ویژگی های بسیاری به نسخه 5 زبان برنامه نویسی پرل اضافه شد از جمله ویژگی ها:

  1. متغیرهای واژگانی و ماژول ها
  2. اشیاء
  3. ماژول های مکانیسمی و مراجع

پونی یک کلمه ی مخفف برای زبان پرل و پلی برای ارتباط نسخه 5 پرل با نسخه 6 بود هدف این پروژه تضمین کردن میلیونها خط برنامه در نسخه 5 پرل برای هزاران شرکت در جهان بود که نسخه 5 بازنویسی مفسر شود و روی ماشین نسخه 6 اجرا گردد.

نماد زبان برنامه نویسی PERL

اصولا نماد زبان برنامه نویسی PERL را با شکل شتر نشان میدهند که نمادی غیر رسمی شناخته شده است.نماد جایگزین توسط بنیاد پرل یک پیاز است در پیاز مروارید نماد پیانو بصری است که به شرکت های Perl Mongers, Perl.org, PerlMonks مجوز می دهد.

ویژگی ها

ویژگی های زبان برنامه نویسی پرل به طورکلی همانند ساختار زبان c می باشد در واقع با متغیرها و ساختارهای سابروتین است. همه ی متغییرها با سیگیل (sigil) پیشرو که به متغیرها این اجازه را میدهد که در رشته ها به طور مستقیم تکرار بشوند.

ویژگی ها

کاربرد sigil

در زبان پرل این امکان را می دهد که نشانگر بیان نوع نماد است تا نوع متغیر مثلا: sigil برای دسترسی به لیستی از مقادیر در هش برای آرایه (نماد “a”)مورد استفاده قرار می گیرد تا اینکه بخواد برای متغیر (“%”) کاربرد داشته باشد. باهم نگاهی به مقاله ی آموزش علم داده (Data Science) با پایتون نیز داریم.

زبان پرل در واقع کار برنامه نویسی را راحت و سریع کرد بطوریکه جوابگوی بسیاری از سخت افزار کامپیوترهای گران قیمتی که با برنامه c و فروترن کار میکردند.متن باز بودن این زبان خیلی حائز اهمیت است. یک مترجم زبان برنامه نویسی پرل حدودا به یک فاز کامپایل تقسیم و به مرحله اجرا می رسد.

ویندوز

معمولا کاربر مایکروسافت ویندوز یکی از توزیعهای دودویی Perl را برای ویندوز32، گاها ,Active Perl Strawberry پایه گذاری می‌کنند. کامپایل زبان برنامه نویسی پرل از کد منبع در ویندوز است، علت وجود نصب ماژول های cpan برای این خاطر است که بسیاری از تأسیسات کامپایلر، C مورد نظر را ایجاد نمی‌کنند. به خصوص ابزاری که در C نوشته شده‌است.

زبان برنامه نویسی PERL یک نوع زبان تفسیر است، توانائی ارائه کارایی درحین مشکل‌ها را دارد. در چنین شرایط سخت، برنامه‌های مهم می‌توانند بر روی زبان‌های دیگری چون زبان C نوشته بشوند، که بتوانند با انعطاف‌ بیشتر به Perl متصل شده آن هم از طریق مکانیسم XS یا ماژول‌های ساده Inline.

ماژول های cpan

نسخه 6

در کنفرانس سال 2000، Jon Orwant نسخه ای برای یک زبان جدید ساخت. این حرکت Jon Orwant تصمیمی برای شروع به کار بر روی طراحی کردن مجدد زبانی به نام پرل نسخه 6، منجر شد.

پیشنهادهای فراوانی مربوط به خصوصیات جدید زبان از جانب جامعه ی پرل ارائه و به ‌طور انبوه که حدودا بیش از RFC300 درخواست شد.

چند سال بعد از سال2000، لری وال به تشخیص RFCها و ترکیب کردن آن‌ها برای پرل نسخه 6 و تبدیل به یک چارچوب منظم مشغول بکار شد. او طراحی خود را در مجموعه‌ای به نام “apocalypses” از اسناد برای نسخه 6 پرل ارائه کرده ‌است که شماره گذاری آن مربوط به فصل‌های برنامه‌نویسی پرل است.

نسخه 5 و نسخه 6 زبان برنامه نویسی پرل کاملا از هم متمایز ولی از یک خانواده هستند.

قابلیت نوشتن در کدهای مخرب و اکسپولییت ها یکی از کاربردهای زبان پرل است قابلیت استفاده از این زبان در یونیکس بسیار پیشینه ی قدیمی دارد ولی برای ویندوز حدود 7سال هم نشده است.بطورکلی زبان پرل، به زبانی جدا نشدنی از سیستم عامل یونیکس معروف می باشد.

نسخه 6

کاربرد زبان برنامه نویسی PERL

کاربرد زبان پرل امروزه در زمینه‌های مختلفی چون تحقیقاتی، هوش مصنوعی، صنعتی،ژنتیک، نظامی، تحقیقاتی،اتوماسیون،بیوانفورماتیک،طراحی سایت،طراحی اپلیکیشن،طراحی بازی ها بطورفراوانی به وضوح دیده می شود.شاید نوشتن یک صفحه‌گسترده، بانک اطلاعاتی یا حتی یک وب‌ سرور با پرل کار عاقلانه‌ و درستی به ظاهر نباشد، ولی ممکن است.

پرل یک زبان چسبنده است یعنی می‌تواند در زبان‌های دیگری نیز مورد استفاده قرار بگیرد. مثلا در برنامه‌های دات ‌نت می‌توان از زبان پرل برای پردازش متن یا هر چیزی در چهارچوب استفاده کرد. این ویژگی چسبنده زبان تنها به دات نت محدود نیست زیرا پرل را می‌توان در زبان‌های برنامه‌نویسی دیگری استفاده کرد.

نرم‌افزاری که با زبان برنامه نویسی پرل نوشته شده و تحت سیستم‌عاملی چون مک اواس یا لینوکس است، بر روی سیستم‌عامل یونیکس و مایکروسافت ویندوز هم اجرا می گردد. این قابلیت باعث توسعه نرم‌افزار بر روی هر سیستم‌ عاملی را فراهم می‌سازد.در کنار این مقاله نگاهی به برنامه نویسی اندروید با پایتون نیز خواهیم داشت.

نمونه ی برنامه زبان پرل

نمونه ی برنامه زبان پرل

در نمونه‌ ای از پرل که قبلا مورد استفاده قرار میگرفت برای نوشتن در برنامه به شکل زیر انجام می‌شده:

#   !/usr/bin/per1

Print “Hello maktabkhooneh.org!” ;

در نمونه ی جدیدتر از دستور ​say​ در نوشتن استفاده میشده که یک روش مطابق دستور زیر است:

#  !/usr/bin/per1

Use  5.01; 

Say  “Hello maktabkhooneh.org!”;

برای بهترکردن نوشتن نیاز به کارهای بیشتری چون اضافه کردن کد برنامه مثل ​ ​use warnings;​ و;use strict به برنامه بوده است:

Use strict;

Use warninigs;

Print  “Hello maktabkhooneh.org!\n”;

در هر حال پرل یکی از زبان های برنامه نویسی است که درجهان طرفدارهای به خصوص خودش را دارد ورتبه 10 را در جدول بهترین برنامه نویسی های دنیا دارد.

خصوصیات زبان برنامه نویسی PERL

  • سریع بودن
  • قابل اعتماد بودن
  • بسیارمهیج بودن و سرگرم کننده
  • دارا بودن (CPAN )(Componencive Perl Archive Network
  • پرل از برنامه های شی گرا و رویه ای پشتیبانی می کند.
  • پشتیبانی از یونیکد
  • سازگار با y2k
  • اتصال با c/c با استفاده از swig یا xs
  • دارای بیست هزار ماژول و قابل انعطاف
  • مدیریت سیستم
  • برنامه نویسی شبکه
  • توسعه وب

وب سایتهای بسیار زیادی با زبان پرل طراحی شده اند مثل سایت های:

  1. Booking
  2. LiveJurnal
  3. IMDB

افرادی که با زبان php کار کرده اند به راحتی می توانند این زبان را آموزش ببینند،قبل از هر چیزی برای یادگیری پرل حتما باید به زبان Unix shell و C تسلط کافی داشته باشید.

آموزش زبان فرُار می باشد طوری که هرکس بخواهد آموزش ببیند باید شیوه الگویتم نوشتن را بلد باشد مدت زمان یادگیری ها نیز متغیر خواهد بودمثلا مدت زمان یادگیری مقدماتی،متوسط،پیشرفته تقسیم بندی می شوند بطور کلی پرل یک زبان پایدار میباشد و از امکانات و خواص زبانهای basic، awk،sh استفاده می کند.

می توان از پرل در پروژه های اعتباری استفاده کرد. پایگاه داده پرل از پایگاه داده های postgres ،mysql ،sybase و… پشتیبانی می کند.توانایی کار با Htmlرا داراست.

پرل تفسیرشده

پرل تفسیرشده

تفسیر به این معنی است که کدی را اجرا بکنید بدون اینکه مرحله ی کاملی را اجرا کرده باشید. این زبان،کامپایلر سنتی را به زبان ماشینی تبدیل می سازد.

برای نصب پرل میتوانید از مرورگرهای دانلود پرل استفاده کنید و آنرا روی سیستم خود نصب نمایید و آموزش خود را شروع نمایید.

  1. آموزش ها
  2. مبانی پرل
  3. کار با سینتکس
  4. انواع داده
  5. ساختارهای تصمیم گیری
  6. توابع،انواع متغیرها
  7. اسکالر
  8. حلقه ها
  9. آرایه ها و if،else
  10. اپراتورها زمان وتاریخ و…

هرکدام مقوله ی جدایی برای یادگیری دارد.

ویدیو پییشنهادی : آموزش برنامه نویسی پایتون
آموزش برنامه نویسی پایتون

زبان پرل علاوه بر پیاده سازی روی سیستم عامل یونیکس قابل اجرا برروی os/2،ویندوز nt،dos هست که باعث اهمیت پرل بین برنامه نویسان شده است،برنامه نویسان با تغییر اندکی بر پلتفرم ها، پرل قابل اجرا می باشد.

برای طراحی اپلیکیشن های موبایل از زبان برنامه نویسی PERL استفاده می شود زیرا گوگل پلی این شرایط را فراهم نموده است اما در مورد سیستم عامل iosهنوز در حال توسعه می باشد.

بایوس (BIOS) چیست؟

امیرمحمد | سه شنبه پانزدهم آذر ۱۴۰۱ | 21:55

بایوس (BIOS) برنامه‌ای روی قطعه‌ای از مادربورد (Motherboard) است که وظیفه هماهنگ کردن و پیکربندی‌های پایه‌ای و همچنین بوت کردن سیستم عامل را بر عهده دارد.

کلمه بایوس به چه معناست؟

کلمه بایوس (BIOS) (بخوانید /ˈbaɪ.ɒs/) مخفف عبارت Basic Input/Output System به معنای "سامانه ورودی/خروجی پایه‌ای" بوده و معمولاً با نام‌های زیر نیز شناخته می‌شود:

  • System BIOS (بایوس سیستم)
  • ROM BIOS (بایوس فقط خواندنی)
  • PC BIOS (بایوس کامپیوتر)
  • بایاس یا بیوس (به اشتباه)

مفهموم BIOS برای اولین بار توسط Gary Kildall (که یک محقق کامپیوتر بود) بیان شد و برای اولین بار در سیستم عاملش CP/M ظاهر شد. بعدها در نسخه‌هایی از سیستم عامل MS-DOS فایل‌هایی قرار گرفتند که کار مشابه BIOS را انجام می‌دادند.

Award BIOS Setup

تصویری از محیط Setup بایوس شرکت Award

بایوس چیست؟

بایوس یک سفت افزار (Firmware) است که در داخل یک تراشه (Chip) بر روی همه مادربرد (Motherboard) در کامپیوترهای شخصی سازگار با IBM قرار می‌گیرد. سفت افزار یا فریم ویر به برنامه‌های سطح پایین تقریباً ثابتی (البته طی شرایطی قابل تغییر هستند) گفته می‌شود که در چیپ‌های الکتریکی ذخیره شده و معمولاً کنترل آن دستگاه را بر عهده می‌گیرند.

سفت افزار BIOS فقط خواندنی است به همین دلیل به آن ROM BIOS نیز گفته می‌شود. توجه کنید که حافظه فقط خواندنی هم تحت شرایطی مانند آپدیت کردن و ... قابل عوض شدن است. زمانی که کامپیوتر را روشن می‌کنید، بایوس وارد عمل شده و همان طور که از نامش پیداست، انواع خروجی‌ها و ورودی‌ها را تشخیص داده، مدیریت کرده و آن‌ها را تست می‌کند. پس از تست کردن نوبت به آن می‌رسد که سیستم عامل را راه اندازی کند. این کار با تشخیص دادن رکورد راه انداز اصلی (MBR) روی حافظه تنظیم شده (حافظه‌ای که در بایوس تنظیم می‌شود تا بوت از طریق آن حافظه انجام گیرد. مثل هارد دیسک ها، فلش مموری‌ها و ...) انجام می‌گیرد.

وظایف بایوس

همانطور که گفته شد، بایوس کارهای ابتدایی برای راه اندازی سیستم را انجام می‌دهد. این کارهای ابتدایی همان وظایف بایوس هستند که تعدادی از آن‌ها عبارت اند از:

  • * Power On Self Test (به اختصار POST): بایوس قطعات سخت افزاری را قبل از راه اندازی سیستم عامل ها تست و آزمایش می‌کند تا از سالم بودن و کارکردن صحیح آن‌ها مطمئن شود. درصورت وجود مشکلی در قطعات سخت افزاری (مثلاً نصب نبودن RAM ) این خطا توسط بوق‌هایی که به Beep معروف اند به کاربر اطلاع داده می‌شود.
  • * درایوهای بایوس: درایوها رابط بین سخت افزار و نرم افزار هستند. بایوس نیز با استفاده از درایوهای سطح پایین امکان کنترل سایر قطعات و ورودی‌ها مانند کیبورد را فراهم می‌کند. به این ترتیب امکان کنترل کردن قطعات و آماده سازی آن‌ها فراهم می‌شود.
  • * راه اندازی سیستم عامل: مهمترین وظیفه بایوس. بایوس با استفاده از رکورد راه اندازی اصلی (MBR) موجود در حافظه‌های جانبی، کنترل سیستم را به سیستم عامل می‌سپارد. این فرایند آخرین کاری است که بایوس هنگام روشن کردن کامپیوتر انجام می‌دهد. بایوس برای این کار به ترتیب حافظه‌هایی که برای بوت شدن اولویت بندی شده‌اند را چک کرده و درصورتی که همه چیز Ok باشد (!) سیستم عامل را بارگذاری می‌کند.
  • * پیکربندی‌های بایوس: بایوس به کاربر این امکان را می‌دهد که بنابر نیاز وی، تطابق و هماهنگی قطعات، کارایی و عملکرد سیستم، تنظیمات پایه‌ای سخت افزارها را انجام دهد. برای مثال کاربر می‌تواند برای حافظه‌های مختلف اولویت بوت شدن را تنظیم کند، ماژول صدای Onboard، کنترلر USB را تنظیم کند، درگاه‌های مختلف از جمله درگاه موازی و سریال را پیکربندی کند، درصورت نیاز منابع را Overclock کند و ... . این کار با استفاده از رابط بایوس یعنی Setup انجام می‌گیرد.
  • فعال کردن بایوس سایر قطعات: ممکن است فکر کنید که بایوس خودش به تنهایی عمل آماده سازی را انجام می‌دهد اما اگر دقت کنید، برای مثال انواع مختلفی از کارت‌های گرافیک با درایوهای مختلف وجود دارد. گنجاندن این همه درایو در بایوس تقریباً غیرممکن است. IBM با یک ایده عالی این مشکل را برطرف کرد؛ نصب کردن یک بایوس دیگر روی کارت‌های اضافی از قبیل کارت گرافیک. به این ترتیب بایوس مادربورد فقط بایوس کارت گرافیک را شناخته و آن را فعال کرده و ما تصویر را از طریق آن بایوس هنگام روشن کردن کامپیوتر بدست می‌آوریم.
  • کنترل قطعات سخت افزاری: این مورد یکی از مهمترین وظایف بایوس است. بایوس با استفاده از درایوها و پیکربندی‌های خود، منابع سیستمی را کنترل می‌کند. این کنترل ابتدایی و پایه‌ای بوده و صرفاً به معنای بالا بردن کارایی نیست.

*: وظایف اصلی بایوس

مراحل راه اندازی سیستم عامل

خب تا اینجا با چند مورد از وظایف اصلی بایوس آشنا شدیم. بهتر است به نحوه راه اندازی سیستم عامل توسط بایوس نیز نگاهی داشته باشیم. توجه کنید که مراحل با استفاده از توضیحات موجود در کتاب PCI and PCI-X Hardware and Software: Architecture and Design و سایت flint.cs.yale.edu نوشته شده‌اند:

۱- دکمه روشن کردن کامپیوتر را فشار می‌دهیم. به دلیل این که تولید کردن جریان قابل اعتماد توسط منبع تغذیه (PSU) کمی طول می‌کشد، سیگنال Reset به پردازنده (CPU) ارسال می‌شود. پس از آن که منبع تغذیه سیگنال Power Good را بازگرداند (این سیگنال توسط استاندارد ATX مشخص شده و به معنای داشتن جریان الکتریکی مناسب است)، سیگنال Reset متوقف شده و پردازنده شروع به کار می‌کند. اینجاست که میگوئیم کامپیوتر روشن شده است.

۲- پس از شروع به کار کردن پردازنده، این قطعه باید دستورات موجود در رم را بخواند اما به دلیل این که هیچ چیزی داخل رم نیست، این کار عملاً بیهوده است. سازندگان پردازنده‌ها طبق قراردادی، برای شروع، محلی از حافظه ROM بایوس را دریافت کرده و آن را اجرا می‌کنند. این مکان به آدرس FFFFFFF0h (در پردازنده ۸۰۳۸۶ و x86های بعد) که درست پس از آدرس فضای ۳۲ بیتی است، بوده و نام آن Reset Vector است که در پردازنده‌ها دقیقاً پس از سیگنال Reset پردازش می‌شود.

۳- اولین دستور توسط پردازنده اجرا می‌شود. این دستور چیزی نیست جز یک دستور ساده Jump (دستور JMP) برای پرش به خط ابتدایی برنامه بایوس اصلی. پس از آن، بایوس شروع به اجرا شدن می‌کند. اولین کاری که بایوس انجام می‌دهد بررسی قطعات سخت افزاری برای اطمینان از سالم و قابل استفاده بودن است در این کار اطلاعاتی از قطعات سخت افزار نیز به دست می‌آید. این پروسه POST نام داشته و در صورتی که طی این پروسه خطایی دیده شود، بایوس پردازش را قطع کرده و برای مطلع کردن کاربر صداهای بیپ (Beep)ای را از طریق بازر (Buzzer) روی مادربورد پخش می‌کند. با استفاده از این بیپ‌ها می‌توان مشکل را یافت و آن را برطرف نمود. درصورتی که پروسه POST بدون خطا به اتمام برسد، نوبت به قدم بعدی می‌رسد.

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

ممکن است متوجه شده باشید که قبل از نشان داده شدن اطلاعات بایوس مادربورد، اطلاعاتی مختصر درباره کارت گرافیک نشان داده می‌شود. دلیل آن نیز این است که بایوس کارت گرافیکی اولین اطلاعات را برای نشان دادن به مانیتور می‌فرستد و پس از آن کنترل را به بایوس اصلی می‌سپارد.

۵- در قدم بعدی، بایوس مادربورد به دنبال سایر بایوس‌ها (در صورت وجود) در قطعات دیگر (از جمله هارد دیسک‌های ATA یا IDE) می‌گردد. این کار معمولاً در آدرس حافظه C800h انجام می‌گیرد. درصورتی که در سیستم هیچ کارت گرافیکی برای نمایش وجود نداشته باشد، معمولاً علاوه بر آدرس C800h، آدرس C000h (که برای کارت گرافیک است) نیز بررسی می‌شود. درصورت پیدا شدن بایوسی، محتوای آن نیز اجرا شده سپس کنترل به بایوس اصلی برگردانده می‌شود.

۶- صفحه Startup بایوس در این مرحله نشان داده شده و پس از آن تست‌های بیشتری روی منابع اصلی (مثل RAM) انجام می‌گیرد. پس از اتمام این تست‌ها، سخت افزارهایی مانند هارد دیسک‌ها، درایوهای DVD/CD، حافظه‌های USB و منابعی از این قبیل شناسایی شده و اطلاعات آن‌ها جمع آوری می‌شود. در نهایت ممکن است اطلاعات مختصری درباره منابع سیستم به کاربر نشان داده شود. در این مرحله تنظیمات ذخیره شده در CMOS (در بخش بعدی توضیح داده خواهد شد) بارگذاری می‌شوند.

۷- در این مرحله، طبق پیکربندی‌های انجام شده (یا به صورت پیش فرض) حافظه‌های جانبی به صورت اولویت بندی شده برای موجود بودن سیستم عامل بررسی می‌شوند. این بررسی با استفاده از MBR (در هارد دیسک‌ها)، VBR (در فلاپی درایوها) و ... انجام می‌گیرد و درصورتی که حافظه‌ای بوتیبل (Bootable - قابل بوت) نباشد، بایوس به سراغ اولویت بعدی می‌رود. درصورت پیداش شدن حافظه قابل بوت، بایوس با استفاده از رکورد بوت آن، کنترل را بر عهده سیستم عامل می‌گذارد. درصورت پیدا نشدن خطاهایی از جمله "No boot device"، "No boot device available" نشان داده می‌شوند.

بایوس خود شامل رابط پوسته‌ای (بین رابط گرافیکی و متنی) است و به کاربر این امکان را می‌دهد تا تنظیمات و پیکربندی‌ها مورد نیاز برای سخت افزارها، ورودی‌ها، حافظه‌ها جانبی، اولویت راه اندازی، تنظیمات زمان و تاریخ و ... را انجام دهد. این رابط به CMOS Setup یا BIOS Setup یا به اختصار Setup معروف است و کاربر در مرحله نشان دادن صفحه Startup می‌تواند به آن وارد شود. ممکن است بر روی ستاپ رمز گذاشته شود.

AMI BIOS Setup

تصویری از محیط Setup بایوس شرکت AMI

چیپ BIOS و CMOS

تراشه یا همان چیپ اصلی بایوس معمولاً به صورتی است که بتوان آن را به صورت فیزیکی از روی بورد جدا کرد. این قابلیت این امکان را به کاربر می‌دهد تا درصورتی که بایوس وی به عنوان یکی از مهمترین قطعات مادربورد صدمه دیده باشد یا در برنامه اصلی آن تغییراتی ایجاد شود که بایوس را به کلی غیرقابل استفاده کند، بدون تعویض مادربورد، آن تراشه را با یک تراشه جدید (دقیقاً با همان مدل) تعویض کند. در تصویر زیر دو نوع چیپ بایوس را از دو تولید کننده بزرگ مشاهده می‌کنید. چیپ‌های بایوس می‌توانند به صورت مربعی (مثل تصویر زیر) یا به صورت مستطیلی باشند همچنین ممکن است این چیپ به صورت کامل به بایوس وصل شده باشد و جدا کردن آن به راحتی انجام نپذیرد.

PhoenixBios and AMIBIOS

تراشه بایوس. سمت راست محصول AMI و سمت چپ محصول Phoenix

همانطور که می‌دانید، تنظیمات موجود در BIOS Setup (یا CMOS Setup) باید در محلی ذخیره شده تا در هنگام راه اندازی دوباره بتوان از آن‌ها استفاده کرد. در تنظیمات در داخل تراشه‌ای به نام CMOS (مخفف Complementary metal–oxide–semiconductor) ذخیره می‌شود. این تراشه درواقع یک نوع حافظه غیرفرار (البته در ادامه خواهید فهمید که چندان هم غیرفرار نیست!) است که کاملاً با حافظه اصلی (RAM) متفاوت است.

در این نوع حافظه که به NVRAM نیز معروف است، داده‌ها به کمک یک باتری لیتیومی (به صورت عمومی از نوع CR2032) نگه داری می‌شوند. حجم این حافظه‌ها به صورت معمول ۶۴ یا ۱۲۸ بایت بوده و مقادیر بایت‌های آن به صورت قرار دادی مشخص می‌شود. برای مثال ۱۲ بایت اول برای تنظیمات ساعت RTC است.

bios battery

باتری CMOS منبع عکس: greggroth.net

باتری‌های سیماس (CMOS) می‌توانند به طور متوسط، ۵ سال انرژی مورد نیاز تراشه CMOS را تامین کنند. همچنین در کنار باتری معمولاً یک کریستال ۳۲.۷۶۸ کیلوهرتزی (KHz) نیز یافت می‌شود که وظیفه به روز نگه داشتن ساعت و تاریخ را برعهده دارد. مقادیر ساعت و تاریخ پس از تنظیم در Setup بایوس در داخل تراشه CMOS ذخیره شده و هنگام خاموش بودن کامپیوتر، تراشه با استفاده از باتری یاد شده عمل به روز نگه داشتن ساعت را انجام می‌دهد. مقادیر ساعت و تاریخ که در داخل سیستم عامل (مثلاً ویندوز) مشاهده می‌کنید، از این طریق بدست می‌آید.

البته لازم به ذکر است که باتری ممکن است در سوکت‌ها متنوعی دیده شود همچنین این باتری بک آپ بعضاً به شکل‌های دیگری یافت می‌شود. توجه کنید که درصورتی که این باتری وجود نداشته باشد یا نتواند انرژی مورد نیاز را فراهم کند، داده‌های ذخیره شده در CMOS و در نتیجه تنظیمات BIOS از دست خواهند رفت. یعنی از دلایلی که باعث پاک شدن تنظیمات BIOS می‌شود، از کار افتادن این باتری است.

تولیدکنندگان بایوس:

در لیست زیر، برخی از مهمترین تولیدکنندگان چیپ‌های بایوس نوشته شده است. سه مورد اول رایج ترین شرکت‌ها هستند:

  • AMI(نام روی بایوس‌ها: AMIBIOS)
  • Award
  • phoenix (نام روی بایوس‌ها: PhoenixBIOS)
  • IBM
  • Intel
  • Asus

زبان اسمبلی چیست و چه ویژگی هایی دارد؟

امیرمحمد | دوشنبه چهاردهم آذر ۱۴۰۱ | 21:35

مقدمه‌ای بر زبان اسمبلی

زبان اسمبلی (Assembly Language) یک زبان برنامه‌نویسی سطح پایین (Low-Level Programming Language) است.دستورهای زبان اسمبلی به کد ماشین و در نتیجه، به سخت‌افزار بسیار نزدیک هستند. به همین دلیل، فراگیری زبان اسمبلی دشوار و کاربردهای آن، منحصر به برخی از زمینه‌های خاص است. از یادگیری زبان اسمبلی برای فراگیری ساز و کار کلیه قطعات کامپیوتر از واحد پردازش مرکزی (CPU) گرفته تا حافظه استفاده می‌شود. البته، زبان اسمبلی کاربردهای دیگری نیز دارد که در ادامه مطلب کاربرد زبان اسمبلی به طور کامل به آن‌ها پرداخته شده است.

نکته‌ای که باید به آن توجه داشت این است که با وجود آنکه امروزه اغلب برنامه نویس ها از زبان‌های برنامه‌نویسی سطح بالا مانند پایتون، جاوا و گو برای توسعه نرم‌افزارهای گوناگون استفاده می‌کنند، اما زبان اسمبلی در رتبه بندی هایی که برای زبان‌های برنامه‌نویسی توسط مراکز گوناگون ارائه می‌شود، معمولا جزو ۲۰ زبان برتر و دارای کاربرد و بازار کار در دنیا محسوب می‌شود. هرچند که معمولا از جهت کاربرد و بازار کار در فهرست ۱۰ زبان برنامه‌نویسی برتر قرار ندارد.

برای درک بهتر جایگاه زبان اسمبلی در میان دیگر زبان‌ها از جهت نزدیکی نحو به سخت‌افزار باید گفت که زبان اسمبلی از زبان ماشین سطح بالاتر و از زبان‌هایی مانند پاسکال و C/C ‎ سطح پایین‌تر است. بنابراین، کد نوشته شده به زبان اسمبلی نیز برای اجرا نیاز به آن دارد که به کد قابل اجرا توسط ماشین یا همان زبان ماشین تبدیل شود. در کامپیوترها، چیزی با عنوان اسمبلر (Assembler) وجود دارد که به تبدیل کد اسمبلی به کد قابل اجرای ماشین کمک می‌کند.

زبان اسمبلی اساسا به معماری سیستم شامل سخت‌افزار و سیستم‌عامل نصب شده روی آن بستگی دارد. در ادامه مطلب کاربرد زبان اسمبلی به این پرسش پاسخ داده خواهد شد که زبان اسمبلی چیست، چه تفاوتی با زبان ماشین دارد و همچنین، کاربرد زبان اسمبلی به طور کامل مورد بررسی قرار گرفته است.

زبان ماشین چیست؟

زبان ماشین (Machine Language) مجموعه دستورالعمل‌هایی است که با استفاده از آن‌ها کدنویسی ماشین یا در واقع، کدنویسی مستقیم برای سخت‌افزار کامپیوتر، انجام می‌شود. زبان ماشین، یک زبان برنامه‌نویسی سطح پایین است که به طور مستقیم برای کنترل واحد پردازش مرکزی کامپیوتر مورد استفاده قرار می‌گیرد. شایان توجه است که زبان ماشین پایین‌ترین سطح از زبان‌های برنامه‌نویسی و حتی از اسمبلی نیز پایین‌تر است. منظور از پایین بودن، نزدیکی به سخت‌افزار و نه زبان انسان است.

هر دستوری به زبان ماشین، منجر به آن می‌شود که واحد پردازش مرکزی یک وظیفه خاص را انجام دهد. از جمله این وظایف می‌توان به بارگذاری، ذخیره‌سازی، پرش یا انجام عملیات در واحد محاسبه و منطق (Arithmetic Logic Unit) روی یک یا تعداد بیشتری واحد داده در ثبات یا حافظه اشاره کرد. زبان ماشین یک زبان صرفا �عددی� است. یعنی کدهای زبان ماشین دنباله‌های از اعداد هستند که برای سخت‌افزار معنای خاصی دارند و قطعات الکترونیکی را به انجام کار خاصی مجبور می‌کنند. یکی از مهم‌ترین اهداف زبان ماشین، اجرا شدن برنامه نوشته شده در آن در سریع‌ترین زمان ممکن است و به همین دلیل این سطح از نزدیکی به سخت‌افزار را دارد.

زبان ماشین را می‌توان پایین‌ترین سطح ارائه برای یک برنامه کامپایل شده توسط کامپایلر زبان‌های کامپایلری یا برنامه اسمبلی ترجمه شده توسط اسمبلر در نظر گرفت. در واقع، زبان ماشین زبانی کاملا سطح پایین است که به طور کامل به سخت‌افزار وابسته است.

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

در صورتی که برنامه‌نویسی مستقیما با کد ماشین انجام شود، می‌توان بیت‌ها را به طور مستقیم مدیریت و آدرس‌های عددی را محاسبه کرد. این کار علاوه بر خسته کننده و پیچیده بودن، منجر به داشتن کدی مستعد خطا می‌شود. به همین دلیل، برنامه‌ها به ندرت به زبان ماشین نوشته می‌شوند. اما گاه با هدف عیب‌یابی کد در سطح پایین، وصله زدن (Patch) به برنامه (به ویژه وقتی که منبع اسمبلر موجود نیست) و دیس‌اسمبلر (Disassembler) کردن به زبان اسمبلی، از زبان ماشین استفاده می‌شود. در ادامه مطلب کاربرد زبان اسمبلی به پرسش زبان اسمبلی چیست پاسخ داده شده است.

زبان اسمبلی چیست ؟

زبان اسمبلی یک زبان برنامه‌نویسی سطح پایین و نزدیک به سخت‌افزار است که نسبت به زبان ماشین سطح بالاتر و از زبان‌هایی مانند C سطح پایین‌تر است. دستورات این زبان توسط اسمبلر به کد ماشین ترجمه و پس از آن، اجرا می‌شوند.

در این بخش از مطلب کاربرد زبان اسمبلی به پرسش زبان اسمبلی چیست پاسخ داده شده است. در برنامه‌نویسی کامپیوتری، زبان اسمبلی یا زبان اسمبلر که به طور خلاصه با سرنام ASM نمایش داده می‌شود، یک زبان برنامه‌نویسی سطح پایین است که ارتباط بسیار قوی بین دستورالعمل‌های آن و معماری کد ماشین وجود دارد. به دلیل آنکه زبان اسمبلی بستگی به دستورالعمل‌های کد ماشین دارد، هر زبان اسمبلی دقیقا برای یک معماری کامپیوتری مشخص طراحی شده است. به زبان اسمبلی �کد ماشین سمبلیک� (Symbolic Machine Code) نیز گفته می‌شود.

کد اسمبلی با بهره‌گیری از یک برنامه سودمند (Utility Software) که اسمبلر نام دارد، به کد ماشین قابل اجرا تبدیل می‌شود. فرایند تبدیل کد اسمبلی به کد ماشین قابل اجرا را اسمبلی می‌گویند. زبان اسمبلی معمولا یک دستور به ازای هر دستوالعمل ماشین دارد و در واقع، رابطه یک به یک (۱:۱) بین کدهای زبان اسمبلی و کدهای به زبان ماشین برقرار است. البته، در زبان اسمبلی از نظرات (Comments)، دایرکتیوها (Directives)، ماکروها (Macros) و برچسب‌های نمادین برنامه و دستورات تخصیص حافظه نیز پشتیبانی می‌شود.

اصطلاح اسمبلر اولین بار توسط �موریس ویلکس� (Maurice Wilkes)، �دیوید ویلر� (David Wheeler) و �استنلی گیل� (Stanley Gill) در سال ۱۹۵۱ در کتابی با عنوان �آماده‌سازی برنامه‌هایی برای یک کامپیوتر دیجیتال الکترونیکی� (The Preparation of Programs for an Electronic Digital Computer) به کار برده شد. آن‌ها از اصطلاح اسمبلر برای اشاره به مفهوم �برنامه‌ای که برنامه دیگری را که شامل بخش‌های گوناگون است به یک برنامه به زبان ماشین مونتاژ یا اسمبل می‌کند� استفاده کردند.

هر زبان اسمبلی مختص یک معماری کامپیوتری خاص و گاهی نیز مختص یک سیستم‌عامل خاص است. اگرچه، اغلب زبان‌های اسمبلی نحو اختصاصی را برای فراخوانی‌های سیستم (System Calls) فراهم نمی‌کنند و اغلب زبان‌ها اسمبلی را می‌توان با سیستم‌عامل‌های گوناگون به کار برد. زبان اسمبلی دسترسی به همه ظرفیت‌های واقعی پردازنده را فراهم می‌کند که فراخوانی‌های سیستم به آن تکیه دارد. در مقایسه با زبان برنامه‌نویسی اسمبلی، اغلب زبان‌های برنامه‌نویسی سطح بالا عموما برای معماری‌های گوناگون قابل حمل هستند؛ اما نیاز به تفسیر یا کامپایل وظایف پیچیده‌تری نسبت به زمانی دارند که صرفا به مونتاژ کردن (اسمبل) می‌پردازند. گام محاسباتی که در آن اسمبلر یک برنامه را پردازش می‌کند، �زمان اسمبلی� (Assembly Time) نام دارد. در ادامه مطلب کاربرد زبان اسمبلی به تفاوت‌های زبان ماشین و زبان اسمبلی پرداخته شده است، زیرا که افراد اغلب این دو را با یکدیگر اشتباه می‌گیرند و به اشتباه فکر می‌کنند که اسمبلی همان زبان ماشین است.

تفاوت زبان ماشین و زبان اسمبلی چیست؟

تفاوت اساسی بین کد ماشین و زبان اسمبلی آن است که کد ماشین شامل کدهای دودویی است که می‌توان آن‌ها را به طور مستقیم توسط کامپیوتر اجرا کرد. در حالی که زبان اسمبلی نیاز به نرم‌افزاری به نام اسمبلر برای تبدیل به کد ماشین دارد. زبان ماشین پایین‌ترین سطح از زبان‌های برنامه‌نویسی و زبان اسمبلی یک زبان برنامه برنامه‌نویسی سطح پایین است. در ادامه مطلب زبان اسمبلی به نحو (Syntax) زبان اسمبلی پرداخته شده است.

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

نحو زبان اسمبلی به چه صورت است؟

زبان اسمبلی از یادیارها (Mnemonic) برای ارائه هر دستورالعمل سطح پایین یا آپکدی (Opcode) و همچنین به طور معمول، ثبات معماری، پرچم و دیگر موارد، استفاده می‌کند. بسیاری از عملیات در زبان اسمبلی نیازمند یک یا تعداد بیشتر عملوند (Operand) به منظور شکل دادن یک دستورالعمل کامل هستند. اغلب اسمبلرها اجازه استفاده از ثابت‌های دارای نام، ثبات‌ها و برچسب‌ها را برای اجرای برنامه‌ها و تخصیص حافظه دارند و می‌توانند عبارات را برای عملگرها محاسبه کنند. بنابراین، برنامه‌نویس‌ها نیازی به انجام محاسبات تکراری خسته کننده ندارند و برنامه‌های اسمبلر، از کدهای ماشین خواناتر هستند.

بسته به معماری سخت‌افزار و گاه سیستم عامل، این عناصر ممکن است برای دستورالعمل‌های خاص یا حالت‌های آدرس‌دهی با استفاده از آفست‌ها (Offsets) یا هر نوع دیگری از داده‌ها به مثابه آدرس‌های ثابت ترکیب شوند. بسیاری از اسمبلرها مکانیزم‌های افزوده‌ای را برای تسهیل توسعه برنامه ارائه می‌کنند تا فرایند اسمبلی را کنترل و به عیب‌یابی (Debugging) کمک کنند. در ادامه مطلب کاربرد زبان اسمبلی به دلایل مفید بودن زبان برنامه‌نویسی اسمبلی پرداخته شده است.

چرا زبان اسمبلی مفید است؟

زبان اسمبلی به برنامه‌نویس‌ها کمک می‌کند تا کدهای قابل خواندن توسط انسان را بنویسند که بیشترین شباهت را به زبان ماشین دارند. درک و خواندن زبان ماشین از این جهت دشوار است که دنباله‌ای از اعداد است. زبان اسمبلی به فراهم کردن کنترل کامل کلیه کارهایی کمک می‌کند که یک کامپیوتر انجام می‌دهد. مثالی از کد نوشته شده به زبان اسمبلی در ادامه آمده است.

برنامه �Hello World� به زبان اسمبلی در ویندوز

برای نوشتن برنامه �Hello World� به زبان اسمبلی در ویندوز باید گام‌هایی که در ادامه این بخش از مطلب کاربرد زبان اسمبلی بیان شده‌اند را انجام داد.

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

  • ابتدا باید نرم‌افزار ویرایشگر متنی مانند Notepad را باز کرد.
  • سپس باید کد زیر را در فایل متنی موجود نوشت.
global  _main
extern  _printf
section .text
_main:
push    message
call    _printf
add     esp, 4
ret
message:
db  'Hello, World!', 10, 0

کپی

  • فایل را باید با نامی مانند XYZ.asm ذخیره کرد. نام فایل اختیاری است و آنچه اهمیت دارد آن است که پسوند فایل باید حتما asm. باشد.
  • فایل بالا نیاز به آن دارد که به کمک یک اسمبلر کامپایل شود که NASM (سرنامی برای Netwide Assembler) نام دارد.
  • دستور nasm –f win32 XYZ.asm باید اجرا شود.
  • پس از این، NASM یک شی فایل را می‌سازد که حاوی کد ماشین است، اما کد اجرایی نیست. نام این فایل، XYZ.obj است.
  • برای ساخت فایل اجرایی برای ویندوز، از مینیمال گنو (Minimal GNU) استفاده می‌شود که کامپایلر GCC را فراهم می‌کند.
  • اکنون، دستور gcc –o XYZ.exe XYZ.obj باید اجرا شود.
  • در این وهله می‌توان دستورهای قابل اجرا را که در اینجا XYZ نام نهاده شده‌اند اجرا کرد.
  • خروجی به صورت �Hello, world� نمایش داده می‌شود.

چرا باید زبان اسمبلی را یاد گرفت؟

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

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

با وجود آنکه امروزه گرایش اغلب افراد به فراگیری زبان‌های برنامه‌نویسی سطح بالا و توسعه برنامه با استفاده از آن‌ها است اما یادگیری زبان اسمبلی هنوز هم موضوع مهمی برای برنامه‌نویس‌ها محسوب می‌شود. فراگیری زبان اسمبلی به افراد کمک می‌کند تا کنترل کامل سیستم و منابع آن را به دست بگیرند. با یادگیری زبان اسمبلی، برنامه‌نویس قادر به نوشتن کد برای دسترسی به ثبات‌ها (Registers) است و می‌تواند آدرس حافظه از اشاره‌گرها و مقادیر آن‌ها را بازگرداند. این کار اساسا به بهینه‌سازی سرعت کمک می‌کند و بهره‌وری و کارایی را افزایش می‌دهد.

یادگیری زبان برنامه‌نویسی به درک کارکرد پردازشگر و حافظه کمک می‌کند. در صورتی که توسعه‌دهنده برنامه‌ای بنویسد که نیاز به کامپایلر دارد، باید درک خوبی از کارکرد پردازشگر و بحث زمان اجرای برنامه داشته باشد. زبان اسمبلی به یادگیری ساز و کار پردازشگر و حافظه کمک می‌کند. اسمبلی یک زبان رمزی و نمادین است.

زبان اسمبلی به تماس مستقیم با سخت‌افزار کمک می‌کند. این زبان اساسا بر مبنای معماری کامپیوتر و نوع خاص پردازنده است و برای پردازنده‌های گوناگون نسخه‌های متفاوتی از آن وجود دارد. زبان اسمبلی در مقایسه با دیگر زبان‌های سطح بالا از شفافیت زیادی در بحث عملکردها و دستورات موجود برای آن برخوردار است و تعداد کمی عملیات برای آن وجود دارد. اما این زبان برای درک الگوریتم‌ها و دیگر جریان‌های کنترلی مفید است. این مورد موجب می‌شود تا کدهای اسمبلی از پیچیدگی کمتری برخوردار باشند و عیب‌یابی آن‌ها آسان‌تر باشد. البته نباید فراموش کرد که از دیدگاه کلی بسیاری از افراد، نحو زبان اسمبلی نسبت به زبان‌های سطح بالا که به زبان انسانی نزدیک هستند، دشوارتر است. در ادامه مطلب کاربرد زبان اسمبلی به ویژگی‌های زبان اسمبلی پرداخته شده است.

ویژگی‌های زبان اسمبلی

ویژگی‌های اصلی زبان اسمبلی در ادامه آمده است.

  • می‌توان از یادیارها به جای کد عملیاتی ریاضی استفاده کرد و اطلاعاتی را پیرامون هر خطایی در کد فراهم کرد.
  • این زبان به تعیین عمل‌وند نمادین کمک می‌کند و این بدین معنا است که نیازی به تعیین آدرس ماشین برای آن عمل‌وندها ندارد. این مورد را به شکل یک نماد می‌توان نمایش داد.
  • داده‌ها را می‌توان با استفاده از نشانه‌گذاری اعشاری نمایش داد.

در بخش بعدی از مطلب کاربرد زبان اسمبلی به دلیل اهمیتی که اسمبلر دارد به مفهوم و کارکرد آن پرداخته شده است.

اسمبلر چیست؟

اسمبلر به بیان ساده نرم‌افزاری است که کدهای نوشته شده به زبان اسمبلی را به کد ماشین تبدیل می‌کند. در واقع، نرم‌افزار اسمبلر کد نوشته شده به زبان اسمبلی را به یک کد هدف (Object Code) تبدیل می‌کند که دستوراتی به زبان ماشین (یعنی ارقام ۰ و ۱) یا یک زبان واسط مانند زبان انتقال ثبات هستند. این کار با ترجمه ترکیب‌هایی از یادیارها و دستورات اسمبلی برای عملیات گوناگون یا حالت آدرس‌دهی به معادل عددی آن‌ها در کد ماشین یعنی ۰ و ۱ انجام می‌شود.

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

کد هدف ارائه شده توسط اسمبلر عموما شامل یک کد عملیاتی (آپ کد | Opcode | Operation Code) به مثابه دیگر بیت‌ها و داده‌های کنترلی است. اسمبلر عبارات ثابت را محاسبه و اسامی نمادین را برای تخصیص حافظه و دیگر موجودیت‌ها فراهم می‌کند. استفاده از ارجاعات نمادین از ویژگی‌های کلیدی اسمبلرها است که منجر به جلوگیری از محاسبات خسته کننده و به‌روزرسانی‌های دستی آدرس پس از ویرایش‌های برنامه می‌شود. اغلب اسمبلرها از ماکروها برای اجرای جایگزینی متنی و برای مثال، برای تولید توالی‌های کوتاه متداول از دستورات به صورت توکار به جای رویه‌های (Subroutines) فراخوانی شده، بهره می‌برند.

ممکن است برخی از اسمبلرها قادر به اجرای انواع ساده‌ای از بهینه‌سازی‌های مختص مجموعه دستورالعمل‌ها باشند. یک مثال مناسب از این مورد، اسمبلرهای x86 است که توسط سازندگان مختلفی تولید می‌شود. اسمبلرهایی که به آن‌ها اندازه-پرش (Jump-Sizing) گفته می‌شود، اغلب قادر به انجام جایگزینی دستور پرش (پرش‌های طولانی به وسیله پرش‌های کوتاه یا مرتبط جایگزین می‌شوند) در هر تعدادی از گذرها (Pass) بنا به درخواست هستند. از دیگر قابلیت‌هایی که ممکن است از آن بهره ببرد می‌توان به بازسازمان‌دهی ساده یا درج دستورالعمل‌ها اشاره کرد. به عنوان مثالی از این مورد می‌توان به برخی از اسمبلرها برای معماری‌های ریسک (RISC Architectures) اشاره کرد که می‌توانند به بهینه‌سازی معقول زمان‌بندی اجرای دستورالعمل‌ها برای بهره‌برداری از پایپ‌لاین‌های واحد پردازش مرکزی (CPUI Pipelines) به طور موثری کمک کنند.

اسمبلرها از سال ۱۹۵۰ به عنوان اولین گام پس از زبان ماشین و پیش از زبان‌های برنامه‌نویسی سطح بالا مانند �فرترن� (Fortran)، الگل (Algol)، �کوبول� (Cobol) و �لیسپ� (Lisp) در دسترس بوده‌اند. همچنین، کلاس‌های متعددی از مترجم‌ها و مولدهای کد شبه-خودکار با خصوصیاتی مشابه با زبان‌های اسمبلی و سطح بالا وجود داشته‌اند که در این میان، �اسپیدکد� (Speedcode) احتمالا شناخته شده‌ترین آن‌ها باشد.

اسمبلرهای گوناگون با نحوهای متنوع برای پردازنده‌ها یا معماری‌هایی سخت‌افزاری گوناگون وجود دارند. برای مثال، دستورالعملی برای افزودن داده حافظه به ثبات در خانواده پردازنده‌های x86 ممکن است در نحو اصلی اینتل به صورت add eax,[ebx] باشد که این مورد با نحو AT&T که توسط اسمبلر گنو مورد استفاده قرار می‌گیرد، به صورت addl (%ebx),%eax نوشته می‌شود. علارغم ظاهرهای متفاوت، اَشکال نحوی مختلف عموما کد ماشین عددی مشابهی را فراهم می‌کنند. یک اسمبلر یکتا ممکن است حالات مختلفی از نحو و در عین حال تفسیر دقیقی از آن‌ها را به منظور پشتیبانی از انواع اشکال نحوی فراهم کند که به عنوان مثالی از این مورد می‌توان به نحو FASM، نحو TASM و دیگر موارد در در نوع خاصی از برنامه‌نویسی اسمبلی برای پردازنده‌های x86 اشاره کرد. در ادامه مطلب کاربرد اسمبلی برخی از انواع اسمبلر مورد بررسی قرار گرفته‌اند.

برخی از انواع اسمبلر

در این بخش از مطلب کاربرد زبان اسمبلی برخی از انواع اسمبلر مورد بررسی قرار گرفته‌اند.

  • ماکرواسمبلر: ماکرواسمبلر شامل قابلیت کلان‌دستور (ماکرو | Macroinstruction) می‌شود؛ بنابراین متن زبان اسمبلی (پارامتری شده) با یک نام قابل ارائه است و از آن نام می‌توان برای درج متن بسط یافته در کدهای دیگر استفاده کرد.
  • اسمبلر متقابل: اسمبلر متقابل (Cross Assembler) یک اسمبلر است که روی کامپیوتر یا سیستم‌عامل (سیستم میزبان) با انواع گوناگون اجرا می‌شود. اسمبلی متقابل توسعه برنامه‌ها را برای سیستم‌هایی تسهیل می‌کند که منابع کافی برای پشتیبانی از توسعه نرم‌افزار ندارند. از جمله این سیستم‌ها می‌توان به سیستم‌های توکار (Embedded System) یا یک میکروکنترلر (Microcontroller) اشاره کرد. در چنین موردی، یک شی حاصل شده باید به یک سیستم هدف با حافظه فقط خواندنی (EROM ،ROM و دیگر موارد)، یک پروگرامر (Programmer) (هنگامی که حافظه فقط خواندنی به عنوان میکروکنترلر در دستگاه یکپارچه شد) یا پیوند داده (دیتا لینک | Data link) به صورت یک کپی دقیقا بیت به بیت از کد شی یا ارائه مبتنی بر متن از آن کد (مانند انیل هکز یا موتورولا اس-رکورد) انتقال پیدا کند.
  • اسمبلر سطح بالا: اسمبلر سطح بالا (High-Level Assembler) برنامه‌ای است که انتزاعات زبان را که معمولا مرتبط با زبان‌های برنامه‌نویسی سطح بالا هستند، مانند ساختارهای کننترلی سطح (Do Case ،Else ،Then ،IF و دیگر موارد) و انواع داده انتزاعی سطح بالا شامل ساختارها/رکورها، اتحادها، کلاس‌ها و مجموعه‌ها را فراهم می‌کند.
  • میکرواسمبلر: یک میکرواسمبلر (Microassembler) یا هم‌گذار برنامه‌ای است که به آماده‌سازی یک ریزبرنامه (Microprogram) که به آن �سفت‌افزار� (Firmware) گفته می‌شود، برای کنترل عملیات سطح پایین از کامپیوتر، کمک می‌کند.
  • متااسمبلر: یک متااسمبلر (Meta-Assembler) برنامه‌ای است که توصیف نحوی (Syntactic) یا معنایی (Semantic) از یک زبان اسمبلی را امکان‌پذیر می‌سازد و یک اسمبلر برای آن زبان می‌سازد. اسمبلرهای متا-سمبل (Meta-Symbol) برای کامپیوترهای سری SDS 9 و SDS Sigma، متااسمبلر هستند. �کامپیوتر خودکار جهانی� (Universal Automatic Computer | UNIVAC) یک متااسمبلر برای سری UNIVAC 1100/2200 فراهم می‌کند.
  • اسمبلر درون‌برنامه‌ای: یک �اسمبلر درون‌برنامه‌ای� (Inline Assembler) یا �اسمبلر توکار� (Embedded Assembler) یک کد اسمبلر حاوی یک زبان برنامه‌نویسی سطح بالا است. این اسمبلر درون برنامه‌ای اغلب در برنامه‌های سیستمی مورد استفاده قرار می‌گیرد که نیاز به دسترسی مستقیم به سخت‌افزار دارد.

مزایا و معایب اسمبلر

در این بخش از مطلب کاربرد زبان اسمبلی برخی از مزایا و معایب زبان اسمبلی تشریح شده است.

مزایای زبان اسمبلی

در ادامه، مزایای زبان اسمبلی بیان شده است.

  • امکان انجام کارهای پیچیده را برای اجرا به صورت ساده‌تر فراهم می‌کند.
  • کارایی حافظه خوبی دارد و نیاز به حافظه کمی دارد.
  • سرعت بالاتری در اجرا دارد و زمان اجرای آن کمتر است.
  • اساسا مبتنی بر سخت‌افزار است.
  • نیاز به دستورالعمل‌های کمتری برای رسیدن به نتیجه دارد.
  • برای کارهای حیاتی مورد استفاده قرار می‌گیرد.
  • برای حفظ موقعیت حافظه مورد نیاز نیست.
  • یک سیستم توکار سطح پایین است.

معایب زبان اسمبلی

در ادامه، معایب زبان اسمبلی بیان شده است.

  • زمان و تلاش زیادی نسبت به دیگر زبان‌های برنامه‌نویسی برای نوشتن کدی مشابه، می‌طلبد.
  • بسیار پیچیده و درک آن دشوار است.
  • یادآوری نحو آن دشوار است.
  • فقدان قابلیت حمل برنامه بین معماری‌های کامپیوتری گوناگون یه ویژگی منفی مفهم است که البته در برخی از نسخه‌های اسمبلی این مشکل تا حدی رفع شده و سخت‌افزارهای بیشتری را پوشش می‌دهند.

هدف و کاربرد زبان اسمبلی در گذشته چه بوده است؟

هدف از تولید زبان اسمبلی در واقع کاربرد زبان اسمبلی در بدو ابداع و تولد این زبان بوده است. کاربرد زبان اسمبلی در گذر زمان و نظر به پیشرفت فناوری و توسعه سخت‌افزارها و زبان‌های برنامه‌نویسی جدید دستخوش تغییر شده است. در این بخش از مطلب کاربرد زبان اسمبلی به هدف از تولید آن و کاربرد زبان اسمبلی در دهه‌های ابتدایی تولید آن پرداخته شده است.

زبان اسمبلی در هنگام معرفی کامپیوترهای دارای برنامه‌های ذخیره شده (Stored-Program Computer) وجود نداشت. کثلین بوث (Kathleen Booth) اولین زبان اسمبلی را بر اساس کارهای تئوری ابداع کرد که از سال ۱۹۴۷ میلادی و هنگام کار روی ARC2 در دانشگاه بیرکبک لندن (Birkbeck, University of London) آغاز کرده بود. او این پژوهش‌ها را با مشاوره اندرو بوث (Andrew Booth)، �جان فون نویمان� (John von Neumann) ریاضیدان و �هرمان گلداستاین� (Herman Goldstine) در پژوهشگاه مطالعات پیشرفته (Institute for Advanced Study) انجام داد.

در اواخر سال ۱۹۴۸، ماشین حساب خودکار ذخیره‌سازی تاخیر الکترونیکی (Electronic Delay Storage Automatic Calculator | EDSAC) اسمبلری (با نام �Initial Orders�) داشت که در برنامه بوت‌استرپ (Bootstap) آن یکپارچه شده بود. در این اسمبلر از یادیار (Mnemonic) تک حرفی توسعه پیدا کرده توسط �دیوید ویلر� (David Wheeler) استفاده شده بود. دیوید ویلر کسی است که توسط �جامعه کامپیوتر مؤسسه مهندسان برق و الکترونیک� (IEEE Computer Society) به عنوان سازنده اولین اسمبلر شناخته شده است و آن‌ها کثلین بوث را به عنوان اولین سازنده زبان اسمبلی نمی‌دانند. گزارش‌های روی EDSAC اصطلاح اسمبلر را برای پردازش فیلدهای ترکیبی در یک کلمه دستورالعمل، معرفی کردند.

برنامه اسمبلی بهینه نمادین (Symbolic Optimal Assembly Program | SOAP) یک زبان اسمبلی بود که برای کامپیوتر IBM 650 توسط استن پلی (Stan Poley) در سال ۱۹۵۵ نوشته شد. زبان اسمبلی حجم زیادی از برنامه‌نویسی نسل اول (برنامه‌نویسی سطح ماشین) را که برای کامپیوترهای اولیه لازم و بسیار مستعد خطا، خسته کننده و زمان‌بر بودند از میان برداشت و برنامه‌نویسان را از بند کارهایی مانند به خاطر داشتن محاسبات عددی و محاسبه آدرس‌ها رها کرد.

کاربرد زبان اسمبلی — زبان اسمبلی چیست و چه کاربردی دارد؟ کامپیوتر IBM 650

در آن دوران، زبان اسمبلی به طور گسترده‌ای برای انواع برنامه‌نویسی‌ها مورد استفاده قرار می‌گرفت. اگرچه، در دهه ۱۹۸۰ (و ۱۹۹۰ روی میکروکامپیوترها) و با هدف ارتقای کارایی برنامه‌نویسی، زبان‌های سطح بالاتری جایگزین انواع کاربرد زبان اسمبلی شدند. امروزه، زبان اسمبلی همچنان برای دستکاری مستقیم سخت‌افزار، دسترسی به دستورالعمل‌های ویژه پردازنده یا پرداختن به مشکلات حیاتی مربوط به کارایی مورد استفاده قرار می‌گیرند. کاربران زبان اسمبلی معمولا از درایور دستگاه (Device Driver)، سیستم‌های توکار سطح پایین و سیستم‌های بی‌درنگ استفاده می‌کنند.

در گذر تاریخ و به طور خاص در سال‌های ابتدایی معرفی زبان اسمبلی برنامه‌های زیادی به طور کامل در زبان اسمبلی نوشته شدند. Burroughs MCP اولین کامپیوتری بود که سیستم عامل آن به طور کامل به زبان اسمبلی نوشته نشد. سیستم‌عامل این کامپیتر در زبان اسپول (Executive Systems Problem Oriented Language | ESPOL) نوشته شد که یک انشعاب از الگل (Algol) است. کاربرد زبان اسمبلی در آن دوران محدود به نوشتن سیستم‌عامل نبود و برنامه‌های تجاری زیادی نیز به زبان اسمبلی نوشته شده‌اند که از این جمله می‌توان به حجم زیادی از برنامه‌های نوشته شده برای رایانه بزرگ آی‌بی‌ام (IBM Mainframe) اشاره کرد که توسط شرکت‌های بزرگی نوشته شده‌اند. بعدها، زبان‌های کوبول، فورترن و PL/I جایگزین این تلاش‌ها شدند. اگرچه، تعدادی از سازمان‌های بزرگ همچنان تا پایان دهه ۱۹۹۰ نیز از از زبان اسمبلی استفاده می‌کردند.

میکروکامپیوترهای اولیه به زبان اسمبلی تکیه داشتند و برنامه‌های نوشته شده در آن راستا شامل بسیاری از سیستم‌عامل‌ها و برنامه‌های کاربردی بزرگ می‌شود. دلیل این امر آن است که این سیستم‌ها دارای محدودیت‌های متعدد منابع، معماری‌های حافظه و صفحه نمایش و سرویس‌های سیستم (System Services) محدود و پر نقص هستند. البته، احتمالا از مهم‌ترین دلایل این امر فقدان کامپایلرهای کلاس اول و سطح بالای مناسب برای میکروکامپیوترها است. یک عامل روانشناسی نیز ممکن است در این میان نقش بازی کرده باشد. نسل اول از برنامه‌های میکروکامپیوترها نگرش �سیم و انبردست� را حفظ کرده‌اند؛ بدین معنا که توسعه‌دهندگان ترجیح می‌دادند از زبان‌های نزدیک به زبان ماشین و سخت‌افزار برای توسعه برنامه استفاده کنند.

در زمینه‌های تجاری‌تر، بزرگترین دلیل برای استفاده از زبان اسمبلی، اندازه کوچک‌تر، سربار کم‌تر، سرعت بیشتر و خوانایی آن بود. به عنوان مثال‌هایی از برنامه‌های نوشته شده به زبان اسمبلی می‌توان به سیستم‌عامل داس (DOS) برای کامپیوترهای شخصی IBM، کامپایلر توربو پاسکال (Turbo Pascal) و برنامه‌های کاربردی اولیه مانند برنامه صفحه گسترده لوتوس ۱-۲-۳ (Lotus 1-2-3) اشاره کرد. برای به دست آوردن بهترین کارایی در کنسول بازی ویدئویی سگا ساترن (Sega Saturn) از زبان اسمبلی برای کدنویسی آن استفاده شده است. بازی آرکید بسکتبال در سال ۱۹۹۳ مثال دیگری از برنامه‌ای است که به طور کامل با زبان برنامه‌نویسی اسمبلی نوشته شده است.

زبان اسمبلی تا مدت‌ها اولین زبان توسعه اصلی برای توسعه بسیاری از کامپیوترهای خانگی در دهه ۱۹۸۰ و ۱۹۹۰ بود که از این جمله می‌توان به ام‌اس‌ایکس (MSX)، سینکلر (Sinclair)، زد اکس اسپکتروم (ZX Spectrum)، کمودور ۶۴ (Commodore 64)، آمیگا (Amiga)، آتاری اس‌تی (Atari ST) اشاره کرد. بخش بزرگی از بازار آن زمان در اختیار اسمبلی بود، زیرا دیالکت‌های تفسیری بیسیک (BASIC) در این سیستم‌ها سرعت اجرای نامناسبی داشتند و امکانات کافی برای استفاده کامل از سخت‌افزار این سیستم‌ها در آن وجود نداشت.

برخی از سیستم‌ها در آن هنگام حتی یک محیط توسعه یکپارچه (Integrated Development Environment | IDE)با قابلیت عیب‌یابی پیشرفته و ماکرو داشتند. برخی از کامپایلرها برای ریدیوشک (Radio Shack)، تی‌آراس-۸۰ (TRS-80) و جانشین‌های آن‌ها، توانایی ترکیب منبع اسمبلی توکار را با دستورات برنامه سطح بالا داشتند. پس از تدوین، یک اسمبلر توکار یک کد ماشین توکار را از کد نوشته شده به زبان اسمبلی تولید می‌کرد.

کاربرد زبان اسمبلی در حال حاضر چیست؟

از نقطه نظر عملی، تنها تعداد انگشت‌شماری از مهندسان جهان و دانشمندان کامپیوتر از زبان اسمبلی استفاده می‌کنند و امروزه اکثریت برنامه‌های کاربردی با استفاده از زبان‌های برنامه‌نویسی سطح بالا نوشته می‌شوند. این در حالی است که در سال ۲۰۱۷، شاخص تیوبی برای زبان‌های برنامه‌نویسی، اسمبلی را در جایگاه ۱۱ و جلوتر از زبان ویژوال بیسیک (Visual Basic) قرار داد. در سال ۲۰۲۱ نیز با توجه به شاخص تیوبی، اسمبلی همچنان جزو ۲۰ زبان برنامه‌نویسی برتر و محبوب دنیا است. برخی از حوزه‌هایی که هنوز هم از زبان اسمبلی در آن‌ها استفاده می‌شود در ادامه بیان شده‌اند:

  • سیستم عامل ها
  • سفت‌افزارها
  • درایورهای دستگاه
  • طراحی کامپایلر
  • سیستم‌های توکار
  • طراحی سخت‌افزار
  • رمز نگاری پیشرفته
  • علوم کامپیوتر نظری
  • درک ساز و کار کامپیوترها

انواع کاربرد زبان اسمبلی که در بالا به آن‌ها اشاره شد، در ادامه با جزئیات بیشتری مود بررسی قرار گرفته‌اند و باید به این نکته توجه داشت که در برخی از موارد، شاید رقیب ویژه‌ای هنوز هم برای زبان اسمبلی وجود نداشته باشد.

کاربرد زبان اسمبلی در درک ساز و کار کامپیوترها چیست؟

چنانکه پیش‌تر نیز بیان شد، یکی از دلایل یادگیری آن است که زبان اسمبلی می‌تواند به درک بهتر آنچه که در کامپیوتر به وقوع می‌پیوندد کمک شایان توجهی کند دلیل این امر آن است که زبان اسمبلی به زبان ماشین و سخت‌افزار بسیار نزدیک است و امکان کنترل کامل روی سخت‌افزار را به کاربر می‌دهد. به دلیل کاربر زبان اسمبلی در درک ساز و کار کامپیوترها است که زبان اسمبلی هنوز هم در بسیاری از برنامه‌های آموزشی علوم کامپیوتر و مهندسی الکترونیک در دانشگاه‌ها و مراکز آموزشی تدریس می‌شود.

فراگیری و داشتن مطالعات همراه با جزئیات پیرامون مباحث بنیادینی مانند حساب دودویی، تخصیص حافظه، پردازش پشته، رمزنگاری مجموعه کاراکتر، وقفه پردازش و طراحی کامپایلر بدون داشتن درکی از ساز و کار کامپیوترها کاری دشوار است. از آنجا که رفتار کامپیوتر اساسا با مجموعه دستورالعمل‌های آن تعریف می‌شود، راهکار منطقی برای یادگیری چنین مفاهیمی مطالعه زبان اسمبلی است. متداول‌ترین کامپیوترها دارای چندین مجموعه دستورالعمل مشابه هستند. بنابراین، مطالعه زبان اسمبلی برای یادگیری مفاهیم کلیدی، شناسایی شرایطی که در آن استفاده از زبان اسمبلی ممکن است مناسب باشد و دیدن آنکه کدهای اجرایی موثر چطور از زبان‌های سطح بالا قابل ساخته شدن هستند بسیار مفید است.

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

کاربرد زبان اسمبلی در بهینه‌سازی کد چیست؟

همواره در مقایسه مفید بودن و کارایی زبان اسمبلی با زبان‌های سطح بالا، بحث زیادی وجود دارد. اگرچه، زبان اسمبلی کاربردهای ویژه‌ای در راستای تولید کد با سرعت اجرای بهینه دارد. در واقع، کد نوشته شده به زبان اسمبلی به سخت‌افزار بسیار نزدیک است و بنابراین زمان اجرای کمتری دارد و از سوی دیگر، اسمبلر می‌تواند برای بهینه‌سازی سرعت و استفاده از حافظه مورد استفاده قرار بگیرد. در راستای بهینه‌سازی سرعت، کامپایلرهای بهینه‌سازی مدرنی برای رندر کردن زبان‌های سطح بالا به کدی معرفی شده‌اند که می‌تواند به سرعت زبان اسمبلی دست‌نویس اجرا شود. با وجود نمونه‌های متفاوتی از این کامپایلرهای مدرن که می‌توان به آن‌ها دسترسی داشت، پیچیدگی پردازشگرهای مدرن و زیرسیستم‌ها بهینه‌سازی موثر کار بهینه‌سازی موثر را به طور فزاینده‌ای برای کامپایلرها دشوار می‌کند.

اما نباید فراموش کرد که افزایش کارایی پردازنده‌ها موجب شده است که پردازنده‌ها اغلب اوقات بیکار نشسته باشند و بیشتر درگیر تاخیرهای قابل پیش‌بینی باشند که به دلیل خطای کش (Cache Misses)، عملیات ورودی/خروجی و صفحه‌بندی (Memory Paging) به وقوع می‌پیوندد. این مورد، سرعت اجرای کد خام را دیگر به چالشی برای برنامه‌نویس‌ها مبدل نمی‌کند.

کاربرد زبان اسمبلی در مسائل خاص شامل چه مواردی است؟

برخی از توسعه‌دهندگان گاهی اوقات استفاده از زبان اسمبلی را برای توسعه برنامه ترجیح می‌دهند. برخی از این دلایل در ادامه بیان شده است.

  • نوشتن کد برای سیستم‌هایی با پردازشگرهای قدیمی‌تر که گزینه‌های زبان‌های برنامه‌نویسی سطح بالاتر را محدود کرده‌اند. از جمله این موارد می‌توان به آتاری ۲۶۰۰، کومودور ۶۴ و ماشین‌حساب‌های ترسیم نمودار اشاره کرد.
  • نوشتن کد برای مواردی که کد باید به طور مستقیم با سخت‌افزار تعامل کند. به عنوان مثالی از این مورد می‌توان به درایورهای دستگاه و کنترل کننده وقفه اشاره کرد.
  • نوشتن کد برای یک پردازشگر توکار یا پردازشگر سیگنال دیجیتال (Digital Signal Processor | DSP) که در آن وقفه‌های با تکرار زیاد نیاز به کوتاهترین چرخه در هر وقفه دارند؛ مانند وقفه‌ای که ۱۰۰۰ یا ۱۰۰۰۰ بار در ثانیه به وقوع می‌پیوندد.
  • نوشتن برنامه‌هایی که نیاز به استفاده از دستورالعمل‌های اختصاصی پردازنده دارند که در کامپایلر پیاده‌سازی نشده است. یک مثال متداول، دستور �شیفت دوری� (Bitwise Rotation) در هسته بسیاری از الگوریتم‌های رمزنگاری است.
  • هنگامی که یک برنامه مستقل بسیار فشرده مورد نیاز است که باید بدون منابع در مولفه‌های زمان اجرا یا کتابخانه‌های مرتبط با زبان‌های سطح بالا اجرا شود. مثال‌هایی از این مورد سفت‌افزار (Firmware) برای تلفن‌ها، سوخت اتومبیل و سیستم احتراق، سیستم‌های کنترل تهویه هوا، سیستم‌های امنیتی و حسگرها می‌شوند.
  • برنامه‌هایی با حلقه‌های داخلی حساسیت آفرین برای کارایی، که در آن‌ها زبان اسمبلی موقعیت‌های بهینه‌سازی را فراهم می‌کند که کسب آن‌ها در زبان‌های سطح بالا دشوار است. انجام جبر خطی با BLAS یا تبدیل کسینوس گسسته (Discrete Cosine Transformation) و یا اسمبلی نسخه یک دستور چند داده یا Single Instruction, Multiple Data (SIMD) از x264) از جمله این موارد هستند.
  • نوشتن برنامه‌هایی که توابع برداری را برای برنامه‌ها در زبان‌های سطح بالایی مانند C می‌سازند. در زبان‌های سطح بالاتر این مورد گاهی به کمک توابع ذاتی (Intrinsic Functions) کامپایلر انجام می‌شود که به طور مستقیم به یادیارهای SIMD نگاشت می‌شوند، اما با این اوصاف، منجر به تبدیل اسمبلی ویژه برای یک پردازنده بردار داده شده می‌شود.
  • نوشتن برنامه‌های بی‌درنگ مانند شبیه‌سازی، سیستم ناوبری پرواز و تجهیزات پزشکی از دیگر موارد کاربرد ویژه زبان اسمبلی هستند. برای مثال، در یک سیستم هدایت پرواز برقی، تله‌متری باید در بازه محدود زمانی تفسیر و اجرا شود. چنین سیستم‌هایی باید منبع تاخیرهای غیرقابل پیش‌بینی که ممکن است به وسیله برخی از زبان‌های مفسری اتفاق بیفتند را حذف کنند که از این موارد می‌توان به بازیافت حافظه (Garbage Collection)، عملیات صفحه‌بندی (مربوط به حافظه) یا قبضه کردن چند وظیفه‌ای (Preemptive Multitasking) اشاره کرد. باید توجه داشت که برخی از زبان‌های سطح بالا مولفه‌های زمان اجرا و رابط سیستم عامل را برای عملکردهای بیان شده به کار می‌گیرند که می‌تواند منجر به تاخیرهایی شود. انتخاب زبان اسمبلی به جای زبان‌های سطح بالا برای چنین سیستم‌هایی به برنامه‌نویسان بینش و کنترل وسیع‌تری را حول محور جزئیات پردازش می‌دهد.

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

  • برای نوشتن الگوریتم‌های رمزنگاری که باید برای جوگیری از حملات زمان‌بندی (Timing Attacks) موکدا زمان اجرای مشابهی را در هر اجرا داشته باشند.
  • به منظور ویرایش و بسط کدهای میراثی نوشته شده برای بزرگ‌رایانه‌های آی‌بی‌ام (IBM Mainframe Computers) باید از زبان اسمبلی استفاده کرد.
  • با هدف نوشتن برنامه برای موقعیت‌هایی که در آن کنترل کامل بر محیط مورد نیاز است و در موقعیت‌های فوق العاده امنیتی که وجود هیچ درپشتی پذیرفته نیست از اسمبلی استفاده می‌شود.
  • ویروس‌های کامپیوتری، بارگذار راه‌انداز (بارگذاری بوت | بوت لودر | Bootloader)، درایورهای دستگاه‌های خاص یا دیگر اقلامی که بسیار به سخت‌افزار نزدیک هستند و یا برای نوشتن سیستم‌عامل‌ها از اسمبلی استفاده می‌شود.
  • نوشتن شبیه‌سازهای مجموعه دستورات برای نظارت، ردیابی، عیب‌یابی که در آن سربار اضافی به صورت کمینه حفظ می‌شود.
  • موقعیت‌هایی که هیچ زبان سطح بالایی وجود ندارد، روی یک پردازشگر جدید یا ویژه که هیچ کامپایلر متقابلی برای آن‌ها وجود ندارد از اسمبلی بهره برده می‌شود.
  • برای مهندسی معکوس و ویرایش فایل‌های برنامه مانند:
    • دودویی‌های موجود که ممکن است در اصل به یک زبان برنامه‌نویسی سطح بالا نوشته شده باشند. برای مثال، هنگام بازسازی برنامه‌ها برای آنکه کد منبع آن وجود ندارد و یا گم شده است، یا کرک کردن نسخه دارای محافظت از کپی یک نرم‌افزار مالکیتی
    • ویرایش ایمیج رام یا فایل فایل بازی‌های ویدئوی (که به آن هک کردن رام نیز گفته می‌شود)، به وسیله روش‌های گوناگون با زابن اسمبلی امکان‌پذیر است. روشی که به طور گسترده‌ای در این راستا به کار گرفته می‌شود، جایگزینی کد برنامه در سطح زبان برنامه‌نویسی اسمبل است.

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

در ادامه، برخی از موار متداول کاربرد زبان اسمبلی در حال حاضر، بیان شده‌اند.

  • زبان اسمبلی به طور متداول در کد بوت سیستم مورد استفاده قرار می‌گیرد. کد بوت سیستم کد سطح پایینی است که مقداردهی اولیه سطح پایین و تست سخت‌افزار سیستم را پیش از بوت سیستم‌عامل انجام می‌شود و معمولا در ROM نگهداری می‌شوند (BIOS در کامپیوترهای خانگی با سیستم‌های کامپیوتری PC سازگار است و مثالی از این مورد CP/M است).
  • زبان اسمبلی معمولا برای کدنویسی‌های سطح پایین مورد استفاده قرار می‌گیرد. برای مثال، برای کدنویسی کرنل سیستم‌عامل مورد استفاده قرار می‌گیرد که نمی‌توان به فراخوانی‌های سیستم از پیش موجود تکیه کرد و باید در واقع آن را برای معماری پردازنده مشخصی که سیستم روی آن اجرا می‌شود پیاده‌سازی کرد.
  • برخی از کامپایلرها زبان‌های برنامه‌نویسی سطح بالا را پیش از کامپایل کامل کد به کد زبان اسمبلی تفسیر می‌کنند که این امکان را فراهم می‌کند که کد اسمبلی برای اهداف عیب‌یابی و بهینه‌سازی مورد بررسی قرار بگیرد.
  • برخی از کامپایلرها برای زبان‌های نسبتا سطح پایین مانند پاسکال یا C، این امکان را برای برنامه‌نویس فراهم می‌کنند که زبان اسمبلی را به طور مستقیم در کد منبع توکار کنند (که به آن اسمبلر درون برنامه‌ای گفته می‌شود). برنامه‌ها با استفاده از چنین تسهیلاتی می‌توانند انتزاعات گوناگون را با استفاده از زبان اسمبلی روی هر پلتفرم سخت‌افزاری استفاده می‌کنند. کد قابل حمل سیستم می‌تواند این مولفه ویژه پردازنده را از طریق رابط واحد استفاده کند.
  • زبان اسمبلی در مهندسی معکوس مفید است. برنامه‌های زیادی تنها در کد ماشین توزیع شده است که در آن ترجمه به یک زبان اسمبلی به وسیله یک دیس‌اسمبلر (Disassembler) انجام می‌شود، اما ترجمه به زبان سطح بالا از طریق یک دی‌کامپایلر (Decompiler) کار دشوارتری است. ابزارهایی مانند �دیس‌اسمبلر تعاملی� (Interactive Disassembler) استفاده گسترده‌ای از دیس‌اسمبلی برای چنین هدفی می‌کنند. این روش به وسیله هکرها برای کرک کردن نرم‌افزارهای تجاری مورد استفاده قرار می‌گیرد و رقبا برای تولید نرم‌افزار با نتایج مشابه شرکت‌های رقیب از آن بهره می‌برند.
  • زبان اسمبلی برای بهبود سرعت اجرا، به ویژه در کامپیوترهای شخصی اولیه با محدودیت قدرت پردازش و حافظه با دسترسی تصادفی (Random-Access Memory | RAM) مورد استفاده قرار می‌گرفت و هنوز نیز برای کار با سیستم‌های قدیمی و میراثی استفاده می‌شود.
  • اسمبلرها برای تولید بلوک‌های داده‌ها بدون هیچ سربار زبان سطح بالایی (کد منبع قالب‌بندی شده و کد منبع دارای توضیحات) مورد استفاده قرار می‌گیرند.

زبان برنامه نویسی Perl چیست؟

امیرمحمد | دوشنبه چهاردهم آذر ۱۴۰۱ | 0:19

زبان برنامه نویسی Perl یک زبان تفسیری، سطح بالا و شی گرا است که برای برنامه نویسی سمت سرور مورد استفاده قرار می گیرد. این زبان به طور وسیعی ساختار خود را از زبان C و Shell Script و Sed گرفته و خصوصیات آنها را داراست. زبان برنامه نویسی Perl در زمینه های هوش مصنوعی، بانک های اطلاعاتی، سیستم عامل و صفحه گسترده مورد استفاده قرار می گیرد. این زبان همچنین قدرت بسیار بالایی را در پردازش متن داراست (به عنوان مثال می تواند یک رشته را ایجاد کند و به عنوان یک فرمان سیستمی اجرا کند).

ویژگی ها

ساختار کلی Perl به طور گسترده ای از C به دست می آید. این زبان همچنین ویژگی های برنامه نویسی Shell Script را داراست. در Perl همه متغیر ها با Siglis های پیشنهادی مشخص شده اند که به متغیر ها اجازه می دهند به طور مستقیم در رشته ها تکرار شوند. Perl لیست ها را از Lisp، هش ها (hashes) را از AWK و عبارات منظم را از sed می گیرد. این کار ها باعث ساده سازی و تسهیل بسیاری از تجزیه و تحلیل ها، پردازش متن ها و وظایف مدیریت داده ها می شود.

طراحی

طراحی زبان برنامه نویسی Perl می تواند به عنوان پاسخ به سه رشته گسترده ی هزینه های سخت افزاری سقوط، افزایش هزینه های کار و بهبود تکنولوژی کامپایلر در صنعت کامپیوتر شناخته شود. بسیاری از زبان های رایج قبلی مانند Fortran و C به منظور استفاده کار امد از سخت افزار رایانه های گران قیمت استفاده می شوند. در مقابل Perl به گونه ای طراحی شده تا برنامه نویسان کامپیوتر بتوانند برنامه ها را سریع تر و راحت تر بنویسند. این زبان همچنین ویژگی های خاصی را داراست که باعث می شود تا نیاز برنامه نویس به استفاده از پردازنده و حافظه تسهیل پیدا کند.

یادگیری بیشتر

همان طور که گفته شد، زبان برنامه نویسی Perl یک زبان برنامه نویسی شی گرا و سمت سرور است. این زبان همچنین به عنوان یک زبان چسبنده به زبان های برنامه نویسی دیگر نیز مورد استفاده قرار می گیرد.

بوت كردن فلش با cmd

امیرمحمد | یکشنبه سیزدهم آذر ۱۴۰۱ | 23:1

برای انجام این کار باید دستوراتی را در برنامه Command Prompt (خط فرمان – cmd) بنویسیم. مراحل زیر را به‌ترتیب انجام می‌دهیم:

  1. برنامه Command Prompt را با باز نمودن منوی استارت و نوشتن دستور cmd و زدن دکمه اینتر باز می‌کنیم. (این برنامه از قسمت Accessories نیز قابل دسترسی است.)
  2. یک فلش مموری با داشتن حافظه حداقل 1 گیگا بایت را به کامپیوتر متصل کنید.
  3. در محیط command که با دستور cmd باز کرده‌ایم عبارت diskpart را می‌نویسیم و دکمه اینتر را فشار می‌دهیم و منتظر می‌مانیم تا صفحه خط فرمان diskpart.exe باز شود.

    دستور diskpart

  4. اکنون دستور list disk را جلوی این عبارت تایپ کرده و با زدن دکمه اینتر لیست دیسک‌های کامپیوتر شما به نمایش درمی آید. در حالت عادی و با داشتن یک هارد دیسک، دو مورد که مورد اول با ظرفیت بالاتر هارد دیسک شما و مورد دوم با ظرفیت کمتر همان فلش مموری خواهد بود، نمایان خواهند شد.
    دستور LIST DISK
  5. حال دستور select disk X را تایپ کنید (به‌جای حرف X شماره درایو فلش مموری که به احتمال زیاد 1 می باشد را تایپ نمایید)
  6. در این مرحله با نوشتن دستور clean محتویات فلش مموری پاک شده تا آماده بوت کردن باشد. (نکته: اگر اطلاعات مهمی روی usb درایو دارید قبل از اجرای این دستور از روی آن برداشته و یک کپی از آن‌ها تهیه نمایید)
    دستور clean
  7. بعد از اجرای دستور clean دستور create partition primary را تایپ کنید.
    دستور create partition primary
  8. سپس دستور select partition 1 را تایپ نمایید.
    دستور select partition 1
  9. بعد از اجرای دستور فوق دستور active را تایپ کنید.
    دستور active
  10. اکنون باید فلش مموری فرمت شود که برای انجام این کار دستور format fs=fat32 را در ادامه تایپ کنید. (با انجام این کار فلش مموری با فرمت fat32 فرمت می‌شود، البته می‌توان فرمت از نوع NTFS را نیز انتخاب نمود)
    دستور format fs=fat32
  11. با اجرای دستور فرمت مدت زمانی (بسته به اندازه حافظه فلش مموری) طول خواهد کشید تا فرمت کامل شود که این روند با نوشتن اعداد 0 تا 100 نشان داده خواهد شد.
  12. بعد از کامل شدن فرمت، عبارت assign را تایپ می‌کنیم.

  13. اکنون به مرحله آخر رسیده‌ایم و با نوشتن دستور exit از برنامه Command Prompt خارج می‌شویم.

حال نوبت به آن می‌رسد که محتویات CD یا DVD حاوی ویندوز یا هر نوع سیستم عامل دیگر را به صورت کامل در فلش مموری کپی کرده و در کامپیوتری که می‌خواهیم آن سیستم عامل را در آن نصب کنیم قرار داده و با تغییر تنظیمات BIOS بر روی بوت از طریق USB، مراحل نصب را دنبال کنیم.

گنو چیست ؟

امیرمحمد | پنجشنبه سوم آذر ۱۴۰۱ | 17:1

لینوکس یک سیستم عامل است و سیستم عامل به معنی این است که مجموعه ای از برنامه ها هستند که با سخت افزار کامپیوتر ارتباط برقرار می کنند و بعضا پیش زمینه اجرا نرم افزارهای دیگری می شوند. یک سیستم عامل شامل برنامه های بنیادی می باشد که برای اجرای دستورالعمل های کاربران و برقراری ارتباط با کاربران مورد نیاز هستند ، برای مثال برای خواندن و نوشتن اطلاعات بر روی هارد دیسک ، پرینتر و حتی Tape ، مدیریت حافظه و حتی اجرای سایر نرم افزارها این برنامه های بنیادی مورد نیاز هستند. مهمترین قسمت یک سیستم عامل هسته یا Kernel آن سیستم عامل است.

GNU چیست؟

در یک سیستم GNU//Linux در واقع Linux سیستم عامل ما و در نقش هسته یا Kernel فعالیت می کند. اما باقی اجزای این سیستم شامل برنامه های متنوعی می باشد که اکثر آنها تحت لیسانس یا تابع قوانین GNU هستند که ما از این به بعد آن را با عنوان پروژه GNU می شناسیم . اما چرا ما همیشه با عنوان GNU//Linux این پروژه را نام می بریم ؟ دلیل این موضوع این است که سیستم عامل لینوکس بدون داشتن نرم افزارهایی که توسط پروژه GNU ایجاد شده اند تقریبا هیچ کار خاصی نمی تواند انجام دهد بنابراین ما همیشه Linux را در کنار پروژه GNU قرار می دهیم تا با همدیگر یک مجموعه کامل را تشکیل دهند.

به نظر من و خیلی از دوستان دیگر بهتر است وقتی اسم لینوکس را می بریم آن را به شکل گنو لینوکس عنوان کنیم. فرض کنید سیستم عامل ویندوز را نصب کرده اید و هیچ نرم افزار جانبی بر روی آن نصب نشده است ، حتی مجموعه Notepad ، Paint ، Media Player و ... را در این سیستم عامل ندارید ! این دقیقا شرایطی است که شما زمانیکه لینوکس را بصورت خام نصب می کنید برای شما به وجود می آید اما GNU یعنی اضافه شدن Office ، Photoshop ، Outlook و ... به سیستم عامل خام ... البته مثال را با لینوکس جلو ببریم بهتر است و فقط برای مثال ویندوز را گفتیم که تصویر بهتری از موضوع داشته باشید.

قبلا در مقاله ای در خصوص تاریخچه به وجود آمدن سیستم عامل لینوکس در انجمن لینوکس و سیستم های متن باز مقاله ای نوشته ام و همچنین مقاله ای در خصوص مقایسه سیستم عامل لینوکس و یونیکس نیز به تازگی نوشته ام تا درک بهتری از تفاوت این دو سیستم عامل داشته باشید اما بصورت کلی سیستم عامل لینوکس برگرفته ای از سیستم عامل یونیکس است. از بدو به وجود آمدن سیستم عامل لینوکس ، این سیستم عامل بصورت Multi-Tasking و Multi User طراحی و پیاده سازی شد.

همین موضوع باعث شد سیستم عامل لینوکس با سایر سیستم عامل های موجود تفاوت های واضحی داشته باشد. اما نکته جالب در خصوص لینوکس که تصورش کمی سخت به نظر می رسید این بود ( و البته هست ) که لینوکس در مقایسه با سایر سیستم عامل های موجود در دنیا ، دارای مالک خاصی نبود و هیچ شرکت یا سازمان خاصی مالکیت آن را بر عهده نداشته و ندارد. بیشتر برنامه نویسی هایی که برای این سیستم عامل انجام می شود توسط برنامه نویس های داوطلب و علاقه مند انجام می شود.

پروژه GNU چیست و FSF به چه معناست؟

اما چیزی که ما امروزه به عنوان پروژه GNU می شناسیم از سال 1983 توسط شخصی به نام ریچارد استالمن با معرفی یک سیستم عامل رایگان به نام GNU شروع شد که یک سیستم عامل شبیه به Unix بود. بعدها چیزی که امروزه ما به عنوان GNU//Linux می شناسیم در سال 1984 معرفی شد و تقریبا یکسال بعد از معرفی GNU بود که این دو چیز با هم یکپارچه شدند. پروژه GNU در حقیقت پروژه ای است که در آن نرم افزارهای رایگان برای سیستم عامل های رایگانی مثل لینوکس طراحی و تولید می شود و بصورت کاملا رایگان برای استفاده عموم قرار می گیرند.اگر نرم افزاری توسط لیسانس یا با استفاده از نام پروژه GNU تولید شود به این معناست که شما می توانید سورس کدهای این نرم افزار را بصورت رایگان دریافت کنید ، تغییرات دلخواه خود را بر روی آن انجام دهید و یا حتی کدهای آن را بصورت دلخواه تغییر دهید.

در حال حاضر برنامه نویس ها ، شرکت ها و حتی ارگان های زیادی بر روی پروژه لینوکس کار می کنند اما در حال حاضر فقط یک محل است که بر روی پروژه GNU بصورت متمرکز کار می کند و ما آن را به عنوان Free Software Foundation یا FSF می شناسیم ، این بنیاد بیشتری ابزارهای موجود در لینوکسی که در حال حاضر استفاده می کنیم را تولید و پشتیبانی می کند ، فراموش نکنید که لینوکسی که استفاده می کنیم بدون FSF به مشکلات زیادی می خورد و به همین دلیل است که FSF باعث پیشرفت و گسترش لینوکس شده است و فلسفه لینوکس که سیستم عامل سورس باز در کنار نرم افزار سورس باز است با این بنیاد کامل می شود.

اولین هسته لینوکس در سال 1991 توسط یک فارق التحصیل دانشگاهی رشته کامپیوتر به نام لینوس توروالدز ایجاد شد و فقط یک هسته سیستم عامل بدون نرم افزار بود هدف اصلی لینوس توروالدز ارائه کردن یک سیستم عامل رایگان و قابل تغییر بود اما برای این سیستم عامل نرم افزار نیز لازم بود و در آن زمان نرم افزار رایگان چندان عمومیت نداشت و در همین موقع بود که او با ریچارد استالمن همکار شد ، این شروع پروژه GNU//Linux بود ، یعنی سیستم عامل رایگان در کنار نرم افزار رایگان قرار گرفت.

بنیاد نرم افزارهای رایگان یا همان Free Software Foundation در سال 1985 شروع به کار کرد. FSF به کاربران این اجازه را می داد که بتوانند نرم افزارهای کامپیوتری را بصورت رایگان استفاده کنند ، کپی کنند ، تغییر دهند و در نهایت توزیع کنند. FSF به شدت باعث ترویج داده شدن فرهنگ تولید و توسعه نرم افزارهای رایگان و آزاد متن که در اصطلاح Open Source گفته می شوند شد و امروزه شاهد این هستیم که بیشتر نرم افزارهایی که برای لینوکس نوشته می شوند از طریق این بنیاد و تحت پروژه GNU//Linux معرفی می شوند. برای کسب اطلاعات بیشتر در خصوص FSF و GNU می توانید به وب سایت های www.gnu.org و www.fsf.org مراجعه کنید.

واژه Free یا آزاد در Free Software یا نرم افزار آزاد در حقیقت به معنی اختیار است نه قیمت ، شاید اگر بخواهیم واژه آزاد متن را استفاده کنیم بهترین مثال برای درک آن سخنرانی آزاد است که شما اختیار دارید راجع به هر چیزی که دوست دارید صحبت کنید. Free در واژه Free Software در واقع به این معنی است که شما در اجرا کردن ، کپی کردن ، توزیع کردن ، تغییر دادن و توسعه دادن یک نرم افزار اختیار کامل دارید. البته بد نیست نگاهی به مقاله خودم به نام تفاوت بین Freeware و Open Source بیندازید تا تفاوت این دو مفهوم را نیز بهتر درک کنید ، در هر صورت آزادی نرم افزار یا Free Software به چهار نوع آزادی و اختیار در حوزه تولید نرم افزار اشاره می کند که به ترتیب زیر هستند :

  • آزادی شماره 0 : آزادی و اختیار کامل در اجرای نرم افزار با هر هدفی ( حتی اهداف مخرب )
  • آزادی شماره 1 : آزادی و اختیار کامل در خصوص مطالعه در خصوص نحوه اجرای یک نرم افزار و تغییر دادن آن بر اساس نیاز خود ، طبیعی است که برای داشتن آزادی شماره 1 در این بنیاد دسترسی به سورس کدهای نرم افزار یک پیش شرط است.
  • آزادی شماره 2 : آزادی و اختیار کامل برای توزیع کپی های نرم افزار برای دیگران
  • آزادی شماره 3 : آزادی و اختیار کامل برای توسعه نرم افزار و ارائه کردن نسخه تغییر یافته نرم افزار برای عموم ، طبیعی است برای این موضوع نیز داشتن دسترسی کامل به سورس کدهای نرم افزار یک پیش شرط است

تا اینجا فکر می کنم تا حدودی مفهوم GNU را درک کرده باشید .

هک کردن چیست؟ هکر کیست؟

امیرمحمد | سه شنبه یکم آذر ۱۴۰۱ | 19:4

تعریف عامی آن، دسترسی راه دور غیرمجاز به یک سیستم کامپیوتری است، ولی تعریف فلسفی آن، نفوذ کردن به هر محتوای بیرونی است که دارای محتوایی درونی و درونی‌تر باشد، به مانند کیف‌دزدی — کیف پول شما برای دزد ارزشمند است، زیرا درونش ارزشمندتر است، ولی اگر یک دزد به کیف شما دسترسی پیدا کند، فقط پول‌تان را می‌دزدد؟ پاسخ این سوال واضح نیست; برخی ممکن است هوس کنند که شماره کارت بانکی شما و رمز اول و دوم آن را هم بردارند. به محض دسترسی آنان به آنچه که مال شماست، هر اقدامی از آنان برمی‌آید. منتها تفاوت هک با کیف‌دزدی، در نحوه انجام آن است؛ در واقعیت، شما دزد و موتورش را می‌بینید، ولی در دنیای مجازی، نه دزد را می‌بینید، نه موتور، نه حتی ممکن است از دزدیده شدن پول‌تان باخبر شوید.

محتوای بیرونی چیست؟

محتوای بیرونی چیست؟

محتوای بیرونی چیست؟

محتوای بیرونی به مانند رمزعبورهاست، که با دسترسی به آنان، محتوای درونی قابل دسترس خواهد بود.

محتوای درونی چیست؟

محتوای درونی چیست؟

محتوای درونی چیست؟

محتوای درونی می‌تواند ایمیل کاری یا شخصی شما باشد، و محتوای درونی‌تر آن، اطلاعاتی است که در ایمیل‌های ارسالی و دریافتی و ذخیره‌شده شما وجود دارد. اگر این اطلاعات، شماره کارت بانکی شما و رمز آن باشد، محتوای درونی‌تر، پول است، و محتوای مرکزی، لذت فردی یا اهداف سازمانی است.

محتوای مرکزی چیست؟

محتوای مرکزی چیست؟

محتوای مرکزی چیست؟

محتوای مرکزی گاهی دسترسی به عکس‌ها، ویدیوها، پیام‌ها، اسناد مهم و … است، گاهی برپا کردن یک رویداد بزرگ، گاهی قتل و ترور اشخاص است.

هدف از هک کردن چیست؟

هدف از هک کردن چیست؟

هدف از هک کردن چیست؟

هر چیزی که در آن سود و منفعت شخصی یا سازمانی برای فرد یا افراد وجود داشته باشد. پس هک کردن یعنی نفوذ به محتوای بیرونی، برای دستیابی به محتوای درونی و سپس مرکزی.

هکر کیست؟

هکر کیست؟

هکر کیست؟

هکر کسی است که در عملیات مربوط به هک کردن، نقش و دخالت دارد.

در بهترین حالت، او از هر چیز مفیدی برای رسیدن به هدفش استفاده می‌کند، و فقط خود را محدود به استفاده از ابزارهای هک نمی‌کند. شاید برخی گمان کنند که اگر از یک هکر، کامپیوترش را بگیریم، دیگر کاری از او برنمی‌آید — این کار به شدت وابسته به این است که بدانیم با چه شخصیتی طرف هستیم — او می‌‌تواند زودرنج باشد، خونسرد باشد، صبور باشد، عجیب باشد، پیر یا جوان باشد.

از باهوش‌ترین هکرها می‌توان به کسانی اشاره کرد که از درک بسیار بالایی نسبت به جامعه خود و جوامع گوناگون برخوردارند، به خوبی رفتارهای ما انسان‌ها در مواجهه با شرایطی مشترک را پیش‌بینی می‌کنند، و همیشه از اخرین اخبار روز مطلع هستند. مهندسی اجتماعی و تحلیل رفتارهای مردمی و سازمانی، تخصص اصلی این دسته از افراد است، برای مثال، رمز اول کارت‌های بانکی تعداد زیادی از مردم کشورمان، چهار رقمی است، و بدتر انکه بسیاری از تاریخ تولد خود در آن استفاده می‌کنند.

برخی ترجیح می‌دهند از دو عدد دورقمی گرد شده به مانند ۹۰۹۰ استفاده کنند. برخی مایل‌اند از اعداد پی‌درپی یا تکراری به مانند ۱۲۳۴ و ۱۱۱۱ استفاده کنند. یک هکر واقعی، میان مردم است، و آنان را به صورت روزمره زیر نظر دارد.

او جدا از شناختش از فضای واقعی، فضای مجازی را نیز می‌فهمد. در تمام شبکه‌های اجتماعی، پیام‌رسان‌ها، و هر محیطی که کاربران را به خود جذب کند نیز حضور دارد. دائم در حال ثبت و ضبط کنش‌ها و واکنش‌های شما و محیط است.

هکرها برای نفوذ به سیستمی، دلایل شخصی خود را دارند. حتی هکری که وابسته به یک سازمان باشد، همچنان انگیزه‌ای شخصی دارد; می‌تواند عقیدتی باشد، پولکی باشد، هردو باشد، یا هیچ‌یک!

چرا او همیشه به دنبال سرقت “عکس‌های شخصی و کاملا خصوصی” شماست؟ اشتباه نکنید. اگر عمل مشابه‌ای توسط دو هکر صورت گرفت، این به دلیل وجود انگیزه‌ای مشابه در آنان نیست. کسی که به دنبال مسائل جنسی و شخصی افراد است، بی‌شک فردی تنهاست. این دسته به دنبال خوش‌گذرانی فردی هستند، و گاهی به دنبال انتقام — شاید خطری جدی نباشند، ولی از آنجایی که تعدادشان بسیار زیاد است، کارشان از نظر روانی برای جامعه بسیار مزاحمت‌آمیز می‌شود. اکثر آنان جنس مذکر هستند، و نفوذ به حریم خصوصی دیگران برای‌شان ارضا کننده و لذت‌بخش است.

همانند برخی که یک شبه ثروتمند شدند، برخی نیز یک شبه هکر شدند، بی‌آنکه ذره‌ای به دانش آنان افزوده شده باشد. به مانند پزشکی که تمام تشخیص خود را بر دوش دستگاه‌های گوناگون پزشکی نهاده، و هر نتیجه‌ای که دریافت می‌کند را به دست بیمار می‌سپارد; حال برای آنکه بدانید نتیجه درست است یا غلط، بهتر است از دستگاه بپرسید! بسیاری از هکرها اینگونه نامی برای خود ساختند; آنان با استفاده از الگوریتم‌های قابل اجرا در برنامه‌های آماده‌ای که توسط متخصصین طراحی و ساخته شده‌اند، کار خود را پیش می‌برند; اگر موفق نشدند، آنقدر تنبل هستند که زمان خود را صرف اندیشه‌ای نو نکنند.

هکر ها به چند دسته تقسیم می شوند؟

هکر ها به چند دسته تقسیم می شوند؟

هکرها به دو دسته اصلی تقسیم می‌شوند:

کلاه سیاه: افرادی که قصد و نیتی زشت از انجام کارشان دارند و هدف‌شان همانند ارتکاب جرم است، به‌مانند نفوذ به سیستم بانکی، شخصی، سازمانی، و غیره.کلاه سپید: افرادی که قصد و نیتی سازمانی از انجام کارشان دارند و هدف‌شان آسیب‌شناسی سیستم‌های کامپیوتری، رفع مشکل، پیشگیری، و … در پی همکاری با یک یا چند سازمان شناخته‌شده است.

و به چند دسته فرعی، که بخشی در زیر آورده شده است:

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

در همه دسته‌ها خوب و بد وجود ندارد، هریک به دلایلی پذیرفتنی یا ناپذیرفتنی اقدام به کار می‌کنند.

ابزار هک چیست؟

ابزار هک چیست؟

ابزار هک چیست؟

همانطور که در بالا گفته شد، هر هکری ابزار کار خود را دارد، فارق از آنکه دانش او در چه سطحی باشد. برای مثال، تعداد زیادی از آنان از توزیع Kali سیستم‌عامل لینوکس استفاده می‌کنند. این سیستم‌عامل، دارای تعداد زیادی از برنامه‌هایی است که در روند نفوذ به هکرها کمک شایانی می‌کند. نام یکی از انان THC Hydra است؛ از این برنامه برای دستیابی به رمزعبور کاربران یک سیستم با روش‌های گوناگون، استفاده می‌شود. این برنامه، خود نیز یک هکر محسوب می‌شود، زیرا تقریبا تمامی کارها را خودش انجام می‌دهد، و فرد استفاده‌کننده خیلی در روند کار نقشی جز دادن اطلاعات مورد نیاز ندارد.

چرا هک می شویم؟

چرا هک می شویم؟

چرا هک می‌شوم؟

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

اگر ندانید که از کجا ممکن است ضربه بخورید، نمی‌توانید پیش‌بینی کنید که چگونه می‌توانید خود را از چنین خطراتی حفظ کنید. بزرگترین اشتباه شما، ندانستن است. مطالعات و تجربیات خود در این زمینه را افزایش دهید.

چگونه هک می شوم؟

چگونه هک می شوم؟

چگونه هک می‌شوم؟

بستگی دارد که چه چیزی را از دست داده باشید. اگر روزی شخصی به شما ایمیل داد و گفت: “عکس‌هات پیش منه”، هرگز نمی‌توانید بفهمید که راست می‌گوید یا دروغ — تنها می‌توانید نگاهی به گالری گوشی یا کامپیوتر خود بی‌اندازید و سری برنید به اپلیکیشن‌های ناشناسی که نصب کرده‌اید و وب‌سایت‌های ناشناسی که بازدید کرده‌اید و لینک‌های ناشناسی که در پیام‌رسان‌ها و شبکه‌های اجتماعی و … روی آنان کلیک کرده‌اید و در کل به دنبال حرکتی مشکوک در سیستم خود بگردید و در نهایت همگی را با یکدیگر مقایسه کنید تا دریابید که درب‌وتخته چگونه به هم می‌آیند، تا شاید بتوانید راست و دروغ را از یکدیگر تشخیص دهید.

وقتی اطلاعات مهمی را در گوشی یا کامپیوتر خود دارید، نباید اجازه دسترسی هر چیز ناشناسی به دستگاه‌تان را بدهید.

فراموش نکنید که هر لینکی، اپلیکیشنی، محتوایی (عکس و ویدیو و …)، درواقع تونلی برای راه‌یابی به دستگاه شماست، پس حواس‌تان به همه‌چیز باشد.

به افرادی که تابحال آنان را حضوری ندیده‌اید، اعتماد نکنید، و هر کسی را به گروه یا کانال پیام‌رسان یا پروفایل خود راه ندهید.

یک جنگجو، وقتی می‌تواند بجنگد که توان جنگیدن داشته باشد. جنگ همیشه هست، ولی تلاش کنید که جویای آن نباشید، تا مجبور به جنگیدن نشوید; پس هر کسی را به لیست دوستی خود اضافه نکنید، هر کسی را دنبال نکنید، و اگر ذره‌ای به کسی شک داشتید، مسدودش کنید. ریشه جنگ را بزنید تا جنگجو نیز با آن نابود شود.

آبا بی خبر هک شده ام؟

آبا بی خبر هک شده ام؟

آیا بی‌خبر هک شده‌ام؟

پیش از آن، از خود بپرسید که نسبت به حفظ امنیت خود بی‌خیال بوده‌اید و هستید یا خیر. آنچه که آموخته‌اید را فدای آنچه که نمی‌دانید چیست، نکنید — تنها با بهتر کردن شرایط امنیتی خود، می‌توانید به آرامش و قدرت برسید.

همیشه فعالیت‌های اخیر خود در سرویس‌ها، پیام‌رسان‌ها، و … را به خاطر بسپارید، تا اگر به حرکت مشکوکی برخوردید، سریعا اقدامات امنیتی را اعمال کنید.

اگر هک شدم، چه کنم؟

اگر می‌دانید که هک شده‌اید، نخست از خود بپرسید که چرا هک شده‌اید; این کار سبب می‌شود تا از این پس بیشتر مراقب باشید.

تمامی حساب‌های خود را بررسی کنید تا در صورت شناخت چیزی مشکوک، امنیت حساب خود را افزایش، و تغییرات تازه‌ای را بر آن اعمال کنید. اگر کسی ایمیل شما را هک کرده باشد، در دو وضعیت قرار می‌گیرید:

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

در مواجهه با هر دو وضعیت، رمزعبور تمامی حساب‌های خود را تغییر دهید; این یک پیشگیری از احتمال حمله مجدد است.

کامپیوتر یا گوشی خود را با ضدویروس‌ها و ضدجاسوس‌ها عمیقا اسکن کنید تا اگر پای بدافزاری به میان بود، سریعا شناخته و نابود شود.

اطلاعات شخصی و خصوصی خود را به جایی امن انتقال دهید، یا دسترسی به آنان را محدود کنید، یا درایو منبع را قفل کنید، یا سریعا آنان را حذف کنید تا بعدا “شاید” بتوانید به وسیله ابزارهای مربوطه، آنان را بازیابی کنید.

چه کنم هک نشوم؟

همیشه به‌روز باشید، چه از نظر سیستمی، چه از نظر دانش فردی. مسائل و اخبار هک را دنبال کنید، و از تجربیات دیگران درس بگیرید.

از ضدویروس‌ها و ضدجاسوس‌های عالی استفاده کنید. رمزعبور خود را هربار تغییر دهید; چه خوب که هفته‌ای یک‌بار باشد، چه عالی که هر چندروز یک‌بار باشد. با این کار، تمام عملیات هک هکرها را نابود می‌سازید.

از ایمیل ریکاوری در ایمیل‌ها و پیام‌رسان‌ها و شبکه‌های اجتماعی استفاده کنید. اگر پیام‌رسانی، قابلیت استفاده از رمزعبور محلی و ابری را به شما داد، از آن استفاده کنید. بهتر است از شماره‌تلفن ریکاوری استفاده نکنید، زیرا حتی اپراتور سیم‌کارت شما می‌تواند از آن برای ورود به حساب‌تان استفاده کند (حرف از بی‌اعتمادی به میان نیست، موضوع بر سر “امکان دسترسی” است، که بیشتر در مورد پیام‌رسان‌ها صدق می‌کند)، و از طرفی، هکر می‌تواند به کمک نصب بدافزاری در گوشی‌تان، سریع‌تر از هر راهی نسبت به بازنشانی (Reset) رمزعبورتان اقدام کند. همیشه یک ایمیل ریکاوری زیرمجموعه برای ایمیل‌تان بسازید.

در اداره، خانه، بیرون، در مورد اطلاعات شخصی حساب‌تان حتی با خودتان هم صحبت نکنید.

از سرورها و تونل‌های امن استفاده کنید. ایمیل ناشناس و محتویات ناشناس آن را باز نکنید.

روی تبلیغات وب‌سایتی که نمی‌شناسید، کلیک نکنید.

در مرورگر خود قابلیت حذف کوکی‌ها پس از بسته شدن مرورگر را فعال کنید (کوکی‌ها اطلاعاتی ذخیره‌شده مربوط به تمام فعالیت‌های اینترنتی شما، آی‌دی‌ها و رمزعبورها، سفارشی‌سازی‌ها، و … هستند).

از برنامه‌های معتبر و سرشناس استفاده کنید. از کیبورد مجازی ارائه‌شده توسط بانک‌ها در وب‌سایت‌شان استفاده کنید (مخرب‌ها در صورت وجودشان در سیستم شما، می‌توانند محتویاتی را که تایپ می‌کنید را ذخیره و به هکر ارسال کنند).

پیش از اجرای یک فایل، پسوند آن را بررسی کنید و از ماهیت سالم آن اطمینان حاصل کنید.

برای هر حساب کاربری، رمزعبور متفاوتی تعیین کنید.

از استفاده از قفل پترنی (Pattern Lock) در گوشی خودداری کنید.

اگر گوشی‌تان از قابلیت ثبت اثر انگشت پشتیبانی می‌کند، از آن در کنار رمزعبور استفاده کنید.

چگونه اطلاعات خود را امن نگه دارم؟

اطلاعات ورود به حساب خود را در غالب یک متن ساده ذخیره نکنید — بهتر است آنان را در کامپیوتر یا گوشی خود ذخیره نکنید — بهترین کار این است که آنان را هم به خاطر بسپارید، هم در چند حافظه جانبی به مانند فلش‌دیسک و سی‌دی/دی‌وی‌دی به صورت رمزنگاری‌شده ذخیره کنید.

  • صفحه اصلی
  • آرشیو وبلاگ
  • عناوین نوشته ها
آرشیو وب
  • آذر ۱۴۰۱
  • آبان ۱۴۰۱

B L O G F A . C O M

تمامی حقوق برای تکنولوژی محفوظ است .