هسته لینوکس میلیون ها دستگاه را در پشت پرده نیرو می دهد. اما همه نمی دانند که هسته واقعاً چگونه سخت افزار و نرم افزار را مدیریت می کند.
هسته لینوکس مانند پلی است که ارتباط محاسباتی بین برنامه ها و سخت افزار را امکان پذیر می کند و منابع سیستم را مدیریت می کند. لینوس توروالدز هسته لینوکس را با C و اسمبلی توسعه داد و به این ترتیب، او موفق به ایجاد یک هسته سبک وزن و قابل حمل شد که به عنوان منبع باز برای عموم منتشر شد.
شما میتوانید هسته لینوکس را در بخشهای مختلف مانند فضا، رایانه، ساعتهای هوشمند، تلفنهای همراه، روباتیک و سلامت ببینید. اما آیا تا به حال از خود پرسیده اید که هسته لینوکس در زیر هود چگونه کار می کند؟
استفاده از سخت افزار در لینوکس
هسته لینوکس، اول از همه، کنترل میکند که چه سختافزاری اجرا میشود و زمانی که کامپیوترتان را روشن میکنید به چه روشی اجرا شود. علاوه بر این، کنترل نرم افزارهای سطح بالا به لطف رابط برنامه نویسی امکان پذیر است. برای مثالی از این کنترل ها، این امکان برای شما وجود دارد که اطلاعات مربوط به سخت افزارهای نصب شده در اسلات های مادربرد خود را مشاهده کرده و از این اطلاعات دقیق بهره مند شوید.
همچنین، این رابط برنامه نویسی یک لایه انتزاعی را فراهم می کند. به عنوان مثال، اگر می خواهید با دوستان خود مکالمه ویدیویی داشته باشید، به یک وب کم نیاز دارید. لایه انتزاعی این امکان را برای نرم افزار مورد استفاده شما فراهم می کند تا از این وب کم صرف نظر از ساخت و مدل آن استفاده کند. نرم افزار اینجا فقط می تواند از رابطی که برای لینوکس وجود دارد استفاده کند. هسته لینوکس فراخوانی های تابع این رابط را به دستورات سخت افزاری واقعی که وب کم نیاز دارد ترجمه می کند.
با استفاده از سیستمهای فایل مجازی proc و /sys، هسته لینوکس میتواند اطلاعات دقیقی درباره سختافزاری که شناسایی میکند صادر کند. در زیر می توانید چند ابزار مورد استفاده برای این کار و اینکه کدام دستگاه ها و کارت هایی را صادر می کنند را مشاهده کنید:
- lspci: برای دستگاه های PCI
- lsusb: برای دستگاه های USB
- lspcmcia: برای کارت های PCMCIA
همانطور که می بینید، توزیع لینوکس در تصویر بالا روی VirtualBox اجرا می شود. با این حال، شما این فرصت را دارید که اطلاعات زیادی مانند VGA، کنترلر USB، بریج ها و کنترلر SATA را مشاهده کنید.
همچنین می توانید از پارامتر -v برای دریافت اطلاعات بسیار دقیق تر استفاده کنید.
در هسته لینوکس، برنامهها معمولاً از طریق فایلهای خاصی که در دایرکتوری dev / وجود دارند به دستگاهها دسترسی پیدا میکنند. این فایل های ویژه نشان دهنده درایوهای دیسک و سایر دستگاه های فیزیکی هستند. فایل هایی مانند /dev/hda، /dev/sdc، /dev/sdc3، /dev/input/mouse0 و dev/snd/* نمونه هایی از این فایل های خاص هستند.
مدیریت فایل سیستم لینوکس
سیستم های فایل یکی از قابل توجه ترین اجزای هسته لینوکس هستند. سیستم فایل لینوکس یکی از بزرگترین مزایای آن است. همه فایل های یک سیستم لینوکس در یک شاخه جمع می شوند. بنابراین کاربران می توانند از این سلسله مراتب برای رسیدن به مکان های مورد نظر خود استفاده کنند.
نقطه شروع این سلسله مراتب دایرکتوری ریشه (/) است. سایر زیر شاخه ها در زیر پوشه ریشه قرار دارند. پرکاربردترین زیرشاخه زیر / دایرکتوری home / است. این زیر شاخه شامل زیر شاخه های دیگری است و هر دایرکتوری دارای فایل هایی است که داده های واقعی را ذخیره می کند.
به عنوان مثال، می توانید به یک فایل متنی روی دسکتاپ خود فکر کنید. اگر یک فایل متنی به نام helloworld.txt روی دسکتاپ خود ایجاد می کنید، می توانید به آن به عنوان /home/muo/Desktop/helloworld.txt اشاره کنید. مثال /muo در اینجا البته متفاوت خواهد بود. زیرا نام این زیر شاخه به نام کاربر فعلی شما بستگی دارد. با این سیستم نامگذاری، هسته لینوکس بین فضای ذخیره سازی واقعی و فیزیکی موجود بر روی دیسک ترجمه می شود.
همچنین، هسته لینوکس می تواند داده ها را از چندین دیسک ادغام کند. اینجاست که سیستم نصب وارد عمل می شود. از یکی از دیسک ها در سیستم ریشه استفاده می کند و بقیه را به دایرکتوری های موجود در سلسله مراتب نصب می کند. سپس دیسک های دیگر در زیر نقاط نصب قرار می گیرند. این به کاربران این امکان را می دهد که دایرکتوری home / را روی یک هارد دیسک دوم که شامل زیر شاخه های دیگری نیز می باشد، ذخیره کنند.
هنگامی که دیسکی را در فهرست /home قرار می دهید، می توانید از مکان های معمولی به این دایرکتوری ها دسترسی داشته باشید. بنابراین، مسیرهایی مانند /home/muo/Desktop/helloworld.txt به کار خود ادامه می دهند.
با دستور findmnt -A می توانید نقاط اتصال بین فایل های سیستم خود را مشاهده کنید.
با بسیاری از فرمت های سیستم فایل، می توانید داده ها را به صورت فیزیکی روی دیسک ذخیره کنید. شناخته شده ترین فرمت های سیستم فایل ext2، ext3 و ext4 در لینوکس هستند. با این حال، بسیاری از فرمت های سیستم فایل دیگر نیز وجود دارد. در هر صورت، شما باید فایل سیستم را قبل از نصب فرمت کنید. برای این کار می توانید از دستوراتی مانند mkfs.ext3 (mkfs مخفف make file system و ext3 سیستم فایل است) استفاده کنید.
این دستورات مسیر فایل دستگاهی را که می خواهید فرمت کنید به عنوان پارامتر می پذیرد. این یک عملیات مخرب است و اگر نمیخواهید یک سیستم فایل را پاک یا تنظیم مجدد کنید، باید با احتیاط از آن استفاده کنید.
جدای از اینها، سیستم های فایل شبکه ای مانند NFS نیز وجود دارد که هسته لینوکس از آنها استفاده می کند. NFS یک سیستم فایل شبکه است که در آن داده ها روی دیسک محلی ذخیره نمی شوند. با NFS، داده ها از طریق شبکه به سروری می رود که داده ها را ذخیره می کند. از آنجایی که داده ها روی یک سرور قرار می گیرند، کاربران مجبور نیستند دائماً با آن سروکار داشته باشند. آنها همچنین می توانند طبق معمول از سیستم فایل سلسله مراتبی سنتی لینوکس استفاده کنند.
عملیات توابع مشترک
همه نرم افزارهای سیستم لینوکس دارای عملکردهای مشترک هستند. به همین دلیل است که این توابع در هسته لینوکس مرکزی هستند. به عنوان مثال، هنگام باز کردن یک فایل، می توانید آن را فقط با نام فایل باز کنید، بدون اینکه بدانید فایل در کجا ذخیره شده است و از چه توابع و عملیاتی استفاده می کند. همه این توابع از قبل در هسته وجود دارند.
می توانید فایل خود را روی هارد دیسک ذخیره کنید، آن را بین چندین هارد دیسک تقسیم کنید یا حتی آن را روی یک سرور راه دور نگه دارید. توابع ارتباط فایل مشترک در چنین مواردی مهم هستند. برنامه ها بدون توجه به نحوه انتقال داده ها، داده ها را مبادله می کنند. توابع ارتباطی مشترک برای انجام این مبادلات داده وجود دارد. این حرکت می تواند از طریق شبکه های بی سیم یا حتی یک خط تلفن ثابت باشد.
مدیریت فرآیند در لینوکس
یک نمونه فعال از یک برنامه که بر روی داده ها یا اطلاعات موجود در حافظه کار می کند به عنوان یک فرآیند شناخته می شود. وظیفه هسته لینوکس تولید و پیگیری این مناطق حافظه است. هسته حافظه را برای یک برنامه در حال اجرا اختصاص می دهد و کد اجرایی را از سیستم فایل در حافظه بارگذاری می کند. بلافاصله پس از آن، هسته کد را اجرا می کند.
هسته لینوکس از چند وظیفه ای پشتیبانی می کند. قادر به اجرای چندین فرآیند به طور همزمان است. هرچند در هر بازه زمانی معین فقط یک تراکنش وجود دارد. با این حال، هسته لینوکس زمان را به تکه های کوچک تقسیم می کند و در نتیجه، هر رویه به صورت متوالی انجام می شود.
از آنجایی که این بخشهای زمانی کوچک بر حسب میلیثانیه افزایش مییابند، فقط در زمانهای خاصی فعال هستند و بقیه زمانها بیکار میمانند. وظیفه هسته لینوکس در اینجا به حداکثر رساندن عملکرد با اجرای چندین فرآیند به طور همزمان است.
اگر بازه های زمانی بیش از حد طولانی باشد، برنامه در حال اجرا ممکن است آنطور که می خواهید پاسخگو نباشد. اگر بازههای زمانی خیلی کوتاه باشد، ممکن است مشکلاتی در تغییرات کار وجود داشته باشد. بسته به اولویت فرآیند، بازه زمانی مورد نیاز در اینجا متفاوت خواهد بود. شاید قبلاً در مورد فرآیندهای با اولویت بالا و فرآیندهای با اولویت پایین شنیده باشید. این یکی از توابعی است که هسته لینوکس آن را کنترل می کند.
این توضیح همیشه درست نیست. محدودیت واقعی این است که در یک زمان تنها یک فرآیند کارگر در هر هسته پردازنده وجود دارد. سیستم های چند پردازنده ای اجازه می دهند چندین فرآیند به صورت موازی اجرا شوند. یک سیستم پایه تقریباً همیشه دارای ده ها فرآیند در حال اجرا است.
حقوق دسترسی در لینوکس
مانند سایر سیستم عامل ها، می توانید کاربران زیادی را در یک سیستم لینوکس ایجاد کنید. در چنین مواردی، یک سیستم مدیریت حقوق وجود دارد که از تک تک کاربران و گروه ها پشتیبانی می کند. اینجاست که مجوزهای فایل و کاربر وارد عمل می شوند.
هسته لینوکس داده ها را مدیریت می کند و مجوزهای لازم را برای هر فرآیند بررسی می کند. برای مثال، اگر میخواهید فایلی را باز کنید، هسته باید شناسه فرآیند را در برابر مجوزهای دسترسی بررسی کند. اگر هسته بررسی کند و ببیند که شما مجوز دارید، فایل را باز می کند.
هسته لینوکس همه چیز را کنترل می کند
همانطور که می بینید، هسته لینوکس بر همه چیز از امنیت فایل شما تا ایجاد کاربر و دانلود فایل از اینترنت نظارت می کند. همه چیز در نظم خاصی است. هر کاربر حقوقی دارد. هسته لینوکس فرآیندها و شکاف های زمانی را برای حداکثر عملکرد مدیریت می کند.
علاوه بر این، سیستم فایل، که یکی از بزرگترین ویژگی هایی است که هسته لینوکس را از سایر سیستم عامل ها متمایز می کند، بسیار مهم است. لینوکس یک جعبه مخفی نیست. برعکس، همه فایل ها و کدهای منبع قابل دسترسی هستند. برای درک بهتر ماهیت کاربردی و قدرتمند هسته لینوکس، می توانید سلسله مراتب سیستم دایرکتوری لینوکس را بررسی کنید.