Föreläsning 2. Operativsystem och programmering



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

Introduktion till programmering och Python Grundkurs i programmering med Python

Program & programmering

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

Grundkurs i programmering - intro

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf

Innehålls förteckning

Introduktion till programmering, hösten 2011

Att komma igång. Föreläsning 1

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

Att komma igång. Föreläsning 1

Introduktion till programmering. Programspråk och paradigmer

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

IT för personligt arbete F6

HF0010. Introduktionskurs i datateknik 1,5 hp

Digitalt lärande och programmering i klassrummet

Kursupplägg. Examination. Föreläsning 1: Intro till kursen och. Kursmaterial. programmering. Kursboken: Programmera med a multimedia approach

Inledande programmering med C# (1DV402) Introduktion till C#

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Att komma igång. Föreläsning 1

IT för personligt arbete F5

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

TDDC77 Objektorienterad Programmering

Viktiga begrepp. Algoritm. Array. Binärkod. Blockprogrammering. Bugg / fel och felsökning. Dataspel. Dator

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

Objektorienterad programmering i Java

TDDE44 Programmering, grundkurs

Imperativ programmering

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre

Digitalt lärande och programmering i klassrummet

Objektorienterad Programmering (TDDC77)

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Föreläsning 1. Presentation av kursen Vad är programmering? Lite om java och utvecklingsmiljöer Aktivitetsdiagram Ett första program

Introduktion till programmering

SMD 134 Objektorienterad programmering

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

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

Föreläsning 5 5DV086 - Programspråk

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

Inledande programmering med C# (1DV402) Introduktion till programmering

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell

Assemblerprogrammering del 1

729G74 IT och programmering, grundkurs. Tema 1, Föreläsning 2 Jody Foo,

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

Editering, Kompilering och Exekvering av Javaprogram

Datorsystemteknik DAV A14 Föreläsning 1

Operativsystem och användargränssnitt

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Objektorienterad programmering i Java I

6. Ge korta beskrivningar av följande begrepp a) texteditor b) kompilator c) länkare d) interpretator e) korskompilator f) formatterare ( pretty-print

Programmering. Den första datorn hette ENIAC.

IT OCH PROGRAMMERING I SKOLAN. Jan Erik Moström Peter Vinnervik

Dela, koda och korrigera! Undervisningsmaterial inom digital kompetens

Föreläsning Dokumentation och Felanmälan. Processer. Ta bort processer. (forts.) Förlorade slides på förra föreläsningen

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

JAVAUTVECKLING LEKTION 1

Instruktioner för att kunna programmera på skolans datorer

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Studentportalen UNIX-konton (systemansvariga P4118) Lärare: Anna Eckerdal,

Planering Programmering grundkurs HI1024 HT data

Programmering i C++ Kompilering från kommandoraden

Programmering i maskinspråk (Maskinassemblering)

TDIU01 (725G67) - Programmering i C++, grundkurs

Välkomna till NADA. Datalogi, grundkurs 1, 15hp. (Numerisk Analys och DAtalogi) och kursen. DA2001 (Föreläsning 1) Datalogi 1 Hösten / 28

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

TDP002 Imperativ programmering

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Tentamen den 14 januari 2015 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

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

PROGRAMMERING ÅK 9 INTRODUKTION

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

CE_O3. Nios II. Inför lab nios2time

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

Datorarkitektur. Informationsteknologi sommarkurs 5p, Agenda. Slideset 3

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

F5: Högnivåprogrammering

Objektorienterad Programmering (TDDC77)

F5: Högnivåprogrammering

Programmering i maskinspråk (Maskinassemblering)

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

32 Bitar Blir 64 Sammanfattning

Föreläsning 1 & 2 INTRODUKTION

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

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

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

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

Lite mer om CGI-programmering

SKOLFS. beslutade den -- maj 2015.

Superscalar Bra: Hårdvaran löser allt: Hårdvara detekterar poten6ell parallellism av instruk6oner Hårdvara försöker starta exekvering (issue) av så

MIKRODATORTEKNIK 2012 INNEHÅLLSFÖRTECKNING

OOP Objekt-orienterad programmering

OBS! All teori i detta och följande dokument kompletteras med genomgångar på lektionerna. Så det är viktigt att närvara och göra egna anteckningar.

Transkript:

Föreläsning 2 Operativsystem och programmering

Behov av operativsystem En dator så som beskriven i förra föreläsningen är nästan oanvändbar. Processorn kan bara ges enkla instruktioner såsom hämta data på den platsen i minnet, lägg ihop datat tolkat som ett heltal med datat i det registret osv. Dessutom skall dessa instruktioner ges som en räcka ettor och nollor. Vi behöver program som kan tolka våra instruktioner som beskriver det vi vill göra (ex visa innehållet i en textfil på skärmen, skriva ut det på en skrivare, spela upp ett ljud, ) och översätta det till instruktioner till processorn. Detta görs av en mängd program i flera nivåer från våra krav ner till ettor och nollor som styrenheten kan tolka till instruktioner. Det yttersta lagret som vi som användare upplever som datorn kallas för ett operativsystem Operativsystemet måste vara anpassat efter datorns arkitektur och processorns instruktioner.

Operativsystemets funktioner Ett operativsystem skall dock inte erbjuda allt vi vill göra med datorn utan oftast använder vi ett specifikt program för att utföra en specifik uppgift. Operativsystemets uppgift är då den miljö programmet körs i. Det tillhandahåller funktioner som programmet kan anropa för att få saker gjorda (läsa filer, använda portar, kommunicera med andra program, visa grafik, ), det övervakar att programmet inte använder för mycket av datorns resurser och att det inte förstör operativsystemets eller andra programs funktion. Operativsystemet och hårdvaran blir tillsammans en virtuell maskin som faktiskt går att använda både för användare och programmerare. Exakt vilka program som ska räknas till ett operativsystem är inte helt klart. Man kan dela in ett operativsystem i tre delar: kärnan - hanterar datorns resurser såsom processortid, minnesaccess, användarprogram basprogram såsom filhantering, konfigurering, texteditor, systembibliotek tillhandahåller grundläggande funktionalitet till övriga program Exempel: Windows, Linux, MacOs, Unix, VxWorks

BIOS Så med ett operativsystem blir vår dator en användbar maskin. Problemet är att när vi slår på datorn är den för dum för att kunna läsa in operativsystemet från hårddisken. Det första som händer när en PC slås på är att ett enklare mer grundläggande program kallat BIOS laddas in och körs (maskinen bootar). BIOS ger datorn bara grundläggande funktionalitet, bland annat så att den kan ladda in och köra operativsystemet. BIOS måste vara skrivet för en viss datorkonfiguration (processor, moderkortsarkitektur). Förr låg det på ROM men idag används flash. BIOS kan användas av operativsystemet som ett mellanlager för att utnyttja hårdvara. Det används dock normalt inte för detta av dagens operativsystem.

Maskin- och assemblerkod Ett program som processorn ska förstå måste vara giltiga instruktioner på binär form, dvs en räcka ettor och nollor. Riktigt så primitivt kan man inte programmera men de första programmen skrevs i det man kallar maskinkod. Man anger varje instruktion till processorn med en operationskod normalt på hexadecimal form. Tal anges också i hexadecimal from. Istället för variabler anger man minnesadressen där ett visst värde ligger (såklart i hexadecimal form). För att möjliggöra skapandet av större program skapades assemblerspråk. Ett assemblerspråk är unikt för en viss dator (datorarkitektur) eftersom det innehåller instruktioner till processorn. Men här har varje instruktion fått ett namn, tal kan skrivas i decimal form, vi har variabler och även aritmetiska uttryck kan skrivas (beräknas dock i assembleringen inte i exekveringen). Hoppsatser behöver inte heller hoppa till en adress utan kan anges med ett namn. Idag har vi högnivåspråk som tillåter en mycket större abstraktion som vi kompilerar till maskinkod. Fortfarande är det ibland framför allt av effektivitetsskäl och säkerhetsskäl nödvändigt att programmera direkt i assembler. Det gäller då ofta mindre processorer i inbyggda system eller hårdvarunära rutiner i operativsystemet eller på grafikkortet. Vi kan då med assembler få full kontroll exakt på vad processorn gör i varje klockcykel. Något som inte går i högnivåspråk. Antalet tillfällen då vi tvingas använda assembler minskar hela tiden vartefter processorer blir kraftfullare och ersätts då ofta av C- programmering som är ett högnivåspråk med ganska låg lägstanivå (hög kontroll över hårdvara). (assemblerkod kallas ofta maskinkod)

Högnivåspråk Högnivåspråk utvecklades för att möjliggöra skrivandet av större mera komplexa program och lösandet av större och mera komplexa problem med datorer. Till skillnad från assembler tar de inte avstamp i vad hårdvaran kan göra utan är främst skapade utifrån vilka verktyg vi behöver för att kunna lösa problem. Dessa program måste då sedan översättas till maskinkod innan de kan köras. Exempel på högnivåspråk är Fortran, C, C++, C#, Java, Javascript, Swift Gemensamt för dessa och de flesta högnivåspråk är möjligheten att kunna skriva läsbar och lättförståelig kod med variabler, villkor, upprepningar, matematiska uttryck, funktioner osv.

Syntax och semantik Definitionen av ett programspråk kan grovt delas upp i två delar: Syntaxen: definierar formen hos språket och bestämmer hur man får skriva. Ett programspråks syntax beskriver hur formellt korrekta program får formuleras. Semantiken: definierar vad som händer när man skrivit en viss sak. Ett programspråks semantik beskriver vad som krävs för att ett formellt korrekt program ska vara meningsfullt och vad som händer när det körs. Syntaxen definieras formellt och exakt medans semantiken oftast beskrivs informellt i våra naturliga språk. I programmering krävs att syntaxen följs exakt. Minsta avvikelse gör programmet okörbart.

Kompilerande - interpreterande I ett kompilerande språk översätter en kompilator (ett program) textfilen som innehåller programmet till (maskinkod), dvs en körbar (exekverbar) fil. Denna fil kan nu endast köras på en viss sorts dator. Vill man köra programmet på en annan dator måste koden kompileras till denna. Kompileringen görs ofta i fler steg av flera program (preprocessor, kompilator, länkare). I ett interpreterande språk körs textfilen i en interpreterare som översätter koden dynamiskt varje gång programmet körs. Samma språk kan ha både kompilatorer och interpreterare. Exempel på typiskt kompilerande språk är C och Fortran. Exempel på interpreterande är Basic och Javascript. Java är lite av ett mellanläge. Koden kompilera till maskinkod för en virtuell maskin som inte finns. När man sedan ska köra koden körs den på denna virtuella maskin (ett program) som då agerar interpreterare. Dessutom har man också börjat med just-in-time compiling.

Algoritmer En algoritm är en metod för att lösa ett problem genom att utföra ett antal elementära operationer (en idiot ska förstå) i en av algoritmen given ordning. Metoden skall efter ett ändligt antal operationer nå lösningen. Det är en instruktion som man utan att tänka ska kunna följa steg för steg och då få fram resultatet. Låter som gjort för en dator (en idiot ). För att vi för en dator ska kunna beskriva i vilken ordning den ska utföra de olika stegen är det vissa konstruktioner som återfinns i alla programmeringsspråk. Lab 1 låter er öva på dessa.

Sekvens sats titta på klockan sats drick kaffe sats gå och lägg dig

Selektion (Om annars ) sant villkor falskt sats sats

sant klockan<10 falskt drick kaffe gå och lägg dig Om klockan är mindre än 10 drick kaffe annars gå och lägg dig

Iteration (Upprepa) villkor falskt sats sant

n=1 n<10 falskt sant drick kaffe gå och lägg dig n=n+1

Javascript och HTML Efter att ni är klara med laboration 1 och grafisk blockprogrammering ska vi pröva lite riktig programmering. Vi ska då använda Javascript vilket är ett interpreterande scriptspråk med ganska fri syntax vilket kan vara både bra och dåligt för en nybörjare. Anledningen att vi tar våra första steg som programmerare i detta språk är att det är lätt att programmera grafik och lätt att hantera grafiska användargränssnitt. Syntaxen är också mycket lik C som vi senare ska programmera i. Javascript exekveras normalt i en webläsare inbäddat i ett html-dokument. Ett html-dokument är text med taggar som beskriver hur texten ska visas och används för dokument som ska visas i en webläsare. Ett väldigt enkelt dokument kan se ut så här: <html> <head><title> Test </title></head> <body> <p>hej</p> </body> </html> Vi kan nu enkelt lägga in ett Javascript på vår sida med taggen <script>: <html> <head><title> Test </title></head> <body> <p>hej</p> <script> document.write("hello, World!"); alert(date()); </script> </body> </html>

Lab 2 I denna laboration ska ni följa fem tutorials på youtube för att gå från att lära er programmera till att göra ert första spel. Programmet skriver ni direkt i browsern och resultatet ser ni bredvid. Öppna ett browserfönster med: http://spelprogrammering.nu/koda Titta på Youtube-filmen i ett annat fönster: https://www.youtube.com/user/coderaptors När ni är klara med tutorial 5 visar ni resultatet för lärare eller assistent och vips är ni klara med laboration 2. Gör gärna resten också!

Inför nästa gång Nästa gång ska vi börja med C-programmering. Då kommer vi behöva ladda ner en programmeringsmiljö till datorn. För att inte alla ska försöka det samtidigt föreslår jag att ni alla gör det innan nästa gång. Gå in på http://www.codeblocks.org/downloads/26 Välj att ladda ner codeblocks med kompilator (mingw): codeblocks-13.12mingw-setup.exe för windows Kör filen.