Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Adresserum Adresserum: Det interval af adresser, der kan arbejdes med i den samme proces (fra 0 til største adresse) Lippiatt++: adresser fylder 8 bit.

Lignende præsentationer


Præsentationer af emnet: "Adresserum Adresserum: Det interval af adresser, der kan arbejdes med i den samme proces (fra 0 til største adresse) Lippiatt++: adresser fylder 8 bit."— Præsentationens transcript:

1 Adresserum Adresserum: Det interval af adresser, der kan arbejdes med i den samme proces (fra 0 til største adresse) Lippiatt++: adresser fylder 8 bit adresserum: 0 - 256B Intel x86, x=4,5,.. Adresser fylder 32 bit adresserum: 0 - 4GB AdresserumAdresserum 4GB 32MB adresserum

2 Swapping og paging Flytning af processer (swapping) eller dele af processer (paging) mellem arbejdslager og fjernlager. Baggrund: På den ene side skal arbejdslager rumme alle processers procesbillede aht. hurtig overførsel af instruktioner og data til CPU. På den anden side har arbejdslageret ikke plads nok til alle processerne ! Faktisk er der ikke engang plads nok til en enkelt meget stor proces ! Ide / håb: Swapping: Processer der alligevel ikke kører kan flyttes.. Paging: Del af procesbillede, der alligevel ikke bruges, kan flyttes..

3 Paging Da paging også er nødvendig hvis 1 isoleret proces er for stor til RAM-lageret, antages for nemheds skyld at der kun er 1 proces Løsninger: eliminer problemet ved at begrænse adresserum (?) opdel processen i sider hvoraf nogle gemmes på HD Målsætninger for paging: transparent (usynligt for programmør) effektivt (minimer ind/ud-paging & anden administration) undgå katastrofer når en del af processen mangler

4 Lippiat++ (RAM str. = adr.rum) 512B RAM 1 ord = 2 byte 256 ord 0001001111111111 IR 0001=MOVE 0011=Reg nr. 3 11111111=Adr. 255 0001001111111111

5 Lippiat++ (RAM str. < adr.rum) 256B RAM 1 ord = 2 byte 128 ord 0001001111111111 IR 0001001111111111 ??? MMU

6 Lippiat++ (RAM str. < adr.rum) Side 3 (inde) 512B proces inddeles i 4 sider, der alle gemmes på HD Side 2 (ude) Side 1 (inde) Side 0 (ude) 256B RAM inddeles i to siderammer Ramme 1 Ramme 0 Indholdet af virt. adr. 255 / 11111111 ligger i fysisk adr. 127 / (0)1111111

7 Side-tabel (page table) Indhold - for alle adresser i virtuelt adr.rum skal tabellen kunne vise: er adressen i RAM eller ej ? hvis ja, hvor i RAM ? Brug: Alle referencer til virtuell adr.rum går via sidetabel opslag skal være hurtigt tabellen skal være lille (kunne være i MMU)

8 Design af sidetabel Sidenr. Siderammenr. Status 1 0Inde 0 (irrelevant)Ude 3 1Inde 2 (irrelevant)Ude Ide til hurtigt opslag & transformation virt./fysisk adresse: de første bit i en virtuel adresse er ens for alle adr. på samme side

9 Opslag i sidetabel Sidenr. Siderammenr. Status 01 01 00 (irrelevant)0 11 11 10 (irrelevant)0 MOVE.. 1111111 Størrelse af sidetabel ? MOVE.. 11111111

10 Sidetabeller - andre spørgsmål Hvad sker der når en side mangler i RAM-en (når en virt.adr. tilhører en side der er "ude") ? Page fault Operativsystemet henter den manglende side, og gemmer den "udsmidte" side (om nødvendigt). Valg af sidestørrelse f.eks. 4K Store sidetabeller kan ikke være i CPU/MMU kan faktisk heller ikke være i RAM flerniveau-sidetabeller (f.eks. 3)

11 Paging-algoritmer Paging-algoritme = metode til at udvælge sider til "udsmidning" Kriterier: minimere antallet af page faults effektivitet Mulige forløb af programafvikling: 333322221111000033332222 303020201010 Principper: approximer fremtidigt brug med hidtidig brug ikke "retfærdighed" mellem processer Evt. page fault afhænger af paging algoritme Sammenlign FIFO og LRU (Least Recently Used)

12 "Second change" paging algoritmen implementeret med circulær liste Ide: en blanding af FIFO og LRU Udsmidning af ældste side blandt sider der ikke brugt "for nylig" 1 R-bit 1 RAM med fire siderammer 0 0

13 Paging vs. swapping Paging vigtigere end swapping swapping af hel proces tager lang tid de fleste processer har dele som ikke bruges meget Ud-swappet proces = ingen alm. sider i RAM, heller ikke sidetabel Ud-swapning kan give bedre RAM-udnyttelse udswapning af processer der har været inaktive i lang tid

14 Hvordan identificere kunderne ? kunde Over- tjener filosof 1 beskedkø til alle indkommende beskeder 1 beskedkø per kunde til status m.m. Aftale mellem kunde/overtjener om hvad der er kundens ID Formål: Information sendes fra filosof til den rigtige kunde Overtjener kan trække numre fra talfølge Kunde kan selv generere unikt ID ((andre IPC-faciliteter order dette automatisk (sockets, kommer på senere kursus)))

15 Proces-id // kundeid.c #include struct besked { long int kunde_id; char txt[40]; }; main() { struct besked min_besked = {(long int)getpid(),"Hej, jeg vil gerne spise"}; printf("Beskedens kunde_id: %d \n",min_besked.kunde_id); printf("Beskedens txt: %s \n",min_besked.txt); }; Alle processer har forskelligt proces-id (0-32K). Proces-id genbruges - men først når processen er død. C-programmer kan læse egen proces-id med getpid().

16 Shellen Findes i forskellige udgaver /bin/sh /bin/bash /bin/csh Default grænseflade til maskinen/operativsystemet især til at starte processer Jf. passwordfil nielsj:xyzv¤#!&/(Ckjl:..:/home/nielsj:/bin/bash Tekstbaseret modsat grafisk grænseflade (lidt) mere besværlig at bruge (meget) større udtrykskraft

17 Shellscripts Et shellscript er en fil med kommandoer der kan forstås og udføres af shellen. Shellscripts kan begynde med #!/bin/sh for at fortælle operativsystemet, at sciptet skal fortolkes af det angivne program (shellen). (Næsten) samme effekt af følgende: Kommando /bin/sh Fil hvis Fil indeholder Kommando Fil hvis Fil indeholder #!/bin/sh samt Kommando

18 Shell-kommandoer til processtart Basal start af proces // starter programmet hvis lovligt kundeid // do inkl. parametre cc -o kundeid kundeid.c Samtidighed & // kør program i "baggrund" cc -o kundeid kunde.c & Overlejring exec // overlejring (sjældent god ide) exec kundeid

19 Kontrol af stdin/stdout ved processtart Omdirigering af output > // omdirigering af stdout til fil ls -l >data.txt Omdirigering af input sort <data.txt Pipes | // omdir. af stdout og stdin

20 Shellscripts som programmeringssprog Flere kommandoer kan sammensættes i sekvens ; // kommandoer adskilles af ";" cc -o kundeid kundeid.c ; kundeid // kommandoer kan også adskilles // vhja. linjeskift cc -o kundeid kundid.c exec kundeid Streng-variable = // tildeling, evt. oprettelse $ // variablens værdi min_pid=$$ // ($$ er procesid) echo "$min_pid"

21 Læsning af kommandolinjeparametre vja. $0, $1, etc #!/bin/bash # run.sh kildetekstfil=$1.c program=$1 echo "Oversætter kildeteksten i $kildetekstfil" cc -o $program $kildetekstfil echo "Oversættelse færdig" echo "Kører programmet $program" exec $program Betingede kommandoer if [ ]; then ; fi; #!/bin/bash if [ $# != 1 ] then echo "skriv: run.sh objektfilnavn" exit fi echo.. Shell-programmering: kommandolinjeparametre og betingelser

22 Shell-programmering: løkker & brug af stdout fra andre processer Løkker For in ; do ; done for navn in peter ole poul; do echo "Hej $navn"; done Brug af stdout fra andre processer $(program) For fil in $(ls); do..; done


Download ppt "Adresserum Adresserum: Det interval af adresser, der kan arbejdes med i den samme proces (fra 0 til største adresse) Lippiatt++: adresser fylder 8 bit."

Lignende præsentationer


Annoncer fra Google