Processer og tråde. dopsys 1

Relaterede dokumenter
Operativsystemer - dopsys

VMware og dopsys-linux

Systemkald i Unix/Linux

Design Systemkald. User-mode Linux, The Linux kernel/

Systemkald DM Obligatoriske opgave. Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/ Afleveret af: Jacob Christiansen,

DM14-1. Obligatorisk opgave F.06. System Call. Jacob Aae Mikkelsen Ingen andre gruppe medlemmer. 6. marts 2005

Schedulering. dopsys 1

1 Operativsystemer oversigt

Introduktion til Operativsystemer

PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU

Principper for Samtidighed og Styresystemer

Schedulering af SAS job i MS Task Scheduler, som sender med log og statuskode ved fejl

Database "opbygning"

Opsætning af Backup. Hvis programmet registreres korrekt vises nedenstående skærmbillede. Genstart herefter programmet.

Sortering fra A-Z. Henrik Dorf Chefkonsulent SAS Institute

Operativsystemer of C Efterår 2013 Virtuel hukommelse (kap. 9)

Citrix CSP og Certificate Store Provider

Styresystemer og tjenester

Netværk & elektronik

Mænd, Mus og Metadata

ESP30076 임베디드시스템프로그래밍 (Embedded System Programming)

Blockprog Rev1.0. Block programmering CS1/CJ1. Qiuck guide OMRON

Værktøjer fra værktøjskassen. Søren Breddam, Stevns Kommune

Vidar Jon Bauge. Notater til Teknik. Datamatikeruddannelsen efterår 2005 Side 1 af 54

Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java

Spar tid med struktureret programmering! Om PLC programmering

Introduktion til C programmering

Internt interrupt - Arduino

Maskinarkitektur. Lars Kristensen Christian Storm dmasark 1

Indhold. Download driver Find version af Windows Hent drivers til Windows Udpak driver... 6

Help / Hjælp

Virkefeltsregler i Java

Dynamisk programmering

User Manual for LTC IGNOU

Algorithms & Architectures II

IBM Network Station Manager. esuite 1.5 / NSM Integration. IBM Network Computer Division. tdc - 02/08/99 lotusnsm.prz Page 1

Løsning af skyline-problemet

Interrupt - Arduino. Programmering for begyndere Brug af Arduino. Kursusaften 6 EDR Hillerød Knud Krogsgaard Jensen / OZ1QK

Niveauer af abstrakte maskiner

Aktivering af Survey funktionalitet

Divide-and-Conquer algoritmer

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index

Håndbog Til CPR services. Bilag 8 GCTP-standard m.m. CPR-kontoret

DM507 Algoritmer og datastrukturer

A Profile for Safety Critical Java

Divide-and-Conquer algoritmer

Skriftlig eksamen i Datalogi

Introduktion QEMU system emulator QEMU user space emulator Afslutning QEMU. Christian Laursen. Århus Januar 2008

Agenda. Muligheder for anvendelse. Komponenter. Features. Restore muligheder. DR og TSM integration. Repository. Demo. Spørgsmål

WT-1011RC Programmer User Guide

Lærebog. Datalogi 1F Forår Hvad sker hvornår? Kursusbøger. Planen for idag. Hvad er et operativsystem

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/

Operation Manual SMS Air Conditioner Remote Controller Model No.: SR-001

BACK-END OG DATA: ADMINISTRATION HVAD ER DE NYE MULIGHEDER MED VERSION 7.1? STEFFEN BILLE RANNES, 4. FEBRUAR 2015

ØKONOMISTYRELSEN ØSLDV WINDOWS SERVICE DOKUMENTATION INSTALLATION OG KONFIGURERING AF ØSLDV/RAY WINDOWSSERVICE

Transkript:

Processer og tråde dopsys 1

Motivation.. parallelle processer udnytter hardwaren bedre: Batch operativsystemer (50 erne) hhv. små systemer: Multiprogrammering og time-sharing (fra 60 erne og frem): dopsys 2

Motivation.. parallelle algoritmer kan gøre store beregninger hurtigere: Evaluering af aritmetiske udtryk: Proces-flow: (a + b) * (c + d) - (e / f).. flere aktiviteter afvikles samtidigt (logisk eller fysisk). dopsys 3

Motivation.. parallelle algoritmer kan gøre store beregninger hurtigere: Evaluering af aritmetiske udtryk: Proces-flow: (a + b) * (c + d) - (e / f).. flere aktiviteter afvikles samtidigt (logisk eller fysisk). dopsys 3

Motivation.. parallelle algoritmer kan gøre store beregninger hurtigere: Evaluering af aritmetiske udtryk: Proces-flow: (a + b) * (c + d) - (e / f).. flere aktiviteter afvikles samtidigt (logisk eller fysisk). dopsys 3

Motivation.. parallelle algoritmer kan gøre store beregninger hurtigere: Evaluering af aritmetiske udtryk: Proces-flow: (a + b) * (c + d) - (e / f).. flere aktiviteter afvikles samtidigt (logisk eller fysisk). dopsys 3

Motivation.. parallelle algoritmer kan gøre store beregninger hurtigere: Evaluering af aritmetiske udtryk: Proces-flow: (a + b) * (c + d) - (e / f).. flere aktiviteter afvikles samtidigt (logisk eller fysisk). dopsys 3

Proces-begrebet.. er centralt i understøttelse af virtualisering: Kørende system: samling af samtidige, sekventielle processer Proces: et program under afvikling SP A data stack SP B data stack proces-struktur (process image) PC A program Proces A program Proces B.. processer kan kommunikere og synkronisere med hinanden. PC B dopsys 4

Proces-begrebet afvikling af flere programmer udgør multiprogrammering konceptuelt og logisk udføres programmerne uafhængigt af hinanden typisk er der færre CPU er: reelt køres programmerne på skift, lidt ad gangen dopsys 5

Skabelse af processer Eksempler på hændelser hvor der skabes processer: System-initialisering (hønen og ægget!) Systemkald i en proces som skaber en ny proces, fx Kommando fra bruger som kræver en ny proces Igangsættelse af et batch job dopsys 6

Afslutning af processer Eksempler på hændelser hvor processer afsluttes: Normal afslutning i en proces ( exit, på eget initiativ) Afslutning pga fejl (kontrolleret af processen selv) Afslutning pga fatal fejl (hvor processen ikke styrer) Afslutning pga kill fra en anden proces (begge muligheder) dopsys 7

Proces-tilstande en proces kan være blokeret fordi den venter på noget hvis processen i sig selv er klar til at køre kan den være i venteposition ( ready ) fordi der mangler frie CPU er, eller igang ( running ) dopsys 8

Implementation af processer (1) grundstrukturen i et OS med processer er at en spilfordeler (scheduler) afvikler et antal sekventielle aktiviteter, som er organiseret som processer (eller tråde) dopsys 9

Implementation af processer (2) information om en proces i OS et opbevares i en process control block / process table entry dopsys 10

[Q/A] Hvorfor skal en proces have...? Time of next alarm Process ID Parent process Memory info Root directory User ID CPU time used 11

Implementation af processer (3) Kritisk overgang ved skift til/fra kernen: Hardware gemmer instruktionsadresse (program counter) osv. Hardware henter ny instruktionsadresse fra interrupt vector Assembler-rutine gemmer øvrige registre Assembler-rutine sætter ny stak op og kalder videre til.. C funktion ( interrupt service ) som fx læser fra disk Scheduler bestemmer hvilken proces der skal køre nu C funktionen returnerer (til assembler-rutinen) Assembler-rutinen returnerer til den udvalgte proces dopsys 12

[Click] Hvorfor gemmes CPU ens registre i process control blocks?? A. Ved samtidig afvikling af flere processer med kun een CPU må man emulere registrene i RAM B. Registrene bliver gemt når en proces ikke kører C. Der er kun tale om privilegerede registre (fx memory manager) som brugeren ikke må tilgå D. Registrene bliver gemt når der er mere end een proces som er ready dopsys 13

Systemkald til skabelse af proces %> man fork NAME fork - create a child process SYNOPSIS #include <sys/types.h> #include <unistd.h> pid_t fork(void); DESCRIPTION fork creates a child process that differs from the parent process only in its PID and PPID, and in the fact that resource utilizations are set to 0. File locks and pending signals are not inherited. RETURN VALUE On success, the PID of the child process is returned in the parent's thread of execution, and a 0 is returned in the child's thread of execution. On failure, a -1 will be returned in the parent's context, no child process will be created, and errno will be set appropriately. ERRORS dopsys 14

void process_a(void) { pid_t pid = fork (); } if (pid == 0) { /* child process */ int i; for (i=0; i<10; i++) { printf("process B\n"); sleep(2); } } else { /* parent process */ int i; for (i=0; i<10; i++) { printf("process A\n"); sleep(1); } } int main(int argc,char *argv[]) { process_a(); exit(0); } >%./processab process A process B process A process B process A process A process B process A process A process B process A process A process B process A process B process B dopsys 15

/* processa.c */ void process_a(void) { pid_t pid = fork (); } if (pid == 0) { /* child process */ char filename[9] = "processb"; char *argv[2]; argv[0] = filename; argv[1] = NULL; execvp(filename,argv); } else { /* parent process */ int i; for (i=0; i<10; i++) { printf("process A\n"); sleep(1); } } int main(int argc,char *argv[]) { process_a(); exit(0); } /* processb.c */ #include <stdio.h> #include <unistd.h> int main(int argc,char *argv[]) { int i; } for (i=0; i<10; i++) { printf("process B\n"); sleep(2); } exit(0); %> gcc o processb processb.c %> gcc o processa processa.c %>./processa... dopsys 16

At modellere multi-programmering CPU anvendelsesgrad i forhold til antal processer (naiv model) dopsys 17

Anvendelse af tråde (1) Allerede een aktivitet (at skrive et dokument) kan drage stor nytte af at have flere tråde: respons / backup / formattering dopsys 18

Anvendelse af tråde (2) For servere (fx HTTP) er nytten velkendt, og begreber som trådpuljer hjælper med at tilpasse flertrådethed til antal CPU er dopsys 19

Anvendelse af tråde (3) En grov skitse af koden for sådan en server med en kontroltråd (a) og et antal worker threads (b) dopsys 20

Anvendelse af tråde (3) En grov skitse af koden for sådan en server med en kontroltråd (a) og et antal worker threads (b) dopsys 20

Anvendelse af tråde (4) Anvendelsen af tråde giver en betydelig forenkling af serveren, fordi der ellers er behov for at simulere store dele af den samme funktionalitet dopsys 21

[Click] Hvorfor er blokerende systemkald så afgørende?? A. En tråd kan overtage CPU en fra en anden tråd ved at lave et blokerende systemkald B. Et blokerende systemkald standser kernen og nedsætter dermed hele systemets ydelse C. En tråd kan stoppe de øvrige i samme proces ved at lave sådan et kald D. Et blokerende systemkald er kun et problem når vi simulerer tråde i user space dopsys 22

Den klassiske trådmodel (1) Man har selvfølgelig altid haft tråde når man har processer, men hvis man går fra præcist een tråd per proces til mange er man nødt til at generalisere administrationen af trådene.. dopsys 23

Den klassiske trådmodel (2).. dette gøres ved at opdele data i process control blocks i dele der hører til processen som helhed, og dele som hører til hver tråd de sidste kan der så være mange af dopsys 24

Den klassiske trådmodel (3) Det er helt fundamentalt at hver tråd skal have sin egen stak (hvilket er vanskeligere at håndtere ved udvidelser) dopsys 25

POSIX-tråde (1) En vidt udbredt standard for tråde (oma) med mange implementationer er POSIX dopsys 26

POSIX-tråde (2) dopsys 27

POSIX-tråde (2) pthread_t dopsys 27

POSIX-tråde (2) pthread_exit pthread_t dopsys 27

POSIX-tråde (2) pthread_exit pthread_t pthread_create dopsys 27

Tråde kan implementeres to steder processer skal understøttes af OS; med tråde kan man vælge at implementere dem i user space (tv) eller at lade kernen styre dem (th) dopsys 28

Hybride implementationer.. eller begge steder dopsys 29

Pop-up tråde en worker thread kan tage sig af en indkommende besked; vi kan også skabe en ny (pop-up) tråd hver gang: billig da der ikke er nogen gemt tilstand dopsys 30

Opsummering Processer: Proces-begreb: program under afvikling Logisk og fysisk parallellitet Unix OS primitiv: fork Tråde, begrundelser for at bruge dem Tråde styret fra user space hhv. fra kernen Pop-up tråde dopsys 31