Linux Internals. Enhedsdrivere og administration

Brian Wards bog, som allerede er blevet en bestseller i Vesten. Den beskriver alle forviklingerne ved at arbejde med Linux OS, systemadministration og dybe mekanismer, der giver Linux-funktionalitet på lavt niveau. På siderne i manualen får du grundlæggende viden om at arbejde med Linux-kernen og principperne for korrekt drift af computernetværk, ikke kun baseret på Open source-løsninger. Bogen berører også spørgsmålene om scriptprogrammering og håndtering af C-sproget, dækker emner om informationssikkerhed, virtualisering og andre uerstattelige ting.
Hvem skal læse bogen:
Interessen for udformningen af ​​Linux-operativsystemet kan være forårsaget af forskellige årsager. Fagfolk inden for informationsteknologi og Linux-softwareudviklere vil i denne bog finde stort set alt, hvad de behøver at vide for at få mest muligt ud af operativsystemet. Forskere og studerende, som ofte selv skal tilpasse systemet, finder her praktiske forklaringer på, hvorfor tingene fungerer, som de gør. Der er også "entertainere" - brugere, der kan lide at bruge tid på computeren for sjov, overskud eller begge dele. Vil du vide, hvorfor nogle ting virker, og andre ikke? Er du i tvivl om, hvad der vil ske, hvis du ændrer noget? Så er du en af ​​"entertainerne".
De nødvendige betingelser:
Du behøver ikke at være programmør for at læse denne bog. Der kræves kun grundlæggende pc-brugerfærdigheder: du skal navigere i den grafiske grænseflade (når du installerer og konfigurerer systemgrænsefladen), samt har forståelse for filer og mapper (mapper). Du bør også være forberedt på at søge på internettet for yderligere dokumentation. Det vigtigste er din vilje og lyst til at udforske din computer.

Titel: Linux Internals
Forfatter: Brian Ward
Forlag: Peter
År: 2016
Format: PDF, FB2, EPUB
russisk sprog
Sider: 384
Størrelse: 12,9 MB

Linux Internals / Brian Ward / 2016. Download gratis uden registrering

2016-07-24T17:16:55+00:00 adminAdministration Litteraturvejledninger Linux, administration, sikkerhed, Brian Ward, bøger, litteratur, manualer, systemadministration, scripts, kommandoreferencer

Brian Wards bog, som allerede er blevet en bestseller i Vesten. Den beskriver alle forviklingerne ved at arbejde med Linux OS, systemadministration og dybe mekanismer, der giver Linux-funktionalitet på lavt niveau. På siderne i manualen får du grundlæggende viden om at arbejde med Linux-kernen og principperne for korrekt drift af computernetværk, ikke kun baseret på Open source-løsninger. I...

[e-mail beskyttet] Administrator LINUX Tutorial

Vi har udgivet en bog af Brian Ward, som allerede er blevet en bestseller i Vesten. Den beskriver alle forviklingerne ved at arbejde med Linux-operativsystemet, systemadministration og dybe mekanismer, der giver Linux-funktionalitet på lavt niveau. På siderne i denne publikation får du grundlæggende viden om at arbejde med Linux-kernen og principperne for korrekt drift af computernetværk. Bogen berører også spørgsmålene om programmering af shell-scripts og håndtering af C-sproget, dækker emner om informationssikkerhed, virtualisering og andre uerstattelige ting.

Hvem skal læse bogen

Interessen for udformningen af ​​Linux-operativsystemet kan være forårsaget af forskellige årsager. Fagfolk inden for informationsteknologi og Linux-softwareudviklere vil i denne bog finde stort set alt, hvad de behøver at vide for at få mest muligt ud af operativsystemet. Forskere og studerende, som ofte selv skal tilpasse systemet, finder her praktiske forklaringer på, hvorfor tingene fungerer, som de gør. Der er også "entertainere" - brugere, der kan lide at bruge tid på computeren for sjov, overskud eller begge dele. Vil du vide, hvorfor nogle ting virker, og andre ikke? Er du i tvivl om, hvad der vil ske, hvis du ændrer noget? Så er du en af ​​"entertainerne".

De nødvendige betingelser

Du behøver ikke at være programmør for at læse denne bog. Du skal kun bruge grundlæggende computerbrugerfærdigheder: du skal kunne navigere i den grafiske grænseflade (når du installerer og konfigurerer systemgrænsefladen), samt har forståelse for filer og mapper (mapper). Du bør også være forberedt på at søge i dit system og online for yderligere dokumentation. Som nævnt ovenfor er det vigtigste din vilje og lyst til at udforske din computer.

Hvordan man læser en bog

Når det kommer til tekniske emner, er det ikke en let opgave at formidle al den nødvendige viden. På den ene side hænger læseren fast i unødvendige detaljer og har svært ved at fatte essensen, da det menneskelige sind simpelthen ikke kan bearbejde en lang række nye begreber på samme tid. På den anden side fører manglen på detaljer til, at læseren kun får en vag idé om emnet og ikke er klar til at assimilere yderligere materiale.

I denne bog har forfatteren forenklet præsentationen og struktureret materialet. I de fleste kapitler præsenteres først vigtig information, som er nødvendig for det videre arbejde. Når du læser kapitlet, vil du støde på yderligere materiale i det. Behøver du straks at forstå disse oplysninger? I de fleste tilfælde mener forfatteren ikke. Hvis dine øjne begynder at blære over mængden af ​​detaljer relateret til det materiale, du lige har lært, så tøv ikke med at gå videre til næste kapitel eller tage en pause. Andre vigtige ting venter på dig.

Hvordan er denne bog organiseret?

Bogen begynder med en oversigt over Linux-systemet og giver derefter en række praktiske øvelser med de værktøjer, du skal bruge for at komme i gang med systemet. Dernæst vil du udforske hver del af systemet i detaljer, fra hardwareadministration til netværkskonfiguration, efter den normale rækkefølge, som systemet starter op. Endelig vil du få en forståelse af nogle af detaljerne i et fungerende system, lære nogle vigtige færdigheder og blive fortrolig med de værktøjer, programmører bruger.

De fleste af de tidlige kapitler (undtagen kapitel 2) fokuserer stærkt på Linux-kernen, men efterhånden som du kommer videre gennem bogen, vil du også arbejde i dit brugerrum. Hvis du ikke forstår, hvad forfatteren taler om nu, skal du ikke bekymre dig, forklaringer vil blive givet i kapitel 1. Materialet præsenteres, når det er muligt, uden henvisning til nogen systemdistribution. Det ville være kedeligt at beskrive alle varianterne af systemet, så Ward forsøgte at tale om de to hovedfamilier af distributioner: Debian (inklusive Ubuntu) og RHEL/Fedora/CentOS. Vægten er lagt på server- og arbejdsstationsversioner. Indlejrede systemer som Android og OpenWRT er også repræsenteret, men det er overladt til dig at lære forskellene mellem disse platforme.

Hvad er nyt i anden udgave

Den første udgave af denne bog omhandlede hovedsageligt brugersiden af ​​at arbejde på et Linux-system. Hovedfokus var på designet af dens dele, og hvordan man får dem til at fungere. På det tidspunkt var mange elementer i systemet svære at installere og konfigurere korrekt.

Takket være det hårde arbejde fra softwareudviklere og Linux-distributionsskabere har dette ændret sig. Ward reviderede den første udgaves materiale til opdateringer, idet han var særlig opmærksom på systemets opstartsproces og hvordan det håndterer hardware, og fjernede forældet materiale (såsom en detaljeret forklaring af udskrivningsprocessen) for at udvide diskussionen om Linux-kernens rolle i hver fordeling. Du interagerer sandsynligvis med kernen meget oftere, end du er klar over, og forfatteren har specifikt noteret de tidspunkter, hvor dette sker.

Ward omarrangerede også bogens præsentation for at passe til moderne læseres interesser og behov. Det eneste, der ikke har ændret sig, er bogens længde.

Forfatteren ønskede at give dig den information, du har brug for, for at komme hurtigt i gang. De vil tage en del indsats at mestre, men Ward har ikke til hensigt at gøre dig til en "vægtløfter", så du kan overvinde denne bog. Når du forstår de vigtige punkter, der er skitseret her, vil det være nemt for dig at finde detaljerne og forstå dem.

Forfatteren har fjernet nogle historiske detaljer, der var i den første udgave, primært for at fokusere din opmærksomhed. Hvis du er interesseret i Linux-systemet og dets forhold til Unix-systemets historie, så se Peter H. Salus' bog The Daemon, the Gnu, and the Penguin (Reed Media Services, 2008) - den fortæller, hvordan den brugte os-software.

Flere detaljer om bogen kan findes på

Nuværende side: 1 (bogen har i alt 30 sider) [tilgængelig læsepassage: 17 sider]

Brian Ward

Linux Internals

Oversætter S. Chernikov

Teknisk redaktør N. Grinchik

Litterær redaktør O. Andrievich

Kunstnere A. Bartsevich, V. Shimkevich

Korrekturlæsere T. Kuryanovich, E. Pavlovich

Layout A. Bartsevich

Brian Ward

Linux Internals. – Skt. Petersborg: Peter, 2015.

ISBN 978-5-496-01952-1

© LLC Publishing House "Piter", 2015

Alle rettigheder forbeholdes. Ingen del af denne bog må gengives i nogen form uden skriftlig tilladelse fra copyright-indehaverne.

Forord

Jeg skrev denne bog med den overbevisning, at for at være vellykket og effektiv, skal du forstå, hvordan din computersoftware fungerer og virker.

Linux-operativsystemet er fantastisk til at lære, fordi det meste af systemkonfigurationen er gemt i simple filer, der er ret nemme at læse. Du skal bare finde ud af, hvad hver del er ansvarlig for, og så lægge det hele sammen. Det er, hvad denne bog er dedikeret til.

Interessen for udformningen af ​​Linux-operativsystemet kan være forårsaget af forskellige årsager. Fagfolk inden for informationsteknologi og Linux-softwareudviklere vil i denne bog finde stort set alt, hvad de behøver at vide for at få mest muligt ud af operativsystemet. Forskere og studerende, som ofte selv skal tilpasse systemet, finder her praktiske forklaringer på, hvorfor tingene fungerer, som de gør. Der er også "entertainere" - brugere, der kan lide at bruge tid på computeren for sjov, overskud eller begge dele.

Vil du vide, hvorfor nogle ting virker, og andre ikke? Er du i tvivl om, hvad der vil ske, hvis du ændrer noget? Så er du en af ​​"entertainerne".

De nødvendige betingelser

Du behøver ikke at være programmør for at læse denne bog. Du skal kun bruge grundlæggende computerbrugerfærdigheder: du skal navigere i den grafiske grænseflade (når du installerer og konfigurerer systemgrænsefladen), samt har en forståelse af filer og mapper (mapper). Du bør også være forberedt på at søge i dit system og online for yderligere dokumentation. Som nævnt ovenfor er det vigtigste din vilje og lyst til at udforske din computer.

Når det kommer til tekniske fag, er det ikke en let opgave at formidle al den nødvendige viden. På den ene side hænger læseren fast i unødvendige detaljer og har svært ved at fatte essensen, da det menneskelige sind simpelthen ikke kan bearbejde en lang række nye begreber på samme tid. På den anden side fører manglen på detaljer til, at læseren kun får en vag idé om emnet og ikke er klar til at assimilere yderligere materiale.

I denne bog har jeg forenklet præsentationen og struktureret materialet. I de fleste kapitler præsenteres først vigtig information, som er nødvendig for det videre arbejde. Når du læser kapitlet, vil du støde på yderligere materiale i det. Behøver du straks at forstå disse oplysninger? I de fleste tilfælde tror jeg ikke. Hvis dine øjne begynder at blære over mængden af ​​detaljer relateret til det materiale, du lige har lært, så tøv ikke med at gå videre til næste kapitel eller tage en pause. Andre vigtige ting venter på dig.

Praktisk tilgang

For at arbejde skal du bruge en computer med Linux-operativsystemet. Du foretrækker måske en virtuel installation – jeg brugte VirtualBox til at teste det meste af materialet i denne bog. Du skal have superbruger (root) adgang, selvom du bør bruge en standard brugerkonto det meste af tiden. Du vil primært arbejde på kommandolinjen, terminalvinduet eller fjernsessionen. Hvis du ikke har arbejdet i dette miljø ofte, er det okay; du vil lære mere om det i kapitel 2.

Typisk vil kommandoerne se sådan ud:

Indtast tekst, der er fremhævet med fed; Svarteksten, som maskinen vil producere, vises med normal skrifttype. $-symbolet er en prompt til en bruger med en almindelig konto. Hvis du ser #-symbolet ved prompten, bør du bruge superbrugerkontoen (mere om dette i kapitel 2).

Hvordan er denne bog organiseret?

Bogen begynder med en oversigt over Linux-systemet og giver derefter en række praktiske øvelser med de værktøjer, du skal bruge for at komme i gang med systemet. Dernæst vil du udforske hver del af systemet i detaljer, fra hardwareadministration til netværkskonfiguration, efter den normale rækkefølge, som systemet starter op. Endelig vil du få en forståelse af nogle af detaljerne i et fungerende system, lære nogle vigtige færdigheder og blive fortrolig med de værktøjer, programmører bruger.

De fleste af de tidlige kapitler (undtagen kapitel 2) fokuserer stærkt på Linux-kernen, men efterhånden som du kommer videre gennem bogen, vil du også arbejde i dit brugerrum. Hvis du ikke forstår, hvad jeg taler om nu, så bare rolig, forklaringer vil blive givet i kapitel 1.

Materialet præsenteres når det er muligt uden reference til nogen systemdistribution. Det ville være kedeligt at beskrive alle systemvarianterne, så jeg prøvede at tale om de to hovedfamilier af distributioner: Debian (inklusive Ubuntu) og RHEL/Fedora/CentOS. Vægten er lagt på server- og arbejdsstationsversioner. Indlejrede systemer som Android og OpenWRT er også repræsenteret, men det er overladt til dig at lære forskellene mellem disse platforme.

Hvad er nyt i anden udgave

Den første udgave af denne bog omhandlede hovedsageligt brugersiden af ​​at arbejde på et Linux-system. Hovedfokus var på designet af dens dele, og hvordan man får dem til at fungere. På det tidspunkt var mange elementer i systemet svære at installere og konfigurere korrekt.

Takket være det hårde arbejde fra softwareudviklere og Linux-distributionsskabere har dette ændret sig. Jeg har gennemgået den første udgaves materiale for opdateringer, idet jeg har været særlig opmærksom på systemets opstartsproces og hvordan det håndterer hardware, og fjernet forældet materiale (såsom en detaljeret forklaring af udskrivningsprocessen) for at udvide diskussionen om Linux'ens rolle kerne i hver distribution. Du interagerer sandsynligvis med kernen oftere, end du er klar over, og jeg har specifikt noteret de tidspunkter, hvor dette sker.

Jeg har også omorganiseret bogens præsentation, så den passer til nutidens læseres interesser og behov. Det eneste, der ikke har ændret sig, er bogens længde.

Jeg ville gerne give dig den information, du har brug for, for at komme hurtigt i gang. De vil tage en del indsats at mestre, men jeg har ikke til hensigt at gøre dig til en "vægtløfter", så du kan overvinde denne bog. Når du forstår de vigtige punkter, der er skitseret her, vil det være nemt for dig at finde detaljerne og forstå dem.

Jeg har fjernet nogle historiske detaljer, der var i den første udgave, primært for at fokusere din opmærksomhed. Hvis du er interesseret i Linux-systemet og dets forhold til Unix-systemets historie, så tjek bogen af ​​Peter H. Salus Dæmonen, Gnuen og Pingvinen(Reed Media Services, 2008) - Den taler om, hvordan den software, vi bruger, har udviklet sig.

En note om terminologi

I øjeblikket er der debat om navnene på nogle elementer af operativsystemer. Selv navnet på Linux-systemet er involveret - skal det hedde Linux eller GNU/Linux (for at afspejle brugen af ​​nogle elementer i GNU-projektet)? I bogen forsøgte jeg at bruge de mest almindelige og mindst besværlige navne.

Anerkendelser

Jeg takker alle, der hjalp mig med at arbejde på den første udgave. Det er James Duncan, Douglas N. Arnold, Bill Fenner, Ken Hornstein, Scott Dickson, Dan Ehrlich, Felix Lee Felix Lee, Scott Schwartz, Gregory P. Smith, Dan Sully, Karol Jurado og Gina Steele. For denne udgave takker jeg især Jordi Gutiérrez Hermoso for hans fremragende tekniske anmeldelse; hans forslag og præciseringer er uvurderlige. Tak også til Dominique Poulain og Donald Karon for deres hurtige respons i de tidlige stadier af arbejdet, og til Hsinju Hsieh, som tålmodigt arbejdede sammen med mig for at revidere denne bog.

Jeg vil også gerne takke min udviklingsredaktør, Bill Pollock, og produktionsredaktør, Laurel Chun. Serena Yang, Alison Law og alle hos No Starch Press har som altid gjort et vidunderligt stykke arbejde med at producere denne nye udgave af bogen.

Fra forlaget

Send dine kommentarer, forslag og spørgsmål til e-mailadressen sivchenk [e-mail beskyttet](Peter forlag, computerudgave).

Vi vil meget gerne høre din mening!

På forlagets hjemmeside http://www.piter.com finder du detaljerede oplysninger om vores bøger.

1. Det store billede

Ved første øjekast er et moderne styresystem, såsom Linux, ret komplekst og består af et stort antal dele, der samtidig fungerer og interagerer med hinanden. En webserver kan således kommunikere med en databaseserver, som igen bruger et delt bibliotek, der bruges af mange andre programmer. Hvordan fungerer det hele?

Du kan mest effektivt forstå strukturen af ​​operativsystemet vha abstraktioner er en pæn måde at sige, at du ignorerer de fleste detaljer. For eksempel, når du kører bil, behøver du typisk ikke tænke på detaljer som monteringsboltene, der holder motoren inde i bilen, eller de mennesker, der asfalterer vejen og vedligeholder den. Hvis du kører i en bil som passager, er alt hvad du behøver at vide, hvad bilen er designet til at gøre (den tager dig et sted hen) og nogle grundlæggende regler for brugen (hvordan man håndterer døren og sikkerhedsselen).

Hvis du kører bil, skal du vide mere. Du bliver nødt til at blive fortrolig med betjeningselementerne (såsom rattet og gaspedalen), og hvad du skal gøre i tilfælde af en funktionsfejl.

Lad os antage, at bilen bevæger sig i ryk. Du kan opdele abstraktionen af ​​"en bil, der kører på vejen" i tre dele: bilen, vejen og din kørestil. Dette vil hjælpe med at bestemme årsagen. Hvis vejen er ujævn, behøver du hverken skyde skylden på bilen eller dig selv. I stedet kan du prøve at finde ud af, hvorfor vejen blev forringet, eller, hvis vejen er ny, hvorfor dens bygherrer gjorde et så forfærdeligt stykke arbejde.

Softwareudviklere bruger abstraktion som et værktøj, når de opretter operativsystemer og applikationer. Der er mange udtryk for abstrakte områder af computersoftware, herunder delsystem, modul Og plastikpose. Men i dette kapitel vil vi bruge udtrykket komponent fordi det er enkelt. Når man laver en softwarekomponent, er udviklere typisk ligeglade med den interne struktur af de andre komponenter, men de skal tænke over, hvilke komponenter de kan bruge, og hvordan de kan bruge dem.

Dette kapitel giver et generelt overblik over de komponenter, der udgør et Linux-system. Selvom hver af dem har en utrolig mængde tekniske detaljer relateret til den interne struktur, vil vi ikke være opmærksomme på dem og fokusere på, hvad disse komponenter gør i forhold til systemet som helhed.

1.1. Niveauer og lag af abstraktion i Linux-operativsystemet

Brug af abstraktioner til at nedbryde computersystemer i komponenter gør dem nemmere at forstå, men nytter ikke, hvis der ikke er nogen struktur. Vi vil arrangere komponenterne i lag eller niveauer. Lag, eller niveau, er en måde at klassificere (eller gruppere) komponenter efter deres placering mellem brugeren og hardwaren. Browsere, spil osv. er placeret på det øverste lag; på det nederste lag ser vi computerens hukommelse: nuller og etaller. Operativsystemet optager det største antal lag mellem disse to.

Der er tre hovedniveauer i Linux-operativsystemet. I fig. Figur 1.1 viser niveauerne, samt nogle af komponenterne inden for hver af dem. Ved basen er placeret hardware. De omfatter hukommelse og en eller flere centrale behandlingsenheder (CPU'er), der udfører beregninger og anmodninger om at læse fra og skrive til hukommelsen. Enheder såsom harddiske og netværksgrænseflader betragtes også som hardware.

Niveauet ovenfor er placeret kerne, som er kernen i operativsystemet. Kernen er et program placeret i computerens hukommelse og giver instruktioner til den centrale processor. Kernen styrer hardwaren og fungerer primært som en grænseflade mellem hardwaren og ethvert kørende program.

Processer – der kører programmer administreret af kernen – udgør tilsammen systemets øverste niveau, kaldet brugerplads.

Bemærk

Et mere præcist udtryk end "proces" er "brugerproces", uanset om brugeren interagerer med denne proces direkte. For eksempel kører alle webservere som brugerprocesser.

Der er en vigtig forskel mellem, hvordan kerneprocesser og brugerprocesser startes: kernen startes i kernetilstand, og brugerprocesser - i brugertilstand. Kode, der kører i kernetilstand, har ubegrænset adgang til processoren og RAM. Dette er en stærk fordel, men det kan være farligt, fordi det tillader kerneprocesser nemt at forstyrre hele systemet. Det område, der kun er tilgængeligt for kernen, kaldes kernerum.

I brugertilstand er der til sammenligning kun en begrænset (normalt lille) mængde hukommelse tilgængelig, og kun sikre processorinstruktioner er tilladt. Brugerplads er områder af RAM, som kan tilgås af brugerprocesser. Hvis en proces mislykkes, vil konsekvenserne være begrænsede, og kernen vil være i stand til at rydde op i den. Det betyder, at hvis din browser for eksempel går ned, bliver de videnskabelige beregninger, du har kørt i baggrunden i et par dage, ikke forstyrret.

Ris. 1.1. Generel struktur af Linux-operativsystemet

Teoretisk set er en ukontrolleret brugerproces ikke i stand til at forårsage væsentlig skade på systemet. Det afhænger virkelig af, hvad du betragter som en "væsentlig skade" og de særlige privilegier ved processen, da nogle processer har lov til at gøre mere end andre. Kan en brugerproces for eksempel fuldstændig ødelægge data på en harddisk? Hvis du konfigurerer tilladelserne korrekt, kan det, og det vil være ekstremt farligt for dig. Der er sikkerhedsforanstaltninger på plads for at forhindre dette, og de fleste processer vil simpelthen ikke få lov til at forårsage kaos på denne måde.

1.2. Hardware: RAM

Af al computerhardware vædder er måske det vigtigste. I sin mest rå form er RAM bare et stort lager af strenge af etere og nuller. Hvert nul eller et kaldes lidt. Det er her den kørende kerne og processer er placeret - de er bare store samlinger af bits. Alle input- og outputdata fra perifere enheder passerer gennem RAM også i form af sæt bits. CPU'en arbejder simpelthen på hukommelsen: den læser instruktioner og data fra den og skriver derefter dataene tilbage i hukommelsen.

Du vil ofte støde på udtrykket "stat", som vil referere til hukommelse, processer, kerne og andre dele af et computersystem. Strengt taget er en tilstand ethvert ordnet arrangement af bits. For eksempel, hvis der er fire bit i hukommelsen, repræsenterer sekvenserne 0110, 0001 og 1011 tre forskellige tilstande.

Når man tænker på, at en proces nemt kan bestå af millioner af hukommelsesstykker, er det ofte nemmere at bruge abstrakte udtryk, når man taler om tilstande. I stedet for at beskrive en tilstand ved hjælp af bits, taler du om, hvad der skete eller sker i øjeblikket. For eksempel kan du sige "denne proces venter på input" eller "processen udfører det andet trin af sin opstartsprocedure."

BEMÆRK

Fordi tilstande typisk beskrives ved hjælp af abstrakte begreber snarere end faktiske bits, bruges udtrykket "billede" til at henvise til enhver fysisk arrangement af bits.

1.3. Kerne

Næsten alt, hvad kernen gør, involverer RAM. En af kernens opgaver er at distribuere hukommelse i flere underafsnit, hvorefter kernen konstant skal vedligeholde information om disse underafsnits tilstand i orden. Hver proces bruger et hukommelsesområde, der er allokeret til den, og kernen skal sikre, at processer holder sig til deres områder.

Kernen er ansvarlig for håndtering af opgaver i fire hovedområder af systemet.

Processer. Kernen er ansvarlig for, hvilke processer der tillades adgang til den centrale processor.

Hukommelse. Kernen skal holde styr på tilstanden af ​​al hukommelse: hvilken del der i øjeblikket er allokeret til bestemte processer, hvad der kan allokeres til deling mellem processer, og hvilken del er gratis.

Enhedsdrivere. Kernen fungerer som en grænseflade mellem hardware (såsom en harddisk) og processer. Typisk udføres hardwarestyring af kernen.

SystemopkaldOgsupport. Processer bruger typisk systemkald til at kommunikere med kernen.

Vi vil nu se kort på hvert af disse områder.

BEMÆRK

For mere information om, hvordan kernen fungerer, se Operating System Concepts, 9. udgave, af Abraham Silberschatz, Peter B. Galvin og Greg Gann. Gagne (Wiley, 2012) og Modern Operating Systems, 4. udgave af Andrew S. Tanenbaum og Herbert Bos (Prentice Hall, 2014).

1.3.1. Procesledelse

Procesledelse beskriver start, stop, genoptagelse og afslutning af processer. Koncepterne bag start og stop af processer er ret enkle. Det er lidt sværere at beskrive, hvordan en proces bruger CPU'en under normal drift.

I ethvert moderne operativsystem fungerer flere processer "samtidigt". For eksempel kan du starte en browser på din computer og åbne et regneark på samme tid. Men i virkeligheden er tingene ikke, som de ser ud: De processer, der er ansvarlige for disse applikationer, starter normalt ikke Vnøjagtighed på et tidspunkt.

Overvej et system med én central processor. Flere processer kan bruge det, men på et givet tidspunkt kan kun én proces faktisk bruge processoren. I praksis bruger hver proces CPU'en i en lille brøkdel af et sekund og holder derefter pause; derefter bruger en anden proces processoren i en lille brøkdel af et sekund; så kommer turen til den tredje proces osv. Handlingen, hvor en proces overfører styringen af ​​processoren til en anden proces, kaldes kontekstskifte.

Hvert tidsrum kvantum af tid– giver processen nok tid til at udføre betydelig beregning (og selvfølgelig fuldfører processen ofte sin nuværende opgave inden for et kvante). Da tidsskiver er så små, opfatter en person dem ikke, og det ser ud til, at flere processer kører samtidigt i systemet (denne mulighed er kendt som "multitasking").

Kernen er ansvarlig for kontekstskift. For at forstå, hvordan dette fungerer, skal du forestille dig en situation, hvor en proces kører i brugertilstand, men dens tidsudsnit er ved at løbe ud. Dette er, hvad der sker.

1. Processoren (rigtig hardware) afbryder den aktuelle proces ved hjælp af en intern timer, skifter til kernetilstand og returnerer kontrol til den.

2. Kernen registrerer den aktuelle tilstand af processoren og hukommelsen, hvilket vil være nødvendigt for at genoptage den netop afbrudte proces.

3. Kernen udfører alle opgaver, der kan være dukket op i løbet af det foregående tidsudsnit (f.eks. dataindsamling eller I/O-operationer).

4. Kernen er nu klar til at starte en anden proces. Den analyserer listen over processer, der er klar til at køre, og vælger en af ​​dem.

5. Kernen forbereder hukommelsen til den nye proces og forbereder derefter processoren.

6. Kernen fortæller processoren, hvor længe tidsstykket for den nye proces vil vare.

7. Kernen sætter processoren i brugertilstand og overfører kontrol til processoren.

Kontekstskift besvarer et vigtigt spørgsmål: Hvornår kører kernen? Svaret er: kernen virker mellem tidsudsnit tildelt til processer, når der sker et kontekstskift.

På et system med flere processorer er tingene lidt mere komplicerede, da kernen ikke behøver at stoppe med at kontrollere den aktuelle processor for at tillade en proces at køre på en anden processor. Og alligevel, for at få mest muligt ud af alle tilgængelige processorer, gør kernen stadig dette (og kan bruge visse tricks for at få ekstra processortid).

1.3.2. Hukommelseshåndtering

Fordi kernen skal styre hukommelsen under kontekstskift, er den udstyret med denne komplekse funktion. Betjeningen af ​​kernen er kompleks, fordi følgende forhold skal tages i betragtning:

Kernen skal have sit eget hukommelsesområde, som ikke kan tilgås af brugerprocesser;

Hver brugerproces har brug for sit eget hukommelsesområde;

En brugerproces må ikke have adgang til hukommelse, der er allokeret til en anden proces;

Brugerprocesser kan dele hukommelse;

Noget hukommelse til brugerprocesser kan være skrivebeskyttet;

Systemet kan bruge mere hukommelse, end der er tilgængeligt ved at bruge diskplads som en hjælpeenhed.

Kernen har en hjælper. Moderne processorer indeholder hukommelsesstyringsmodul(MMU), som aktiverer et hukommelsesadgangskredsløb kaldet "virtuel hukommelse". Når du bruger virtuel hukommelse, får en proces ikke adgang til hukommelsen direkte fra dens fysiske placering i hardwaren. I stedet konfigurerer kernen hver proces, som om den havde kontrol over hele maskinen. Når en proces får adgang til hukommelsen, opfanger MMU'en anmodningen og bruger et hukommelsesadressekort til at oversætte den hukommelsesplacering, der er indlært fra processen, til en fysisk hukommelsesplacering på computeren. Imidlertid skal kernen stadig initialisere, løbende vedligeholde og ændre dette adressekort. For eksempel, under et kontekstskifte, skal kernen ændre kortet efter afgangsprocessen og forberede det til den kommende.

Bemærk

Implementeringen af ​​et hukommelsesadressekort kaldes en sidetabel.

Du lærer, hvordan du overvåger hukommelsens ydeevne i kapitel 8.

1.3.3. Enhedsdrivere og administration

Kernens opgave med hensyn til enheder er ret enkel. Typisk er enheder kun tilgængelige i kernetilstand, da forkert adgang (f.eks. når en brugerproces forsøger at slukke for strømmen) kan få computeren til at gå ned. Et andet problem er, at forskellige enheder sjældent har den samme softwaregrænseflade, selvom de udfører den samme opgave: for eksempel to forskellige netværkskort. Af denne grund er enhedsdrivere traditionelt en del af kernen og stræber efter at give en samlet grænseflade til brugerprocesser for at gøre arbejdet for softwareudviklere lettere.

1.3.4. Systemopkald og support

Der er andre typer kernefunktioner tilgængelige for brugerprocesser. For eksempel, systemopkald udføre særlige opgaver, som en brugerproces ikke kan udføre godt eller overhovedet alene. Alle handlinger relateret til åbning, læsning og skrivning af filer involverer således systemkald.

To systemkald, fork() og exec(), er vigtige for at forstå, hvordan processer lanceres:

Gaffel(). Når en proces kalder fork(), skaber kernen en næsten identisk kopi af processen;

Exec(). Når en proces kalder exec( program), kører kernen programmet program, som erstatter den nuværende proces.

Med undtagelse af init-processen (kapitel 6), Alle brugerprocesser på et Linux-system starter som et resultat af et fork()-kald, og i de fleste tilfælde foretages et exec()-kald for at starte et nyt program i stedet for en kopi af en eksisterende proces. Et simpelt eksempel er ethvert program, som du kører fra kommandolinjen, såsom kommandoen ls, der viser indholdet af en mappe. Når du indtaster kommandoen ls i et terminalvindue, kalder skallen, der kører inde i terminalvinduet, fork() for at oprette en kopi af skallen, og derefter kalder den nye kopi af skallen exec(ls) for at køre ls-kommandoen. I fig. Figur 1.2 viser rækkefølgen af ​​processer og systemkald til at køre programmer som ls.

Ris. 1.2. Starter en ny proces

BEMÆRK

Systemkald er normalt angivet med parenteser. I eksemplet vist i fig. 1.2, skal en proces, der anmoder kernen om at oprette en anden proces, udstede systemkaldet fork(). Denne betegnelse kommer fra den måde, opkald skrives på i programmeringssproget C. Du behøver ikke kende C for at forstå denne bog. Husk blot, at et systemkald er en interaktion mellem en proces og kernen. Desuden forenkler denne bog nogle grupper af systemopkald. For eksempel betegner exec()-kaldet en hel familie af systemkald, der udfører en lignende opgave, men som adskiller sig i deres softwareimplementering.

Kernen understøtter også brugerprocesser, hvis funktioner adskiller sig fra traditionelle systemkald. De mest berømte af dem er pseudo-enheder. Set fra brugerprocessernes synspunkt ligner pseudo-enheder almindelige enheder, men de implementeres udelukkende i software. Faktisk burde de formelt ikke være i kernen, men de er stadig til stede i den af ​​praktiske årsager. For eksempel ville en enhed, der genererer tilfældige tal (/dev/random), være vanskelig at implementere med den nødvendige grad af sikkerhed ved hjælp af en brugerproces.

Bemærk

Teknisk set er en brugerproces, der får adgang til en pseudo-enhed, stadig tvunget til at foretage et systemopkald for at åbne den pågældende enhed. Processer kan således ikke helt undgå systemkald.

1.4. Brugerplads

Området med RAM, som kernen allokerer til brugerprocesser, kaldes brugerplads. Da en proces kun er en tilstand (eller et billede) i hukommelsen, får brugerrummet også adgang til hukommelsen for hele samlingen af ​​kørende processer. Du kan også støde på udtrykket "brugerland", som bruges i stedet for brugerplads.

Det meste af den virkelige handling i et Linux-system sker i brugerrummet. Selvom alle processer er ens fra kernens synspunkt, udfører de forskellige opgaver for brugerne. Systemkomponenter, der repræsenterer brugerprocesser, er organiseret i en elementær struktur - et servicelag (eller lag). I fig. Figur 1.3 viser et omtrentligt sæt komponenter, der er forbundet og interagerer med Linux-systemet. Simple tjenester er placeret på det nederste niveau (tættest på kernen), hjælpeprogrammer er i midten, og applikationer, som brugeren arbejder med, er placeret øverst. Figur 1.3 er et ekstremt forenklet diagram, da kun seks komponenter er vist, men du kan bemærke, at de øverste komponenter er tættest på brugeren (brugergrænsefladen og browseren); mellemtrinskomponenter har en mailserver, der bruger en browser; Der er flere små komponenter til stede i bunden.

Det lavere niveau består normalt af små komponenter, der udfører simple opgaver. Det midterste lag indeholder større komponenter såsom mailtjenesten, printserveren og databasen. Komponenter på øverste niveau udfører komplekse opgaver, som ofte styres direkte af brugeren. Hvis en komponent ønsker at bruge en anden, så er den anden komponent enten på samme serviceniveau eller lavere.

Figur 1.3 viser kun groft layoutet af brugerrummet. I virkeligheden er der ingen regler i brugerrummet. De fleste applikationer og tjenester registrerer f.eks. diagnostiske meddelelser, der kaldes magasiner. De fleste programmer bruger standard syslog-tjenesten til at logge beskeder, men nogle vælger selv at foretage logningen.

Ris. 1.3. Typer af processer og interaktioner

Derudover kan nogle brugerrumskomponenter være svære at kategorisere. Komponenter på serversiden, såsom en webserver eller en databaseserver, kan betragtes som applikationer på meget højt niveau, fordi de udfører ret komplekse opgaver. Sådanne applikationer kan placeres øverst i figuren. 1.3. Samtidig kan brugerapplikationer være afhængige af serverapplikationer til at udføre opgaver, som de ikke kan klare på egen hånd. I dette tilfælde skal serverkomponenterne placeres på mellemniveau.

1.5. Brugere

Linux-kernen understøtter det traditionelle koncept for en Unix-systembruger. Bruger er en enhed, der kan køre processer og egne filer. Tilknyttet bruger Brugernavn. For eksempel kan systemet have en bruger kaldet billyjoe. Men kernen fungerer ikke med brugernavne, i stedet identificerer den brugeren ved hjælp af et simpelt tal bruger ID(Kapitel 7 taler om, hvordan id'er er knyttet til brugernavne).

Vi rekrutterer en udgivelsesgruppe til vores tracker .
Betaling er til forhandling.
Ansøgninger modtages på mail [email protected], muligt gennem feedback
Fortæl os venligst kort om dig selv, hvor meget tid du kan bruge på vores side og din forventede indtjening.

Bandicam giver dig mulighed for at optage et bestemt område på pc-skærmen eller i et program, der bruger DirectX/OpenGL-grafikteknologier. Bandicam hjælper dig med at optage meget komprimeret video....


Beskrivelse: Wondershare Filmora er en praktisk videoredigerer, der indeholder alle de nødvendige værktøjer til videoredigering. Du kan lave film i høj kvalitet med titler, ...


EmEditor Professional- en professionel version af en kraftfuld teksteditor til programmører, webudviklere og almindelige brugere med syntaksfremhævning og Unicode-understøttelse. Redaktøren har...

Driver Reviver er et program, der scanner dit system for forældede drivere og tilbyder at opdatere dem. Scanning udføres mod en af ​​de største driverdatabaser, hvilket garanterer....


Skype- et gratis program til tekst-, stemme- og videokommunikation med venner over hele verden. Skype-netværket bruger P2P-teknologi til at forbinde med andre brugere og er af høj kvalitet....


Bandizip er et hurtigt og pålideligt program, der understøtter arbejde med WinZip-, 7-Zip- og WinRAR-formater og andre lignende arkiver. Den bruger en meget hurtig algoritme til komprimering og dekompression....

Opera er en ny Chromium-browser fra Opera Software. Opera har forladt sin klassiske browser og udvikler nu en ny browser baseret på Googles Chromium-projekt....

Beskrivelse: Et program til at arbejde med PDF-dokumenter, der giver en samling værktøjer og hjælpeprogrammer til at ændre og optimere PDF-filer og deres indhold. Tak til...


Snappy Driver Installer (SDI) er et bærbart program til installation og opdatering af drivere, der ikke kræver en internetforbindelse. Det er en omarbejdning af det originale SDIO-program fra Glenn Delahoy....

Mirillis Action! - programmet giver dig mulighed for at optage skærmbilleder i realtid til videofiler i forskellige formater. Du kan optage web-afspiller video, gameplay, indsætte live lydkommentarer....



Bogen, du holder i hænderne, er allerede blevet en bestseller i Vesten. Den beskriver alle forviklingerne ved at arbejde med Linux-operativsystemet, systemadministration og dybe mekanismer, der giver Linux-funktionalitet på lavt niveau. På siderne i denne bog får du grundlæggende viden om at arbejde med Linux-kernen og principperne for korrekt drift af computernetværk. Bogen berører også spørgsmålene om programmering af shell-scripts og håndtering af C-sproget, dækker emner om informationssikkerhed, virtualisering og andre uerstattelige ting.

Niveauer og lag af abstraktion i Linux-operativsystemet

Brug af abstraktioner til at nedbryde computersystemer i komponenter gør dem nemmere at forstå, men nytter ikke, hvis der ikke er nogen struktur. Vi vil arrangere komponenterne i lag eller niveauer. Et lag eller lag er en måde at klassificere (eller gruppere) komponenter efter deres placering mellem brugeren og hardwaren. Browsere, spil osv. er placeret på det øverste lag; på det nederste lag ser vi computerens hukommelse: nuller og etaller. Operativsystemet optager det største antal lag mellem disse to.

Linux-operativsystemet har tre hovedniveauer. Hardwaren er placeret i bunden. De omfatter hukommelse og en eller flere centrale behandlingsenheder (CPU'er), der udfører beregninger og anmodninger om at læse fra og skrive til hukommelsen. Enheder såsom harddiske og netværksgrænseflader betragtes også som hardware.

Niveauet ovenfor er kernen, som er kernen i operativsystemet. Kernen er et program placeret i computerens hukommelse og giver instruktioner til den centrale processor. Kernen styrer hardwaren og fungerer primært som en grænseflade mellem hardwaren og ethvert kørende program.

Processer – der kører programmer administreret af kernen – udgør tilsammen systemets øverste niveau, kaldet brugerrum. Et mere præcist udtryk end "proces" er "brugerproces", uanset om brugeren interagerer med denne proces direkte. For eksempel kører alle webservere som brugerprocesser.

Der er en vigtig forskel mellem, hvordan kerneprocesser og brugerprocesser lanceres: Kernen kører i kernetilstand, mens brugerprocesser kører i brugertilstand. Kode, der kører i kernetilstand, har ubegrænset adgang til processoren og RAM. Dette er en stærk fordel, men det kan være farligt, fordi det tillader kerneprocesser nemt at forstyrre hele systemet. Det område, der kun er tilgængeligt for kernen, kaldes kernel space.

Brugertilstand har til sammenligning kun en begrænset (normalt lille) mængde tilgængelig hukommelse, og kun processorsikre instruktioner er tilladt. Brugerplads refererer til områder af RAM, som kan tilgås af brugerprocesser. Hvis en proces mislykkes, vil konsekvenserne være begrænsede, og kernen vil være i stand til at rydde op i den. Det betyder, at hvis din browser for eksempel går ned, bliver de videnskabelige beregninger, du har kørt i baggrunden i et par dage, ikke forstyrret.

Teoretisk set er en ukontrolleret brugerproces ikke i stand til at forårsage væsentlig skade på systemet. Det afhænger virkelig af, hvad du betragter som en "væsentlig skade" og de særlige privilegier ved processen, da nogle processer har lov til at gøre mere end andre. Kan en brugerproces for eksempel fuldstændig ødelægge data på en harddisk? Hvis du konfigurerer tilladelserne korrekt, kan det, og det vil være ekstremt farligt for dig. Der er sikkerhedsforanstaltninger på plads for at forhindre dette, og de fleste processer vil simpelthen ikke få lov til at forårsage kaos på denne måde.

Grundlæggende kommandoer og mappestruktur

Dette kapitel er en reference til Unix-operativsystemets kommandoer og hjælpeprogrammer. Du kender sikkert allerede de fleste af disse kommandoer, men for at give dig lidt selvtillid, især når det kommer til mappestruktur. Her er noget introduktionsmateriale, som jeg vil referere til gennem bogen.

Hvorfor taler vi om Unix-kommandoer? Handler denne bog ikke om, hvordan Linux fungerer? Ja, selvfølgelig, om dette, men selve kernen i Linux er Unix-systemet.

Du vil se ordet Unix oftere her end Linux, fordi det, du lærer, umiddelbart kan anvendes på Solaris, BSD og andre Unix-relaterede systemer. Jeg har forsøgt at undgå at dække for mange Linux-specifikke brugergrænsefladeudvidelser, ikke kun for at give dig et solidt grundlag for at bruge andre systemer, men også fordi sådanne udvidelser er ret ustabile. Du vil være i stand til at tilpasse dig til nye Linux-udgivelser hurtigere, hvis du kender de grundlæggende kommandoer.

Hvordan indlæses Linux-kernen?

Nu ved du om den fysiske og logiske struktur af et Linux-system, hvad kernen er, og hvordan man arbejder med processer. Du vil få information om, hvordan kernen starter eller starter, med andre ord, hvordan kernen flytter ind i hukommelsen indtil det punkt, hvor den første brugerproces starter. Et forenklet diagram over indlæsningsprocessen ser sådan ud.

  1. Systemets BIOS eller boot-firmwaren indlæser og kører systemstartindlæseren.
  2. Systemopstartsindlæseren lokaliserer kernebilledet på disken, indlæser det i hukommelsen og kører det.
  3. Kernen initialiserer enheder og deres drivere.
  4. Kernen monterer rodfilsystemet.
  5. Kernen kører init-kommandoen med proces-id 1. Dette punkt er starten på brugerrummet.
  6. Init-kommandoen starter resten af ​​systemprocesserne.
  7. På et tidspunkt starter init-kommandoen en proces, der giver dig mulighed for at logge på systemet. Dette sker normalt i slutningen eller kort før systemet starter.

Trin et til fire er dækket her, med fokus på kernen og system bootloadere. Kapitel 6 fortsætter historien om at indlæse brugerplads.

At være i stand til at identificere hvert trin i opstartsprocessen vil vise sig uvurderligt ved fejlfinding af opstartsproblemer og vil også hjælpe dig med at forstå systemet som helhed. Standardopstartstilstanden i mange versioner af Linux gør dog ofte nogle af de tidlige trin svære (hvis ikke umulige) at identificere, og du vil sandsynligvis først være i stand til at se på dem, når de er færdige, efter du har logget i.

Introduktion til C Code Compilation Software

De fleste offentligt tilgængelige tredjepartssoftwarepakker til Unix kommer i kildekode, som du kan bygge og installere. En grund til dette er, at der er så mange forskellige versioner og arkitekturer af Unix (og Linux selv), at det ville være svært at skabe binære pakker til alle mulige platformskombinationer. En anden vigtig grund er, at den brede distribution af kildekode i Unix-fællesskabet tilskynder brugerne til at rette fejl i softwaren og introducere nye funktioner, hvilket giver mening til begrebet "open source".

Næsten alt, hvad du ser på et Linux-system, kan fås som kildekode, fra kernen og C-biblioteket til browsere. Det er endda muligt at opdatere og udvide systemet som helhed ved at (gen)installere dele af systemet fra kildekoden. Du bør dog sandsynligvis ikke opgradere din computer ved at installere alt fra kilden, medmindre du nyder processen eller har en anden grund.

Linux giver normalt nemme måder at opdatere kritiske dele af systemet på, såsom kommandoer i /bin-mappen, og en ekstremt vigtig egenskab ved systemerne er, at de normalt løser sikkerhedsproblemer meget hurtigt. Forvent dog ikke, at din version giver alt, hvad du har brug for, uden dit input. Her er et par grunde til, at du måske selv skal installere visse pakker:

  • at styre konfigurationsparametre;
  • for at installere softwaren, hvor end du har brug for det. Du kan endda installere flere forskellige versioner af den samme pakke;
  • for at kontrollere, hvilken version du installerer. Systemdistributioner har ikke altid den nyeste version af alle pakker, især dem, der er relateret til yderligere software (såsom Python-biblioteker);
  • for bedre at forstå, hvordan pakken fungerer.

Webservere og applikationer

Linux er et populært system til webservere, og den regerende monark blandt Linux-applikationsservere er Apache HTTP Server (almindeligvis blot omtalt som Apache). En anden webserver, du ofte vil høre om, er Tomcat (også et projekt af Apache-udviklerne); det giver understøttelse af Java-applikationer.

Webservere selv gør ikke meget: de kan gemme filer, og det er det hele. Det ultimative mål for de fleste webservere, såsom Apache, er at levere en platform til at køre webapplikationer. For eksempel er Wikipedia-projektet bygget på MediaWiki-pakken, som du kan bruge til at organisere dit eget wiki-projekt. Indholdsstyringssystemer som WordPress og Drupal giver dig mulighed for at oprette dine egne blogs og multimediewebsteder. Alle disse applikationer er baseret på programmeringssprog, der fungerer særligt godt på Linux. For eksempel er MediaWiki, WordPress og Drupal-systemer skrevet i PHP.

Byggeklodserne, der udgør webapplikationer, er meget modulære, så det er nemt at tilføje dine egne udvidelser og bygge applikationer ved hjælp af frameworks som Django, Flask og Rails, som giver faciliteter til almindelige web-frameworks og funktioner, såsom brug af skabeloner, multi- brugerstyring og databasestøtte.

Download fra gratis fillager

Løs captchaen for at få adgang til links!