1 / 22

Adresserum

Adresserum. A d r e s s e r u m. 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.

oki
Download Presentation

Adresserum

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Adresserum A d r e s s e r u m • 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 adresserum 32MB 4GB

  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) 0001=MOVE 0011=Reg nr. 3 11111111=Adr. 255 512B RAM IR 0001001111111111 256 ord 0001001111111111 1 ord = 2 byte

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

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

  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 0 (irrelevant) Ude 1 0 Inde 2 (irrelevant) Ude 3 1 Inde • 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 MOVE .. 11111111 Sidenr. Siderammenr. Status 00 (irrelevant) 0 01 0 1 10 (irrelevant) 0 11 1 1 • MOVE .. 1111111 • Størrelse af sidetabel ?

  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 implementeretmed circulær liste R-bit • Ide: en blanding af FIFO og LRU • Udsmidning af • ældste side • blandt sider der ikke brugt "for nylig" 1 1 0 0 RAM med fire siderammer

  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 ? 1 beskedkø til alle indkommende beskeder kunde Over- tjener filosof 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 • 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(). // kundeid.c #include <stdio.h> 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); };

  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: <prompt> Kommando <prompt> /bin/sh Fil hvis Fil indeholder Kommando <prompt> Fil hvis Fil indeholder #!/bin/sh samt Kommando

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

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

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

  21. Shell-programmering: kommandolinjeparametre og betingelser • 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 [ <betingelse> ]; then <en ell. flere kommandoer>; fi; • #!/bin/bash • if [ $# != 1 ] • then echo "skriv: run.sh objektfilnavn" • exit • fi • echo ..

  22. Shell-programmering:løkker &brug af stdout fra andre processer • Løkker • For <var> in <list>; do <en ell. flere kommandoer>; 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

More Related