OS Struktur Prosesser Kommandotolker Distribuert Filer Skript Mer?

Like dokumenter
Datamaskinene ved Ifi (inkludert en kort intro til Unix/Linux)

Hvordan jobber vi ved Ifi (inkludert en kort intro til Unix/Linux)

Unix/Linux for litt viderekomne

Unix/Linux for litt viderekomne

Nyttige Linux-kommandoer. Hvordan du kan jobbe mer effektivt Dag Langmyhr

Unix/Linux en annen måte å gjøre ting på

Generelt om operativsystemer

oppgavesett 4 INF1060 H15 Øystein Dale Hans Petter Taugbøl Kragset September 22, 2015 Institutt for informatikk, UiO

Oversikt. Beskrivelse Bash. 1 UNIX shell. 2 Kommandolinje som brukergrensesnitt. 3 Input og output. 4 Bash builtins. 5 Linux utilities.

Filer og kataloger, prosesser og jobber

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring

Operativsystemer og nettverk

Filsikkerhet i Linux

Operativsystemer og grensesnitt

Unix/Linux en annen måte å gjøre ting på

Eksamensinformasjon. Linux kommandolinje. Linux kommandolinje. Eksamensinformasjon. Fakultet: Teknologi, kunst og design. Tid: 3 t.

Dagens program. Operativsystemer Prosesser og systemkall i UNIX Hente prosessens nummer Starte prosesser Vente på prosesser Utføre programmer

Sikkerhet: Virus Sikkerhet i operativsystemet Maskinstøtte for sikkerhet Trojanske hester Ormer. IN 147 Program og maskinvare.

Unix/Linux en annen måte å gjøre ting på

oppgavesett 4 INF1060 H16 Hans Petter Taugbøl Kragset Øystein Dale Christian Resell 27. september 2016 Institutt for informatikk, UiO

Generelt om operativsystemer

Læringsmål og pensum. v=nkiu9yen5nc

Funksjonalitet og oppbygning av et OS (og litt mer om Linux)

IN 147 Program og maskinvare

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang

Prosesstabeller (PCB - Prosess Control Block) Se på PD: kommandoene ps og top Bakgrunnsprosesser Opprettelse av prosesser:

Singletasking OS. Device minne Skjerm minne. Brukerprogram. Brukerdata/heap. Stack. Basis for flerprosess-systemer.

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring

IT1101 Informatikk basisfag, dobbeltime 18/9. Kommunikasjon med perifere enheter. Kontrollere. Kontrollere (2) I/O-instruksjoner

Oppsummering Assemblerkode Hopp Multiplikasjon Kode og data Array Oppsummering

Fra Python til Java, del 2

EKSAMEN. Operativsystemer. 1. Læreboken "A Practical Guide to Red Hat Linux" av Mark Sobell 2. Maks. tre A-4 ark med selvskrevne notater.

Dagens tema. Nyttige programmer Programmet make. Hvis én fil endres, hvilke filer må da kompileres på nytt?

Oppgave 1 - Linux kommandolinje (%)

$ls -l $grep -i Olsen adresseliste.txt less #!/bin/sh $echo `ls` $chmod 755. Praktisk Linux. Grunnleggende skall kommandoer. Irene Ludvigsen Husa

Lynkurs i shellprogrammering under Linux

Høgskolen i Telemark Fakultet for allmennvitenskapelige fag

Definisjon av prosess

Læringsmål og pensum. Oversikt. Systemprogramvare Operativsystemer Drivere og hjelpeprogrammer. To hovedtyper programvare

1 Diverse linuxtips. Innhold

Hendelser Apprentice ComputerCraft PDF

Emnenavn: Datakommunikasjon. Eksamenstid: 9:00 til 13:00. Faglærere: Erling Strand

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

NSA mandag 4. oktober Brukerbehandling Systempolitikk Kontroll av resurser Om system logger Litt om cron og cfengine

Dagens tema. Nyttige programmer Programmet make. Flyt-tall Representasjon av flyt-tall. Standarden IEEE 754. Systemkall i Unix

EKSAMEN. Operativsystemer og nettverk

Brukerveiledning for programmet HHR Animalia

1. Introduksjon til operativsystemer

Prøve- EKSAMEN. Operativsystemer med Linux

Løsningsforslag til eksamen 24. november 2015

Filer i Linux og Bourne-again shell

Kurset består av to relativt uavhengige deler. Foreleser: Hårek Haugerud, rom PS431

Brukerprogram OS hardware

Hangman. Level. Introduksjon

1 Diverse linuxtips. Innhold. 1.1 Klipp og lim med musen

Hangman. Steg 1: Velg et ord. Steg 2: Gjett en bokstav. Sjekkliste. Sjekkliste. Introduksjon

Eksamensinformasjon. Prosesser. Prosesser. Eksamensoppgave. Operativsystemer (DATS/ITPE2500) Bokmål 06. juni 2017 kl

ITPE/DATS 2400: Datamaskinarkitektur og Nettverk

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Ny EKSAMEN. Operativsystemer og nettverk

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Lars Vidar Magnusson. October 11, Lars Vidar Magnusson () Forelesning i Operativsystemer October 11, / 28

Betinget eksekvering og logiske tester i shell

Fjerninnlogging over Internett

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring

Tildeling av minne til prosesser

Oppgaver til forkurs i informatikk dag 1

Oppgaver til forkurs i informatikk dag 2

Bli Kjent med Datamaskinen Introduksjon ComputerCraft PDF

Kjenn din PC (Windows 7)

Høgskoleni Østfold. Ny/utsatt EKSAMEN

Først må vi få datamaskinen til å velge et tilfeldig ord, så la oss begynne. Lagre programmet ditt og kjør det. Hvilket ord skrives ut?

4. KOMMANDOER OG FORKORTELSER 6. UTLOGGING (07) STYRESPRAK GENERELT. Paul Gundersen. Styrespråk. --Innlogging Kommandoer NORD SINTRAN

For å sjekke at Python virker som det skal begynner vi med å lage et kjempeenkelt program. Vi vil bare skrive en enkel hilsen på skjermen.

Filer i Linux og Bourne-again shell

1,r H øgs kolen i Østfol d

Hvordan en prosessor arbeider, del 1

! Ytelsen til I/O- systemer avhenger av flere faktorer: ! De to viktigste parametrene for ytelse til I/O er:

Introduksjon til dataanlegget ved Institutt for informatikk. Marc Bezem Institutt for informatikk Universitetet i Bergen

Oversikt. Historie Struktur Moderne UNIX systemer Moderne UNIX kernel struktur 1 UNIX. 2 Linux. 3 Process. 4 Process models

Bits&Bytes Om datamaskinens oppbygging og virkemåte. TOS - IKT Tirsdag 4. desember 2012 Seksjon for digital kompetanse

Filterprogrammer og redirigering av I/O

Linux-programmer som bruker regulæruttrykk: grep, sed, awk

Prosessoren. Bakgrunnen Innhold LMC. Assemblerkode Oppsummering instruksjonene [Englander kap 6] Hva inneholder den? Hvordan utføres instruksjonene?

P1 P2 P3 P1 P2 P3 P1 P2. OS gjør Contex Switch fra P1 til P2

Filterprogrammer og redirigering av I/O

Introduksjon til versjonskontroll av Ola Lie

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Filer og unntak (exceptions) Utgave 3: Kap. 6. Terje Rydland - IDI/NTNU

EKSAMEN. Dato: 7. desember 2016 Eksamenstid: 09:00 13:00

Høgskolen i Telemark Fakultet for allmennvitenskapelige fag

Del 1 En oversikt over C-programmering

Ny på nett. Operativsystemer

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse. INF 5110, 10/5-2011, Stein Krogdahl

GUI («Graphical User Interface») del 2

Programmeringsspråket C Del 3

Introduksjon til kurset og dets innhold

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse

Samtidige prosesser. Prosessor modus. Hvordan kan OS effektivt kontrollere brukerprosesser? Hvordan kan OS. kontrollere brukerprosesser?

Transkript:

Uke 34 Uke 35 Uke 36 Uke 37 Uke 38 Uke 39 Uke 40 Uke 41 Uke 42 Uke 43 Uke 44 Uke 45 Uke 46 Uke 47 sikkerhet datanett programvare digitale kretser

Operativsystemer Hva gjør et operativsystem? Hvordan implementerer man det? Prosesser Brukergrensesnitt (Eksemplene vil være fra Unix/Linux, men prinsippene er de samme for andre operativsystemer.) [Englander kap 15+16]

OS Struktur Prosesser Kommandotolker Distribuert Filer Skript Mer? Hvorfor trenger vi et operativsystem? Hva gjør et operativsystem? Trenger vi et OS? Er det mulig å klare seg uten? Et eksempel: En Nord-12 i 1972 1 2 3 4 5 6 7 8 Lese inn et hullbånd med redigeringsprogrammet. Lese inn et hullbånd med programmet mitt. Redigere det. Skrive ut et hullbånd med det oppdaterte programmet. Lese inn et hullbånd med kompilatoren. Lese inn hullbåndet med programmet mitt. Kompilatoren skriver et hullbånd med ferdig maskinkode. Lese inn hullbåndet med koden og kjøre programmet.

Hvorfor trenger vi et operativsystem? Vi trenger altså et OS til å kommunisere med brukeren administrere kjøringen (dvs starte og stoppe programmer) administrere lagring av filer på en sikker og brukervennlig måte. Lærebokens definisjon er: An operating system is a collection of computer programs that integrate the hardware resources of the computer and make those resources available to a user and the user s programs, in a way that allows the user access to the computer in a productive, timely, and efficient manner.

Hovedoppbyggingen Oppbyggingen av et operativsystem Hvordan organisere et OS på en sikker og trygg måte? Ett hovedproblem er at det skjer mye samtidig i et OS. Kernel Den vanligste løsninger er å ha en kjerne som styrer alt. Den kjører i «supervisor mode». Mouse D D D Graphics card Network card Kjernen kommuniserer med periferenhetene med spesialskrevne kodebiter kalt drivere (D).

Brukerne kjører prosesser Prosesser P P P Brukerprogrammene er prosesser. De kjører i «protected mode» og må kommunisere med kjernen for Mouse Kernel D D D Network card kommunikasjon med periferenhetene kommunikasjon med andre prosesser Graphics card

Brukerne kjører prosesser Parallellisering Hvis datamaskinen har flere kjerner, kan prosessene kjøre på ulike kjerner og dermed gå fortere. Tråder Noen OSer tilbyr tråder (ofte kalt «lettvektsprosesser»). Flere tråder i en prosess kan kjøres parallelt, men de deler minne. Tidsdeling Når det er flere prosesser som skal kjøres på samme kjerne, vil OSet bytte på å kjøre dem (såkalt tidsdeling eller «timeslicing»).

Hvordan starter man det hele? Oppstart Hvordan starter man et OS når man mangler alle mekanismene man trenger for å kjøre programmer? Det skjer ved «bootstrapping» eller «booting». Gammelt ordtak: «To pull oneself up by one s bootstraps.» En vanlig måte å «boote» på er 1 Når prosessoren slås på, starter den en Bootstrap loader som ligger i BIOS («Basic Input/Output System»). BIOS ligger i ROM (= Read-only memory). 2 BIOS er spesiallaget for den enkelte datamaskinmodell. Det er en samling rutiner som kan lese fra disk eller nettverket. 3 Bootloaderen leser inn kjernen i selve OS-et og starter det.

Hvordan administrere prosesser Prosesser Alle system- og brukerprogrammer kjøres som prosesser. $ ps PID TTY TIME CMD 19967 pts/1 00:00:00 bash 24715 pts/1 00:00:18 emacs 26332 pts/1 00:00:00 preview 26333 pts/1 00:00:00 sh 26336 pts/1 00:00:04 xpdf 27842 pts/1 00:00:00 ps (Alle prosesser har et unikt nummer: PID.) Kommandoen $ ps -ef vil vise alle prosessene på maskinen; det vil være flere hundre. $ ps -ef wc 343 3256 33690

Hvordan administrere prosesser Å starte nye prosesser Et program kaller en funksjon i kjernen ved hjelp av såkalte systemkall. Dette er mulig i de fleste programmeringsspråk; i Python brukes biblioteket subprocess. Dette programmet oppretter en ny prosess som kjører programmet date; de to kjører i parallell. import subprocess print("starter date...") p = subprocess.popen(["date"]) print("og det var det."); Resultat: $ python3 run-date.py Starter date... Og det var det. Thu Oct 11 20:56:12 CEST 2018

Hvordan administrere prosesser Hvert kall på subprocess.popen starter en ny prosess. Prosessen forsvinner igjen når prosessens program avslutter (som date) eller vi dreper prosessen. Advarsel! Hvis man oppretter prosesser i en løkke som løper løpsk, vil man fylle maskinen med prosesser og alt vil gå i stå.

Hvordan administrere prosesser Parameteren 1 til Popen er en liste med programmet vi skal kjøre eventuelle parametre Følgende program starter en klokke som går inntil vi stopper den. import subprocess print("starter xclock...") p = subprocess.popen(["xclock", "-update", "1"]) print("da er den i gang."); 1 Popen kan ha flere parametre, men det tar ikke vi opp her.

Hvordan administrere prosesser Å drepe prosesser Funksjonen kill vil drepe en angitt process. Dette programmet venter 5 sekunder før det gjøres. import subprocess import time print("starter xclock...") p = subprocess.popen(["xclock", "-update", "1"]) print("da er klokken i gang."); for sek in range(5, 0, -1): print(sek) time.sleep(1) p.kill() print("nå er klokken borte.")

Hvordan starter en bruker nye prosesser på enklest måte? Kommandotolkeren Kommandotolkeren («shell-et») er én av prosessene; den vanligste i Linux heter bash («Bourne-again shell») men alle kan enkelt lage sin egen. Kommandotolkeren leser kommandonavn som brukeren skriver, og oppretter en prosess som utfører den. Normalt vil bash vente til prosessen er ferdig før den ber om ny kommando. Hvis kommandolinjen slutter med &, venter den ikke.

Hvordan starter en bruker nye prosesser på enklest måte? Eksempler $ date Thu Sep 12 15:29:09 CEST 2019 $ cal September 2019 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 $ ping www.ifi.uio.no PING webserver.ifi.uio.no (129.240.65.48) 56(84) bytes of data. 64 bytes from webserver.ifi.uio.no (129.240.65.48): icmp_seq=1 ttl=63 time=0.453 ms 64 bytes from webserver.ifi.uio.no (129.240.65.48): icmp_seq=2 ttl=63 time=0.328 ms 64 bytes from webserver.ifi.uio.no (129.240.65.48): icmp_seq=3 ttl=63 time=0.332 ms 64 bytes from webserver.ifi.uio.no (129.240.65.48): icmp_seq=4 ttl=63 time=0.278 ms ^C --- webserver.ifi.uio.no ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 2999ms rtt min/avg/max/mdev = 0.278/0.347/0.453/0.068 ms $ xeyes & [2] 29898

Hvordan stopper jeg prosesser i en kommandotolker? Hvordan stopper jeg prosesser? Det er flere muligheter: Ctrl + C stopper prosessen som akkurat nå kjøres av bash. Hvis prosessen har sitt eget vindu på skjermen, kan vi klikke på i rammen. Hvis vi vet prosessens nummer, kan vi ta livet av den: $ ps PID TTY TIME CMD 19967 pts/1 00:00:00 bash 24715 pts/1 00:00:37 emacs 31666 pts/1 00:00:00 xeyes 31680 pts/1 00:00:00 ps $ kill 31666 [2]+ Terminated xeyes

Hvordan stopper jeg prosesser i en kommandotolker? Min egen kommandotolker Som nevnt er det veldig enkelt å lage sin egen kommandotolker: import subprocess while True: linje = input("kommando: ") kommando = linje.split() if kommando[0] == "exit": break p = subprocess.popen(kommando) p.wait()

Det er mulig jobbe hjemmefra Fjerninnlogging Det er anledning til å åpne et kommandovindu på en annen maskin: $ ssh -CY brukernavn@login.ifi.uio.no bash ssh P bash sshd P Kernel Kernel D D D D D D Mouse Network card Mouse Network card Graphics card Graphics card

Tekstlige kommandoer er ikke alltid nok Vindussystemer Alle moderne OSer har et GUI (Graphical User Interface) for å ha mange vinduer på skjermen ha grafikk i vinduene (ikke bare tekst) få input fra mus (ikke bare tastatur)

Vindussystemet X Vindussystemet X er standard i Linux. bash xeyes Xserver Kernel D D D Mouse Network card Graphics card

Vindussystemet X Vindussystemet over nettet Vindussystemet X kan kommunisere over nettet. bash ssh Xserver sshd xeyes P Kernel Kernel D D D D D D Mouse Network card Mouse Network card Graphics card Graphics card

Lagring Filer En fil er en samling byte lagret i eller ved datamaskinen (på disk, SSD (Solid State Drive) el). OSer holder orden på filens navn hvilken fysiske enhet den er lagret på, og hvor i mappestrukturen filen ligger

Lagring

Lagring / bin dev ifi local chmod sh null tty midgard utgard bin man a02 dag Kurs Privat www docs

Informasjon om filer Informasjon om filer Kommandoen ls («list files») forteller oss om filene i den mappen vi er i: $ ls -l total 436 -rw-r--r--. 1 dag ifi-a 71193 Oct 10 14:04 hullband.jpg -rw-r--r--. 1 dag ifi-a 959 Oct 9 10:55 kernel.1 -rw-r--r--. 1 dag ifi-a 3857 Oct 9 10:55 kernel.2 -rw-r--r--. 1 dag ifi-a 6809 Oct 9 10:55 kernel.3 -rw-r--r--. 1 dag ifi-a 6859 Oct 9 10:55 kernel.4 -rw-r--r--. 1 dag ifi-a 6855 Oct 9 10:55 kernel.5 -rw-r--r--. 1 dag ifi-a 346 Oct 9 10:55 kernel.log -rw-r--r--. 1 dag ifi-a 2090 Oct 9 10:55 kernel.mp -rw-r--r--. 1 dag ifi-a 2087 Oct 9 10:54 kernel.mp~ -rw-r--r--. 1 dag ifi-a 4164 Oct 9 10:55 kernel.mpx -rw-r--r--. 1 dag dag 30734 Oct 10 14:04 papertape.jpg -rw-r--r--. 1 dag ifi-a 202 Oct 9 10:59 ps.lst -rw-r--r--. 1 dag ifi-a 6581 Oct 10 14:41 uke-41.aux -rw-r--r--. 1 dag ifi-a 90791 Oct 10 14:41 uke-41.log -rw-r--r--. 1 dag ifi-a 3653 Oct 10 14:41 uke-41.nav -rw-r--r--. 1 dag ifi-a 939 Oct 10 14:41 uke-41.out -rw-r--r--. 1 dag ifi-a 128080 Oct 10 14:41 uke-41.pdf -rw-r--r--. 1 dag ifi-a 0 Oct 10 14:41 uke-41.snm -rw-r--r--. 1 dag ifi-a 6728 Oct 10 14:41 uke-41.tex -rw-r--r--. 1 dag ifi-a 4635 Oct 9 16:11 uke-41.tex~ -rw-r--r--. 1 dag ifi-a 915 Oct 10 14:41 uke-41.toc -rw-r--r--. 1 dag ifi-a 619 Oct 10 14:41 uke-41.vrb

Informasjon om filer -rw-r--r--. 1 dag ifi-a 71193 Oct 10 14:04 hullband.jpg -rw-r--r--. er beskyttelsen 1 er antall linker dag er filens eier ifi-a er filens gruppe 71193 er filens størrelse i byte Oct 10 14:04 er dato og klokkeslett da filen ble laget hullband.jpg er navnet

Beskyttelse av filer Beskyttelse av filer For å forstå beskyttelsen av filer i Unix, må man vite at Unix opererer med tre kategorier brukere: user (forkortet «u») er filens eier, dvs den som opprettet den. group (forkortet «g») er gruppen tilordnet filen. (Mer om dette siden.) other (forkortet «o») er alle andre brukere.

Beskyttelse av filer Det finnes tre privilegier for filer: read (forkortet «r») er retten til å lese filen. write (forkortet «w») er retten til å skrive på filen, dvs endre den. execute (forkortet «x») er retten til å utføre den, dvs bruke den som et program.

Beskyttelse av filer Privilegiene angis i bolker på 3 3 bokstaver: u g o {}}{{}}{{}}{ rwx r x r En bokstav angir at man har privilegiet, en at man ikke har det.

Hvordan lage skript-filer Skript-filer Ved å sette x-bit-et kan man enkelt lage nye kommandoer: 1 Lag en tekstfil med de kommandoene vi ønsker utført. 2 Sett x-bit-et: $ chmod ugo+x filnavn 3 filnavn er nå et program og kan utføres med $./filnavn Dette gjør det svært enkelt å tilpasse systemet med egne kommandoer.

Et eksempel Et eksempel: Er nettet OK? Dette programmet nett-ok sjekker om nettet er OK ved å spørre Ifi: $ more nett-ok ping -c4 www.ifi.uio.no $ chmod uog+rx nett-ok $./nett-ok PING webserver.ifi.uio.no (129.240.65.48) 56(84) bytes of data. 64 bytes from webserver.ifi.uio.no (129.240.65.48): icmp_seq=1 ttl=63 time=0.411 ms 64 bytes from webserver.ifi.uio.no (129.240.65.48): icmp_seq=2 ttl=63 time=0.534 ms 64 bytes from webserver.ifi.uio.no (129.240.65.48): icmp_seq=3 ttl=63 time=0.539 ms 64 bytes from webserver.ifi.uio.no (129.240.65.48): icmp_seq=4 ttl=63 time=1.56 ms --- webserver.ifi.uio.no ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3001ms rtt min/avg/max/mdev = 0.411/0.761/1.563/0.466 ms

Et eksempel Egne programmer kan kjøres fra den mappen de ligger i: $./nett-ok De også kjøres fra andre mapper om man angir hele filnavnet: $ ~/Kurs/in1020/nett-ok På Ifis Linux-maskiner har alle sin egen mappe for slike programmer: ~/bin. Programmer der kan kjøres allestedsfra: $ nett-ok

Parametre til skript Parametre En kommando kan ha parametre, for eksempel $ ping -c4 }{{} parameter nr 1 www.ifi.uio.no }{{} parameter nr 2 Disse kan vi få tak i i skriptet vårt som "$1" "$2"... "$@" gir oss alle parametrene.

Parametre til skript Et eksempel: Når er julaften? $ ls -l ~/bin/jul -rwxr-xr-x. 1 dag dag 12 Oct 11 14:43 /ifi/bifrost/a01/dag/bin/jul $ more ~/bin/jul cal 12 "$1" $ jul 2017 December 2017 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Fra mine egne gjemmer Fra min egen ~/bin Vis alle filene #! /bin/sh ~/bin/d ls -CF "$@" more Vis alle mappene #! /bin/sh ~/bin/vvd ls -lcfg $* grep ^d more

Hvor kan jeg finner mer informasjon? Literatur Operativsystemer Andrew S. Tanenbaum: Operating Systems: Design and Implementation, Prentice Hall 2006 Bash Chet Ramey & Brian Fox: Bash Reference Manual, https://www.gnu.org/software/bash/manual/ Vindussystemet X Wikibooks Guide to X11. https://en.wikibooks.org/wiki/guide_to_x11