Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Almindelige ("hårde") links (i filsystemer med i-noder) opg.txt jens: pia: ln /home/pia/opg.txt /home/jens/opg.txt hård link: ny post får i-node-nummer.

Lignende præsentationer


Præsentationer af emnet: "Almindelige ("hårde") links (i filsystemer med i-noder) opg.txt jens: pia: ln /home/pia/opg.txt /home/jens/opg.txt hård link: ny post får i-node-nummer."— Præsentationens transcript:

1 Almindelige ("hårde") links (i filsystemer med i-noder) opg.txt jens: pia: ln /home/pia/opg.txt /home/jens/opg.txt hård link: ny post får i-node-nummer på eksisterende i-node link-count bruges til at beslutte hvornår filen skal slettes opg.txt 1 2 pia

2 Symbolske links (stadig i-noder) opg.txt jens: pia: ln -s /home/pia/opg.txt /home/jens/opg.txt symbolsk link: ny post får ny i-node og ny blok, som indeholder filnavn. efter sletning af /home/pia/opg.txt peger link-filen på ikke-eksisterende fil. opg.txt 1 pia /home/pia/opg.txt 1 jens

3 Tjek af konsistens af filsystem Blok-konsistens: For hver blok udregn: X = antal filer der bruger blokken Y = antal gange blokken optræder i listen over ledige blokke. Krav: X+Y=1. Fil-konsistens: For hver fil X = antal kataloger der indeholder filen Krav: X = "link count" i filens i-node.

4 Blokstørrelse K bytes/blok R omdr./millisek. B bytes/spor S søgetid (spor) i millisek Fordelen ved små blokke: mindre spild i en fils sidste blok Fordelen ved store blokke: tidsforbrug til at finde og læse 1 blok (jf. Tanenbaum s. 171): S + (1/2)*R + (K/B)*R

5 Blok cache hdRAM read.. write.. read: læser fra cache i stedet for hd hvis blokken ikke er i cache, læses den fra hd write: skriver til cache i stedet for hd hvor tit skal en "dirty blok" i cachen skrives ud på hd-en ?

6 Løsning (?) Systemkald: do_not_interrupt_me();

7 Problem: race conditions Program "MitProgram" Pseudokode 1: Hvis reservation < pladser, så reserver Pseudokode 2: 1. Læs fil 2. If (pladser = reservationer) 3. then skriv på stdout: "fully booked" 4. else {skriv på stdout: "OK"; 5. skriv i fil: "reservationer = 100"} Fil "MineData": pladser = 100 reservationer = 99

8 Kritisk region - påbegyndes kun hvis fil ikke er låst Program Pseudokode 1: Hvis reservation < pladser, så reserver Pseudokode 2:.. 1. Læs fil 2. If (pladser = reservationer) 3. then skriv på stdout: "fully booked" 4. else {skriv på stdout: "OK"; 5. skriv i fil: "reservationer = 100"}.. Kritisk region Er filen låst ? Hvis ikke, så lås den ! Lås filen op igen

9 Løsning: Låsning af filer Udvider den almindelige adgangsregulering (jf. filers beskyttelsesbits) en fil kan være låst for en proces, som om processen ellers har ret til at læse/skrive i filen Fleksibilitet: låsning af en del af en fil delte låse Frivillighedsprincip

10 Systemkald til låsning Unix systemkald dedikeret til låsning fcntl(..) diverse faciliteter til findelt låsning m.m. yderligere konvention om navngivning af låse m.m. ikke nødvendig Det almindelige systemkald open (eller creat ) kan også bruges en ekstra fil bruges som låsefil låsefilen er tom hvis låsefilen "MineData.lock" findes, er filen "MineData" låst.. = open("MineData.lock",… | O_EXCL,..)

11 .. 1. Læs fil 2. If (pladser = reservationer).. Er filen låst ? Hvis ikke, så lås den ! Problem: Race conditions ved evaluering af indgangsbetingelse til kritisk region Kontekst- skift ?!? Løsning: systemkald er atomiske test og "låsning" udføres uden afbrydelse

12 Kontrol af password ved login init login shell beder om brugernavn og password password krypteres krypteret password sammenlignes hvis OK startes shell

13 /etc/passwd ls -l /etc/passwd -????????? … root …. cat /etc/passwd | grep root root: :…: :/bin/bash "Knækning" af password: Alle kan kopiere password-filen og gætte passwords med trial-and-error program.

14 Genbrug af klasser/funktioner Java: Klasser samles i pakker (og evt. jar-filer) Genbrugs-program (inkl. packageerklæring) oversættes Bruger-program (inkl. importsætning) oversættes g.javag.class b.javab.class

15 Oversættelse i C = egentlig oversættelse + linkning myprogr.cmyprogr.omyprogr cc -c myprogr.ccc -o myprogr myprogr.o.o-filer = objektfiler = maskinkode men ikke linket, dvs. har hverken definitioner eller adresser på eksterne funktioner flaget -c betyder: spring link-fasen over flaget -o betyder: placer output i den angivne fil (første parameter) hvorvidt cc -o er oversættelse eller oversættelse+linkning afgør oversætteren ud fra endelsen af inputfil (anden parameter) cc -o myprogr myprogr.c

16 Genbrug af C-funktion uden bibliotek getline.c myprogr.c getline.o myprogr.omyprogr cc -c getline.c cc -c myprogr.ccc -o myprogr myprogr.o getline.o Ved at liste getline.o som parameter til linkningen kommer definitionerne i getline.o med i myprogr (statisk linkning)

17 Genbrug af C-funktioner v.hj.a. biblioteker f2.c p.c f2.o p.op ar crv lib.a f1.o f2.o Ved at liste lib.a som parameter til linkningen kommer de relevante definitionerne i lib.a med i p (stadig statisk linkning) f1.cf2.olib.a cc -o p p.o lib.a

18 Arrays i C - erklæring og initialisering // med angivelse af overgrænse int a[10]; char b[256]; // uden angivelse af overgrænse (skal fremgå implicit) int c[] = {2,4,8,16,32,64,128,256,512,1024}; char e[] = "hello\n"; char d[] = {´h´, ´e´, ´l´, ´l´, ´o´, ´\n´, ´\0´}; int getline(char s[],..) // prototype & def. af fkt. Der kan erklæres arrays af alle typer. Første element har altid indeks 0. Arrays er ikke klasser - et array har ikke tilknyttet felter/metoder. Tekststrenge repræsenteres som array af tegn afsluttet med ´\0´.

19 Arrays i C - brug // Kernighan/Ritchie s. 29: #define MAXLINE 1000 main (..).. char line[MAXLINE]; while … getline(line,MAXLINE).. // kald int getline(char s[],int lim).. // def. Arrays parameteroverføres via pointer (jf. objektreferencer i Java). Ingen tjek af array-grænser. main getline line s

20 Internet-ormen Cracker: vil udføre et program - f.eks. sekvensen xy på en maskine hvor han ikke er oprettet som bruger kan kalde programmer f.eks. "finger" på maskinen fra fjern maskine x = "start unix shell", y = "der gør det og det" Ide: kald "finger" med for en for lang parameter, der ender på "xy": finger peter@cbs.dk-bla-bla-..-bla-xy Forudsætninger bl.a. at C ikke har automatisk tjek af om et array-indeks er udenfor arrayets grænser.

21 Implementation af CALL og RETURN (med rekursion) CALL PR.. PR:.. RETURN Retur-adresser for mere end et procedurekald gemmes på stakken. Indholdet af SP-registret er adressen på toppen af stakken. [[SP]] <- [PC] [SP] <- [SP]-1 [PC] <- PR [SP] <- [SP]+1 [PC] <- [SP] !!!!!!!!

22 Brug af stakken til implementation af RETURN IR IP SP stak tekst (program) data Plads til næste ret.adr. Returadresse CALL.. ?!?

23 Stak i Linux stak Returadresse adresse på shellen tekst data /bin/finger USER PATH CLASSPATH Environment- variable peter@cbs.dk-bla-bla-..-bla-xy... Parametre til programmet SP Filnavn


Download ppt "Almindelige ("hårde") links (i filsystemer med i-noder) opg.txt jens: pia: ln /home/pia/opg.txt /home/jens/opg.txt hård link: ny post får i-node-nummer."

Lignende præsentationer


Annoncer fra Google