Systemkald i Unix/Linux
|
|
- Flemming Kjær
- 6 år siden
- Visninger:
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 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 mereSystemkald 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 mereOperativsystemer - 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 mereProcesser 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 mereVMware 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 mereSider 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 mereOperativsystemer - 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 mereSider 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 mereESP30076 임베디드시스템프로그래밍 (Embedded System Programming)
Module 14: Kernel Timer ESP30076 임베디드시스템프로그래밍 (Embedded System Programming) 조윤석 전산전자공학부 주차별목표 리눅스에서커널타이머사용법알아보기 HZ, jiffies_64, struct timer_list 커널타이머를활용한하드웨어제어용디바이스드라이버작성 2 Timer 관련변수 HZ 리눅스커널에서주기적으로발생하는시스템타이머
Læs merePrincipper 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 mereProcesser 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 mereStyresystemer 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 mereDM14-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 mereOperativsystemer - 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 mereLRESULT 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 mereDesign 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 mereImplementation 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 mereProcesser 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 mereWIKI & 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 mereLageradministration 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 mereDET 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 merePARALLELIZATION 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 mereFilsystemer. 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 merePrincipper 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 mereInterconnect. 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 -------------------------
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 mereProcesser. 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 mereDANSK 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 mereTrolling 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 mereKoordinering. 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 mereBoligsø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 mereDatatekniker 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 mereFilsystemer: 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 mereAktivering 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 mereSchedulering. 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 mereonsdag 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 mereLageret 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 mereHelp / 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 mereTrolling 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 mereSchedulering. 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 mereNiveauer 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 mereMIPS, 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 merePlanen 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 merehow 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 mereOpfø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 mereStyresystemer 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 mereHukommelsesspil. 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 mereGet 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 mereKernealphaerne 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 mereRentCalC 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 mereTrolling 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 mereInput/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 mereLageradministration 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 mereYdre 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 mereGhostbusters. 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 mereSunlite 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 mereNetvæ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 mereStyresystemer 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 mereLæ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 mereInput/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 mereUser 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 mereBrug 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 mereForskning 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 mereBoost 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 mereNetvæ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 mereIntroduktion 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 mereprogram 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 mereTegnekasse. 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 mereProgrammering 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 mereFilsystemer: 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 mereTrolling 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 mereRockband. 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 mereHvor 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 mereDeadlocks 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 mereDanish 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 mereArbejsskadeAnmeldelse
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 mere1 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 mereProject 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 mereDK - 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 mereSikkerhedsvejledning
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 mereEksempel: 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 meredsoftark 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 mereStart 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 mereUniversity 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 mereLø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.
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.
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 mereProgrammering 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 mereHjernetræ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 mereDe 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 mereTech 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 mereBilag. 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 mereTrolling 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 mereMiniprojekt2011. 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 mereEngineering 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 mereUniversity 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 mereProgrammeringscamp. 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 mereF# - 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 merePlanen 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 mereProgrammering 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