Systemkald i Unix/Linux

Størrelse: px
Starte visningen fra side:

Download "Systemkald i Unix/Linux"

Transkript

1 Systemkald i Unix/Linux 1

2 Operativsystemet Fra proces: OS som værktøjskasse: tilgængelig via systemkald... OS som resurseadministrator, abstrakt/virtuel maskine: CPU: processer, tråde, schedulering I/O: device drivere, filsystemer Lager: virtuelt lager, segmentering 2

3 Udvalgte POSIX.1 systemkald Beskriver grænseflade mellem OS og applikationer 3

4 Rettigheder og tilstande Bruger- og OS-aktiviteter har forskellige rettigheder Kernel Mode (x86 ring 0) og User Mode (x86 ring 3) 4

5 Udførelse af systemkald Et dilemma: En bruger-proces, som skal udføre et systemkald, udføres i User Mode, men systemkaldet skal udføres i Kernel Mode. Mulige løsninger: Skift fra User Mode til Kernel Mode i eksisterende proces. Start en ny kerne-tråd, som udfører systemkaldet. 5

6 Sikkerhedsproblem Et problem: Bruger-kode må aldrig kunne udføres i Kernel Mode, så en bruger-instruktion, der blot skifter tilstand er farlig En typisk løsning: Brug en specialiseret instruktion som laver et trap 6

7 [Click] Et problem: Bruger-kode må aldrig kunne udføres i Kernel Mode, så en bruger-instruktion, der blot skifter tilstand er farlig. Kunne man ikke bare...? A... checke at bruger-koden er OK? B... skifte til Kernel Mode og hoppe til samme sted hver gang? C... gå tilbage til User Mode hvis ikke programmet straks hopper til kode i kernen? D... udføre hele systemkaldet i User Mode? E. Ved ikke 7

8 Re: Traps En intern hændelse for CPU en (ofte en fejl): Implicit: division med 0, lagertilgang, Eksplicit: systemkald (supervisory call / SVC) 8

9 Udførelse af et systemkald Biblioteksproceduren (kern_func) kaldes ofte for en stub... 9

10 Udførelse af systemkaldet read read( fd, &buffer, nbytes ) 10

11 Udførelse af systemkaldet read Kalder en biblioteksprocedure (en stub) for read (trin 1-4)... stub'en ligger i User Space... Stub'en forbereder og udfører trap til kernen (trin 4-5)... skifter til Kernel Mode og fortsætter udførelsen fra fast sted i Kernel Space... Kernen identificerer og udfører read i Kernel Mode (trin 7-8) Kernen returnerer til Stub'en(trin 9)... skifter til User Mode og fortsætter udførelsen i User Space... Stub'en returnerer til kalderen (trin 10-11) 11

12 Impl. af systemkald i Linux Tilgængelige systemkald, argumenter til trap, defineres i arch/i386/kernel/entry.s include/asm-i386/unistd.h Implementeres i den øvrige kerne-kildetekst f.eks read i fs/read_write.c 12

13 arch/i386/kernel/entry.s.data ENTRY(sys_call_table).long SYMBOL_NAME(sys_ni_syscall) /* 0.. */.long SYMBOL_NAME(sys_exit).long SYMBOL_NAME(sys_fork).long SYMBOL_NAME(sys_read).long SYMBOL_NAME(sys_write).long SYMBOL_NAME(sys_open) /* 5 */.long SYMBOL_NAME(sys_close)....long SYMBOL_NAME(sys_ni_syscall) /* streams2 */.long SYMBOL_NAME(sys_vfork) /* 190 */ /* * NOTE!! This doesn't have to be exact - we just have * to make sure we have _enough_ of the "sys_ni_syscall" * entries. Don't panic if you notice that this hasn't * been shrunk every time we add a new system call. */.rept NR_syscalls-190.long SYMBOL_NAME(sys_ni_syscall).endr 13

14 include/asm-i386/unistd.h /* * This file contains the system call numbers. */ #define NR_exit 1 #define NR_fork 2 #define NR_read 3 #define NR_write 4 #define NR_open 5 #define NR_close 6... #define NR_sendfile 187 #define NR_getpmsg 188 /*.. */ #define NR_putpmsg 189 /*.. */ #define NR_vfork 190 Linux kernen version tilbyder 190 systemkald 14

15 fs/read_write.c asmlinkage ssize_t sys_read(unsigned int fd, char * buf, size_t count) { ssize_t ret; struct file * file; ssize_t (*read)(struct file *, char *, size_t, loff_t *); lock_kernel(); ret = -EBADF; file = fget(fd); if (!file) goto bad_file; if (!(file->f_mode & FMODE_READ)) ret = locks_verify_area(flock_verify_read, file->f_dentry->d_inode, file, file->f_pos, count); if (ret) ret = -EINVAL; if (!file->f_op!(read = file->f_op->read)) ret = read(file, buf, count, &file->f_pos); out: fput(file); bad_file: unlock_kernel(); return ret; 15

16 fs/read_write.c prototype asmlinkage ssize_t sys_read(unsigned int fd, char * buf, size_t count) { ssize_t ret; struct file * file; ssize_t (*read)(struct file *, char *, size_t, loff_t *); lock_kernel(); ret = -EBADF; file = fget(fd); if (!file) goto bad_file; if (!(file->f_mode & FMODE_READ)) ret = locks_verify_area(flock_verify_read, file->f_dentry->d_inode, file, file->f_pos, count); if (ret) ret = -EINVAL; if (!file->f_op!(read = file->f_op->read)) ret = read(file, buf, count, &file->f_pos); out: fput(file); bad_file: unlock_kernel(); return ret; 15

17 fs/read_write.c prototype asmlinkage ssize_t sys_read(unsigned int fd, char * buf, size_t count) { ssize_t ret; asmlinkage: struct file * file; ssize_t (*read)(struct file *, char *, size_t, loff_t *); argumenter på stak lock_kernel(); ret = -EBADF; file = fget(fd); if (!file) goto bad_file; if (!(file->f_mode & FMODE_READ)) ret = locks_verify_area(flock_verify_read, file->f_dentry->d_inode, file, file->f_pos, count); if (ret) ret = -EINVAL; if (!file->f_op!(read = file->f_op->read)) ret = read(file, buf, count, &file->f_pos); out: fput(file); bad_file: unlock_kernel(); return ret; 15

18 fs/read_write.c prototype asmlinkage ssize_t sys_read(unsigned int fd, char * buf, size_t count) { ssize_t ret; asmlinkage: struct file * file; ssize_t (*read)(struct file *, char *, size_t, loff_t *); argumenter på stak lock_kernel(); ret = -EBADF; file = fget(fd); if (!file) goto bad_file; if (!(file->f_mode & FMODE_READ)) ret = locks_verify_area(flock_verify_read, file->f_dentry->d_inode, file, file->f_pos, count); if (ret) goto: hop, indenfor ret = -EINVAL; if (!file->f_op!(read = file->f_op->read)) funktion ret = read(file, buf, count, &file->f_pos); out: fput(file); bad_file: unlock_kernel(); return ret; 15

19 fs/read_write.c prototype asmlinkage ssize_t sys_read(unsigned int fd, char * buf, size_t count) { ssize_t ret; asmlinkage: struct file * file; ssize_t (*read)(struct file *, char *, size_t, loff_t *); argumenter på stak lock_kernel(); ret = -EBADF; file = fget(fd); if (!file) goto bad_file; if (!(file->f_mode & FMODE_READ)) ret = locks_verify_area(flock_verify_read, file->f_dentry->d_inode, file, file->f_pos, count); if (ret) goto: hop, indenfor ret = -EINVAL; if (!file->f_op!(read = file->f_op->read)) funktion ret = read(file, buf, count, &file->f_pos); out: fput(file); bad_file: label: mål for goto unlock_kernel(); return ret; 15

20 fs/read_write.c prototype asmlinkage ssize_t sys_read(unsigned int fd, char * buf, size_t count) { ssize_t ret; asmlinkage: struct file * file; ssize_t (*read)(struct file *, char *, size_t, loff_t *); argumenter på stak lock_kernel(); ret = -EBADF; file = fget(fd); if (!file) locks: ignore goto bad_file; if (!(file->f_mode & FMODE_READ)) ret = locks_verify_area(flock_verify_read, file->f_dentry->d_inode, file, file->f_pos, count); if (ret) goto: hop, indenfor ret = -EINVAL; if (!file->f_op!(read = file->f_op->read)) funktion ret = read(file, buf, count, &file->f_pos); out: fput(file); bad_file: label: mål for goto unlock_kernel(); return ret; 15

21 fs/read_write.c asmlinkage ssize_t sys_read(unsigned int fd, char * buf, size_t count) { ssize_t ret; struct file * file; ssize_t (*read)(struct file *, char *, size_t, loff_t *); lock_kernel(); ret = -EBADF; file = fget(fd); if (!file) goto bad_file; if (!(file->f_mode & FMODE_READ)) ret = locks_verify_area(flock_verify_read, file->f_dentry->d_inode, file, file->f_pos, count); if (ret) ret = -EINVAL; if (!file->f_op!(read = file->f_op->read)) ret = read(file, buf, count, &file->f_pos); out: fput(file); bad_file: unlock_kernel(); return ret; 16

22 fs/read_write.c asmlinkage ssize_t sys_read(unsigned int fd, char * buf, size_t count) { ssize_t ret; struct file * file; ssize_t (*read)(struct file *, char *, size_t, loff_t *); lock_kernel(); ret = -EBADF; file = fget(fd); if (!file) goto bad_file; if (!(file->f_mode & FMODE_READ)) ret = locks_verify_area(flock_verify_read, file->f_dentry->d_inode, file, file->f_pos, count); if (ret) ret = -EINVAL; if (!file->f_op!(read = file->f_op->read)) ret = read(file, buf, count, &file->f_pos); out: fput(file); bad_file: unlock_kernel(); return ret; critical section 16

23 fs/read_write.c asmlinkage ssize_t sys_read(unsigned int fd, char * buf, size_t count) { ssize_t ret; struct file * file; ssize_t (*read)(struct file *, char *, size_t, loff_t *); lock_kernel(); ret = -EBADF; file = fget(fd); if (!file) goto bad_file; if (!(file->f_mode & FMODE_READ)) ret = locks_verify_area(flock_verify_read, file->f_dentry->d_inode, file, file->f_pos, count); if (ret) ret = -EINVAL; if (!file->f_op!(read = file->f_op->read)) ret = read(file, buf, count, &file->f_pos); out: fput(file); bad_file: unlock_kernel(); return ret; 17

24 fs/read_write.c asmlinkage ssize_t sys_read(unsigned int fd, char * buf, size_t count) { ssize_t ret; struct file * file; ssize_t (*read)(struct file *, char *, size_t, loff_t *); lock_kernel(); ret = -EBADF; file = fget(fd); if (!file) goto bad_file; if (!(file->f_mode & FMODE_READ)) ret = locks_verify_area(flock_verify_read, file->f_dentry->d_inode, file, file->f_pos, count); if (ret) ret = -EINVAL; if (!file->f_op!(read = file->f_op->read)) ret = read(file, buf, count, &file->f_pos); out: fput(file); bad_file: unlock_kernel(); return ret; allocate/deallocate resource 17

25 fs/read_write.c asmlinkage ssize_t sys_read(unsigned int fd, char * buf, size_t count) { ssize_t ret; struct file * file; ssize_t (*read)(struct file *, char *, size_t, loff_t *); lock_kernel(); ret = -EBADF; file = fget(fd); if (!file) goto bad_file; if (!(file->f_mode & FMODE_READ)) ret = locks_verify_area(flock_verify_read, file->f_dentry->d_inode, file, file->f_pos, count); if (ret) ret = -EINVAL; if (!file->f_op!(read = file->f_op->read)) ret = read(file, buf, count, &file->f_pos); out: fput(file); bad_file: unlock_kernel(); return ret; 18

26 fs/read_write.c asmlinkage ssize_t sys_read(unsigned int fd, char * buf, size_t count) { ssize_t ret; struct file * file; ssize_t (*read)(struct file *, char *, size_t, loff_t *); lock_kernel(); ret = -EBADF; file = fget(fd); if (!file) goto bad_file; if (!(file->f_mode & FMODE_READ)) ret = locks_verify_area(flock_verify_read, file->f_dentry->d_inode, file, file->f_pos, count); if (ret) ret = -EINVAL; if (!file->f_op!(read = file->f_op->read)) ret = read(file, buf, count, &file->f_pos); out: fput(file); bad_file: unlock_kernel(); return ret; 18

27 fs/read_write.c asmlinkage ssize_t sys_read(unsigned int fd, char * buf, size_t count) { ssize_t ret; struct file * file; ssize_t (*read)(struct file *, char *, size_t, loff_t *); lock_kernel(); ret = -EBADF; file = fget(fd); if (!file) goto bad_file; if (!(file->f_mode & FMODE_READ)) ret = locks_verify_area(flock_verify_read, file->f_dentry->d_inode, file, file->f_pos, count); if (ret) ret = -EINVAL; if (!file->f_op!(read = file->f_op->read)) ret = read(file, buf, count, &file->f_pos); out: fput(file); bad_file: unlock_kernel(); return ret; 18

28 fs/read_write.c asmlinkage ssize_t sys_read(unsigned int fd, char * buf, size_t count) { ssize_t ret; struct file * file; ssize_t (*read)(struct file *, char *, size_t, loff_t *); lock_kernel(); ret = -EBADF; file = fget(fd); if (!file) goto bad_file; if (!(file->f_mode & FMODE_READ)) ret = locks_verify_area(flock_verify_read, file->f_dentry->d_inode, file, file->f_pos, count); if (ret) ret = -EINVAL; if (!file->f_op!(read = file->f_op->read)) ret = read(file, buf, count, &file->f_pos); out: fput(file); bad_file: unlock_kernel(); return ret; 18

29 fs/read_write.c asmlinkage ssize_t sys_read(unsigned int fd, char * buf, size_t count) { ssize_t ret; struct file * file; ssize_t (*read)(struct file *, char *, size_t, loff_t *); lock_kernel(); ret = -EBADF; file = fget(fd); if (!file) goto bad_file; if (!(file->f_mode & FMODE_READ)) ret = locks_verify_area(flock_verify_read, file->f_dentry->d_inode, file, file->f_pos, count); if (ret) ret = -EINVAL; if (!file->f_op!(read = file->f_op->read)) ret = read(file, buf, count, &file->f_pos); out: fput(file); bad_file: unlock_kernel(); return ret; 18

30 fs/read_write.c asmlinkage ssize_t sys_read(unsigned int fd, char * buf, size_t count) { ssize_t ret; struct file * file; ssize_t (*read)(struct file *, char *, size_t, loff_t *); lock_kernel(); ret = -EBADF; file = fget(fd); if (!file) goto bad_file; if (!(file->f_mode & FMODE_READ)) ret = locks_verify_area(flock_verify_read, file->f_dentry->d_inode, file, file->f_pos, count); if (ret) ret = -EINVAL; if (!file->f_op!(read = file->f_op->read)) ret = read(file, buf, count, &file->f_pos); out: fput(file); bad_file: unlock_kernel(); return ret; the real work 18

31 fs/read_write.c asmlinkage ssize_t sys_read(unsigned int fd, char * buf, size_t count) { ssize_t ret; struct file * file; ssize_t (*read)(struct file *, char *, size_t, loff_t *); lock_kernel(); ret = -EBADF; file = fget(fd); if (!file) goto bad_file; if (!(file->f_mode & FMODE_READ)) ret = locks_verify_area(flock_verify_read, file->f_dentry->d_inode, file, file->f_pos, count); if (ret) ret = -EINVAL; if (!file->f_op!(read = file->f_op->read)) ret = read(file, buf, count, &file->f_pos); out: fput(file); bad_file: unlock_kernel(); return ret; 19

32 Tilføjelse af systemkald i Linux int my_gettime(int flag, struct timeval *tv); Skriv aktuel tid i tv og udskriv til skærm hvis flag er TRUE Tilføj definition af systemkald til entry.s og unistd.h Tilføj implementation passende sted i kildeteksten Oversæt og genstart dopsys-linux maskinen med ny kerne 20

33 diff -Naur -X /root/dontdiff linux /arch/i386/kernel/entry.s onsdag_uge47/ --- linux /arch/i386/kernel/entry.s Mon Sep 9 18:03: torsdag_uge44/arch/i386/kernel/entry.s Tue Nov 17 07:31: ,6 SYMBOL_NAME(sys_ni_syscall) /* streams1 */.long SYMBOL_NAME(sys_ni_syscall) /* streams2 */.long SYMBOL_NAME(sys_vfork) /* 190 */ +.long SYMBOL_NAME(sys_my_gettime) /* 191 */ /* * NOTE!! This doesn't have to be exact - we just -569,6 * entries. Don't panic if you notice that this hasn't * been shrunk every time we add a new system call. */ -.rept NR_syscalls rept NR_syscalls-191.long SYMBOL_NAME(sys_ni_syscall).endr diff -Naur -X /root/dontdiff linux /include/asm-i386/unistd.h onsdag_uge47/ --- linux /include/asm-i386/unistd.h Mon Sep 9 18:03: torsdag_uge44/include/asm-i386/unistd.h Tue Nov 17 07:31: ,6 #define NR_getpmsg 188 /* some people actually want streams */ #define NR_putpmsg 189 /* some people actually want streams */ #define NR_vfork 190 +#define NR_my_gettime 191 /* #define NR_ugetrlimit 191 SuS compliant getrlimit */ #define NR_mmap2 192 #define NR_truncate diff -Naur -X /root/dontdiff linux /kernel/time.c torsdag_uge44/kernel/time.c --- linux /kernel/time.c Mon Sep 9 18:04: torsdag_uge44/kernel/time.cwed A p r : 3 4 : ,3 ret = do_adjtimex(&txc); return copy_to_user(txc_p, &txc, sizeof(struct timex))? -EFAULT : ret; + +/**********************************************************************/ +/* implementation of my_gettime system call */ +/**********************************************************************/ + +asmlinkage int sys_my_gettime(int flag, struct timeval *tv) +{ + int write_failed; + struct timeval ktv; + + /* get timeval from global variable xtime */... 21

34 diff -Naur -X /root/dontdiff linux /arch/i386/kernel/entry.s onsdag_uge47/ --- linux /arch/i386/kernel/entry.s Mon Sep 9 18:03: torsdag_uge44/arch/i386/kernel/entry.s Tue Nov 17 07:31: ,6 SYMBOL_NAME(sys_ni_syscall) /* streams1 */.long SYMBOL_NAME(sys_ni_syscall) /* streams2 */.long SYMBOL_NAME(sys_vfork) /* 190 */ +.long SYMBOL_NAME(sys_my_gettime) /* 191 */ /* * NOTE!! This doesn't have to be exact - we just -569,6 * entries. Don't panic if you notice that this hasn't * been shrunk every time we add a new system funktion call. i kernen */ -.rept NR_syscalls rept NR_syscalls-191.long SYMBOL_NAME(sys_ni_syscall).endr diff -Naur -X /root/dontdiff linux /include/asm-i386/unistd.h onsdag_uge47/ --- linux /include/asm-i386/unistd.h Mon Sep 9 18:03: torsdag_uge44/include/asm-i386/unistd.h Tue Nov 17 07:31: ,6 #define NR_getpmsg 188 /* some people actually want streams */ #define NR_putpmsg 189 /* some people actually want streams */ #define NR_vfork 190 +#define NR_my_gettime 191 /* #define NR_ugetrlimit 191 SuS compliant getrlimit */ #define NR_mmap2 192 #define NR_truncate diff -Naur -X /root/dontdiff linux /kernel/time.c torsdag_uge44/kernel/time.c --- linux /kernel/time.c Mon Sep 9 18:04: torsdag_uge44/kernel/time.cwed A p r : 3 4 : ,3 ret = do_adjtimex(&txc); return copy_to_user(txc_p, &txc, sizeof(struct timex))? -EFAULT : ret; + +/**********************************************************************/ +/* implementation of my_gettime system call */ +/**********************************************************************/ + +asmlinkage int sys_my_gettime(int flag, struct timeval *tv) +{ + int write_failed; + struct timeval ktv; + + /* get timeval from global variable xtime */... Tilføj adressen på den nye 21

35 diff -Naur -X /root/dontdiff linux /arch/i386/kernel/entry.s onsdag_uge47/ --- linux /arch/i386/kernel/entry.s Mon Sep 9 18:03: torsdag_uge44/arch/i386/kernel/entry.s Tue Nov 17 07:31: ,6 SYMBOL_NAME(sys_ni_syscall) /* streams1 */.long SYMBOL_NAME(sys_ni_syscall) /* streams2 */.long SYMBOL_NAME(sys_vfork) /* 190 */ +.long SYMBOL_NAME(sys_my_gettime) /* 191 */ /* * NOTE!! This doesn't have to be exact - we just -569,6 * entries. Don't panic if you notice that this hasn't * been shrunk every time we add a new system call. */ -.rept NR_syscalls rept NR_syscalls-191 af tabellen.long SYMBOL_NAME(sys_ni_syscall).endr diff -Naur -X /root/dontdiff linux /include/asm-i386/unistd.h onsdag_uge47/ --- linux /include/asm-i386/unistd.h Mon Sep 9 18:03: torsdag_uge44/include/asm-i386/unistd.h Tue Nov 17 07:31: ,6 #define NR_getpmsg 188 /* some people actually want streams */ #define NR_putpmsg 189 /* some people actually want streams */ #define NR_vfork 190 +#define NR_my_gettime 191 /* #define NR_ugetrlimit 191 SuS compliant getrlimit */ #define NR_mmap2 192 #define NR_truncate diff -Naur -X /root/dontdiff linux /kernel/time.c torsdag_uge44/kernel/time.c --- linux /kernel/time.c Mon Sep 9 18:04: torsdag_uge44/kernel/time.cwed A p r : 3 4 : ,3 ret = do_adjtimex(&txc); return copy_to_user(txc_p, &txc, sizeof(struct timex))? -EFAULT : ret; + +/**********************************************************************/ +/* implementation of my_gettime system call */ +/**********************************************************************/ + +asmlinkage int sys_my_gettime(int flag, struct timeval *tv) +{ + int write_failed; + struct timeval ktv; + + /* get timeval from global variable xtime */... Juster antal tomme pladser i slutningen 21

36 diff -Naur -X /root/dontdiff linux /arch/i386/kernel/entry.s onsdag_uge47/ --- linux /arch/i386/kernel/entry.s Mon Sep 9 18:03: torsdag_uge44/arch/i386/kernel/entry.s Tue Nov 17 07:31: ,6 SYMBOL_NAME(sys_ni_syscall) /* streams1 */.long SYMBOL_NAME(sys_ni_syscall) /* streams2 */.long SYMBOL_NAME(sys_vfork) /* 190 */ +.long SYMBOL_NAME(sys_my_gettime) /* 191 */ /* * NOTE!! This doesn't have to be exact - we just -569,6 * entries. Don't panic if you notice that this hasn't * been shrunk every time we add a new system call. */ -.rept NR_syscalls rept NR_syscalls-191.long SYMBOL_NAME(sys_ni_syscall).endr diff -Naur -X /root/dontdiff linux /include/asm-i386/unistd.h onsdag_uge47/ --- linux /include/asm-i386/unistd.h Mon Sep 9 18:03: torsdag_uge44/include/asm-i386/unistd.h Tue Nov 17 07:31: ,6 #define NR_getpmsg 188 /* some people actually want streams */ #define NR_putpmsg 189 /* some people actually want streams */ #define NR_vfork 190 +#define NR_my_gettime 191 /* #define NR_ugetrlimit 191 SuS compliant getrlimit */ #define NR_mmap2 192 #define NR_truncate diff -Naur -X /root/dontdiff linux /kernel/time.c torsdag_uge44/kernel/time.c --- linux /kernel/time.c Mon Sep 9 18:04: torsdag_uge44/kernel/time.cwed A p r : 3 4 : ,3 ret = do_adjtimex(&txc); return copy_to_user(txc_p, &txc, sizeof(struct timex))? -EFAULT : ret; + +/**********************************************************************/ +/* implementation of my_gettime system call */ +/**********************************************************************/ + +asmlinkage int sys_my_gettime(int flag, struct timeval *tv) +{ + int write_failed; + struct timeval ktv; + + /* get timeval from global variable xtime */... Annoncér navnet på det nye systemkald 21

37 diff -Naur -X /root/dontdiff linux /arch/i386/kernel/entry.s onsdag_uge47/ --- linux /arch/i386/kernel/entry.s Mon Sep 9 18:03: torsdag_uge44/arch/i386/kernel/entry.s Tue Nov 17 07:31: ,6 SYMBOL_NAME(sys_ni_syscall) /* streams1 */.long SYMBOL_NAME(sys_ni_syscall) /* streams2 */.long SYMBOL_NAME(sys_vfork) /* 190 */ +.long SYMBOL_NAME(sys_my_gettime) /* 191 */ /* * NOTE!! This doesn't have to be exact - we just -569,6 * entries. Don't panic if you notice that this hasn't * been shrunk every time we add a new system call. */ -.rept NR_syscalls rept NR_syscalls-191.long SYMBOL_NAME(sys_ni_syscall).endr diff -Naur -X /root/dontdiff linux /include/asm-i386/unistd.h onsdag_uge47/ --- linux /include/asm-i386/unistd.h Mon Sep 9 18:03: torsdag_uge44/include/asm-i386/unistd.h Tue Nov 17 07:31: ,6 #define NR_getpmsg 188 /* some people actually want streams */ #define NR_putpmsg 189 /* some people actually want streams */ #define NR_vfork 190 +#define NR_my_gettime 191 /* #define NR_ugetrlimit 191 SuS compliant getrlimit */ #define NR_mmap2 192 #define NR_truncate diff -Naur -X /root/dontdiff linux /kernel/time.c torsdag_uge44/kernel/time.c --- linux /kernel/time.c Mon Sep 9 18:04: torsdag_uge44/kernel/time.cwed A p r : 3 4 : ,3 ret = do_adjtimex(&txc); return copy_to_user(txc_p, &txc, sizeof(struct timex))? -EFAULT : ret; + +/**********************************************************************/ +/* implementation of my_gettime system call */ +/**********************************************************************/ + +asmlinkage int sys_my_gettime(int flag, struct timeval *tv) +{ + int write_failed; + struct timeval ktv; + + /* get timeval from global variable xtime */... Tilføj koden for den nye funktion 21

38 Anvendelse af nyt systemkald Brug generisk stub via syscall-systemkaldet: #include <sys/syscall.h>... syscall(191, 1, &tv);... eller lav stub vha. _syscall-makroen... #include <linux/unistd.h>... _syscall2(int, my_gettime, int, flag, struct timeval *, tv);... my_gettime(1, &tv); 22

39 Anvendelse af nyt systemkald Brug generisk stub via syscall-systemkaldet: Husk at lave symlink /usr/src/linux til at pege på rette kildetekst $ cd /usr/src #include $ rm <sys/syscall.h> linux... $ ln -s mygettime linux syscall(191, 1, &tv);... eller lav stub vha. _syscall-makroen... #include <linux/unistd.h>... _syscall2(int, my_gettime, int, flag, struct timeval *, tv);... my_gettime(1, &tv); 22

40 mygettime_test.c #include <stdio.h> #include <stdlib.h> #include <sys/syscall.h> #include <sys/time.h> #include <linux/unistd.h> _syscall2(int, my_gettime, int, flag, struct timeval *, tv); int main() { int val; struct timeval tv; val = syscall(191, 1, &tv); val = my_gettime(1, &tv); val = my_gettime(1, NULL); return 0; tv_sec: tv_usec: tv_sec: tv_usec: my_gettime: Cannot write into user space 23

41 Opsummering Systemkald adskiller ISA-niveauet fra brugerkode nødvendige for at sikre systeminvarianter ( sundhed ) realiseres med traps Case: Linux-systemkald annonceres til brugerkode (unistd.h) opsættes i adressetabel til brug i kernen (entry.s) implementeres i kernen kald i brugerkode skal etableres (syscall, _syscalln) 24

Styresystemer og tjenester

Styresystemer og tjenester Styresystemer og tjenester Indhold: 1. Introduktion til styresystemer 2. Processer og tråde 3. Synkroniseringsmetoder og IPC 4. Memory management 5. IO og devicedrivere 6. Analyse og design af embedded

Læs mere

Systemkald DM14. 1. Obligatoriske opgave. Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/3-2004 Afleveret af: Jacob Christiansen, 130282-2111

Systemkald DM14. 1. Obligatoriske opgave. Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/3-2004 Afleveret af: Jacob Christiansen, 130282-2111 DM14 1. Obligatoriske opgave Systemkald Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/3-2004 Afleveret af: Jacob Christiansen, 130282-2111 Side 1 af 5 Intro: Formålet med opgaven at et lave en system kald

Læs mere

Operativsystemer - dopsys

Operativsystemer - dopsys Operativsystemer - dopsys Erik Ernst eernst@cs.au.dk dopsys 1 Q/A Mange deltagere er nu på 2. år af datalogistudiet, med dcomnet 1 for år siden Er din baggrund anderledes? dopsys 2 Praktiske oplysninger

Læs mere

Processer og tråde. dopsys 1

Processer og tråde. dopsys 1 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

Læs mere

VMware og dopsys-linux

VMware og dopsys-linux VMware og dopsys-linux 1 Virtuel maskine: OS Hardware Virtualisering: Resurser deles mellem processer: En virtuel maskine er til rådighed for hver proces. Virtualisering nu dybere: hver proces hvert OS.

Læs mere

Sider og segmenter. dopsys 1

Sider og segmenter. dopsys 1 Sider og segmenter dopsys 1 Lokal vs global sideallokering (1) Med (a) som udgangspunkt giver (b) lokal hhv. (c) global allokering forskellige resultater dopsys 2 Lokal vs global sideallokering (2) Den

Læs mere

Operativsystemer - dopsys. Erik Ernst

Operativsystemer - dopsys. Erik Ernst Operativsystemer - dopsys Erik Ernst eernst@cs.au.dk [Q/A] Mange deltagere er nu på 2. år af datalogistudiet eller cand.it., med dcomnet Er din baggrund anderledes? dopsys 2 Praktiske oplysninger http://cs.au.dk/dopsys

Læs mere

Sider og segmenter. dopsys 1

Sider og segmenter. dopsys 1 Sider og segmenter dopsys 1 Lokal vs global sideallokering (1) Med (a) som udgangspunkt giver (b) lokal hhv. (c) global allokering forskellige resultater dopsys 2 Lokal vs global sideallokering (2) Den

Læs mere

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

ESP30076 임베디드시스템프로그래밍 (Embedded System Programming) Module 14: Kernel Timer ESP30076 임베디드시스템프로그래밍 (Embedded System Programming) 조윤석 전산전자공학부 주차별목표 리눅스에서커널타이머사용법알아보기 HZ, jiffies_64, struct timer_list 커널타이머를활용한하드웨어제어용디바이스드라이버작성 2 Timer 관련변수 HZ 리눅스커널에서주기적으로발생하는시스템타이머

Læs mere

Principper for Samtidighed og Styresystemer

Principper for Samtidighed og Styresystemer Principper for Samtidighed og Styresystemer Kursusgang 12: Device drivere mt@cs.aau.dk Ph.D.-studerende Distribuerede og Indlejrede Systemer Institut for Datalogi Aalborg Universitet 17. maj 2010 Intro

Læs mere

Processer og koordinering

Processer og koordinering Processer og koordinering.. fortsat dopsys 1 Betingelsesvariabler (Condition variables).. hukommelsesløs variant af semaphorer: Atomare operationer: Signal bruges til at sende et signal. Wait bruges til

Læs mere

Styresystemer og tjenester

Styresystemer og tjenester Styresystemer og tjenester Indhold: 1. Introduktion til styresystemer. 2. Processer og tråde. 3. Synkroniseringsmetoder og InterProcesCommunikation. 4. Memory management. 5. I/O og devicedrivere. 6. Filsystemer.

Læs mere

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

DM14-1. Obligatorisk opgave F.06. System Call. Jacob Aae Mikkelsen Ingen andre gruppe medlemmer. 6. marts 2005 - 1. Obligatorisk opgave F.06 System Call Jacob Aae Mikkelsen - 191076 Ingen andre gruppe medlemmer 6. marts 2005 1 Indhold 1 Opgave beskrivelse 2 2 Analyse 2 2.1 Hukommelses allokering.....................

Læs mere

Operativsystemer - dopsys. Erik Ernst

Operativsystemer - dopsys. Erik Ernst Operativsystemer - dopsys Erik Ernst eernst@cs.au.dk [Q/A] Mange deltagere er nu på 2. år af datalogistudiet eller cand.it., med dcomnet En del har IT-erhvervserfaring Hvad med dig? dopsys 2 Praktiske

Læs mere

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { int wmid, wmevent; programmering med

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { int wmid, wmevent; programmering med LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) int wmid, wmevent; PAINTSTRUCT Introduktion ps; til HDC hdc; programmering med switch (message) case WM_COMMAND: wmid = LOWORD(wParam);

Læs mere

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

Design Systemkald. User-mode Linux, The Linux kernel/325-2004 Tracing tråden afbryder systemkaldet via ptrace Systemkaldet til værten ændres til getpid Processens stak manipuleres til at kalde kernen Kernen returnerer til processen Design Systemkald Design Startup/shutdown

Læs mere

Implementation af Koordinering. dopsys 1

Implementation af Koordinering. dopsys 1 Implementation af Koordinering dopsys 1 Oversigt: Impl. af koordinering Begreber: Kritiske regioner Gensidig udelukkelse Synkroniseringsprimitiver: Binære semaforer / mutexes Tællesemaforer Betingelsesvariabler

Læs mere

Processer og koordinering. dopsys 1

Processer og koordinering. dopsys 1 Processer og koordinering dopsys 1 Motivation.. parallelle processer udnytter hardwaren bedre: Batch operativsystemer (50 erne): Multiprogrammering og time-sharing (60 erne): dopsys 2 Motivation.. parallelle

Læs mere

WIKI & Lady Avenue New B2B shop

WIKI & Lady Avenue New B2B shop WIKI & Lady Avenue New B2B shop Login Login: You need a personal username and password Du skal bruge et personligt username og password Only Recommended Retail Prices Viser kun vejl.priser! Bestilling

Læs mere

Lageradministration Intel Pentium og Unix/Linux

Lageradministration Intel Pentium og Unix/Linux Lageradministration Intel Pentium og Unix/Linux 1 Lageradministration Multiprogrammering Håndtering af flere procesbilleder i lageret Virtuelt lager og swapping Gennemsigtig udnyttelse af disk som udvidelse

Læs mere

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

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index DET KONGELIGE Index Download driver... 2 Find the Windows 7 version.... 2 Download the Windows Vista driver.... 4 Extract driver... 5 Windows Vista installation of a printer.... 7 Side 1 af 12 DET KONGELIGE

Læs mere

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

PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU OUTLINE INEFFICIENCY OF ATTILA WAYS TO PARALLELIZE LOW COMPATIBILITY IN THE COMPILATION A SOLUTION

Læs mere

Filsystemer. dopsys. fredag den 26. november 2010

Filsystemer. dopsys. fredag den 26. november 2010 Filsystemer 1 Lageret er hierarkisk - Fokus: disk Sekundært lager er nødvendigt: Data i RAM forsvinder når processer terminerer o.lign. Og der er også brug for pladsen 2 Lageret er hierarkisk - Fokus:

Læs mere

Principper for Samtidighed og Styresystemer

Principper for Samtidighed og Styresystemer Principper for Samtidighed og Styresystemer kursusintroduktion og Introduktion til Styresystemer René Rydhof Hansen Februar 2008 PSS 08 (Forelsning 00) Kursus intro./intro. styresystemer Februar 2008 1

Læs mere

Interconnect. Front end interface

Interconnect. Front end interface Direct Remote Access to Devices (DREAD) Introduktion These Metode Baggrund Prototypen Resultater Konklusioner Kritik og fremtidigt arbejde 5. december 2000 Direct Remote Access to Devices slide 1 Klynger

Læs mere

//--------------------------------- Definition af porte og funktioner -------------------------

//--------------------------------- Definition af porte og funktioner ------------------------- Temeraturmåler (C-program).txt // Initialiserings-sekvens #include #pragma model=medium #pragma code=0x0000 #pragma xdata=0x4000 #pragma asm=on #pragma parameters=register //#define display P4

Læs mere

Processer. DS kursusgang nr. 2: Procestræer. ps: Vis processer

Processer. DS kursusgang nr. 2: Procestræer. ps: Vis processer DS kursusgang nr. 2: Processer 1. Definition af processer/tråde? eksemplificeret med fork() og exec() (procesdannelse i C under unix) 2. C vs. Java (overordnet + funktioner) 3. Processer vs. tråde: Server:

Læs mere

DANSK INSTALLATIONSVEJLEDNING VLMT500 ADVARSEL!

DANSK INSTALLATIONSVEJLEDNING VLMT500 ADVARSEL! DANSK INSTALLATIONSVEJLEDNING VLMT500 Udpakningsinstruktioner Åben indpakningen forsigtigt og læg indholdet på et stykke pap eller en anden beskyttende overflade for at undgå beskadigelse. Kontroller at

Læs mere

Trolling Master Bornholm 2015

Trolling Master Bornholm 2015 Trolling Master Bornholm 2015 (English version further down) Panorama billede fra starten den første dag i 2014 Michael Koldtoft fra Trolling Centrum har brugt lidt tid på at arbejde med billederne fra

Læs mere

Koordinering. dopsys

Koordinering. dopsys Koordinering At indføre flertrådethed (1) når tråde tages i brug opstår typisk konflikter (et velkendt eksempel er errno ) 2 At indføre flertrådethed (2) en del konflikter kan afhjælpes med thread-local

Læs mere

Boligsøgning / Search for accommodation!

Boligsøgning / Search for accommodation! Boligsøgning / Search for accommodation! For at guide dig frem til den rigtige vejledning, skal du lige svare på et par spørgsmål: To make sure you are using the correct guide for applying you must answer

Læs mere

Datatekniker med programmering som speciale H5

Datatekniker med programmering som speciale H5 Datatekniker med programmering som speciale H5 H5 består af et selvstændigt projekt som du definerer. Styringen af projektet er i centrum her, og ikke selve softwaren. H5 varer ti uger bestående af ni

Læs mere

Filsystemer: Anvendelse. dopsys

Filsystemer: Anvendelse. dopsys Filsystemer: Anvendelse 1 Lageret er hierarkisk - Fokus: disk Sekundært lager er nødvendigt: Data i RAM forsvinder når processer terminerer o.lign. Og der er også brug for pladsen 2 Lageret er hierarkisk

Læs mere

Aktivering af Survey funktionalitet

Aktivering af Survey funktionalitet Surveys i REDCap REDCap gør det muligt at eksponere ét eller flere instrumenter som et survey (spørgeskema) som derefter kan udfyldes direkte af patienten eller forsøgspersonen over internettet. Dette

Læs mere

Schedulering. dopsys 1

Schedulering. dopsys 1 Schedulering dopsys 1 Re: Schedulering af processer.. administration af CPU-resursen. Ready List (RL) processer i ready_a, ready_s, eller running tilstand. dopsys 2 Re: Schedulering af processer.. administration

Læs mere

onsdag den 1. december 2010 Input/Output

onsdag den 1. december 2010 Input/Output Input/Output Ydre enheder & De Tre Synsvinkler OS skal administrere adgangen til ydre enheder således at:... der fås en abstraktion, der giver en fleksibel og uniform adgang til ydre enheder, men samtidig

Læs mere

Lageret er hierarkisk fokus nu: disk

Lageret er hierarkisk fokus nu: disk Filsystemer Lageret er hierarkisk fokus nu: disk Sekundært lager er nødvendigt: Data i RAM forsvinder når processer terminerer o.lign. Og der er også brug for pladsen Top-down: Hvad er en fi l? Er en fi

Læs mere

Help / Hjælp

Help / Hjælp Home page Lisa & Petur www.lisapetur.dk Help / Hjælp Help / Hjælp General The purpose of our Homepage is to allow external access to pictures and videos taken/made by the Gunnarsson family. The Association

Læs mere

Trolling Master Bornholm 2015

Trolling Master Bornholm 2015 Trolling Master Bornholm 2015 (English version further down) Sæsonen er ved at komme i omdrejninger. Her er det John Eriksen fra Nexø med 95 cm og en kontrolleret vægt på 11,8 kg fanget på østkysten af

Læs mere

Schedulering. dopsys 1

Schedulering. dopsys 1 Schedulering dopsys 1 Re: Schedulering af processer.. administration af CPU-resursen. Ready List (RL) list af processer i ready_a tilstand. dopsys 2 Re: Schedulering af processer.. administration af CPU-resursen.

Læs mere

Niveauer af abstrakte maskiner

Niveauer af abstrakte maskiner Mikroarkitektur Niveauer af abstrakte maskiner Spørgsmål... Hvordan realiseres IJVM maskinen (lev. 2), eller hvordan ser en IJVM-CPU ud? Opbygning (mikroarkitekturen Mic-1) Anvendelse (mikroprogrammet

Læs mere

MIPS, registerallokering og MARS

MIPS, registerallokering og MARS MIPS, registerallokering og MARS Torben Mogensen 2011 Resumé Vi beskriver modulerne Mips.sml og RegAlloc.sml, samt hvordan de bruges sammen med MIPS-emulatoren MARS. 1 MIPS modulet Modulet Mips.sml indeholder

Læs mere

Planen for idag. Kontrol af ydre enheder. Systemarkitektur. Synkronisering ved aktiv venten. Multiprogrammering[1]: Ydre enheder og multiprogrammer

Planen for idag. Kontrol af ydre enheder. Systemarkitektur. Synkronisering ved aktiv venten. Multiprogrammering[1]: Ydre enheder og multiprogrammer : Ydre enheder og multiprogrammer Forår 2003 Jørgen Sværke Hansen Planen for idag Samspil mellem CPU og ydre enheder: Generelt Kontrolregistre Afbrydelser Specifikt for Alpha AXP (kernemaskinerne) Multiprogrammering:

Læs mere

how to save excel as pdf

how to save excel as pdf 1 how to save excel as pdf This guide will show you how to save your Excel workbook as PDF files. Before you do so, you may want to copy several sheets from several documents into one document. To do so,

Læs mere

Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner

Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner Forelæsning 4.1 Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner finden findalle Primitive typer (forfremmelse og begrænsning) Identitet versus lighed (for objekter, herunder strenge) Afleveringsopgave

Læs mere

Styresystemer og tjenester

Styresystemer og tjenester Styresystemer og tjenester Indhold: 1. Introduktion til styresystemer. 2. Processer og tråde. 3. Synkroniseringsmetoder og InterProcesCommunikation. 4. Memory management. 5. I/O og devicedrivere. 6. Filsystemer.

Læs mere

Hukommelsesspil. Introduktion. Scratch

Hukommelsesspil. Introduktion. Scratch Scratch 2 Hukommelsesspil All Code Clubs must be registered. By registering your club we can measure our impact, and we can continue to provide free resources that help children learn to code. You can

Læs mere

Get Instant Access to ebook Udleveret PDF at Our Huge Library UDLEVERET PDF. ==> Download: UDLEVERET PDF

Get Instant Access to ebook Udleveret PDF at Our Huge Library UDLEVERET PDF. ==> Download: UDLEVERET PDF UDLEVERET PDF ==> Download: UDLEVERET PDF UDLEVERET PDF - Are you searching for Udleveret Books? Now, you will be happy that at this time Udleveret PDF is available at our online library. With our complete

Læs mere

Kernealphaerne Indhold af G1

Kernealphaerne Indhold af G1 Kernealphaerne Indhold af G1 3 små opgaver: 1. Oversæt en kerne og afvikl den på en kernealpha 2. Håndoversæt en C/C++ funktion til alpha assembler 3. Implementer procedurer til dynamisk lagerallokering

Læs mere

RentCalC V2.0. 2012 Soft-Solutions

RentCalC V2.0. 2012 Soft-Solutions Udlejnings software Vores udvikling er ikke stoppet!! by Soft-Solutions RentCalC, som er danmarks ubetinget bedste udlejnings software, kan hjælpe dig med på en hurtigt og simple måde, at holde styr på

Læs mere

Trolling Master Bornholm 2013

Trolling Master Bornholm 2013 Trolling Master Bornholm 2013 (English version further down) Tilmeldingerne til 2013 I dag nåede vi op på 85 tilmeldte både. Det er stadig lidt lavere end samme tidspunkt sidste år. Tilmeldingen er åben

Læs mere

Input/Output: Disk & Clock. dopsys

Input/Output: Disk & Clock. dopsys Input/Output: Disk & Clock dopsys Magnetiske diske Spiller en vigtig rolle for mange typer computere Persistens, lagringstæthed, pris, hastighed, holdbarhed, fejltyper,...: OK! Afgørende for opstart (tungt

Læs mere

Lageradministration Paging og segmentering

Lageradministration Paging og segmentering Lageradministration Paging og segmentering 1 Re: Logiske/fysiske adresser... Proces-struktur = kode og data for en proces 4G En proces tilgår sin proces-struktur via et logisk/virtuelt adresserum, fx 0,

Læs mere

Ydre enheder & De Tre Synsvinkler

Ydre enheder & De Tre Synsvinkler Input/Output Ydre enheder & De Tre Synsvinkler OS skal administrere adgangen til ydre enheder således at:... der fås en abstraktion, der giver en fl eksibel og uniform adgang til ydre enheder, men samtidig

Læs mere

Ghostbusters. Introduktion. Scratch. Du skal lave et fangelegsspil med spøgelser! Arbejdsliste. Test dit Projekt. Gem dit Projekt

Ghostbusters. Introduktion. Scratch. Du skal lave et fangelegsspil med spøgelser! Arbejdsliste. Test dit Projekt. Gem dit Projekt Scratch 1 Ghostbusters All Code Clubs must be registered. By registering your club we can measure our impact, and we can continue to provide free resources that help children learn to code. You can register

Læs mere

Sunlite pakke 2004 Standard (EC) (SUN SL512EC)

Sunlite pakke 2004 Standard (EC) (SUN SL512EC) Sunlite pakke 2004 Standard (EC) (SUN SL512EC) - Gruppering af chasere igen bag efter. På den måde kan laves cirkelbevægelser og det kan 2,787.00 DKK Side 1 Sunlite pakke 2006 Standard (EC) LAN (SUN SL512EC

Læs mere

Netværk & elektronik

Netværk & elektronik Netværk & elektronik Oversigt Ethernet og IP teori Montering af Siteplayer modul Siteplayer teori Siteplayer forbindelse HTML Router (port forwarding!) Projekter Lkaa Mercantec 2009 1 Ethernet På Mars

Læs mere

Styresystemer og tjenester

Styresystemer og tjenester Styresystemer og tjenester Indhold: 1. Introduktion til styresystemer. 2. Processer og tråde. 3. Synkroniseringsmetoder og InterProcesCommunikation. 4. Memory management. 5. I/O og devicedrivere. 6. Filsystemer.

Læs mere

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

Lærebog. Datalogi 1F Forår 2003. Hvad sker hvornår? Kursusbøger. Planen for idag. Hvad er et operativsystem Lærebog Datalogi 1F Forår 2003 Operativsystemer og multiprogrammering Jørgen Sværke Hansen Silberschatz, Galvin, Gagne: Operating System Concepts, 6. udgave (med Windows XP opdatering) Har I 6. udgave

Læs mere

Input/Output: Brugergrænseflader. dopsys

Input/Output: Brugergrænseflader. dopsys Input/Output: Brugergrænseflader dopsys Interaktion med bruger Visse devices lægger et fundamentalt sæt af spilleregler for vores brug af computere Generisk tilbagemelding, hvad laver den : Billedskærm

Læs mere

User Manual for LTC IGNOU

User Manual for LTC IGNOU User Manual for LTC IGNOU 1 LTC (Leave Travel Concession) Navigation: Portal Launch HCM Application Self Service LTC Self Service 1. LTC Advance/Intimation Navigation: Launch HCM Application Self Service

Læs mere

Brug sømbrættet til at lave sjove figurer. Lav fx: Få de andre til at gætte, hvad du har lavet. Use the nail board to make funny shapes.

Brug sømbrættet til at lave sjove figurer. Lav fx: Få de andre til at gætte, hvad du har lavet. Use the nail board to make funny shapes. Brug sømbrættet til at lave sjove figurer. Lav f: Et dannebrogsflag Et hus med tag, vinduer og dør En fugl En bil En blomst Få de andre til at gætte, hvad du har lavet. Use the nail board to make funn

Læs mere

Forskning i socialpædagogik socialpædagogisk forskning?

Forskning i socialpædagogik socialpædagogisk forskning? Forskning i socialpædagogik socialpædagogisk forskning? eller knudramian.pbwiki.com www.regionmidtjylland.dkc Indhold Professionsforskning til problemløsning eller som slagvåben? Hvad er forskning? Hvad

Læs mere

Boost Concept Check Library

Boost Concept Check Library Boost Concept Check Library Kasper Egdø and Konstantin Barkaia Department of Computer Science University of Copenhagen Boost Concept Check Library p.1/19 Eksempel #include #include int

Læs mere

Netværksalgoritmer 1

Netværksalgoritmer 1 Netværksalgoritmer 1 Netværksalgoritmer Netværksalgoritmer er algoritmer, der udføres på et netværk af computere Deres udførelse er distribueret Omfatter algoritmer for, hvorledes routere sender pakker

Læs mere

Introduktion til C programmering

Introduktion til C programmering Introduktion til C programmering Rasmus Erik Voel Jensen Uge 17 voel@math.ku.dk Dagens forelæsning Formalia Indledende programmering, main, include, printf, variable, scanf, if-else, statements, eksempler

Læs mere

program fibomain(input,output); var i, j,result : integer; var x, y: integer;

program fibomain(input,output); var i, j,result : integer; var x, y: integer; program fibomain(input,output); var i, j,result : integer; procedure fib(n : integer); var x, y: integer; begin if (n=0) or (n=1) then result := 1 else begin fib(n-1); x:= result; fib(n-2); y:= result;

Læs mere

Tegnekasse. Introduktion. Scratch. I dette projekt skal du lave dit eget tegneprogram! Arbejdsliste. Test dit Projekt.

Tegnekasse. Introduktion. Scratch. I dette projekt skal du lave dit eget tegneprogram! Arbejdsliste. Test dit Projekt. Scratch 1 Tegnekasse All Code Clubs must be registered. By registering your club we can measure our impact, and we can continue to provide free resources that help children learn to code. You can register

Læs mere

Programmering i C Videre med C (2 af 4) 19. marts 2007

Programmering i C Videre med C (2 af 4) 19. marts 2007 Programmering i C Videre med C (2 af 4) 19. marts 2007 Mads Pedersen, OZ6HR mads@oz6hr.dk Plan i dag Brush-up fra sidst Videre med C Kontrolløkker (while, for, ) Conditional Execution (if, if/else) Funktioner

Læs mere

Filsystemer: Implementation. dopsys

Filsystemer: Implementation. dopsys Filsystemer: Implementation 1 Hvor lagres filer?... filer lagres typisk på en harddisk...... head, track, sector, cylinder... Rotationshastighed fx 10000 RPM, Læse/skrivehast. 50 MB/s 2 Adgang til harddisken

Læs mere

Trolling Master Bornholm 2016 Nyhedsbrev nr. 6

Trolling Master Bornholm 2016 Nyhedsbrev nr. 6 Trolling Master Bornholm 2016 Nyhedsbrev nr. 6 English version further down Johnny Nielsen med 8,6 kg laks Laksen blev fanget seks sømil ud for Tejn. Det var faktisk dobbelthug, så et kig ned i køletasken

Læs mere

Rockband. Introduktion. Scratch. I dette projekt skal du lære, hvordan du kan kode dit eget musikinstrument! Arbejdsliste.

Rockband. Introduktion. Scratch. I dette projekt skal du lære, hvordan du kan kode dit eget musikinstrument! Arbejdsliste. Scratch 1 Rockband All Code Clubs must be registered. Registered clubs appear on the map at codeclubworld.org - if your club is not on the map then visit jumpto.cc/ccwreg to register your club. Introduktion

Læs mere

Hvor er mine runde hjørner?

Hvor er mine runde hjørner? Hvor er mine runde hjørner? Ofte møder vi fortvivlelse blandt kunder, når de ser deres nye flotte site i deres browser og indser, at det ser anderledes ud, i forhold til det design, de godkendte i starten

Læs mere

Deadlocks dopsys 1 onsdag den 8. december 2010

Deadlocks dopsys 1 onsdag den 8. december 2010 Deadlocks dopsys 1 En deadlock! When two trains approach each other at a crossing, both shall come to a full stop and neither shall start up again until the other has gone. Lov - the Kansas Legislature

Læs mere

Danish Language Course for International University Students Copenhagen, 12 July 1 August Application form

Danish Language Course for International University Students Copenhagen, 12 July 1 August Application form Danish Language Course for International University Students Copenhagen, 12 July 1 August 2017 Application form Must be completed on the computer in Danish or English All fields are mandatory PERSONLIGE

Læs mere

ArbejsskadeAnmeldelse

ArbejsskadeAnmeldelse ArbejsskadeAnmeldelse OpretAnmeldelse 001 All Klassifikations: KlassifikationKode is an unknown value in the current Klassifikation 002 All Klassifikations: KlassifikationKode does not correspond to KlassifikationTekst

Læs mere

1 Operativsystemer oversigt

1 Operativsystemer oversigt 1 Operativsystemer oversigt Hvorfor OS virtualisering Abstraktion (processer, virtual hukommelse, filer) Kernel mode og user mode Systemkald (slide 31) Interrupts At levere en simplere model af computeren

Læs mere

Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1

Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1 Project Step 7 Behavioral modeling of a dual ported register set. Copyright 2006 - Joanne DeGroat, ECE, OSU 1 The register set Register set specifications 16 dual ported registers each with 16- bit words

Læs mere

DK - Quick Text Translation. HEYYER Net Promoter System Magento extension

DK - Quick Text Translation. HEYYER Net Promoter System Magento extension DK - Quick Text Translation HEYYER Net Promoter System Magento extension Version 1.0 15-11-2013 HEYYER / Email Templates Invitation Email Template Invitation Email English Dansk Title Invitation Email

Læs mere

Sikkerhedsvejledning

Sikkerhedsvejledning 11-01-2018 2 Sikkerhedsvejledning VIGTIGT! Venligst læs disse instruktioner inden sengen samles og tages i brug Tjek at alle dele og komponenter er til stede som angivet i vejledningen Fjern alle beslagsdele

Læs mere

Eksempel: Skat i år 2000

Eksempel: Skat i år 2000 Kursus 02199: Programmering afsnit 2.1-2.7 Anne Haxthausen IMM, DTU 1. Værdier og typer (bl.a. char, boolean, int, double) (afsnit 2.4) 2. Variable og konstanter (afsnit 2.3) 3. Sætninger (bl.a. assignments)

Læs mere

dsoftark E2007 Gruppe 14: Anders, Troels & Søren 15. november 2007 Rapport til a. 1 'TDD rytmen'

dsoftark E2007 Gruppe 14: Anders, Troels & Søren 15. november 2007 Rapport til a. 1 'TDD rytmen' dsoftark E2007 Gruppe 14: Anders, Troels & Søren 15. november 2007 'TDD rytmen' Rapport til a. 1 Vi bruger gennem vores arbejde, rytmen fra Test Driven Development-paradigmet. Quickly add a test Run tests

Læs mere

Start på Arduino og programmering

Start på Arduino og programmering Programmering for begyndere Brug af Arduino Start på Arduino og programmering EDR Hillerød Knud Krogsgaard Jensen / OZ1QK 1 Start på Arduino og programmering Sidste gang (Introduktion) Programmeringssproget

Læs mere

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4 DM502 Forelæsning 4 Flere kontrolstrukturer for-løkke switch-case Metoder Indhold Arrays og sortering af arrays String-funktioner for-løkke Ofte har man brug for at udføre det samme kode, for en sekvens

Læs mere

Løsningsforslag Skriftlig eksamen 9. januar 2012

Løsningsforslag Skriftlig eksamen 9. januar 2012 Løsningsforslag Skriftlig eksamen 9. januar 2012 Version 1, 2012-01-09 Spørgsmål 1 Spørgsmål 1.1 Først laver vi indlysende korrekt NFAer for hver af de to dele (ddd ddd) og (_ddd)* af det givne regulære

Læs mere

! Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen.

! Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen. Copenhagen Business Academy Multimediedesigner 3. semester - 1. projekt, september 2014 Gruppe 1 - MulA Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen. Study: Multimedia Design Project:

Læs mere

! Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen.

! Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen. Copenhagen Business Academy Multimediedesigner 3. semester - 1. projekt, september 2014 Gruppe 1 - MulA Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen. Study: Multimedia Design Project:

Læs mere

Programmering i C. Lektion 4. 5. december 2008

Programmering i C. Lektion 4. 5. december 2008 Programmering i C Lektion 4 5. december 2008 Funktioner Eksempel Fra sidst 1 Funktioner 2 Eksempel Funktioner Eksempel Eksempel: 1 / f u n k t i o n s p r o t o t y p e r / i n t i n d l a e s ( void )

Læs mere

Hjernetræning. Introduktion. Scratch

Hjernetræning. Introduktion. Scratch Scratch 2 Hjernetræning All Code Clubs must be registered. By registering your club we can measure our impact, and we can continue to provide free resources that help children learn to code. You can register

Læs mere

De 10 JavaScript eksamensspørgsmål

De 10 JavaScript eksamensspørgsmål De 10 JavaScript eksamensspørgsmål I det nedenstående præsenteres de 10 JavaScript spørgsmål der sammen med relevante dele af kursets pensum vil udgøre udgangspunktet for den del af den mundtlige eksamen

Læs mere

Tech College Aalborg. HomePort. Projekt Smart Zenior Home Guide til udvikling af nye adaptere til HomePort

Tech College Aalborg. HomePort. Projekt Smart Zenior Home Guide til udvikling af nye adaptere til HomePort Tech College Aalborg HomePort Projekt Smart Zenior Home Guide til udvikling af nye adaptere til HomePort Indhold HomePort Adapter Step-for-Step... 2 Linux... 2 Installér IDE... 2 HomePort på GitHub...

Læs mere

Bilag. Resume. Side 1 af 12

Bilag. Resume. Side 1 af 12 Bilag Resume I denne opgave, lægges der fokus på unge og ensomhed gennem sociale medier. Vi har i denne opgave valgt at benytte Facebook som det sociale medie vi ligger fokus på, da det er det største

Læs mere

Trolling Master Bornholm 2016 Nyhedsbrev nr. 8

Trolling Master Bornholm 2016 Nyhedsbrev nr. 8 Trolling Master Bornholm 2016 Nyhedsbrev nr. 8 English version further down Der bliver landet fisk men ikke mange Her er det Johnny Nielsen, Søløven, fra Tejn, som i denne uge fangede 13,0 kg nord for

Læs mere

Miniprojekt2011. Formålet er at lære og indlære god objektorienteret programudvikling og programmering med Java, samt undervejs at opfylde studiekrav.

Miniprojekt2011. Formålet er at lære og indlære god objektorienteret programudvikling og programmering med Java, samt undervejs at opfylde studiekrav. Miniprojekt2011 Projektbeskrivelse Der skal fremstilles en lille java application på PC, hvor brugeren kan foretage interaktioner med en simpel database på disken via et grafisk brugerinterface. Formålet

Læs mere

Engineering of Chemical Register Machines

Engineering of Chemical Register Machines Prague International Workshop on Membrane Computing 2008 R. Fassler, T. Hinze, T. Lenser and P. Dittrich {raf,hinze,thlenser,dittrich}@minet.uni-jena.de 2. June 2008 Outline 1 Motivation Goal Realization

Læs mere

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3 DM502 Forelæsning 3 Indlæsning fra tastatur Udskrift til skærm Repetition Beregning af middelværdi Gentagelse med stop-betingelse (while) Heltalsdivision Division med nul Type-casting ( (double) ) Betinget

Læs mere

Programmeringscamp. Implementer funktionerne én for én og test hele tiden.

Programmeringscamp. Implementer funktionerne én for én og test hele tiden. Programmeringscamp De to opgaver træner begge i at lave moduler som tilbyder services der kan bruges af andre, samt i at implementere services efter en abstrakt forskrift. Opgave 1 beder jer om at implementere

Læs mere

F# - hvorfor, hvordan og til hvad? Rune Ibsen Jyske Bank

F# - hvorfor, hvordan og til hvad? Rune Ibsen Jyske Bank F# - hvorfor, hvordan og til hvad? Rune Ibsen Jyske Bank 03-10-2018 Rune Ibsen Softwareudvikling Seniorkonsulent Mentoring 10 konsulenter F# Programmeringssprog som oversættes til.net Functional-first,

Læs mere

Planen for idag. Opdatering af delt lager

Planen for idag. Opdatering af delt lager Planen for idag Synkronisering: Tidsafhængighed i multiprogrammer Semaforer: Binære semaforer Tælle semaforer Grænseflader: Hvordan implementeres systemkald Tidsafhængighed i multiprogrammer proces læser

Læs mere

Programmering i C. Lektion september 2009

Programmering i C. Lektion september 2009 Programmering i C Lektion 4 18. september 2009 Pointers Referenceparametre 2 / 19 Pointers 1 Pointers 2 Referenceparametre Pointers Referenceparametre 3 / 19 Husk: En variabel er en navngiven plads i computerens

Læs mere