Procestræ under afvikling af cp init login shell cp cp src dest.

Slides:



Advertisements
Lignende præsentationer
Kort om JavaScript Afvikles i browser på klienten Sendes fra server (php, asp, aspx, htm) eller startes i klient som htm/html fil. Skabelon: –”main” -
Advertisements

Velkommen til Softwarekonstruktion
REGISTRERINGSDATABASEN
Programmeringsparadigmer.
07 – Kort om OO Introduktion.
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.
1 C-kursus 6. Lektion n Repetition af 5. Lektion n Vi mødes igen kl til gennemgang af 6. Lektion.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Symbolsk maskinsprog.
NetBeans Installation og brug.
Flerbrugermaskine Fælles maskine Root: webserver Peter: uploader filer Pia: programudvikling 1 langvarig proces, evt. med børneprocesser skiftende behov.
Første generation (maskiner/operativsystemer) 45-55: radiorør Kun maskinsprog programmering = skrivning af nullerog ettaller Intet operativsystem programmør.
DS-kursusgang nr. 4 IPC generelt IPC eksempel: beskedkøer IPC tidsforbrug: kontekstskift, skedulering C: abstraktion, funktionsbiblioteker.
Grundlæggende programmering Efterår 2001
Hvordan man skriver koden.
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.
GP5, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 5 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
FEN IntroJava AAU1 Opsamling: afvikling af Java-programmer Input fra keyboard og fil Fra en prompt Fra BlueJ Fra NetBeans.
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
Delphi og C++ Builder C++ Referencer og pointere.
Intro Bemærkninger? Præsentation af litteratur: PHP and MySQL Web Development (SAMS) PHP Pocket Reference (O’Reilly) Dictionary of Networking (Sybex)
Begreber og Redskaber 2. Plan for idag Noget om bestanddelene i et programmeringssprog Syntaksbeskrivelse af java Næste gang: –Binære tal –Repræsentation.
Intro til C# apps Kodegennemgang af simpel C# app
Delphi og C++ Builder C++ Builder. C++ Historie Sproget blev designet for AT&T af danskeren Bjarne Stoustrup En objektorienteret videreudvikling.
To måder at overføre objekt- referencer mellem processer (1) Via naming service - interface RMISolver (2) Som parametre til fjernprocedurekald - interface.
Program Design – 4 Introduktion til PHP. Dagens lektion Hvad er PHP?  - og lidt historie Hvordan virker PHP? Grundlæggende PHP  Variable  Typer  Løkker.
Fundamentale datastrukturer
Beskeder/beskedkøer Afsender- proces hej Modtager- proces.. msgsnd(..,"hej",..);.. msgrcv(..);.. Afsender skal bl.a. angive den besked der ønskes afsendt.
FEN KbP/seminar 1: Specifikationer/Notationen Q 1 Kontraktbaseret programmering: Seminar 1 Om specifikationer Algoritmenotationen Q.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Paradigmer i Programmering 2. Sammensatte typer Tupler og lister Programmering med rekursion Programmering med pipe-lines Programmering med polymorfe.
Paradigmer i Programmering 1. Program for idag : Funktioner og udtryk i SML : Øvelse : Frokost – 14.00: Deklarative.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
11 - Exceptions. 2 NOEA2009Java-kursus – Exceptions Hvad er en exception? En undtagelse. Typisk en fejl der opstår runtime Afbryder det normale programflow.
Grundlæggende XML og XML- baserede teknologier til textmodellering DTD 2. kursusgang (7/ )
Paradigmer i Programmering 1. Plan for kurset 4 x Mads R, 4 x Torben B, 2 x opgave MR: Funktionsprogrammering, SML TB: Logikprogrammering, Prolog Opgave:
C#: Udtryk og metoder Kilde: Joe Hummel. 2 Nordjyllands Erhvervakademi – 2008 Indhold “With regards to programming statements and methods, C# offers what.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Hvad består en distribueret applikation af ? Processer der kører på hver deres maskine Tråde - 1 eller flere "letvægtsprocesser" per proces Objekter i.
PD – kursusgang 3 Introduktion til Java Script. Mål Viden om hvordan JavaScripts indlejres i HTML dokumenter Viden om programmering i JavaScript  Erklæring.
Per Printz Madsen Linux proces og tråd programmering Per Printz Madsen Aalborg Universitet Institut for.
Længste plateau En klassisk problemstilling (Gries, 1981) - og her i Java!!! Denne opgave drejer sig om at bestemme længden af det længste plateau i en.
Process Control Hardware baggrund Process begrebet i et OS Process tilstande Context switching.
Per Printz Madsen 1 Linux kernen Monolithic kernel Support for dynamiske moduler Få kerne tråde Preemptive.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
Per P. MadsenStyresystemer og tjenester1 Indhold: 1.Introduktion til styresystemer. 2.Processer og tråde. 3.Synkroniseringsmetoder og InterProcesCommunikation.
Per P. MadsenStyresystemer og tjenester1 Threads.
Tekst filer Tekstfiler opbygges normalt af linier, hvor disse ikke behøver at være samme længde. Når man skal arbejde med tekstfiler, ønsker man metoder.
Paradigmer i Programmering 3. Højere ordens funktioner Idag: Højere ordens funktioner Algebraiske datatyper Næste gang: I/O, Filer, interaktive programmer.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
1 Processer. 2 fork int fork(); Danner en ny proces med samme indhold som forældre processen. I begge processer er programtælleren placeret lige efter.
Kjeld Svidt  Institut for Byggeri og Anlæg  Aalborg Universitet IT i Byggeriet Semester kursusgang Projektweb og html (fortsat) Kjeld Svidt.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
DAIMIIntroducerende objektorienteret programmeringkd.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
Indledende Programmering Uge 6 - Efterår 2006
Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Java på 20 minutter (eller lidt mere)
 Jens Bennedsen 2001Multimedie programmering3A.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
Multiple processer på web-site Web- server filer Kunde 1 Kunde 2 Kunde p1p2p internet.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering5C.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
Embedded SW – C & picoBlaze
Lav et nyt projekt og tilføj denne gang pakken Graphic LCD.
Studiepraktik Thomas Bøgholm Mikkel Hansen Jacob Elefsen
Programmering.
Forelæsning Uge 4 – Torsdag
Præsentationens transcript:

Procestræ under afvikling af cp init login shell cp cp src dest

Filer 1. Hvad er filer ? 2. Formål ? 3. Navngivning ? 4. Indre struktur ? 5. Ydre attributter ? 6. Brug ?

Formål med filer Lagring af data med persistens stor kapacitet tilgængelighed

Navngivning Syntaks for filnavne: maks. antal tegn ? forbudte tegn ? Filnavn = sti absolut stinavn relativt stinavn i forhold til arbejdskatalog Når processer arbejder med filer: filnavn bruges ved åbning af fil derefter bruges en form for reference til filen (eks.: in ) FileInputStream in = new FileInputStream("/home/jens/src"); byte b = in.read();

Aktuelt katalog Alle processer har et aktuelt katalog Nye processer fødes med forælder-processens aktuelle katalog pwd Udskriver stinavn for det aktuelle katalog ls Lister filerne i det aktuelle katalog cd Dir Ændrer det aktuelle katalog cp src dest cp-processen overtager aktuelt katalog fra shellen

Indre struktur af filer Unix: En fil er en sekvens af bytes. Software udenfor operativsystemet bruges til at tolke disse bytes som f.eks. heltal tegn tekststrenge træer FileInputStream in = new FileInputStream("/home/jens/src"); byte b = in.read(); char c = (char)in.read;

Attributter Information om filen Ikke en del af filen ls -l *.java -rw-rw-r--.. nielsj Sep 6 17:41 Tolkning.java Adgang user/group/other ownerbytessidste ændringfilnavn chmod u+x Tolkning.java ls -l Tolkning.java -rwxrw-r--..

Input og output - hvordan kommer data til/fra processer filer proces parametre standard input standard output standard error besked- køer sockets... environment- variable

Input og output til ls filer ls parametre standard input standard output standard error besked- køer sockets... "-l" "Tolkning.java""-rwxrw-r--.." Filattributterne læses i det aktuelle katalog

Shellen kan omdirigere standard i/o ls -l Tolkning.java > slide.txt filer ls besked- køer sockets... "-rwxrw-r--.." slide.txt

cp cp src dest Input til cp: - tekststrengene src og dest overføres som parametre - filen src åbnes og er "almindeligt" input Output for cp: - filen dest skabes og er almindeligt output. - standard error bruges til div. fejlrapportering - standard output kan bruges til at vise hvilke filer der kopieres

Brug af systemkald i cp open(src,..); open(dest,..); while (..) { read(..,src,..); write(..,dest,..); } close(src); close(dest); OBS Pseudokode !

Hello World i C // Filnavn: hello.c #include main() { printf("Hello World \n"); } Kommentarer indlejres med //.. eller /*.. */ som i Java. Der skal være en main-funktion til at starte programudførelsen. #include er et direktiv der kopierer den angivne fil ind i filen. #include betyder at stinavnet er relativt til visse systemkataloger, som C-oversætteren kender. #include "navn" betyder at stinavnet først tolkes som relativt til det hello.c's katalog, dernæst som. Direktiver udføres af præprocessor.

Struktur af C-programmer #define BUF_SIZE 4096; char buf[BUF_SIZE]; void main(..) {.. while (..) {.. in = read(src,buf,BUF_SIZE);.. }.. } En C-kildetekstfil ("oversættelsesenhed") indeholder: erklæringer af funktioner (jf. metoder i Java) den enkelte fil behøver ikke indeholde erklæring af en main-funktion direktiver (#include, #define) til præprocessoren erklæringer af globale ("eksterne") variable

Erklæring af funktioner hello.c (jf. Kernighan/Ritchie): main() {..} cp.c (jf. Tanenbaum): void main(int argc,char *argv[]) {..} void er redundant og præciserer at funktionen ikke har returværdi. argc har samme værdi som args.length() i Java char *argv[] er en erklæring af argv som (hold fast !): et array af tegn-pointere = et array af strenge

Prototyper for funktioner Tanenbaum: void main(int argc, char *argv[]); // prototype.. void main(int argc, char *argv[]) { int src, dst,…; // selve funktionen } I programteksten skal funktioner være erklæret før de kaldes, enten ved den egentlige erklæring eller ved en prototype. Prototypen skal angive samme signatur, typer af parametre og eventuel returværdi, som den egentlige erklæring, mens navne på parametre er ligegyldige (og kan udelades). Prototyper anbringes meget ofte i såkaldte header-filer (.h). Prototypen i Tanenbaums program er redundant.

exit() Tanenbaum: void main(..) {.... exit(1); // oops.. exit(0); } Udførelse af exit() terminerer program (modsat return der blot terminerer den aktuelle procedure). Parameter-værdien X til exit(X) overføres til forældre-proces (skal "spørge" til den). Konvention: 0 = succes Alt andet = fejl, talværdi indikerer hvilken. Kun for main: exit(X) svarer til return X.

Systemkaldet open() int src = open(argv[1],O_RDONLY); tjekker rettigheder finder filen returværdi er fildeskriptor, der bruges som indgang i tabel med information om processens åbne filer. O_RDONLY fortæller at filen kun skal læses O_RDONLY repræsenterer et tal (bitmønster) (er defineret ved #define O_RDONLY TAL )

Cp alt i alt - read/write til/fra array af tegn #define BUF_SIZE 4096;.. char buf[BUF_SIZE];.. void main(..) {.. src = open(..); if (src < 0) exit(2); dest = open(..); if (dest < 0) exit(3); while (1) { in = read(src,buf,BUF_SIZE); if (in <= 0) break; // blev der læst mindst 1 byte ? out = write(dest,buf,in); // break hopper ud af løkken if (out <= 0) break; } close(..); close(..); exit(0); }

Hvorfor er cp skrevet i C ? C er hurtigere end f.eks. Java, bl.a. til håndtering af arrays. C har grænseflade til systemkald, som både er (rimelig) brugervenlig og giver mulighed for at specificere de relevante parametre (antal tegn som ønskes læst etc.).

Kontekstskift under afvikling af cp cp - open - cp - open - cp - read - cp - write - cp - read - write … …. cp - read - cp - write - cp - close - cp - close - cp