Lärare och handledare. Systemnära programmering. I dag. Föreläsningar & Gruppövningar & Handledning. Marcus Karlsson

Relevanta dokument
Operativsystem Lektion 1. Lärare. Schema. Kurssajten Finns på adressen. Jan Erik Moström. Set Norman

Introduktion till hårdvara, mjukvara och operativsystem

Föreläsning 1 Unix. Datorer och datoranvändning Föreläsningar 2018/19. Operativsystem. Unix

Operativsystem Introduktion

Lärare. Operativsystem. Handledning. Kurssajt. Schema. Lektioner. Jan Erik Moström

Programmeringsteknik med C och Matlab

Datorer och datoranvändning Föreläsningar 2014/15. Föreläsning 1 Unix. Operativsystem. Unix

UNIX Introduktion UNIX. Datorerfarenhet. Vad menar man med operativsystem

Omkoppling av in- och utmatning. In- och utmatning i Unix. Kommando exempel, ls, pipe forts. Kommando exempel, ls, pipe

Filsystem. Varför? Hur? För att kunna lagra data mer permanent än i RAM. Vettig organisation Vettiga namn

Datorsystem och programmering

Projekt Fake för Virtutech

Föreläsning 13. In- och utmatning

Deklarera en struct som kan användas för att representera en rät linje

Repetition av filer Grundkurs i programmering med Python

Datorsystemteknik DAVA14 Föreläsning 10

Operativsystem (ID2200/06) XX XX:00-XX:00

Introduktion till Linux. TDDC66 Datorsystem och programmering Föreläsning (i) Peter Dalenius Institutionen för datavetenskap

Introduktion till Linux. TDDC66 Datorsystem och programmering Föreläsning 1 Peter Dalenius Institutionen för datavetenskap

Introduktion till Unix och Linux

Operativsystem - Filsystem

Grundkurs i programmering - intro

Operativsystem. Innehåll. Operativsystemets funktion. Vad är ett OS? Vart hittar men ett OS? OS hanterar processorns resurser

Föreläsning 1: Intro till kursen och programmering

Datorteknik ERIK LARSSON

Introduktion till programmering. Undervisning. Litteratur och examination. Lärare. Föreläsning 1

Strängar. Strängar (forts.)

Planering Programmering grundkurs HI1024 HT TIDAA

Fö 7: Operativsystem. Vad är ett operativsystem? Målsättning med operativsystem. Styr operativsystemet datorn?

Föreläsning 1: Intro till kursen och programmering

Planering Programmering grundkurs HI1024 HT data

Möte 10: Kommunikation mellan processer - (PI)

Introduktionsmöte Innehåll

Kurskatalog 2010 INNEHÅLLSFÖRTECKNING

Föreläsning 10: In- och utmatning speciellt filhantering

Vad är en dator? Introduktion till datorer och nätverk. Pontus Haglund Institutionen för datavetenskap (IDA) 21 augusti 2018

Generell säkerhet. Loggning - Hur mycket ska man logga? Inloggningsrutinerna i Unix. Loggning fortsättning

Föreläsning 2. Operativsystem och programmering

Introduktion till Linux. TDDE23 Funktionell och imperativ programmering, del 1 Föreläsning 1 Peter Dalenius Institutionen för datavetenskap

Operativsystem och användargränssnitt

DATORLÄRA Christophe Clément - Fysikum

Lab 7, 48 steg till ett bättre liv i Unix-labbet

TDDC77 Objektorienterad Programmering

Datorsystem 5. På denna föreläsning skall vi prata om Operativsystem Exempel på tenta (typ fjolårets)

Linuxadministration I 1DV417 - Laboration 1 Installation, användare och allmänt Linuxhandhavande

Systemnära programmering Tentamen. Systemnära programmering, 7.5hp 5 november 2012

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

Unix design. Unix är ett operativsystem från mellan 1969 och 1972, beroende på hur man räknar. Unix utvecklas fortfarande.

Introduktion till Datalogi DD1339. Föreläsning 1 8 sept 2014

Olika OS. Unix, Linux och Windows. Unix. Unix. En översikt av ett par OS. Titt på hur de gör. Många varianter. Mycket gemensamt. En del som skiljer

Introduktionskurs i datavetenskap, 3p.

Dagens föreläsning. Specialtecken. Mer om printf. Formateringssträngar. Mer om scanf. Programmeringsteknik för Ingenjörer VT05

Filer och structer Del 2

Flera processer. Minneshantering. Trashing kan uppstå ändå. Ersätta globalt

Operativsystem DVG A06. Definition. Varför operativsystem? - Vad är ett operativsystem?

Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen :00-18:00

Objektorienterad Programmering (TDDC77)

Linuxadministration I 1DV417 - Laboration 1 Installation. Marcus Wilhelmsson 15 januari 2013

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Operativsystem IS1350

Programmering i C++ EDA623 Strömmar och filer. EDA623 (Föreläsning 9) HT / 19

Språket Python - Del 2 Grundkurs i programmering med Python

Introduktion till programmering, hösten 2011

UNIX Introduktion UNIX. Datorerfarenhet. Vad menar man med operativsystem

Översikt. Datorarkitekturer med operativsystem. Inledning. Inledning

Numeriska Metoder och Grundläggande Programmering för P1, VT2014

Värmedistribution i plåt

Innehålls förteckning

Föreläsning 1: Introduktion till kursen

Programutveckling med Java 7.5 p, ht 2007 (D0019N) STUDIEHANDLEDNING - ALLMÄN INFORMATION

DVA315 Operativsystem

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

PC-teknik, 5 p LABORATION FILHANTERING

TDDIU81. Processer och trådar. Andreas Dahlberg, Jonathan Doherty, Tony Magnusson, Patrik Ottosson, Rasmus Siljedahl

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

CVS-Introduktion. CyberRymden Introduktion till CVS,17 november (27) Marcus Rejås

Praktikum i programmering

Parallella jobb ctrl-z emacs & more README ctrl-z jobs. %<jobnr>

Operativsystem ID hp, ID2200 6hp

Operativsystem. Informationsteknologi sommarkurs 5p, Agenda. Slideset 7. Exempel på operativsystem. Operativsystem

Definition DVG A06. Varför operativsystem? Operativsystem. Översikt. - Vad är ett operativsystem?

EDAA01 Programmeringsteknik - fördjupningskurs

Dagens OS. Unix, Linux och Windows. Unix. Unix. En översikt av dagens OS Titt på hur de gör. Många varianter Mycket gemensamt. En del som skiljer

Föreläsning 1: Introduktion till kursen

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Föreläsning 3.1: Datastrukturer, en översikt

Öppna filer och filsystem i PintOS Hemuppgift TDDI81, 21/

DVA315 Operativsystem. Mats Björkman Mälardalens högskola

Operativsystem - input/output, skydd, virtualisering

Operativsystem. IS hp. Jim Dowling Docent, PhD [Bilder av Robert Rönngren]

LABORATIONSUPPGIFTER WINDOWS OPERATIVSYSTEM

Filer. DA2001 (Föreläsning 16) Datalogi 1 Hösten / 19

DVG A06. Operativsystem, mm. Karlstads universitet Datavetenskap. DVG A06 Johan Eklund. Datavetenskap, Karlstads universitet 1

GRUNDKURS I C-PROGRAMMERING

Design och konstruktion av grafiska gränssnitt

Föreläsning 3. Programmering, C och programmeringsmiljö

1DV405 - Databasteknik. Kursintroduktion. Så här är kursen planerad.

GIT L0009B GEOGRAFISK DATABASTEKNIK. Information inför kursstart

Föreläsning 3. Programmering, C och programmeringsmiljö

Tentamen i ID2206, ID2200 samt IS1350 Operativsystem

Transkript:

Lärare och handledare Systemnära programmering 5DV088 HT10 Föreläsningar & Gruppövningar & Handledning Mikael Rännar Handledning mr@cs.umu.se Marcus Karlsson marcusk@cs.umu.se 1 2 I dag Information om kursen Labbar Introduktion till C och Unix Mjukstart med lite filer och IO 3 4

Om kursen Det är viktigt att ni kommer igång med labbarna så fort som möjligt annars kommer ni att få stora problem rent tidsmässigt. Tänk på att ni har andra kurser parallellt Handledning Webben Om kursen Nästan all information ges i elektronisk form antingen via kursens hemsida på http://www8.cs.umu.se/kurser/5dv088/ht10 eller via mail till gruppen 5DV088@cs.umu.se. 5 6 Obligatoriska inlämningsuppgifter ( Labbar ) 5 stycken labbar Uppvärmning (länkad lista) Script Filer/kataloger) Minishell Trådar Inlämningstider finns på respektive laboration De två första utan riktig laborationsrapport Tänk på att labbarna ska lösas enskilt Börja i tid! Inget labb är bokat specifikt för er, men jag rekommenderar unix/linux labben på plan 4 i mit-huset (labbarna ska vara gjorda för linux/solaris och det kan löna sig att sitta och jobba vid datorer med dessa operativsystem) 7 Gruppövningar Gruppövningar: övningar kring labbarna och kursmaterial 8

Boken En slags illustrerad manual Inte så mycket teori om uppbyggnaden av operativsystem, men det är inte kursens huvudmål Många exempel; de finns på webben också: http://www.apuebook.com/ Dessutom kommer ni säkert behöva någon C-bok. Har ni ingen så rekommenderar jag någon av följande: Kelley, Pohl: A Book on C, 4th ed Hanley Koffman: Problem Solving and Program Design in C 9 Kursplan Innehåll genomgång av ett operativsystems (Unix) gränsytor och viktiga systemprogramvaror, filsystem och processhantering i Unix, introduktion till parallella processer och trådar, principer för synkronisering och kommunikation mellan processer/trådar samt programutveckling, verktyg och felsökningsmetodik i Unix-miljö. Förväntade studieresultat - skriva strukturerade program i programspråket C - använda gränsytan till ett operativsystem (Unix) för att implementera operativsystemsberoende program - beskriva vad en process/tråd är, hur den skapas/hanteras/avslutas i Unix-miljö - beskriva interna strukturer som används av operativsystemet, exempelvis ett filsystems uppbyggnad - redogöra för och implementera olika principer för synkronisering och kommunikation mellan processer/trådar - använda befintliga verktyg för programvaruutveckling i Unix-miljö 10 Systemprogrammering Syftet med kursen är att ni skall lära er att programmera i en Unix-omgivning på en nivå som är lägre än vad ni tidigare är vana vid. Under kursen kommer ni att bli "smutsiga" om fingrarna genom att fara runt och utnyttja finesser i operativsystemet på ett sätt som ni inte har gjort i tidigare kurser. Unix är det operativsystem som vi använder, det finns hundratals andra, från gigantiska system till små realtidskärnor. C-programmering Förhoppningsvis kan ni redan programmera i C Exemplen liknar Unix:s källkod, men kanske inte är de mest läsbara Tidiga system anpassade till låga prestanda hos maskinvaran -> mycket tricks för att spara tid, minne Kompilatorer numera är ganska intelligenta Okynnesoptimering kan t.o.m. leda till att program går långsammare... Välj bra algoritmer men låt kompilatorn sköta resten! Programmerartid är dyrare än cpu-tid! 11 12

Unix Då kör vi igång! UNIX grunder, IO och Filer Unix är skrivet i C, ursprungligen av Dennis Ritchie, Ken Thompson och andra, på Bell Labs i början av 70- talet. Ursprung i Multics (Multiplexed Information and Computing Service). Många versioner BSD - Berkeley System V AT&T POSIX IEEE/ISO standard Linux Linus Torvalds... 13 14 Många funktioner: Resurshantering Cpu-tid Primärminne Lagringsutrymme Användargränssnitt Filsystem Säkerhet Nätverk API Operativsystem Snabbgenomgång Fleranvändarsystem Många tjänster och möjligheter (och vissa faror) Fönstersystem Kommandorad Några vanliga begrepp Skalprogram - shell Filsystem - är som de allra flesta andra filsystem hierarkiskt i sin uppbyggnad. Sökväg Working directory Hemkatalog 15 16

Filer File descriptors stdin, stdout, stderr Buffrad och obuffrad I/O Program Processer Process control Från skalprogram Från ett C program User ID Group ID Program, processer 17 18 Signaler Unix arkitektur Signaler Tidsangivelser 19 20

API, bibliotek Systemanrop och biblioteksanrop Både C och Unix deklarerar ett antal olika begränsningar, tex på hur stora tal som kan representeras, hur långt ett filnamn kan vara eller hur många filer som kan vara öppna samtidigt. limits.h Systemdatatyper Diverse C Pekare till "nånting" Kom ihåg att man kan deklarera "pekare till nånting" genom att deklarera en pekare till void. 21 22 Vad är en fil Filer Det enklaste sättet är att se på filer som en "ström" av tecken. Normalt läser man dessa strömmar från en sida tills den tar slut, eller också fyller man på den i slutet. Unix gör ingen skillnad på om filerna innehåller text eller något annat utan det är upp till programmet att tolka informationen på önskat sätt. Ofta finns ett magic number i början av filen, som en ledtråd till vilken typ av innehåll den har, exempelvis #! för postscript-filer. Hur använder man en fil? Principen är enkel: man öppnar den, läser det man vill veta och sedan stänger man den. Mer detaljerat - Strömmar Låt oss gå igenom det hela lite mer detaljerat Strömmar Normalt ser man alltså filer som strömmar där man läser från en sida. Denna modell passar ju mycket bra om man tänker sig hur tangentbord och enkla terminaler fungerar. Dock har det sina begränsningar om hur man lagrar information i en databas, där är man intresserad av att hoppa till en viss plats i filen för att få fram informationen så fort som möjligt. Man kan betrakta tangentbordet, skärmen, andra program och till och med nätverksförbindelser som strömmar. Vi börjar med vanliga textfiler 23 24

FILE I ANSI C har man definierat en "standard IO bibliotek" som man kan använda för att slippa från en del bökiga detaljer. Istället för att definiera en "filreferens", pratar om detta senare, så använder vi oss av en fördefinierad typ: FILE. En instans av denna typ innehåller all den information som vi behöver för att kunna hantera filer. Tre fördefinierade filer är de som vi pratade om tidigare: stdin, stdout, stderr 25 Buffrad IO Man skiljer på tre olika typer av IO rutiner, helt buffrade, linjebuffrade och obuffrade. Buffrade rutiner innebär att man inte skriver ut allting på en gång utan man väntar tills en buffert har fyllts. Anledningen till detta är att själva utmatningen blir effektivare om man har en buffert som gör att man kan skriva hela sjok på en gång och på så sätt göra det hela effektivare. På samma sätt gör man vid inläsning: genom att läsa in ett helt datasjok på en gång så blir man effektivare (själva hårdvaran som läser från en disk är långsammare än att läsa från internminnet) Vilka strömmar buffras och vilka buffras inte? Vad man bör tänka på? 26 Biblioteksfunktioner i C Bibliotek forts. Öppna, stäng fopen fclose Ett tecken i taget getc (ett macro?) fgetc getchar ferror feof putc (ett macro?) fputc En rad i taget fgets gets fputs puts Läsa strukturer fread fwrite Flytta runt i filerna ftell, fseek. fgetpos, fsetpos Temporary file tmpnam tmpfile Formaterad läsning/utskrift printf fprintf sprintf scanf fscanf sscanf 27 28

Filer i Kernel API På operativsystemets nivå (dvs under c-biblioteket) hanteras filer med hjälp av File Decriptors. Blanda inte filhantering direkt mot API:et med filer via biblioteket. File descriptors Kärnan, dvs operativsystemets innersta delar, håller reda på filerna med hjälp av så kallade "file descriptors". En sådan "descriptor" får man genom att öppna eller skapa en fil. De är ett index i processens fil-tabell open flaggor Välj en av O_RDONLY, O_WRONLY och O_RDWR. Sedan kan man "or'a" dem med några av följande O_APPEND Append, lägg till i slutet O_CREAT Skapa filen om det inte finns O_TRUNC Om filen finns och öppnas så "kapas" den till 0 Det finns fler men dessa är de viktigaste. 29 Fler systemrutiner för IO creat Skapa en ny fil close Stäng lseek Hoppa till plats i fil. Motsvarighet till fseek i c-biblioteket read Läser en buffert write Skriver en buffert 30 Dela Filer En sak som kanske är lite oväntat är att flera processer kan dela på samma fil. Detta kan ju naturligtvis ge upphov till lite problem... Process Varje process har en processbeskrivning som innehåller information om själva processen. Bland annat så finns alla "file descriptors" som processen använder där. File table Kärnan har en tabell med alla öppna filer. Innehåller bla status flaggorna för filen (read, write etc), nuvarande offseten för filen och en pekare till filens v-node V-node Varje öppen fil har en v-node. Innehåller bl.a. info om typen av fil och pekare till funktioner som används på filen. process table entry fd 0: fd 1: fd 2: fd 3: fd flags file pointer file status flags current file offset v-node pointer file status flags current file offset v-node pointer v-node information i-node information current file size v-node information i-node information current file size 31 32