Linux daxili cihazı. "Linux Daxili" kitabı

Linux Daxili Brian Ward

(Hələ reytinq yoxdur)

Başlıq: Linux Daxili

Brian Ward tərəfindən "Linux Internals" kitabı haqqında

Linux əməliyyat sistemi Windows-a layiqli alternativdir, bəzi versiyaları çox rahat deyil və kompüter resursları üçün çox "ağır"dır. Brayan Uord bu sistem və onun zəngin imkanları ilə demək olar ki, sıfırdan tanış olmaq istəyən hər kəs üçün uyğun olan heyrətamiz özünə kömək kitabı yazıb. Linux nüvəsinin bütün mexanizmlərini öyrənmək, onun daxili quruluşunu və fəlsəfəsini anlamaq istəyənlər üçün “Linux Internals” kitabını oxumaq tövsiyə olunur. Bu iş iş prinsiplərinin səthi öyrənilməsi və şablon sxemlərinin bir əməliyyat sistemindən digərinə ötürülməsi üçün uyğun deyil.

Bu kitab geniş oxucu kütləsi üçün maraqlı olacaq - həm kompüter alimləri, həm də yeni başlayanlar. Bu əsəri oxumaq üçün proqramlaşdırma mütəxəssisi olmaq lazım deyil, sadəcə olaraq əsas kompüter bacarıqları. Əgər əməliyyat sisteminin qrafik interfeysinin nə olduğunu başa düşsəniz və qovluqlar və qovluqlarla işləməyi bilirsinizsə, kitab sizin üçün başa düşüləcək.

“Linux Internals” kompüter işi çox təfərrüatlıdır və 17 fəsildən ibarətdir. İlk dörd bölmədə müəllif bu sistemin ümumi anlayışları və onun iş prinsipi haqqında danışır: nüvənin və qabığın strukturu, əsas əmrlər və kataloq strukturu, fayl və disk sistemlərinin funksionallığı. Sonra bu sistemlə işə başlamaq haqqında daha çox məlumat gəlir: Linux nüvəsini necə yükləmək və istifadəçi sahəsini işə salmaq. Sonrakı fəsillər Linux iş axınları və resursdan istifadəni daha dərindən araşdırır. Bundan əlavə, Brian Ward shell script proqramlaşdırma və C dili ilə işləmək məsələlərinə toxundu.

Kitab yalnız Linux sisteminin icmalı deyil, həm də oxucuya öz istifadəçi məkanını yaratmağa və bu qabıqda işləmək bacarığına yiyələnməyə imkan verəcək praktiki tapşırıqlardan ibarətdir.

Brayan Uord materialı əlçatan dildə bir çox nümunə və izahatlarla təqdim etdi. Kitab yaxşı qurulmuşdur və istinad kitabı kimi istifadə edilə bilər. Müəllif Linux qabığının rahat və funksional olduğunu təsdiq edir və onu ehtiyaclarınıza uyğunlaşdıra biləcəyiniz imkanları açır. Müəyyən proqramların strukturu ilə maraqlananlar üçün bu kitab əla tapıntı olacaq, çünki o, kompüter proseslərinin mexanizmlərini açır və onlar arasında səbəb-nəticə əlaqəsini nümayiş etdirir.

Kitablar haqqında veb-saytımızda siz saytı qeydiyyat olmadan pulsuz yükləyə və ya iPad, iPhone, Android və Kindle üçün epub, fb2, txt, rtf, pdf formatlarında Brian Ward-un “Linux Internals” kitabını onlayn oxuya bilərsiniz. Kitab sizə çoxlu xoş anlar və oxumaqdan əsl həzz verəcəkdir. Tam versiyanı partnyorumuzdan ala bilərsiniz. Həmçinin, burada siz ədəbi aləmdən ən son xəbərləri tapa, sevdiyiniz müəlliflərin tərcümeyi-halını öyrənəcəksiniz. Başlayan yazıçılar üçün faydalı məsləhətlər və tövsiyələr, maraqlı məqalələr olan ayrı bir bölmə var, bunun sayəsində özünüz ədəbi sənətkarlıqda əlinizi sınaya bilərsiniz.

Brian Ward tərəfindən "Linux Internals" kitabını pulsuz yükləyin

Formatda fb2: Yüklə
Formatda rtf: Yüklə
Formatda epub: Yüklə
Formatda mətn:

Əlinizdə tutduğunuz kitab artıq Qərbdə bestsellerə çevrilib. Bu, Linux əməliyyat sistemi, sistem administrasiyası və aşağı səviyyəli Linux funksionallığını təmin edən dərin mexanizmlərlə işləməyin bütün incəliklərini təsvir edir. Bu kitabın səhifələrində siz Linux nüvəsi ilə işləmək üzrə əsas biliklərə və kompüter şəbəkələrinin düzgün işləmə prinsiplərinə yiyələnəcəksiniz. Kitab həmçinin qabıq skriptlərinin proqramlaşdırılması və C dili ilə işləmə məsələlərinə toxunur, informasiya təhlükəsizliyi, virtuallaşdırma və digər əvəzedilməz mövzuları əhatə edir.

Linux əməliyyat sistemində abstraksiya səviyyələri və təbəqələri

Kompüter sistemlərini komponentlərə ayırmaq üçün abstraksiyalardan istifadə onları başa düşməyi asanlaşdırır, lakin struktur yoxdursa heç bir faydası yoxdur. Komponentləri təbəqələrə və ya səviyyələrə təşkil edəcəyik. Qat və ya səviyyə, istifadəçi və aparat arasında yerləşdiyi yerə görə komponentləri təsnif etmək (və ya qruplaşdırmaq) üsuludur. Brauzerlər, oyunlar və s. üst təbəqədə yerləşir; Aşağı təbəqədə biz kompüterin yaddaşını görürük: sıfırlar və birlər. Əməliyyat sistemi bu ikisi arasında ən çox təbəqəni tutur.

Linux əməliyyat sisteminin üç əsas səviyyəsi var. Aparat bazada yerləşir. Bunlara yaddaş və yaddaşdan oxumaq və yaddaşa yazmaq üçün hesablamaları və sorğuları yerinə yetirən bir və ya bir neçə mərkəzi prosessor (CPU) daxildir. Sərt disklər və şəbəkə interfeysləri kimi cihazlar da hardware hesab olunur.

Yuxarıdakı səviyyə əməliyyat sisteminin nüvəsi olan nüvədir. Kernel kompüterin yaddaşında yerləşən və mərkəzi prosessora göstərişlər verən proqramdır. Kernel avadanlığı idarə edir və ilk növbədə aparat və hər hansı işləyən proqram arasında interfeys rolunu oynayır.

Proseslər - nüvə tərəfindən idarə olunan işləyən proqramlar - birlikdə sistemin istifadəçi sahəsi adlanan yuxarı səviyyəsini təşkil edir. “Proses”dən daha dəqiq termin, istifadəçinin həmin proseslə birbaşa əlaqədə olub-olmamasından asılı olmayaraq “istifadəçi prosesidir”. Məsələn, bütün veb serverlər istifadəçi prosesləri kimi işləyir.

Kernel prosesləri ilə istifadəçi prosesləri necə işə salınması arasında mühüm fərq var: ləpə nüvə rejimində, istifadəçi prosesləri isə istifadəçi rejimində işləyir. Kernel rejimində işləyən kodun prosessor və RAM-a məhdudiyyətsiz girişi var. Bu, güclü bir üstünlükdür, lakin təhlükəli ola bilər, çünki nüvə proseslərinin bütün sistemi asanlıqla pozmasına imkan verir. Yalnız nüvəyə daxil olan sahəyə nüvə sahəsi deyilir.

İstifadəçi rejimi, müqayisədə, yalnız məhdud (adətən kiçik) yaddaş miqdarına malikdir və yalnız prosessor üçün təhlükəsiz təlimatlara icazə verilir. İstifadəçi sahəsi istifadəçi prosesləri tərəfindən əldə edilə bilən RAM sahələrinə aiddir. Proses uğursuz olarsa, nəticələr məhdudlaşacaq və nüvə onu təmizləyə biləcək. Bu o deməkdir ki, məsələn, brauzeriniz xarab olarsa, bir neçə gündür arxa planda işlədiyiniz elmi hesablamalar pozulmayacaq.

Teorik olaraq, nəzarətsiz istifadəçi prosesi sistemə əhəmiyyətli zərər verə bilməz. Bu, həqiqətən, sizin "əhəmiyyətli zərər" hesab etdiyinizdən və prosesin xüsusi imtiyazlarından asılıdır, çünki bəzi proseslərin digərlərindən daha çox işləməsinə icazə verilir. Məsələn, bir istifadəçi sabit diskdəki məlumatları tamamilə məhv edə bilərmi? İcazələri düzgün konfiqurasiya etsəniz, ola bilər və bu, sizin üçün çox təhlükəli olacaq. Bunun qarşısını almaq üçün qorunma tədbirləri var və əksər proseslərin bu şəkildə təxribata səbəb olmasına sadəcə icazə verilməyəcək.

Əsas əmrlər və kataloq quruluşu

Bu fəsil Unix əməliyyat sisteminin əmrləri və utilitlərinə istinaddır. Yəqin ki, siz artıq bu əmrlərin əksəriyyətini bilirsiniz, lakin sizə bir az güvən vermək üçün, xüsusən də qovluq strukturuna gəldikdə. Kitab boyu istinad edəcəyim bəzi giriş materialıdır.

Niyə biz Unix komandalarından danışırıq? Bu kitab Linux-un necə işlədiyi haqda deyilmi? Bəli, əlbəttə ki, bu barədə, lakin Linux-un əsasını Unix sistemi təşkil edir.

Siz burada Unix sözünü Linux ilə müqayisədə daha tez-tez görəcəksiniz, çünki öyrəndikləriniz dərhal Solaris, BSD və Unix ilə əlaqəli digər sistemlərə tətbiq oluna bilər. Mən yalnız sizə digər sistemlərdən istifadə üçün möhkəm zəmin yaratmaq üçün deyil, həm də bu cür genişləndirmələr kifayət qədər qeyri-sabit olduğuna görə, həddən artıq çox Linux-a xas istifadəçi interfeysi genişləndirmələrini əhatə etməməyə çalışdım. Əsas əmrləri bilsəniz, yeni Linux buraxılışlarına daha tez uyğunlaşa biləcəksiniz.

Linux nüvəsi necə yüklənir?

İndi siz Linux sisteminin fiziki və məntiqi strukturunu, nüvənin nə olduğunu və proseslərlə necə işləməyi bilirsiniz. Siz nüvənin necə işə düşməsi və ya yüklənməsi, başqa sözlə, ilk istifadəçi prosesinin başladığı nöqtəyə qədər nüvənin yaddaşa necə keçməsi haqqında məlumat alacaqsınız. Yükləmə prosesinin sadələşdirilmiş diaqramı bu kimi görünür.

  1. Sistem BIOS və ya yükləyici proqram təminatı sistem yükləmə yükləyicisini yükləyir və işə salır.
  2. Sistemin yükləyicisi kernel şəklini diskdə tapır, onu yaddaşa yükləyir və işə salır.
  3. Kernel cihazları və onların sürücülərini işə salır.
  4. Kernel kök fayl sistemini quraşdırır.
  5. Kernel ID1 prosesi ilə init əmrini işlədir Bu nöqtə istifadəçi sahəsinin başlanğıcıdır.
  6. init əmri qalan sistem proseslərini işə salır.
  7. Bir nöqtədə init əmri sistemə daxil olmağa imkan verən bir prosesə başlayır. Bu, adətən sistemin yüklənməsinin sonunda və ya bir müddət əvvəl baş verir.

Burada ləpə və sistem yükləyicilərinə diqqət yetirilməklə birincidən dördünə qədər olan addımlar əhatə olunur. Fəsil 6 istifadəçi sahəsinin yüklənməsi hekayəsini davam etdirir.

Yükləmə prosesinin hər bir mərhələsini müəyyən edə bilmək, yükləmə problemlərini həll etməli olduğunuz zaman əvəzolunmaz olacaq və həmçinin sistemi bütövlükdə başa düşməyə kömək edəcək. Bununla belə, Linux-un bir çox versiyalarında defolt yükləmə rejimi tez-tez bəzi ilkin addımların müəyyən edilməsini çətinləşdirir (əgər qeyri-mümkündürsə) və siz, yəqin ki, daxil olduqdan sonra onlara baxa biləcəksiniz. in.

C Kod Kompilyator Proqramına Giriş

Unix üçün açıq olan üçüncü tərəf proqram paketlərinin əksəriyyəti sizin qura və quraşdıra biləcəyiniz mənbə kodu ilə gəlir. Bunun bir səbəbi, Unix-in (və Linuxun özünün) o qədər müxtəlif versiyaları və arxitekturasının olmasıdır ki, bütün mümkün platforma birləşmələri üçün ikili paketlər yaratmaq çətin olardı. Digər mühüm səbəb ondan ibarətdir ki, Unix icmasında mənbə kodunun geniş yayılması istifadəçiləri proqramdakı səhvləri düzəltməyə və “açıq mənbə” termininə məna verən yeni funksiyalar təqdim etməyə təşviq edir.

Linux sistemində gördüyünüz demək olar ki, hər şey nüvə və C kitabxanasından brauzerlərə qədər mənbə kodu kimi əldə edilə bilər. Hətta sistemin hissələrini mənbə kodundan (yenidən) quraşdırmaqla sistemi bütövlükdə yeniləmək və genişləndirmək mümkündür. Bununla belə, prosesdən zövq almadığınız və ya başqa səbəbiniz olmadığı halda, yəqin ki, hər şeyi mənbədən quraşdıraraq kompüterinizi təkmilləşdirməməlisiniz.

Linux adətən /bin qovluğundakı əmrlər kimi sistemin kritik hissələrini yeniləmək üçün asan yollar təqdim edir və sistemlərin son dərəcə vacib xüsusiyyətlərindən biri odur ki, onlar adətən təhlükəsizlik problemlərini çox tez həll edirlər. Bununla belə, versiyanızın sizin girişiniz olmadan sizə lazım olan hər şeyi təmin edəcəyini gözləməyin. Müəyyən paketləri özünüz quraşdırmağın bir neçə səbəbi var:

  • konfiqurasiya parametrlərinə nəzarət etmək;
  • proqramı ehtiyacınız olan yerdə quraşdırmaq üçün. Siz hətta eyni paketin bir neçə fərqli versiyasını quraşdıra bilərsiniz;
  • hansı versiyanı quraşdırdığınıza nəzarət etmək üçün. Sistem paylamaları həmişə bütün paketlərin ən son versiyasına, xüsusən də əlavə proqram təminatına (məsələn, Python kitabxanaları) aid olanlara malik olmur;
  • paketin necə işlədiyini daha yaxşı başa düşmək üçün.

Veb serverlər və proqramlar

Linux veb serverlər üçün məşhur sistemdir və Linux proqram serverləri arasında hökmranlıq edən monarx Apache HTTP Serverdir (ümumiyyətlə sadəcə Apache adlanır). Tez-tez eşitdiyiniz başqa bir veb server Tomcat-dır (həmçinin Apache tərtibatçılarının layihəsidir); Java proqramlarına dəstək verir.

Veb serverlərin özləri çox şey etmirlər: onlar faylları saxlaya bilirlər və bu da bununla bağlıdır. Apache kimi əksər veb-serverlərin əsas məqsədi veb proqramları işlətmək üçün platforma təmin etməkdir. Məsələn, Vikipediya layihəsi MediaWiki paketi üzərində qurulub, ondan öz viki layihənizi təşkil etmək üçün istifadə edə bilərsiniz. WordPress və Drupal kimi məzmun idarəetmə sistemləri sizə öz bloqlarınızı və multimedia vebsaytlarınızı yaratmağa imkan verir. Bütün bu proqramlar Linux-da xüsusilə yaxşı işləyən proqramlaşdırma dillərinə əsaslanır. Məsələn, MediaWiki, WordPress və Drupal sistemləri PHP-də yazılmışdır.

Veb proqramlarını təşkil edən tikinti blokları yüksək moduldur, buna görə də şablonlardan, çoxlu proqramlardan istifadə kimi ümumi veb çərçivələr və funksiyalar üçün imkanlar təmin edən Django, Flask və Rails kimi çərçivələrdən istifadə edərək öz genişlənmələrinizi əlavə etmək və proqramlar qurmaq asandır. istifadəçi idarəçiliyi və verilənlər bazası dəstəyi.

Pulsuz fayl yaddaşından yükləyin

Bağlantılara daxil olmaq üçün captcha həll edin!

Brayan Uordun artıq Qərbdə bestsellerə çevrilmiş kitabını nəşr etmişik. Bu, Linux əməliyyat sistemi, sistem administrasiyası və aşağı səviyyəli Linux funksionallığını təmin edən dərin mexanizmlərlə işləməyin bütün incəliklərini təsvir edir. Bu nəşrin səhifələrində siz Linux nüvəsi ilə işləmək və kompüter şəbəkələrinin düzgün işləməsi prinsipləri ilə bağlı əsas biliklərə yiyələnəcəksiniz. Kitab həmçinin qabıq skriptlərinin proqramlaşdırılması və C dili ilə işləmə məsələlərinə toxunur, informasiya təhlükəsizliyi, virtuallaşdırma və digər əvəzedilməz mövzuları əhatə edir.

Kitabı kim oxumalıdır

Linux əməliyyat sisteminin dizaynına maraq müxtəlif səbəblərdən yarana bilər. İnformasiya texnologiyaları mütəxəssisləri və Linux proqram təminatı tərtibatçıları bu kitabda əməliyyat sistemindən maksimum yararlanmaq üçün bilməli olduqları faktiki olaraq hər şeyi tapacaqlar. Sistemi tez-tez özləri üçün fərdiləşdirməli olan tədqiqatçılar və tələbələr burada hər şeyin niyə belə getdiyinə dair praktik izahat tapacaqlar. "Əyləncəlilər" də var - əyləncə, qazanc və ya hər ikisi üçün kompüterdə vaxt keçirməyi sevən istifadəçilər. Bəzi şeylərin niyə işlədiyini, digərlərinin isə işləmədiyini bilmək istəyirsiniz? Bir şeyi dəyişdirsəniz nə olacağını düşünürsünüz? Onda siz “əyləncəlilərdən” birisiniz.

Lazımi şərtlər

Bu kitabı oxumaq üçün proqramçı olmaq lazım deyil. Sizə yalnız əsas kompüter istifadəçi bacarıqları lazımdır: qrafik interfeysdə naviqasiya etməlisiniz (sistem interfeysini quraşdırarkən və konfiqurasiya edərkən), həmçinin fayl və qovluqlar (qovluqlar) haqqında anlayışınız olmalıdır. Siz həmçinin əlavə sənədlər üçün sisteminizi və onlayn axtarışa hazır olmalısınız. Yuxarıda qeyd edildiyi kimi, ən vacib şey kompüterinizi araşdırmaq istəyiniz və istəyinizdir.

Kitabı necə oxumaq olar

Texniki mövzulara gəlincə, bütün lazımi bilikləri çatdırmaq asan məsələ deyil. Bir tərəfdən oxucu lazımsız təfərrüatlara qapılır və mahiyyəti dərk etməkdə çətinlik çəkir, çünki insan şüuru sadəcə olaraq çoxlu sayda yeni anlayışları eyni anda emal edə bilmir. Digər tərəfdən, təfərrüatların olmaması oxucunun mövzu haqqında yalnız qeyri-müəyyən bir təsəvvür almasına və sonrakı materialı mənimsəməyə hazır olmamasına səbəb olur.

Bu kitabda müəllif təqdimatı sadələşdirib və materialı strukturlaşdırıb. Əksər fəsillərdə ilk növbədə gələcək iş üçün lazım olan vacib məlumatlar təqdim olunur. Fəsli oxuduqca orada əlavə materiallarla qarşılaşacaqsınız. Bu detalları dərhal dərk etmək lazımdırmı? Əksər hallarda müəllif inanmır. Gözləriniz yeni öyrəndiyiniz materialla bağlı təfərrüatların miqdarını örtməyə başlayırsa, növbəti fəsilə keçməkdən və ya fasilə verməkdən çəkinməyin. Sizi başqa vacib şeylər gözləyir.

Bu kitab necə təşkil olunub?

Kitab Linux sisteminin icmalı ilə başlayır və sonra sistemlə işə başlamaq üçün lazım olacaq alətlərlə bir sıra praktiki məşqlər təqdim edir. Sonra, sistemin işə başlaması ilə bağlı normal qaydada sistemin hər bir hissəsini təfərrüatı ilə tədqiq edəcəksiniz, avadanlığın idarə olunmasından şəbəkə konfiqurasiyasına qədər. Nəhayət, siz iş sisteminin bəzi təfərrüatlarını başa düşəcək, bəzi vacib bacarıqları öyrənəcək və proqramçıların istifadə etdiyi alətlərlə tanış olacaqsınız.

İlk fəsillərin əksəriyyəti (2-ci fəsildən başqa) əsas diqqəti Linux nüvəsinə yönəldir, lakin siz kitabda irəlilədikcə istifadəçi məkanınızda da işləyəcəksiniz. Müəllifin indi nədən danışdığını başa düşmürsənsə, narahat olmayın, izahatlar 1-ci fəsildə veriləcək. Material mümkün olduqda, heç bir sistem paylanmasına istinad etmədən təqdim olunur. Sistemin bütün variantlarını təsvir etmək darıxdırıcı olardı, ona görə də Ward iki əsas paylanma ailəsi haqqında danışmağa çalışdı: Debian (o cümlədən Ubuntu) və RHEL/Fedora/CentOS. Əsas diqqət server və iş stansiyası versiyalarına verilir. Android və OpenWRT kimi daxili sistemlər də təqdim olunur, lakin bu platformalar arasındakı fərqləri öyrənmək sizə qalıb.

İkinci nəşrdə nə yenilik var

Bu kitabın birinci nəşri əsasən Linux sistemində işin istifadəçi tərəfindən bəhs edirdi. Əsas diqqət onun hissələrinin dizaynına və onların necə işləməsinə yönəldilib. O dövrdə sistemin bir çox elementlərini düzgün quraşdırmaq və konfiqurasiya etmək çətin idi.

Proqram tərtibatçılarının və Linux paylama yaradıcılarının gərgin əməyi sayəsində bu dəyişdi. Uord yenilənmələr üçün birinci nəşrin materialına yenidən baxdı, sistemin yüklənmə prosesinə və onun aparat təminatını necə idarə etdiyinə xüsusi diqqət yetirdi və Linux nüvəsinin rolunun müzakirəsini genişləndirmək üçün köhnəlmiş materialı (məsələn, çap prosesinin ətraflı izahı kimi) sildi. hər paylama. Yəqin ki, siz ləpə ilə anladığınızdan daha tez-tez əlaqə saxlayırsınız və müəllif bunun baş verdiyi vaxtları xüsusi qeyd edib.

Uord həmçinin kitabın təqdimatını müasir oxucuların maraq və ehtiyaclarına uyğun olaraq yenidən təşkil etdi. Dəyişməyən yeganə şey kitabın uzunluğudur.

Müəllif sizə tez başlamaq üçün lazım olan məlumatları təqdim etmək istədi. Onlar mənimsəmək üçün bir az səy göstərəcəklər, lakin Uord sizi "ağır atlet" etmək niyyətində deyil ki, siz bu kitabın öhdəsindən gələ biləsiniz. Burada qeyd olunan vacib məqamları başa düşdükdən sonra təfərrüatları tapmaq və onları anlamaq sizin üçün asan olacaq.

Müəllif diqqətinizi cəlb etmək üçün ilk nəşrdə olan bəzi tarixi təfərrüatları çıxarıb. Əgər siz Linux sistemi və onun Unix sisteminin tarixi ilə əlaqəsi ilə maraqlanırsınızsa, Peter H. Salusun The Daemon, the Gnu and the Penguin (Reed Media Services, 2008) kitabına baxın - bu, bizə proqram təminatından necə istifadə etdiyini izah edir.

Kitab haqqında ətraflı məlumatı buradan əldə etmək olar

Brian Ward

Linux Daxili

Tərcüməçi S. Çernikov

Texniki redaktor N. Qrinçik

Ədəbi redaktor O. Andriyeviç

Rəssamlar A. Bartseviç, V. Şimkeviç

Korrektorlar T. Kuryanoviç, E. Pavloviç

Layout A. Bartseviç

Brian Ward

Linux Daxili. - Sankt-Peterburq: Peter, 2015.

ISBN 978-5-496-01952-1

© MMC "Piter" nəşriyyatı, 2015

Bütün hüquqlar qorunur. Bu kitabın heç bir hissəsi müəllif hüquqları sahiblərinin yazılı icazəsi olmadan hər hansı formada təkrar istehsal edilə bilməz.

Ön söz

Mən bu kitabı müvəffəqiyyətli və səmərəli olmaq üçün kompüter proqramınızın necə işlədiyini və necə işlədiyini başa düşməli olduğunuz inancı ilə yazdım.

Linux əməliyyat sistemi öyrənmək üçün əladır, çünki sistem konfiqurasiyasının əksəriyyəti oxumaq üçün kifayət qədər asan olan sadə fayllarda saxlanılır. Sadəcə hər bir hissənin nəyə görə məsuliyyət daşıdığını anlamalı və sonra hər şeyi bir yerə toplamalısınız. Bu kitabın həsr olunduğu budur.

Linux əməliyyat sisteminin dizaynına maraq müxtəlif səbəblərdən yarana bilər. İnformasiya texnologiyaları mütəxəssisləri və Linux proqram təminatı tərtibatçıları bu kitabda əməliyyat sistemindən maksimum yararlanmaq üçün bilməli olduqları faktiki olaraq hər şeyi tapacaqlar. Sistemi tez-tez özləri üçün fərdiləşdirməli olan tədqiqatçılar və tələbələr burada hər şeyin niyə belə getdiyinə dair praktik izahat tapacaqlar. "Əyləncəlilər" də var - əyləncə, qazanc və ya hər ikisi üçün kompüterdə vaxt keçirməyi sevən istifadəçilər.

Bəzi şeylərin niyə işlədiyini, digərlərinin isə işləmədiyini bilmək istəyirsiniz? Bir şeyi dəyişdirsəniz nə olacağını düşünürsünüz? Onda siz “əyləncəlilərdən” birisiniz.

Lazımi şərtlər

Bu kitabı oxumaq üçün proqramçı olmaq lazım deyil. Sizə yalnız əsas kompüter istifadəçi bacarıqları lazımdır: qrafik interfeysdə naviqasiya etməlisiniz (sistem interfeysini quraşdırarkən və konfiqurasiya edərkən), həmçinin fayl və qovluqlar (qovluqlar) haqqında anlayışınız olmalıdır. Siz həmçinin əlavə sənədlər üçün sisteminizi və onlayn axtarışa hazır olmalısınız. Yuxarıda qeyd edildiyi kimi, ən vacib şey kompüterinizi araşdırmaq istəyiniz və istəyinizdir.

Texniki fənlərə gəlincə, bütün lazımi bilikləri çatdırmaq asan məsələ deyil. Bir tərəfdən oxucu lazımsız təfərrüatlara qapılır və mahiyyəti dərk etməkdə çətinlik çəkir, çünki insan şüuru sadəcə olaraq çoxlu sayda yeni anlayışları eyni anda emal edə bilmir. Digər tərəfdən, təfərrüatların olmaması oxucunun mövzu haqqında yalnız qeyri-müəyyən bir təsəvvür almasına və sonrakı materialı mənimsəməyə hazır olmamasına səbəb olur.

Bu kitabda mən təqdimatı sadələşdirdim və materialı strukturlaşdırdım. Əksər fəsillərdə ilk növbədə gələcək iş üçün lazım olan vacib məlumatlar təqdim olunur. Fəsli oxuduqca orada əlavə materiallarla qarşılaşacaqsınız. Bu detalları dərhal dərk etmək lazımdırmı? Əksər hallarda məncə yox. Gözləriniz yeni öyrəndiyiniz materialla bağlı təfərrüatların miqdarını örtməyə başlayırsa, növbəti fəsilə keçməkdən və ya fasilə verməkdən çəkinməyin. Sizi başqa vacib şeylər gözləyir.

Praktik yanaşma

İşləmək üçün sizə Linux əməliyyat sistemi olan bir kompüter lazımdır. Siz virtual quraşdırmaya üstünlük verə bilərsiniz - mən bu kitabdakı materialların əksəriyyətini yoxlamaq üçün VirtualBox-dan istifadə etdim. Çox vaxt standart istifadəçi hesabından istifadə etməli olsanız da, super istifadəçi (kök) girişiniz olmalıdır. Siz əsasən komanda xəttində, terminal pəncərəsində və ya uzaq sessiyada işləyəcəksiniz. Bu mühitdə tez-tez işləməmisinizsə, 2-ci Fəsildə bu barədə daha çox məlumat əldə edəcəksiniz.

Adətən əmrlər belə görünəcək:

Qalın hərflərlə vurğulanan mətni daxil edin; Maşının istehsal edəcəyi cavab mətni normal şriftlə göstərilir. $ simvolu adi hesabı olan istifadəçi üçün sorğudur. Əgər sorğuda # simvolu görürsünüzsə, siz super istifadəçi kimi daxil olmalısınız (bu barədə ətraflı 2-ci Fəsildə).

Bu kitab necə təşkil olunub?

Kitab Linux sisteminin icmalı ilə başlayır və sonra sistemlə işə başlamaq üçün lazım olacaq alətlərlə bir sıra praktiki məşqlər təqdim edir. Sonra, sistemin işə başlaması ilə bağlı normal qaydada sistemin hər bir hissəsini təfərrüatı ilə tədqiq edəcəksiniz, avadanlığın idarə olunmasından şəbəkə konfiqurasiyasına qədər. Nəhayət, siz iş sisteminin bəzi təfərrüatlarını başa düşəcək, bəzi vacib bacarıqları öyrənəcək və proqramçıların istifadə etdiyi alətlərlə tanış olacaqsınız.

İlk fəsillərin əksəriyyəti (2-ci fəsildən başqa) əsas diqqəti Linux nüvəsinə yönəldir, lakin siz kitabda irəlilədikcə istifadəçi məkanınızda da işləyəcəksiniz. Əgər indi nə danışdığımı başa düşmürsənsə, narahat olmayın, izahatlar 1-ci fəsildə veriləcək.

Material hər hansı sistem paylanmasına istinad etmədən mümkün olduqda təqdim olunur. Bütün sistem variantlarını təsvir etmək darıxdırıcı olardı, ona görə də mən iki əsas paylama ailəsi haqqında danışmağa çalışdım: Debian (o cümlədən Ubuntu) və RHEL/Fedora/CentOS. Əsas diqqət server və iş stansiyası versiyalarına verilir. Android və OpenWRT kimi daxili sistemlər də təqdim olunur, lakin bu platformalar arasındakı fərqləri öyrənmək sizə qalıb.

İkinci nəşrdə nə yenilik var

Bu kitabın birinci nəşri əsasən Linux sistemində işin istifadəçi tərəfindən bəhs edirdi. Əsas diqqət onun hissələrinin dizaynına və onların necə işləməsinə yönəldilib. O dövrdə sistemin bir çox elementlərini düzgün quraşdırmaq və konfiqurasiya etmək çətin idi.

Proqram tərtibatçılarının və Linux paylama yaradıcılarının gərgin əməyi sayəsində bu dəyişdi. Mən yenilənmələr üçün birinci nəşrin materialını nəzərdən keçirdim, sistemin yüklənmə prosesinə və onun aparat təminatını necə idarə etdiyinə xüsusi diqqət yetirdim və Linux-un rolu ilə bağlı müzakirələri genişləndirmək üçün köhnəlmiş materialı (məsələn, çap prosesinin ətraflı izahı kimi) sildim. hər paylamada nüvə. Siz yəqin ki, ləpə ilə təsəvvür etdiyinizdən daha tez-tez əlaqə saxlayırsınız və mən bunun baş verdiyi vaxtları xüsusi qeyd etmişəm.

Kitabın təqdimatını da bugünkü oxucuların maraq və ehtiyaclarına uyğun olaraq yenidən sıralamışam. Dəyişməyən yeganə şey kitabın uzunluğudur.

Tez başlamağınız üçün sizə lazım olan məlumatları təqdim etmək istədim. Onlar mənimsəmək üçün bir az səy göstərəcəklər, amma mən səni “ağır atlet” etmək fikrində deyiləm ki, bu kitabın öhdəsindən gələ biləsən. Burada qeyd olunan vacib məqamları başa düşdükdən sonra təfərrüatları tapmaq və onları anlamaq sizin üçün asan olacaq.

İlk nəşrdə olan bəzi tarixi təfərrüatları, əsasən diqqətinizi cəlb etmək üçün sildim. Əgər siz Linux sistemi və onun Unix sisteminin tarixi ilə əlaqəsi ilə maraqlanırsınızsa, Peter H. Salusun kitabına baxın. Daemon, Gnu və Pinqvin(Reed Media Services, 2008) - İstifadə etdiyimiz proqram təminatının necə inkişaf etdiyindən bəhs edir.

Cari səhifə: 1 (kitabın cəmi 30 səhifəsi var) [mövcud oxu keçidi: 17 səhifə]

Brian Ward

Linux Daxili

Tərcüməçi S. Çernikov

Texniki redaktor N. Qrinçik

Ədəbi redaktor O. Andriyeviç

Rəssamlar A. Bartseviç, V. Şimkeviç

Korrektorlar T. Kuryanoviç, E. Pavloviç

Layout A. Bartseviç

Brian Ward

Linux Daxili. – Sankt-Peterburq: Peter, 2015.

ISBN 978-5-496-01952-1

© MMC "Piter" nəşriyyatı, 2015

Bütün hüquqlar qorunur. Bu kitabın heç bir hissəsi müəllif hüquqları sahiblərinin yazılı icazəsi olmadan hər hansı formada təkrar istehsal edilə bilməz.

Ön söz

Mən bu kitabı müvəffəqiyyətli və səmərəli olmaq üçün kompüter proqramınızın necə işlədiyini və necə işlədiyini başa düşməli olduğunuz inancı ilə yazdım.

Linux əməliyyat sistemi öyrənmək üçün əladır, çünki sistem konfiqurasiyasının əksəriyyəti oxumaq üçün kifayət qədər asan olan sadə fayllarda saxlanılır. Sadəcə hər bir hissənin nəyə görə məsuliyyət daşıdığını anlamalı və sonra hər şeyi bir yerə toplamalısınız. Bu kitabın həsr olunduğu budur.

Linux əməliyyat sisteminin dizaynına maraq müxtəlif səbəblərdən yarana bilər. İnformasiya texnologiyaları mütəxəssisləri və Linux proqram təminatı tərtibatçıları bu kitabda əməliyyat sistemindən maksimum yararlanmaq üçün bilməli olduqları faktiki olaraq hər şeyi tapacaqlar. Sistemi tez-tez özləri üçün fərdiləşdirməli olan tədqiqatçılar və tələbələr burada hər şeyin niyə belə getdiyinə dair praktik izahat tapacaqlar. "Əyləncəlilər" də var - əyləncə, qazanc və ya hər ikisi üçün kompüterdə vaxt keçirməyi sevən istifadəçilər.

Bəzi şeylərin niyə işlədiyini, digərlərinin isə işləmədiyini bilmək istəyirsiniz? Bir şeyi dəyişdirsəniz nə olacağını düşünürsünüz? Onda siz “əyləncəlilərdən” birisiniz.

Lazımi şərtlər

Bu kitabı oxumaq üçün proqramçı olmaq lazım deyil. Sizə yalnız əsas kompüter istifadəçi bacarıqları lazımdır: qrafik interfeysdə naviqasiya etməlisiniz (sistem interfeysini quraşdırarkən və konfiqurasiya edərkən), həmçinin fayl və qovluqlar (qovluqlar) haqqında anlayışınız olmalıdır. Siz həmçinin əlavə sənədlər üçün sisteminizi və onlayn axtarışa hazır olmalısınız. Yuxarıda qeyd edildiyi kimi, ən vacib şey kompüterinizi araşdırmaq istəyiniz və istəyinizdir.

Texniki fənlərə gəlincə, bütün lazımi bilikləri çatdırmaq asan məsələ deyil. Bir tərəfdən oxucu lazımsız təfərrüatlara qapılır və mahiyyəti dərk etməkdə çətinlik çəkir, çünki insan şüuru sadəcə olaraq çoxlu sayda yeni anlayışları eyni anda emal edə bilmir. Digər tərəfdən, təfərrüatların olmaması oxucunun mövzu haqqında yalnız qeyri-müəyyən bir təsəvvür almasına və sonrakı materialı mənimsəməyə hazır olmamasına səbəb olur.

Bu kitabda mən təqdimatı sadələşdirdim və materialı strukturlaşdırdım. Əksər fəsillərdə ilk növbədə gələcək iş üçün lazım olan vacib məlumatlar təqdim olunur. Fəsli oxuduqca orada əlavə materiallarla qarşılaşacaqsınız. Bu detalları dərhal dərk etmək lazımdırmı? Əksər hallarda məncə yox. Gözləriniz yeni öyrəndiyiniz materialla bağlı təfərrüatların miqdarını örtməyə başlayırsa, növbəti fəsilə keçməkdən və ya fasilə verməkdən çəkinməyin. Sizi başqa vacib şeylər gözləyir.

Praktik yanaşma

İşləmək üçün sizə Linux əməliyyat sistemi olan bir kompüter lazımdır. Siz virtual quraşdırmaya üstünlük verə bilərsiniz - mən bu kitabdakı materialların əksəriyyətini yoxlamaq üçün VirtualBox-dan istifadə etdim. Çox vaxt standart istifadəçi hesabından istifadə etməli olsanız da, super istifadəçi (kök) girişiniz olmalıdır. Siz əsasən komanda xəttində, terminal pəncərəsində və ya uzaq sessiyada işləyəcəksiniz. Bu mühitdə tez-tez işləməmisinizsə, 2-ci Fəsildə bu barədə daha çox məlumat əldə edəcəksiniz.

Adətən əmrlər belə görünəcək:

Qalın hərflərlə vurğulanan mətni daxil edin; Maşının istehsal edəcəyi cavab mətni normal şriftlə göstərilir. $ simvolu adi hesabı olan istifadəçi üçün sorğudur. Əgər sorğuda # simvolunu görürsünüzsə, siz super istifadəçi hesabından istifadə etməlisiniz (bu barədə ətraflı 2-ci Fəsildə).

Bu kitab necə təşkil olunub?

Kitab Linux sisteminin icmalı ilə başlayır və sonra sistemlə işə başlamaq üçün lazım olacaq alətlərlə bir sıra praktiki məşqlər təqdim edir. Sonra, sistemin işə başlaması ilə bağlı normal qaydada sistemin hər bir hissəsini təfərrüatı ilə tədqiq edəcəksiniz, avadanlığın idarə olunmasından şəbəkə konfiqurasiyasına qədər. Nəhayət, siz iş sisteminin bəzi təfərrüatlarını başa düşəcək, bəzi vacib bacarıqları öyrənəcək və proqramçıların istifadə etdiyi alətlərlə tanış olacaqsınız.

İlk fəsillərin əksəriyyəti (2-ci fəsildən başqa) əsas diqqəti Linux nüvəsinə yönəldir, lakin siz kitabda irəlilədikcə istifadəçi məkanınızda da işləyəcəksiniz. Əgər indi nə danışdığımı başa düşmürsənsə, narahat olmayın, izahatlar 1-ci fəsildə veriləcək.

Material hər hansı sistem paylanmasına istinad etmədən mümkün olduqda təqdim olunur. Bütün sistem variantlarını təsvir etmək darıxdırıcı olardı, ona görə də mən iki əsas paylama ailəsi haqqında danışmağa çalışdım: Debian (o cümlədən Ubuntu) və RHEL/Fedora/CentOS. Əsas diqqət server və iş stansiyası versiyalarına verilir. Android və OpenWRT kimi daxili sistemlər də təqdim olunur, lakin bu platformalar arasındakı fərqləri öyrənmək sizə qalıb.

İkinci nəşrdə nə yenilik var

Bu kitabın birinci nəşri əsasən Linux sistemində işin istifadəçi tərəfindən bəhs edirdi. Əsas diqqət onun hissələrinin dizaynına və onların necə işləməsinə yönəldilib. O dövrdə sistemin bir çox elementlərini düzgün quraşdırmaq və konfiqurasiya etmək çətin idi.

Proqram tərtibatçılarının və Linux paylama yaradıcılarının gərgin əməyi sayəsində bu dəyişdi. Mən yenilənmələr üçün birinci nəşrin materialını nəzərdən keçirdim, sistemin yüklənmə prosesinə və onun aparat təminatını necə idarə etdiyinə xüsusi diqqət yetirdim və Linux-un rolu ilə bağlı müzakirələri genişləndirmək üçün köhnəlmiş materialı (məsələn, çap prosesinin ətraflı izahı kimi) sildim. hər paylamada nüvə. Siz yəqin ki, ləpə ilə təsəvvür etdiyinizdən daha tez-tez əlaqə saxlayırsınız və mən bunun baş verdiyi vaxtları xüsusi qeyd etmişəm.

Kitabın təqdimatını da bugünkü oxucuların maraq və ehtiyaclarına uyğun olaraq yenidən sıralamışam. Dəyişməyən yeganə şey kitabın uzunluğudur.

Tez başlamağınız üçün sizə lazım olan məlumatları təqdim etmək istədim. Onlar mənimsəmək üçün bir az səy göstərəcəklər, amma mən səni “ağır atlet” etmək fikrində deyiləm ki, bu kitabın öhdəsindən gələ biləsən. Burada qeyd olunan vacib məqamları başa düşdükdən sonra təfərrüatları tapmaq və onları anlamaq sizin üçün asan olacaq.

İlk nəşrdə olan bəzi tarixi təfərrüatları, əsasən diqqətinizi cəlb etmək üçün sildim. Əgər siz Linux sistemi və onun Unix sisteminin tarixi ilə əlaqəsi ilə maraqlanırsınızsa, Peter H. Salusun kitabına baxın. Daemon, Gnu və Pinqvin(Reed Media Services, 2008) - İstifadə etdiyimiz proqram təminatının necə inkişaf etdiyindən bəhs edir.

Terminologiyaya dair qeyd

Hazırda əməliyyat sistemlərinin bəzi elementlərinin adları ilə bağlı mübahisələr gedir. Hətta Linux sisteminin adı da iştirak edir - onu Linux və ya GNU/Linux adlandırmaq lazımdırmı (GNU layihəsinin bəzi elementlərinin istifadəsini əks etdirmək üçün)? Kitabda mümkün olan ən ümumi və ən az əlverişsiz adlardan istifadə etməyə çalışdım.

Təşəkkürlər

Birinci nəşrdə mənə kömək edən hər kəsə təşəkkür edirəm. Bunlar Ceyms Dunkan, Duqlas N.Arnold, Bill Fenner, Ken Hornşteyn, Skott Dikson, Den Erlix, Feliks Li Feliks Li, Skott Şvarts, Qriqori P. Smit, Den Sulli, Karol Jurado və Cina Stildir. Bu nəşr üçün xüsusilə Jordi Gutiérrez Hermoso-ya əla texniki baxışına görə təşəkkür edirəm; onun təklif və açıqlamaları əvəzsizdir. Həmçinin Dominik Poulain və Donald Karona işin ilkin mərhələlərində tez cavab verdikləri üçün və bu kitabı yenidən nəzərdən keçirmək üçün mənimlə səbirlə işləyən Hsinju Hsieh-ə təşəkkür edirəm.

Mən həmçinin inkişaf redaktorum Bill Pollok və istehsal redaktoru Laurel Chun-a təşəkkür etmək istərdim. Serena Yang, Alison Law və No Starch Press-dəki hər kəs, həmişə olduğu kimi, kitabın bu yeni nəşrinin hazırlanmasında çox gözəl iş görüblər.

Nəşriyyatdan

Şərh, təklif və suallarınızı e-poçt vasitəsilə göndərin [email protected](Peter nəşriyyatı, kompüter nəşri).

Fikrinizi eşitmək istərdik!

Nəşriyyatın http://www.piter.com saytında siz kitablarımız haqqında ətraflı məlumat tapa bilərsiniz.

1. Böyük şəkil

İlk baxışdan Linux kimi müasir əməliyyat sistemi kifayət qədər mürəkkəbdir və eyni vaxtda fəaliyyət göstərən və bir-biri ilə qarşılıqlı əlaqədə olan çoxlu sayda hissələrdən ibarətdir. Beləliklə, veb-server verilənlər bazası serveri ilə əlaqə qura bilir ki, bu da öz növbəsində bir çox başqa proqramların istifadə etdiyi ortaq kitabxanadan istifadə edir. Hamısı necə işləyir?

Əməliyyat sisteminin strukturunu istifadə edərək ən effektiv şəkildə başa düşə bilərsiniz abstraksiyalar təfərrüatların çoxuna məhəl qoymadığınızı söyləməyin səliqəli yoludur. Məsələn, bir avtomobil idarə edərkən, adətən, mühərriki avtomobilin içərisində saxlayan montaj boltları və ya yolu asfaltlayan və ona qulluq edən insanlar kimi detallar barədə düşünməyə ehtiyac yoxdur. Əgər siz avtomobildə sərnişin kimi gəzirsinizsə, bilmək lazımdır ki, avtomobil nə üçün nəzərdə tutulub (bu sizi harasa aparır) və ondan istifadə üçün bəzi əsas qaydalar (qapı və təhlükəsizlik kəmərini necə idarə etmək lazımdır).

Əgər avtomobil idarə edirsinizsə, daha çox bilmək lazımdır. Siz idarəetmə vasitələri (sükan çarxı və qaz pedalı kimi) və nasazlıq zamanı nə etməli olduğunuzu öyrənməlisiniz.

Fərz edək ki, avtomobil cəld hərəkət edir. “Yolda sürən avtomobil” anlayışını üç hissəyə bölmək olar: avtomobil, yol və sürücülük tərziniz. Bu, səbəbi müəyyən etməyə kömək edəcək. Yol kələ-kötürdürsə, nə maşını, nə də özünüzü günahlandırmağa ehtiyac yoxdur. Bunun əvəzinə yolun niyə xarab olduğunu və ya yol yenidirsə, inşaatçıların niyə belə dəhşətli iş gördüyünü anlamağa çalışa bilərsiniz.

Proqram tərtibatçıları əməliyyat sistemləri və proqramlar yaradarkən abstraksiyadan alət kimi istifadə edirlər. O cümlədən kompüter proqram təminatının mücərrəd sahələri üçün bir çox terminlər var altsistem, modulplastik torba. Bununla belə, bu fəsildə biz termindən istifadə edəcəyik komponentçünki sadədir. Proqram komponenti yaradarkən tərtibatçılar adətən digər komponentlərin daxili strukturuna çox əhəmiyyət vermirlər, lakin onlar hansı komponentlərdən istifadə edə biləcəkləri və onlardan necə istifadə edə biləcəkləri barədə düşünməlidirlər.

Bu fəsildə Linux sistemini təşkil edən komponentlərin ümumi icmalı təqdim olunur. Onların hər birində daxili quruluşa aid inanılmaz miqdarda texniki detallar olsa da, biz onlara diqqət yetirməyəcəyik və bu komponentlərin bütövlükdə sistemə münasibətdə nə etdiyinə diqqət yetirəcəyik.

1.1. Linux əməliyyat sistemində abstraksiya səviyyələri və təbəqələri

Kompüter sistemlərini komponentlərə ayırmaq üçün abstraksiyalardan istifadə onları başa düşməyi asanlaşdırır, lakin struktur yoxdursa heç bir faydası yoxdur. Komponentləri təbəqələrə və ya səviyyələrə təşkil edəcəyik. qat, və ya səviyyə, istifadəçi və aparat arasında yerləşdiyi yerə görə komponentləri təsnif etmək (və ya qruplaşdırmaq) üsuludur. Brauzerlər, oyunlar və s. üst təbəqədə yerləşir; Aşağı təbəqədə biz kompüterin yaddaşını görürük: sıfırlar və birlər. Əməliyyat sistemi bu ikisi arasında ən çox təbəqəni tutur.

Linux əməliyyat sistemində üç əsas səviyyə var. Şəkildə. Şəkil 1.1 səviyyələri, eləcə də onların hər birinin içindəki bəzi komponentləri göstərir. Bazada yerləşir aparat. Bunlara yaddaş və yaddaşdan oxumaq və yaddaşa yazmaq üçün hesablamaları və sorğuları yerinə yetirən bir və ya bir neçə mərkəzi prosessor (CPU) daxildir. Sərt disklər və şəbəkə interfeysləri kimi cihazlar da hardware hesab olunur.

Yuxarıdakı səviyyə yerləşir əsas, əməliyyat sisteminin əsasını təşkil edir. Kernel kompüterin yaddaşında yerləşən və mərkəzi prosessora göstərişlər verən proqramdır. Kernel avadanlığı idarə edir və ilk növbədə aparat və hər hansı işləyən proqram arasında interfeys rolunu oynayır.

Proseslər - nüvə tərəfindən idarə olunan işləyən proqramlar - birlikdə sistemin ən yüksək səviyyəsini təşkil edir. istifadəçi sahəsi.

Qeyd

“Proses”dən daha dəqiq termin, istifadəçinin həmin proseslə birbaşa əlaqədə olub-olmamasından asılı olmayaraq “istifadəçi prosesidir”. Məsələn, bütün veb serverlər istifadəçi prosesləri kimi işləyir.

Nüvə prosesləri ilə istifadəçi proseslərinin necə işə salınması arasında mühüm fərq var: nüvənin işə salınması nüvə rejimi, və istifadəçi prosesləri - daxil istifadəçi rejimi. Kernel rejimində işləyən kodun prosessor və RAM-a məhdudiyyətsiz girişi var. Bu, güclü bir üstünlükdür, lakin təhlükəli ola bilər, çünki nüvə proseslərinin bütün sistemi asanlıqla pozmasına imkan verir. Yalnız nüvəyə daxil olan sahə adlanır əsas boşluq.

İstifadəçi rejimində, müqayisə üçün, yalnız məhdud (adətən kiçik) yaddaş miqdarı mövcuddur və yalnız təhlükəsiz prosessor təlimatlarına icazə verilir. İstifadəçi sahəsi istifadəçi prosesləri tərəfindən əldə edilə bilən RAM sahələridir. Proses uğursuz olarsa, nəticələr məhdudlaşacaq və nüvə onu təmizləyə biləcək. Bu o deməkdir ki, məsələn, brauzeriniz xarab olarsa, bir neçə gündür arxa planda işlədiyiniz elmi hesablamalar pozulmayacaq.

düyü. 1.1. Linux əməliyyat sisteminin ümumi strukturu

Teorik olaraq, nəzarətsiz istifadəçi prosesi sistemə əhəmiyyətli zərər verə bilməz. Bu, həqiqətən, sizin "əhəmiyyətli zərər" hesab etdiyinizdən və prosesin xüsusi imtiyazlarından asılıdır, çünki bəzi proseslərin digərlərindən daha çox işləməsinə icazə verilir. Məsələn, bir istifadəçi sabit diskdəki məlumatları tamamilə məhv edə bilərmi? İcazələri düzgün konfiqurasiya etsəniz, ola bilər və bu, sizin üçün çox təhlükəli olacaq. Bunun qarşısını almaq üçün qorunma tədbirləri var və əksər proseslərin bu şəkildə təxribata səbəb olmasına sadəcə icazə verilməyəcək.

1.2. Aparat: RAM

Bütün kompüter avadanlıqlarından ram bəlkə də ən önəmlisidir. Ən xam formada RAM sadəcə birlərin və sıfırların sətirlərinin böyük bir anbarıdır. Hər bir sıfır və ya bir deyilir az. Çalışan nüvə və proseslərin yerləşdiyi yer budur - onlar sadəcə böyük bit kolleksiyalarıdır. Periferik cihazlardan gələn bütün giriş və çıxış məlumatları həm də bit dəstləri şəklində RAM-dan keçir. CPU sadəcə yaddaşda işləyir: ondan təlimatları və məlumatları oxuyur və sonra məlumatları yenidən yaddaşa yazır.

Terminlə tez-tez rastlaşacaqsınız "dövlət" yaddaşa, proseslərə, nüvəyə və kompüter sisteminin digər hissələrinə aid olacaq. Düzgün desək, vəziyyət bitlərin hər hansı bir nizamlı düzülüşüdür. Məsələn, yaddaşda dörd bit varsa, o zaman 0110, 0001 və 1011 ardıcıllığı üç fərqli vəziyyəti təmsil edir.

Bir prosesin asanlıqla milyonlarla bit yaddaşdan ibarət ola biləcəyini düşünsəniz, vəziyyətlər haqqında danışarkən mücərrəd terminlərdən istifadə etmək çox vaxt daha asan olur. Bitlərdən istifadə edərək vəziyyəti təsvir etmək əvəzinə, hazırda baş verənlər və ya baş verənlər haqqında danışırsınız. Məsələn, "bu proses daxiletməni gözləyir" və ya "proses başlanğıc prosedurunun ikinci addımını yerinə yetirir" deyə bilərsiniz.

QEYD

Vəziyyətlər adətən faktiki bitlərdən daha çox mücərrəd anlayışlardan istifadə edilməklə təsvir edildiyi üçün "şəkil" termini bitlərin hər hansı fiziki düzülməsinə istinad etmək üçün istifadə olunur.

1.3. Əsas

Demək olar ki, nüvənin etdiyi hər şey RAM ilə bağlıdır. Nüvənin işlərindən biri yaddaşı bir neçə alt bölməyə paylamaqdır, bundan sonra nüvə bu alt bölmələrin vəziyyəti haqqında məlumatları ardıcıl olaraq daim saxlamalıdır. Hər bir proses ona ayrılmış yaddaş sahəsindən istifadə edir və nüvə proseslərin öz sahələrində qalmasını təmin etməlidir.

Kernel sistemin dörd əsas sahəsində tapşırıqların idarə edilməsinə cavabdehdir.

Proseslər. Nüvə hansı proseslərin mərkəzi prosessora daxil olmasına icazə verildiyinə görə məsuliyyət daşıyır.

Yaddaş. Nüvə bütün yaddaşın vəziyyətini izləməlidir: hazırda hansı hissə müəyyən proseslərə ayrılır, proseslər arasında paylaşmaq üçün nələr ayrıla bilər və hansı hissə pulsuzdur.

Cihaz sürücüləri. Kernel hardware (məsələn, sabit disk) və proseslər arasında interfeys rolunu oynayır. Tipik olaraq, aparat idarəetməsi nüvə tərəfindən həyata keçirilir.

Sistem zəngləridəstək. Proseslər nüvə ilə əlaqə saxlamaq üçün adətən sistem zənglərindən istifadə edir.

İndi bu sahələrin hər birinə qısaca nəzər salacağıq.

QEYD

Nüvənin necə işləməsi haqqında daha çox məlumat üçün Abraham Silberschatz, Peter B. Galvin və Greg Gagne (Wiley, 2012) tərəfindən Operating System Concepts, 9-cu Nəşr və Andrew S. Tanenbaum və Herbert tərəfindən hazırlanmış Müasir Əməliyyat Sistemlərinə baxın. Bos (Prentice Hall, 2014).

1.3.1. Prosesin idarə edilməsi

Prosesin idarə edilməsi proseslərin başlamasını, dayandırılmasını, davam etdirilməsini və dayandırılmasını təsvir edir. Proseslərin başlaması və dayandırılmasının arxasında duran anlayışlar olduqca sadədir. Normal əməliyyat zamanı prosesin CPU-dan necə istifadə etdiyini təsvir etmək bir az daha çətindir.

İstənilən müasir əməliyyat sistemində bir neçə proses “eyni anda” fəaliyyət göstərir. Məsələn, kompüterinizdə bir brauzer işə sala və eyni zamanda elektron cədvəl aça bilərsiniz. Bununla belə, işlər göründüyü kimi deyil: bu proqramlara cavabdeh olan proseslər adətən başlamır Vdəqiqlik zamanın bir nöqtəsində.

Bir mərkəzi prosessoru olan bir sistemi nəzərdən keçirək. Bir neçə proses ondan istifadə edə bilər, lakin istənilən vaxt prosessordan yalnız bir proses istifadə edə bilər. Praktikada hər bir proses bir saniyənin kiçik bir hissəsi üçün CPU-dan istifadə edir və sonra fasilə verir; bundan sonra, başqa bir proses saniyənin kiçik bir hissəsi üçün prosessordan istifadə edir; sonra üçüncü prosesin növbəsi gəlir və s. Prosesin prosessorun idarəetməsini başqa prosesə ötürdüyü hərəkətə deyilir. kontekstdə keçid.

Hər zaman zaman kvantı– prosesə əhəmiyyətli hesablamalar aparmaq üçün kifayət qədər vaxt verir (və təbii ki, proses çox vaxt cari tapşırığını bir kvant daxilində tamamlayır). Zaman dilimləri çox kiçik olduğundan insan onları dərk etmir və ona elə gəlir ki, sistemdə eyni vaxtda bir neçə proses gedir (bu ehtimal belə tanınır. "çox tapşırıqlı").

Kernel kontekstlərin dəyişdirilməsinə cavabdehdir. Bunun necə işlədiyini başa düşmək üçün bir prosesin istifadəçi rejimində işlədiyi bir vəziyyəti təsəvvür edin, lakin onun vaxt dilimi tükənir. Bu baş verir.

1. Prosessor (real aparat) daxili taymerdən istifadə edərək cari prosesi dayandırır, nüvə rejiminə keçir və idarəetməni ona qaytarır.

2. Kernel prosessorun və yaddaşın cari vəziyyətini qeyd edir ki, bu da sadəcə dayandırılmış prosesi davam etdirmək üçün lazım olacaq.

3. Kernel əvvəlki zaman dilimi zamanı meydana çıxa bilən hər hansı tapşırıqları yerinə yetirir (məsələn, məlumatların toplanması və ya I/O əməliyyatları).

4. Kernel artıq başqa bir prosesə başlamağa hazırdır. İşləməyə hazır olan proseslərin siyahısını təhlil edir və onlardan birini seçir.

5. Kernel yaddaşı yeni proses üçün hazırlayır və sonra prosessoru hazırlayır.

6. Kernel prosessora yeni proses üçün zaman diliminin nə qədər davam edəcəyini bildirir.

7. Kernel prosessoru istifadəçi rejiminə keçir və idarəetməni prosessora ötürür.

Kontekst dəyişikliyi mühüm suala cavab verir: Nə vaxt kernel işləyir? Cavab belədir: nüvə işləyir arasında kontekst keçidi baş verdikdə proseslər üçün ayrılan vaxt dilimləri.

Bir neçə prosessoru olan sistemdə işlər bir az daha mürəkkəbdir, çünki nüvənin bəzi prosesin başqa prosessorda işləməsinə icazə vermək üçün cari prosessoru idarə etməyi dayandırmasına ehtiyac yoxdur. Bununla belə, bütün mövcud prosessorlardan maksimum yararlanmaq üçün nüvə hələ də bunu edir (və əlavə prosessor vaxtı qazanmaq üçün müəyyən fəndlərdən istifadə edə bilər).

1.3.2. Yaddaşın idarə edilməsi

Kernel kontekst keçidləri zamanı yaddaşı idarə etməli olduğu üçün bu mürəkkəb funksiya ilə təchiz edilmişdir. Nüvənin işləməsi mürəkkəbdir, çünki aşağıdakı şərtlər nəzərə alınmalıdır:

Kernelin istifadəçi prosesləri tərəfindən əldə edilə bilməyən öz yaddaş sahəsi olmalıdır;

Hər bir istifadəçi prosesinə öz yaddaş sahəsi lazımdır;

İstənilən istifadəçi prosesi başqa proses üçün ayrılmış yaddaş sahəsinə çıxışı olmamalıdır;

İstifadəçi prosesləri yaddaşı paylaşa bilər;

İstifadəçi prosesləri üçün bəzi yaddaş yalnız oxumaq üçün ola bilər;

Sistem diskdən köməkçi cihaz kimi istifadə etməklə mövcud olandan daha çox yaddaş istifadə edə bilər.

Nüvənin köməkçisi var. Müasir prosessorlar ehtiva edir yaddaş idarəetmə modulu(MMU) adlı yaddaşa giriş dövrəsini aktivləşdirir "virtual yaddaş". Virtual yaddaşdan istifadə edərkən proses hardwaredakı fiziki yerindən yaddaşa birbaşa daxil olmur. Bunun əvəzinə, nüvə hər bir prosesi bütün maşın üzərində idarə etdiyi kimi konfiqurasiya edir. Proses yaddaşa daxil olduqda, MMU sorğuya müdaxilə edir və prosesdən öyrənilən yaddaş yerini kompüterdəki fiziki yaddaş yerinə çevirmək üçün yaddaş ünvanı xəritəsindən istifadə edir. Bununla belə, nüvə hələ də bu ünvan xəritəsini işə salmalı, davamlı saxlamalı və dəyişdirməlidir. Məsələn, kontekst keçidi zamanı kernel gediş prosesindən sonra xəritəni dəyişməli və onu qarşıdan gələnə hazırlamalıdır.

Qeyd

Yaddaş ünvanı xəritəsinin həyata keçirilməsi səhifə cədvəli adlanır.

Siz 8-ci fəsildə yaddaş performansına necə nəzarət edəcəyinizi öyrənəcəksiniz.

1.3.3. Cihaz sürücüləri və idarəetmə

Qurğulara münasibətdə nüvənin işi olduqca sadədir. Tipik olaraq, qurğulara yalnız nüvə rejimində daxil olmaq mümkündür, çünki səhv giriş (məsələn, istifadəçi prosesi enerjini söndürməyə çalışdıqda) kompüterin sıradan çıxmasına səbəb ola bilər. Başqa bir problem, müxtəlif cihazların eyni vəzifəni yerinə yetirməsinə baxmayaraq, nadir hallarda eyni proqram interfeysinə sahib olmasıdır: məsələn, iki fərqli şəbəkə kartı. Bu səbəbdən, cihaz sürücüləri ənənəvi olaraq nüvənin bir hissəsidir və proqram tərtibatçılarının işini asanlaşdırmaq üçün istifadəçi prosesləri üçün vahid interfeys təmin etməyə çalışırlar.

1.3.4. Sistem zəngləri və dəstək

İstifadəçi prosesləri üçün başqa növ kernel funksiyaları da mövcuddur. Misal üçün, sistem zəngləri istifadəçi prosesinin təkbaşına yaxşı və ya ümumiyyətlə yerinə yetirə bilmədiyi xüsusi tapşırıqları yerinə yetirmək. Beləliklə, faylların açılması, oxunması və yazılması ilə bağlı bütün hərəkətlər sistem çağırışlarını əhatə edir.

İki sistem çağırışı, fork() və exec(), proseslərin necə işə salındığını anlamaq üçün vacibdir:

Çəngəl(). Proses fork() funksiyasını çağırdıqda, nüvə prosesin demək olar ki, eyni nüsxəsini yaradır;

Exec(). Proses exec ( proqram), nüvə proqramı işlədir proqram, cari prosesi əvəz edir.

Başlanğıc prosesi (6-cı fəsil) istisna olmaqla, Hamısı Linux sistemində istifadəçi prosesləri fork() çağırışı nəticəsində başlayır və əksər hallarda exec() çağırışı mövcud prosesin surəti deyil, yeni proqramı işə salmaq üçün edilir. Sadə bir nümunə, əmr satırından işlətdiyiniz hər hansı proqramdır, məsələn, kataloqun məzmununu göstərən ls əmri. Terminal pəncərəsinə ls əmrini daxil etdikdə, terminal pəncərəsinin daxilində işləyən qabıq qabığın surətini yaratmaq üçün fork() funksiyasını çağırır, sonra isə qabığın həmin yeni nüsxəsi ls əmrini yerinə yetirmək üçün exec(ls) funksiyasını çağırır. Şəkildə. Şəkil 1.2-də ls kimi proqramları işə salmaq üçün proseslərin və sistem çağırışlarının ardıcıllığı göstərilir.

düyü. 1.2. Yeni prosesə başlamaq

QEYD

Sistem zəngləri adətən mötərizələrlə işarələnir. Şəkildə göstərilən nümunədə. 1.2, nüvədən başqa bir proses yaratmağı tələb edən proses fork() sistem çağırışını verməlidir. Bu təyinat, zənglərin C proqramlaşdırma dilində yazılmasından irəli gəlir. Bu kitabı başa düşmək üçün C dilini bilmək lazım deyil. Bundan əlavə, bu kitab bəzi sistem zəngləri qruplarını asanlaşdırır. Məsələn, exec() çağırışı oxşar tapşırığı yerinə yetirən, lakin proqram təminatının həyata keçirilməsində fərqlənən bütün sistem zəngləri ailəsini ifadə edir.

Kernel həmçinin funksiyaları ənənəvi sistem zənglərindən fərqli olan istifadəçi proseslərini dəstəkləyir. Onlardan ən məşhurlarıdır psevdo cihazlar. İstifadəçi prosesləri nöqteyi-nəzərindən psevdoqurğular adi qurğulara bənzəyir, lakin onlar tamamilə proqram təminatında həyata keçirilir. Əslində, onlar formal olaraq nüvədə olmamalıdırlar, lakin praktik səbəblərə görə hələ də orada mövcuddurlar. Məsələn, təsadüfi ədədlər yaradan cihazı (/dev/random) istifadəçi prosesindən istifadə edərək tələb olunan təhlükəsizlik dərəcəsi ilə həyata keçirmək çətin olardı.

Qeyd

Texniki olaraq, psevdo-cihaza daxil olan istifadəçi prosesi hələ də həmin cihazı açmaq üçün sistem çağırışı etmək məcburiyyətində qalır. Beləliklə, proseslər sistem çağırışlarından tamamilə qaça bilməz.

1.4. İstifadəçi sahəsi

Kernelin istifadəçi prosesləri üçün ayırdığı RAM sahəsi adlanır istifadəçi sahəsi. Proses yaddaşda sadəcə bir vəziyyət (və ya şəkil) olduğundan, istifadəçi sahəsi də çalışan proseslərin bütün kolleksiyasının yaddaşına daxil olur. Terminlə də rastlaşa bilərsiniz "istifadəçi ölkəsi", istifadəçi sahəsi əvəzinə istifadə olunur.

Linux sisteminin real fəaliyyətinin çoxu istifadəçi məkanında baş verir. Kernel baxımından bütün proseslər eyni olsa da, istifadəçilər üçün müxtəlif vəzifələr yerinə yetirirlər. İstifadəçi proseslərini təmsil edən sistem komponentləri elementar struktura - xidmət səviyyəsinə (və ya qatına) təşkil edilir. Şəkildə. Şəkil 1.3-də bir-biri ilə əlaqəli və Linux sistemi ilə qarşılıqlı əlaqədə olan komponentlərin təxmini dəsti göstərilir. Sadə xidmətlər aşağı səviyyədə (kernelə ən yaxın), kommunal proqramlar ortada, istifadəçinin işlədiyi proqramlar isə yuxarıda yerləşir. Şəkil 1.3 olduqca sadələşdirilmiş diaqramdır, çünki yalnız altı komponent göstərilmişdir, lakin siz yuxarıdakı komponentlərin istifadəçiyə ən yaxın olduğunu görə bilərsiniz (istifadəçi interfeysi və brauzer); orta səviyyəli komponentlər brauzerdən istifadə edən poçt serverinə malikdir; Aşağıda bir neçə kiçik komponent var.

Aşağı səviyyə adətən sadə tapşırıqları yerinə yetirən kiçik komponentlərdən ibarətdir. Orta səviyyə poçt xidməti, çap serveri və verilənlər bazası kimi daha böyük komponentləri ehtiva edir. Yüksək səviyyəli komponentlər çox vaxt birbaşa istifadəçi tərəfindən idarə olunan mürəkkəb tapşırıqları yerinə yetirir. Əgər bir komponent digərindən istifadə etmək istəyirsə, o zaman həmin ikinci komponent ya eyni xidmət səviyyəsindədir, ya da daha aşağıdır.

Şəkil 1.3 yalnız təxmini olaraq istifadəçi sahəsinin quruluşunu göstərir. Əslində, istifadəçi məkanında heç bir qayda yoxdur. Məsələn, əksər proqram və xidmətlər çağırılan diaqnostik mesajları qeyd edir jurnallar. Əksər proqramlar mesajları daxil etmək üçün standart syslog xidmətindən istifadə edir, lakin bəziləri qeydiyyatı özləri etməyi seçirlər.

düyü. 1.3. Proseslərin növləri və qarşılıqlı əlaqə

Bundan əlavə, bəzi istifadəçi məkanı komponentlərini təsnif etmək çətin ola bilər. Veb server və ya verilənlər bazası serveri kimi server tərəfi komponentləri olduqca mürəkkəb tapşırıqları yerinə yetirdikləri üçün çox yüksək səviyyəli proqramlar hesab edilə bilər. Bu cür tətbiqlər rəqəmin yuxarı hissəsində yerləşdirilə bilər. 1.3. Eyni zamanda, istifadəçi proqramları öz başlarına öhdəsindən gələ bilməyən tapşırıqları yerinə yetirmək üçün server proqramlarından asılı ola bilər. Bu halda server komponentləri orta səviyyədə yerləşdirilməlidir.

1.5. İstifadəçilər

Linux nüvəsi Unix sistem istifadəçisinin ənənəvi konsepsiyasını dəstəkləyir. İstifadəçi prosesləri idarə edə bilən və fayllara sahib olan bir qurumdur. İstifadəçi ilə əlaqəli İstifadəçi adı. Məsələn, sistemdə billyjoe adlı istifadəçi ola bilər. Bununla belə, ləpə istifadəçi adları ilə məşğul olmur, bunun əvəzinə istifadəçini sadə rəqəmli rəqəmdən istifadə edərək müəyyən edir. İstifadəçi adı(7-ci fəsil ID-lərin istifadəçi adlarına necə uyğunlaşdırılmasından bəhs edir).



Əlaqədar nəşrlər