<4D F736F F F696E74202D20B8AEB4AABDBAC4BFB3CEC7C1B7CEB1D7B7A1B9D62D352E BC8A3C8AF20B8F0B5E55D>

Size: px
Start display at page:

Download "<4D F736F F F696E74202D20B8AEB4AABDBAC4BFB3CEC7C1B7CEB1D7B7A1B9D62D352E BC8A3C8AF20B8F0B5E55D>"

Transcription

1 리눅스커널프로그래밍 Ki-Hyun JUNG 참고 : Linux Kernel Programming Kernel Module Programming 커널프로그래밍 Add-on Linux Kernel 1

2 운영체제가관리 자원관리 물리적인자원 (Physical Resource) CPU, 메모리, 디스크, 터미널, 네트워크등 시스템을구성하고있는요소들과주변장치 추상적인자원 (Abstract Resource) 물리적인자원을운영체제가관리하기위해 추상화시킨객체들 2

3 추상적인자원 CPU 추상화자원 태스크 (Task), 쓰레드 (Thread) 메모리추상화자원 세그먼트 (Segment), 페이지 (Page) 디스크추상화자원 파일, inode, 디스크드라이버 터미널추상화자원 회선규범 (Line Discipline), 터미널드라이버 네트워크추상화자원 통신프로토콜, 패킷 (Packet) 추상적인객체로만존재하는자원 보안 (Security), 접근제어 (Access Control) 3

4 논리적인구성요소 태스크관리자 메모리관리자 파일시스템 네트워크관리자 디바이스드라이버 리눅스커널 4

5 Application Level Process 1 Process 2 Process 3 System Calls Interface Kernel Level File System ext2fs xiafs proc minix nif msdos iso9660 Buffer Cache Memory Manager virtual memory page fault handling swapping Task Manager context scheduler signals loadable modules Device Manager block character hd cdrom isdn network scsi pci Network Manager ipc4 ethernet. Hardware Level Machine Interface (Interrupt) Device Memory CPU 5

6 태스크 1. 태스크관리자 생성, 실행, 상태전이 (State Transition) 스케줄링 시그널처리 프로세스간통신 (IPC) InterProcess Communication) 모듈 6

7 가상메모리 2. 메모리관리자 주소변환 (Address Translation) 페이지부재결함 (Page Fault) 처리 7

8 3. 파일시스템 파일생성, 접근제어, inode 관리 디렉토리관리 수퍼블록관리 버퍼캐쉬관리 8

9 4. 네트워크관리자 소켓 (Socket) 인터페이스 통신프로토콜 TCP/IP, UDP 9

10 5. 디바이스드라이버 디스크, 터미널, CD, 네트워크카드등과같은주변장치를구동하는드라이버 10

11 Application Level ls ps mount aout a.out... Kernel Level System Calls Interface File System open() read() write() Buffer Cache Memory Manager brk() 시스템호출인터페이스를이용하여사용자응용프로그램과통신 Task Manager fork() execve() getpid() signal() 사용자레벨에서직접호출되지않고파일시스템을거쳐디바이스드라이버의서비스가호출 Hardware Level Device Manager Network Manager 시스템호출명령없음 socket() bind() connect() Machine Interface (Interrupt) Device Memory CPU 기계인터페이스와인터럽트처리매커니즘등을이용하여하드웨어와통신 11

12 표준입출력라이브러리와시스템호출 C library functions Application code User Process System Calls Kernel 12

13 C 프로그램의시작과종료 return User functions main function call exit exit exit function call exit handler... return exit handler return C start-up routine call exit _exit Standard I/O cleanup exec 컴파일러가응용프로그램과링크 - 명령어라인에전달된인자들을벡터형태로변환하여 main() 함수호출 Kernel 13

14 1. 커널내부관리자연동 :read() Process read() 시스템호출 System Call sys_read() 시스템처리함수 File System 1. 디렉토리탐색하여요청한파일의 inode 찾음 2. Inode의정보를이용해디스크상에서요청한데이터의논리적인위치를찾음 3. 버퍼캐스공간에요청한데이터가이미존재하는지검사 - 있으면 ((buffer cache hit) 데이터전달 - 없으면디스크드라이버에게해당디스크블록요청 Buffer Cache Device Manager bread() hd_request() Disk Device Driver Machine Interface (Interrupt) 1. 요청된논리적디스크블록의헤드, 트랙, 섹터계산하여해당섹터를읽어옴 2. 읽혀진데이터를버퍼캐시에전달 3. 파일시스템은사용자가요청한크기만큼데이터를사용자에게전달 hd_io()... Memory CPU 리눅스는일반적으로 sys_*() 으로명명 14

15 2. 커널내부관리자연동 : fork() 1. 새로운태스크를위한태스크자료구조요청 Process fork() Task Manager copy_mm() Memory Manager System Call sys_fork() Process Management copy_thread() - 태스크번호 ( 프로세스번호, pid), 스케줄링정보, 시그널정보, 파일디스크립터 2. 메모리객체 ( 세그먼트, 페이지들 ) 를메모리관리자에게요청후할당 3. 새로운제어흐름을위한스레드자료구조생성 4. 태스크자료구조에메모리객체와스레드에대한포인터설정 5. 생성된태스크자료구조를실행큐에연결 6. 스케줄러가새로생성된태스크를스케줄링 Machine Interface (Interrupt)... Memory CPU 15

16 리눅스커널소스트리구조 /usr/src/linux arch fs init include net driver scripts mm 하드웨어종속적인부분구현 다양한파일시스템, open(), read(), write(), 파이프 디바이스드라이버구현 - 블록, 문자, 네트웍으로구분 커널초기화부분 - 커널의메인시작함수구현, 메모리관리자구현 message passing, shared memory, semaphore lib ipc 통신프로토콜구현, 소켓 - TCP/IP, WAN(X.25, 802), IPX, SUN RPC, AppleTalk kernel 태스크관리자구현, 시그널 doc 하드웨어종속적인태스크는 arch/i386/kernel 16

17 시스템초기화과정 전원이켜지면 CMOS 수행, 하드디스크의구조 (Geometry) 파악 arch/i386/boot/ 디렉토리의부트스트랩코드를메모리에적재하고, 제어를이곳으로넘김 부트스트랩코드는루트파일시스템의구조확인하고, 리눅스커널을메모리에적재하여제어를이곳으로넘김 커널의시작위치는물리메모리의정해진영역에적재되도록구현됨, 약속된주소로분기 arch/i386/kernel/head.s / / 파일에구현된 startup_32 함수수행 메모리초기화, 인터럽트초기화, SMP 관련초기화 커널의메인시작함수호출 이디렉토리의 start_kernel() 함수수행 디바이스드라이버초기화, 커널내부자료구조할당및초기화 태스크 0(idle), 태스크 1(init) 생성후수행 init 태스크 ( 리눅스시스템초기화 ) Kflushd 데몬, syslogd 데몬, inetd 데몬등의데몬태스크생성 파일시스템마운트및초기화, 터미널초기화, 네트웍초기화 Login 태스크생성 17

18 커널특징 메모리에상주 리눅스커널컴파일 커널권한 (kernel level) 으로동작 * a.out( 사용자실행파일 ) 필요할때메모리에적재, 사용자권한으로동작 리눅스커널생성과정 커널구성 (kernel configuration) 커널컴파일 (kernel compile) 커널인스톨 (kernel installation) 18

19 커널생성 /* 커널소스의상위디렉토리로이동 */ $cd /usr/src/linux /* 커널구성 */ $make config ( 또는 xconfig, menuconfig) /* query and answer */ /* 커널컴파일 */ $make dep $make clean $make bzimage /* 실제커널소스가컴파일됨 */ /* 인스톨 */ $make modules $make modules_install /* 생성된커널을 /boot 디렉토리에복사 */ $cp arch/i386/boot/bzimage /boot/vmlinuz-new /* edit /etc/lilo.conf file */ $vi /etc/lilo.conf $lilo // Linux Loader $reboot boot=/dev/hda map=/boot/map install=/boot/boot.b prompt timeout=50 lineardefault=linux image=/boot/vmlinuz kr label=linux read-only root=/dev/hda7 /* 이부분추가 */ image=/boot/vmlinuz-new label=linux-new read-only root=/dev/hda7 other=/dev/hda1 label=dos table=/dev/hda 19

20 커널 Rebuild /* 최신커널다운로드 ftp://ftp.kernel.org/pub/linux/kernel $rm rf linux /* 이전 symbolic link 지우기 */ $mkdir linux $ln s linux linux /* 새로운 symbolic link 생성 */ $gzip dc linux tar.gz tar xvfz linux tar.gz $cd /usr/src/linux $make mrproper /* 기존커널의존성제거 */ $make menuconfig /* 새로운커널설정작업 */ $make dep /* 모든오브젝트파일과구버전에남겨놓은의존성제거 */ $make clean $make bzimage $make modules /* 커널옵션을설정할때 module 로설정한옵션컴파일및설치 */ $make modules-install $cp /usr/src/linux/arch/i386/boot/bzimage /boot/bzimage test $cp /usr/src/linux/system.map /boot/system.map test $vi /etc/lilo.conf $lilo $reboot 20

21 시스템호출 커널은각시스템호출을함수로 ( 시스템호출핸들러 ) 구현해놓고각시스템호출이요청되었을때대응되는함수를호출하여서비스제공 리눅스커널에서는시스템호출을구현한함수이름앞에 sys_ 라는접두어를붙임 ( 관습 ) 사용자프로그램 fork() 시스템호출, 커널은 sys_fork() 라는이름으로구현 21

22 Linux Kernel 시스템호출구현 1. 커널수정 시스템호출번호할당 시스템호출테이블등록 시스템호출처리함수구현 커널컴파일및 Rebooting 2. 사용자레벨 Application 작성 시스템호출을사용하는프로그램작성 라이브러리작성 (option) 22

23 시스템호출번호할당 리눅스커널이제공하는모든시스템호출은각각고유한번호소유 include/asm-i386/unistd.h / 에구현 /usr/src/linux 새로운시스템호출번호할당 #define _NR_exit 1 #define NR_fork 2 #define _NR_newsyscall

24 시스템호출테이블등록 리눅스커널이제공하는모든시스템호출처리함수는 sys_call_table에등록 arch/i386/kernel/entry.s 각테이블엔트리에시스템호출처리함수시작점주소가들어있고, 각엔트리는각시스템호출번호를인덱스로접근 ENTRY(sys_call_table).long SYMBOL_NAME(sys_ni_syscall) /* 0 */.long SYMBOL_NAME(sys_exit) /* 1 */.long SYMBOL_NAME(sys_fork) /* 2 */.long SYMBOL_NAME(sys_newsyscall).rept NR_syscalls

25 시스템호출처리함수구현 태스크관리자와관련된함수들 커널소스트리에서 kernel/ 디렉토리에구현 파일시스템과관련된함수들 fs/ 디렉토리에구현 /* /usr/src/linux/kernel/newfile.c */ #include <linux/unistd.h> i #include <linux/errno.h> #include <linux/kernel.h> #include <linux/sched.h> asmlinkage int sys_newsyscall() { printk( Hello, Linux, I m in Kernel n ); return(0); } asmlinkage 키워드 - C 로구현한함수가어셈블리언어로구현된함수에서호출될때사용 - 인텔 CPU 에서는특별히하는기능이없으며, Alpha CPU 같은경우전처리수행 printk() 함수 - 커널레벨에서수행되는함수 - 커널라이브러리 25

26 커널컴파일및리부팅 kernel/ 디렉토리의 Makefile 수정 O_TARGET := kernel.o O_OBJS := sched.o newfile.o 리눅스버전에따라서조금씩다름 make 수행 Kernel rebuild rebooting 26

27 시스템호출응용프로그램작성 프로그램작성 /* test_newsyscall.c */ /* 새로운시스템호출을위한응용프로그램 */ /* include/asm-i386/unistd.h */ #include <linux/unistd.h> _syscall0(int, newsyscall); main() { int r; r = newsyscall(); } #define _syscall0(type, name) 인자가 1 개 : _syscall1() 인자가 2개 : _syscall2() 컴파일 gcc, cc * printk() : 콘솔에문자열을출력 27

28 라이브러리작성 (option) $vi test_newsyscall.c // editing $gcc c test_newsyscall.c $ls test_newsyscall.c test_newsyscall.o /* contents of test_newsyscall.c */ #include <linux/unistd.h> _syscall0(int, newsyscall); $ar r libnew.a test_newsyscall.o $ranlib // generating index to archive $ar t libnew.a $vi test.c // editing $gcc test.c L / lnew $a.out /* contents of test.c */ main() { int k; k = newsyscall(); } -L // 라이브러리가존재하는디렉토리 -l // 라이브러리링크 28

29 실습 : 라이브러리생성 $vi test_newlibcall.c // editing $gcc c test_newlibcall.c $ls test_newlibcall.c test_newlibcall.o /* contents of test_newlibcall.c */ #include <stdio.h> viod newlibcall() { printf( testing : library call n ); } $ar r libnew.a test_newlibcall.o $ranlib $ar t libnew.a $vi test.c // editing $gcc test.c L./ lnew $a.out /* contents of test.c */ main() { newlibcall(); } -L // 라이브러리가존재하는디렉토리 -l // 라이브러리링크 29

30 시스템호출 fork() 시스템호출과정 sys_fork() /* arch/i386/kernel/process.c */ read() sys_read() /* fs/read_write.c */ 시스템호출처리함수들의시작점주소 sys_call_table() /* arch/i386/kernel/entry.s */ 테이블에등록된시스템호출처리함수를호출 system_call() /* arch/i386/kernel/entry.s */ sys_call_table 관리 인터럽트 ( 트랩 ) 처리메커니즘에의해호출 30

31 인터럽트처리과정 인터럽트 주변장치가자신에게발생한비동기적인사건을커널에게알리는 매커니즘 인터럽트처리를위한루틴들을함수로구현 각함수의시작점주소 : IDT(Interrupt Descriptor Table), IVT(Interrupt Vector Table) 에등록 리눅스커널 : idt_table table /* arch/i386/kernel/traps.c */ Real time Clock CPU Kernel disk tty network cdrom PIC IDT(IVT). 0 timer_interrupt(). 1 hd_interrupt() t(). 인터럽트를발생시킬수있는주변장치들은 Programmable Interrupt Controller 칩의각핀에연결 2 3 tty_interrupt()... el3_interrupt() interrupt_ handlers Timer_interrupt()... Hd_interrupt() 31

32 주변장치와커널통신방법 인터럽트 (interrupt) 방식 커널이주변장치에게일을시킨후다른일을하며그장치가일을완료한후커널에게인터럽트로알리는방식 사건이발생하면주변장치가커널에게알리는방식 폴링 (polling) 방식 커널이주변장치에게일을시킨후그일이완료되었는지검사하는방식 커널이주변장치에서사건의발생을검사하는방식 32

33 인터럽트 vs. 트랩 시스템에서발생하는비동기적인사건을알리는메커니즘 인터럽트 현재수행중인프로세스와관계없이하드웨어적인사건을알리는메커니즘 트랩 (Trap) 현재수행중인프로그램이유발한소프트웨어적인사건의발생을알리는메커니즘 예외처리 (exception handling) Divide by zero, segment fault, page fault, invalid operation code, security fault 등 인터럽트처리와같은방법으로처리 33

34 IDT 테이블구조 0x00 0x08 0x20 0x80 0xFF idt_tabletable divide_error() debug() nmi() segment_not_present() not page_fault timer_interrupt() hd_interrupt() system_call() Include/asm_i386/desc.h Include/asm _ i386/irq.h Arch/i386/kernel/traps.c Common trap handler for 8086 FIRST_EXTERNAL_VECTOR Device interrupt handler (IRQ) /* 주변장치 */ SYSCALL_VECTOR 34

35 시스템호출과정 ( 요약 ) /* user task */ main() { fork() } 0x00 idt_table /* arch/i386/kernel/entry.s */ divide_error() ENTRY(system_call) SAVE_ALL debug() call nmi() *SYMBOL_NAME(sys_call_table)(,%eax,4), ) /* libc.a */ fork() { } movl 2, %eax int $0x80 0x08 0x20 0x80 0xFF Kernel page_fault timer_interrupt() interrupt() hd_interrupt() system_call() 1 2 sys_call_table sys_exit() sys_fork() sys_fork() /* arch/i386/kernel/process.c c */ /* kernel/fork.c */ 35

36 과제 앞에서구현한새로운시스템호출처리과정을그림으로나타내시오 36

37 실습 1: 커널정보출력 #include <linux/unistd.h> #include <linux/errno.h> #include <linux/kernel.h> #include <linux/sched.h> asmlinkage int sys_gettaskinfo() { int i, cnt=0; printk("pid : %d n", current->pid); printk("ppid : %d n", current->p_pptr->pid); if (current->state == -1) printk("unrunnable state n"); else if (current->state == 0) printk("runnable state n"); else if (current->state t t == 1) printk("interruptable state n"); else if (current->state == 2) printk("uninterruptable state n"); else if (current->state t t == 4) printk("zombie state n"); else if (current->state == 8) printk("stopped state n"); else if (current->state t t == 16) printk("swapping state n"); else printk("unknown state n"); } printk("priority : %lu n", current->priority); printk("scheduling Policy : %lu n", current->policy); printk("user CPU time : %lu ticks n", current->times.tms_utime); printk("system CPU time : %lu ticks n", current->times.tms_stime); printk("start time : %lu n", current->start_time); printk("number of major faults : %lu n", current->maj_flt); printk("number of minor faults : %lu n", current->min_flt); for (i=0; i<256; i++) if (current->files->fd_array[i]!= NULL) { cnt++; } return(0); printk("number of opened file : %d n", cnt); #include <linux/unistd.h> _syscall0(int, gettaskinfo); main() { int i; i = gettaskinfo(); } 37

38 실습 2: 인자전달 #include <linux/unistd.h> #include <linux/errno.h> #include <linux/kernel.h> #include <linux/sched.h> #include <asm-i386/uaccess.h> asmlinkage int sys_show_mult(int x, int y, int *res) { int error, compute; error = verify_area(verify_write, res, sizeof(init)); if (error) return error; compute = x*y; put_user(compute, res); return(0); } put_user() - 곱셉한결과를사용자레벨공간에전달하기위해 verify_area() - res라는사용자공간에쓰기가가능한지확인 #include <linux/unistd.h> _syscall3(int, show_mult, int, x, int, y, int *, result); main() { int mult_ret = 0; int x = 2; int y = 5; } printf("%d * %d = %d n", x, y, mult_ret); show_mult(x, y, &mult_ret); printf("%d * %d = %d n", x, y, mult_ret); 38

39 실습 3: 구조체를이용한인자전달 /* mystat.h */ search = &init_task; struct mystat { while (search->pid!= id) { int pid; // pid_t pid; search = search->next_task; task; int ppid; // pid_t ppid; if (search->pid == init_task.pid) int state; return(-1); int priority; } int policy; long utime; long stime; long starttime; unsigned long min_flt; unsigned long maj_flt; buf->pid = search->pid; int open_files; }; #include <linux/unistd.h> #include <linux/errno.h> #include <linux/kernel.h> #include <linux/sched.h> #include <asm-i386/uaccess i386/uaccess.h> #include "mystat.h" #include <linux/malloc.h> asmlinkage int sys_getstat (int id, struct mystat *user_buf) { struct mystat *buf; int i, cnt=0; struct task_struct *search; } buf = kmalloc(sizeof(struct mystat), GFP_KERNEL); if (buf == NULL) return (-1); buf->ppid = search->p_pptr->pid; buf->state = search->state; buf->priority = search->priority; buf->policy = search->policy; buf->utime utime = search->times.tms_utime; buf->stime = search->times.tms_stime; buf->starttime = search->starttime; buf->min_flt = search->min_flt; buf->maj_flt = search->maj_flt; for (i=0; i<256; i++) if (current->files->fd_array[i]!= NULL) cnt++ buf->open_files = cnt; copy_to_user(user_buf, buf, sizeof(struct mystat)); return(0); 39

40 실습 3: 구조체를이용한인자전달 ( 계속 ) #include <stdio.h> #include <linux/unistd.h> #include "mystat.h" struct mystat *mybuf; _syscall2(int, getstat, int, taskid, struct mystat *, ret_buf); int main(int argc, int* argv[]) { int task_number; if (argc!= 2) { printf("usage : a.out pid n"); exit(1); } task_number = atoi(argv[1]); my_buf = (struct mystat *) malloc(sizeof(struct mystat)); if (my_buf == NULL) { printf("out of Memory n"); exit(1); } getstat(task_number, mybuf); printf("pid : %d n", mybuf->pid); printf("ppid : %d n", mybuf->ppid); if (mybuf->state == -1) printf("unrunnable state n"); else if (mybuf->state == 0) printf("runnable state n"); else if (mybuf->state == 1) printf("interruptable state n"); else if (mybuf->state == 2) printf("uninterruptable state n"); else if (mybuf->state == 4) printf("zombie state n"); else if (mybuf->state == 8) printf("stopped state n"); else if (mybuf->state == 16) printf("swapping state n"); else printf("unknown state n"); printf("priority : %d n", mybuf->priority); printf("scheduling Policy : %d n", mybuf->policy); printf("user CPU time : %lu ticks n", mybuf->utime); printf("system CPU time : %lu ticks n", mybuf->stime); printf("start time : %lu n", mybuf->starttime); printf("number of major faults : %lu n", mybuf->maj_flt); printf("number of minor faults : %lu n", mybuf->min_flt); printf("opened files : %lu n", mybuf->open_files); files); } return(0); 40

41 커널모듈프로그래밍 1 /* hello.c */ #include <linux/kernel.h> #include <linux/module.h> int init_module() { printk( Hello, World n ); return 0; } void cleanup_module() { printk( End, Module Kernel n ); } $make $more /proc/modules $lsmod $insmod hello.o /* -f */ $more /proc/modules / $rmmod hello.o /* Makefile */ CC=gcc MODFLAGS := -Wall DMODULE D KERNEL -DLINUX hello.o : hello.c /usr/include/linux/version.h $CC $(MODFLAGS) c hello.c W:Warning Warning D : Definition 41

42 커널모듈프로그래밍 2 #include <linux/module.h> // Needed by all modules #include <linux/kernel.h> l // Needed d for KERN_ALERT #include <linux/init.h> // Needed for the macros static int hello_2_init(void) { printk(kern_alert "Hello, world 2 n"); return 0; } static ti void hello_2_exit(void) id) { printk(kern_alert "Goodbye, world 2 n"); } module_init(hello_2_init); module_exit(hello_2_exit); /* Makefile */ CC=gcc MODFLAGS := -Wall DMODULE D KERNEL -DLINUX hello2.o : hello2.c /usr/include/linux/version.h $CC $(MODFLAGS) c hello2.c 42

43 주요커널자료구조 태스크 struct t task_struct t t /* include/linux/sched.h / d h */ 메모리 struct vm_area_struct /* include/linux/sched.h */ 페이지 /* include/asm-i386/page.h i386/ */ 파일 struct file, struct inode /* include/linux/fs.h, ext2_fs_i.h */ 파일시스템 struct super_block /* include/linux/fs.h */ 디바이스드라이버 struct device_struct /* fs/devices.c, driver/* */ IPC 메시지, 세마포어, 공유메모리 /* include/linux/ipc.h, sem.h, msg.h, shm.h h */ 소켓 /* include/linux/net.h */ 통신프로토콜 TCP/IP /* include/linux/tcp.h, ip.h */ 43

Microsoft PowerPoint - Chapter_05.pptx

Microsoft PowerPoint - Chapter_05.pptx 1 Interrupt, Trap and System call May, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj 인터럽트의분류 2 인터럽트 외부인터럽트 fault page fault, 트랩 trap int, system call, abort devide by

More information

임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 시스템호출개요 리눅스에서는사용자공간과커널공간을구분 사용자프로그램은사용자모드, 운영체제는커널모드에서수행 커널공간에대한접근은커널 ( 특권, priviledged) 모드에서가능 컴퓨팅자원 (CPU, memory, I/O 등 ) 을안전하게보호 커널수행을안전하게유지

More information

Microsoft PowerPoint - LN_8_Linux_INT_Module.ppt [호환 모드]

Microsoft PowerPoint - LN_8_Linux_INT_Module.ppt [호환 모드] 프로젝트 1 Interrupt, Module Programming 단국대학교컴퓨터학과 2009 백승재 ibanez1383@dankook.ac.kr k k http://embedded.dankook.ac.kr/~ibanez1383 강의목표 Linux 의인터럽트처리과정이해 시스템호출원리파악 모듈프로그래밍기법숙지 인터럽트의분류 3 인터럽트 외부인터럽트 fault

More information

untitled

untitled Step Motor Device Driver Embedded System Lab. II Step Motor Step Motor Step Motor source Embedded System Lab. II 2 open loop, : : Pulse, 1 Pulse,, -, 1 +5%, step Step Motor (2),, Embedded System Lab. II

More information

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

Chapter #01 Subject

Chapter #01  Subject Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned

More information

6주차.key

6주차.key 6, Process concept A program in execution Program code PCB (process control block) Program counter, registers, etc. Stack Heap Data section => global variable Process in memory Process state New Running

More information

06Àå

06Àå Chapter 5 Chapter 6 Chapter 7 chapter 6 Part 1 6.1 Part 2 Part 3 145 146 Chapter 5 Chapter 6 Chapter 7 Part 1 Part 2 Part 3 147 148 Chapter 5 Chapter 6 Chapter 7 Part 1 Part 2 Part 3 149 150 Chapter 5

More information

슬라이드 1

슬라이드 1 / 임베디드시스템개요 / 임베디드운영체제 / 디바이스드라이버 01 Linux System Architecture Application Area Application System Call Interface BSD Socket Virtual File System INET(AF_INET) Kernel Area Buffer Cache Network Subsystem

More information

망고100 보드로 놀아보자 -13

망고100 보드로 놀아보자 -13 리눅스디바이스드라이버개요 http://cafe.naver.com/embeddedcrazyboys http://www.mangoboard.com 디바이스드라이버개요 디바이스 (Device ) 네트워크어댑터, LCD 디스플레이, PCMCIA, Audio, 터미널, 키보드, 하드디스 크, 플로피디스크, 프린터등과같은주변장치들을말함 디바이스의구동에필요한프로그램, 즉디바이스드라이버가필수적으로요구

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된

More information

Microsoft PowerPoint - em8-리눅스설치.ppt

Microsoft PowerPoint - em8-리눅스설치.ppt 임베디드리눅스커널설치개요 임베디드리눅스설치 Linux Kernel* Root File System* jffs2.img 1 2 구성요소 리눅스커널 필수구성요소 하드웨어를초기화하고 kernel image를 에올려주어수행을넘겨주는역할을하는프로그램 OS Kernel OS 의핵심프로그램 Root File System Kernel 에서사용할 File System 임베디드리눅스에서는

More information

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770>

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770> i ii iii iv v vi 1 2 3 4 가상대학 시스템의 국내외 현황 조사 가상대학 플랫폼 개발 이상적인 가상대학시스템의 미래상 제안 5 웹-기반 가상대학 시스템 전통적인 교수 방법 시간/공간 제약을 극복한 학습동기 부여 교수의 일방적인 내용전달 교수와 학생간의 상호작용 동료 학생들 간의 상호작용 가상대학 운영 공지사항,강의록 자료실, 메모 질의응답,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Network Programming Jo, Heeseung Network 실습 네트워크프로그래밍 멀리떨어져있는호스트들이서로데이터를주고받을수있도록프로그램을구현하는것 파일과는달리데이터를주고받을대상이멀리떨어져있기때문에소프트웨어차원에서호스트들간에연결을해주는장치가필요 이러한기능을해주는장치로소켓이라는인터페이스를많이사용 소켓프로그래밍이란용어와네트워크프로그래밍이랑용어가같은의미로사용

More information

Microsoft PowerPoint - 06-CompSys-11-System.ppt

Microsoft PowerPoint - 06-CompSys-11-System.ppt 시스템포팅개요 부트로더 리눅스커널 커널컴파일 파일시스템 순천향대학교컴퓨터학부이상정 1 시스템포팅개요 순천향대학교컴퓨터학부이상정 2 시스템포팅순서 1. 타겟보드에부트로더를올림 2. 타겟보드에맞게작성된커널소스를컴파일 3. 컴파일된커널이미지를타겟보드에올림 4. 파일시스템을구성하여올림 순천향대학교컴퓨터학부이상정 3 시스템포팅과정 시 작 Loader확인 yes no

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 (Host) set up : Linux Backend RS-232, Ethernet, parallel(jtag) Host terminal Target terminal : monitor (Minicom) JTAG Cross compiler Boot loader Pentium Redhat 9.0 Serial port Serial cross cable Ethernet

More information

KEY 디바이스 드라이버

KEY 디바이스 드라이버 KEY 디바이스드라이버 임베디드시스템소프트웨어 I (http://et.smu.ac.kr et.smu.ac.kr) 차례 GPIO 및 Control Registers KEY 하드웨어구성 KEY Driver 프로그램 key-driver.c 시험응용프로그램 key-app.c KEY 디바이스드라이버 11-2 GPIO(General-Purpose Purpose I/O)

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-SEGMENT DEVICE CONTROL - DEVICE DRIVER Jo, Heeseung 디바이스드라이버구현 : 7-SEGMENT HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 디바이스드라이버구현 : 7-SEGMENT 6-Digit 7-Segment LED

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED Controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

Microsoft PowerPoint - 03-Development-Environment-2.ppt

Microsoft PowerPoint - 03-Development-Environment-2.ppt 개발환경 2 임베디드시스템소프트웨어 I 차례 부트로더의기능, 컴파일방법 커널의기능, 컴파일방법 파일시스템의기능, 생성방법 Host-KIT 네트워크연결방법 (Bootp, TFTP, NFS) 개발환경 2 2 부트로더의기능 하드웨어초기화 CPU clock, Memory Timing, Interrupt, UART, GPIO 등을초기화 커널로드 커널이미지를 flash

More information

교육지원 IT시스템 선진화

교육지원 IT시스템 선진화 Module 16: ioctl 을활용한 LED 제어디바이스드라이버 ESP30076 임베디드시스템프로그래밍 (Embedded System Programming) 조윤석 전산전자공학부 주차별목표 ioctl() 을활용법배우기 커널타이머와 ioctl 을활용하여 LED 제어용디바이스드라이브작성하기 2 IOCTL 을이용한드라이버제어 ioctl() 함수활용 어떤경우에는읽는용도로만쓰고,

More information

Abstract View of System Components

Abstract View of System Components Operating System 4 주차 - System Call Implementation - Real-Time Computing and Communications Lab. Hanyang University jtlim@rtcc.hanyang.ac.kr yschoi@rtcc.hanyang.ac.kr shpark@rtcc.hanyang.ac.kr Contents

More information

슬라이드 1

슬라이드 1 / 유닉스시스템개요 / 파일 / 프로세스 01 File Descriptor file file descriptor file type unix 에서의파일은단지바이트들의나열임 operating system 은파일에어떤포맷도부과하지않음 파일의내용은바이트단위로주소를줄수있음 file descriptor 는 0 이나양수임 file 은 open 이나 creat 로 file

More information

Microsoft PowerPoint APUE(Intro).ppt

Microsoft PowerPoint APUE(Intro).ppt 컴퓨터특강 () [Ch. 1 & Ch. 2] 2006 년봄학기 문양세강원대학교컴퓨터과학과 APUE 강의목적 UNIX 시스템프로그래밍 file, process, signal, network programming UNIX 시스템의체계적이해 시스템프로그래밍능력향상 Page 2 1 APUE 강의동기 UNIX 는인기있는운영체제 서버시스템 ( 웹서버, 데이터베이스서버

More information

chap7.key

chap7.key 1 7 C 2 7.1 C (System Calls) Unix UNIX man Section 2 C. C (Library Functions) C 1975 Dennis Ritchie ANSI C Standard Library 3 (system call). 4 C?... 5 C (text file), C. (binary file). 6 C 1. : fopen( )

More information

Embeddedsystem(8).PDF

Embeddedsystem(8).PDF insmod init_module() register_blkdev() blk_init_queue() blk_dev[] request() default queue blkdevs[] block_device_ops rmmod cleanup_module() unregister_blkdev() blk_cleanup_queue() static struct { const

More information

PCServerMgmt7

PCServerMgmt7 Web Windows NT/2000 Server DP&NM Lab 1 Contents 2 Windows NT Service Provider Management Application Web UI 3 . PC,, Client/Server Network 4 (1),,, PC Mainframe PC Backbone Server TCP/IP DCS PLC Network

More information

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode] Unix Process Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 유닉스기반다중서버구현방법 클라이언트들이동시에접속할수있는서버 서비스를동시에처리할수있는서버프로세스생성을통한멀티태스킹 (Multitasking) 서버의구현 select 함수에의한멀티플렉싱 (Multiplexing)

More information

Microsoft PowerPoint - lab14.pptx

Microsoft PowerPoint - lab14.pptx Mobile & Embedded System Lab. Dept. of Computer Engineering Kyung Hee Univ. Keypad Device Control in Embedded Linux HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착되어있다. 2 Keypad Device Driver

More information

Chapter. 5 Embedded System I Bootloader, Kernel, Ramdisk Professor. Jaeheung, Lee

Chapter. 5 Embedded System I Bootloader, Kernel, Ramdisk Professor. Jaeheung, Lee Chapter. 5 Bootloader, Kernel, Ramdisk Professor. Jaeheung, Lee 목차 Bootloader Kernel File System 1 Bootloader Bootloader 란? 리눅스커널부팅이전에미리실행되면서커널이올바르게부팅되기위해필요한모든관련작업을마무리하고최종적으로리눅스커널을부팅시키기위한목적으로짜여진프로그램 Bootloader

More information

좀비프로세스 2

좀비프로세스 2 Signal & Inter-Process Communication Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 좀비프로세스 2 좀비프로세스 (zombie process) 좀비프로세스란프로세스종료후메모리상에서사라지지않는프로세스 좀비프로세스의생성이유. 자식프로세스는부모프로세스에게실행결과에대한값을반환해야한다.

More information

/chroot/lib/ /chroot/etc/

/chroot/lib/ /chroot/etc/ 구축 환경 VirtualBox - Fedora 15 (kernel : 2.6.40.4-5.fc15.i686.PAE) 작동 원리 chroot유저 ssh 접속 -> 접속유저의 홈디렉토리 밑.ssh의 rc 파일 실행 -> daemonstart실행 -> daemon 작동 -> 접속 유저만의 Jail 디렉토리 생성 -> 접속 유저의.bashrc 의 chroot 명령어

More information

Adding a New Dev file

Adding a New Dev file Adding a New Dev file - 김성영, 이재혁, 김남현 - 발표자 : 김남현 목차 01 Progress 02 Device file 03 How create dev file 04 Example Progress 4 월 1 일 프로젝트방향설정 4 월 8 일 device file 추가방법조사 mem.c 파일분석 4 월 10 일 알고리즘제시필요한함수분석

More information

리눅스커널-06

리눅스커널-06 C h a p t e r 06 CPU CPU CPU 1MB 600KB 500KB 4GB 512MB 1GB 230 231 Virtual Memory Physical Memory Virtual address Physical address 0 CPU 4GB 3GB 1GB 61 init proc1maps cat 0x08048000 0xC0000000 0x08048000

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Text-LCD Device Control - Device driver Jo, Heeseung M3 모듈에장착되어있는 Tedxt LCD 장치를제어하는 App 을개발 TextLCD 는영문자와숫자일본어, 특수문자를표현하는데사용되는디바이스 HBE-SM5-S4210 의 TextLCD 는 16 문자 *2 라인을 Display 할수있으며, 이 TextLCD 를제어하기위하여

More information

강의10

강의10 Computer Programming gdb and awk 12 th Lecture 김현철컴퓨터공학부서울대학교 순서 C Compiler and Linker 보충 Static vs Shared Libraries ( 계속 ) gdb awk Q&A Shared vs Static Libraries ( 계속 ) Advantage of Using Libraries Reduced

More information

슬라이드 제목 없음

슬라이드 제목 없음 < > Target cross compiler Target code Target Software Development Kit (SDK) T-Appl T-Appl T-VM Cross downloader Cross debugger Case 1) Serial line Case 2) LAN line LAN line T-OS Target debugger Host System

More information

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D> 리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1

More information

vi 사용법

vi 사용법 네트워크프로그래밍 6 장과제샘플코드 - 1:1 채팅 (udp 버전 ) 과제 서버에서먼저 bind 하고그포트를다른사람에게알려줄것 클라이언트에서알려준포트로접속 서로간에키보드입력을받아상대방에게메시지전송 2 Makefile 1 SRC_DIR =../../common 2 COM_OBJS = $(SRC_DIR)/addressUtility.o $(SRC_DIR)/dieWithMessage.o

More information

2009년 상반기 사업계획

2009년 상반기 사업계획 소켓프로그래밍활용 IT CookBook, 유닉스시스템프로그래밍 학습목표 소켓인터페이스를활용한다양한프로그램을작성할수있다. 2/23 목차 TCP 기반프로그래밍 반복서버 동시동작서버 동시동작서버-exec함수사용하기 동시동작서버-명령행인자로소켓기술자전달하기 UDP 프로그래밍 3/23 TCP 기반프로그래밍 반복서버 데몬프로세스가직접모든클라이언트의요청을차례로처리 동시동작서버

More information

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서 커알못의 커널 탐방기 2015.12 이 세상의 모든 커알못을 위해서 개정 이력 버전/릴리스 0.1 작성일자 2015년 11월 30일 개요 최초 작성 0.2 2015년 12월 1일 보고서 구성 순서 변경 0.3 2015년 12월 3일 오탈자 수정 및 글자 교정 1.0 2015년 12월 7일 내용 추가 1.1 2015년 12월 10일 POC 코드 삽입 및 코드

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

슬라이드 1

슬라이드 1 프로세스 (Process) (1) Chapter #5 Process 정의 Process 구조 Process Context Process Scheduling 강의목차 Unix System Programming 2 Program( 프로그램 ) Process 정의 (1) 기계어명령어와데이터를모아놓은실행파일 C 언어등프로그램언어로작성된소스파일을컴파일링하여생성 COFF(Common

More information

untitled

untitled 시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000

More information

PRO1_04E [읽기 전용]

PRO1_04E [읽기 전용] Siemens AG 1999 All rights reserved File: PRO1_04E1 Information and S7-300 2 S7-400 3 EPROM / 4 5 6 HW Config 7 8 9 CPU 10 CPU : 11 CPU : 12 CPU : 13 CPU : / 14 CPU : 15 CPU : / 16 HW 17 HW PG 18 SIMATIC

More information

°ø°³¼ÒÇÁÆ®-8È£

°ø°³¼ÒÇÁÆ®-8È£ 2007. 08 No.8 IT World 운영체제 미들웨어 데이터베이스 웹프로그래밍까지 표준화된공개SW 컴퓨팅환경이지원합니다. 글로벌표준의공개SW 환경은 핵심애플리케이션뿐만아니라다양한플랫폼에서도활용됩니다. 2 2007. 08No.8 Contents Special Editorial 04 Best Practice 08 12 16 20 24 26 Insight 32

More information

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074> Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법

More information

10.

10. 10. 10.1 10.2 Library Routine: void perror (char* str) perror( ) str Error 0 10.3 10.3 int fd; /* */ fd = open (filename, ) /*, */ if (fd = = -1) { /* */ } fcnt1 (fd, ); /* */ read (fd, ); /* */ write

More information

Sena Technologies, Inc. HelloDevice Super 1.1.0

Sena Technologies, Inc. HelloDevice Super 1.1.0 HelloDevice Super 110 Copyright 1998-2005, All rights reserved HelloDevice 210 ()137-130 Tel: (02) 573-5422 Fax: (02) 573-7710 E-Mail: support@senacom Website: http://wwwsenacom Revision history Revision

More information

본 강의에 들어가기 전

본 강의에 들어가기 전 C 기초특강 종합과제 과제내용 구조체를이용하여교과목이름과코드를파일로부터입력받아관리 구조체를이용하여학생들의이름, 학번과이수한교과목의코드와점수를파일로부터입력 학생개인별총점, 평균계산 교과목별이수학생수, 총점및평균을계산 결과를파일에저장하는프로그램을작성 2 Makefile OBJS = score_main.o score_input.o score_calc.o score_print.o

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Linux Kernel and Device Driver Jo, Heeseung 커널과의관계 시스템이지원하는하드웨어를응용프로그램에서사용할수있도록커널에서제공하는라이브러리 응용프로그램이하드웨어를제어하려면커널에자원을요청 - 응용프로그램에서는 C 라이브러리같은함수를호출 - 라이브러리내부에서는커널에게시스템콜을호출 - 커널로제어가넘어가게되면 ( 커널모드 ) 를통해서하드웨어를제어

More information

PowerPoint Presentation

PowerPoint Presentation GPU-based Keylogger Jihwan yoon 131ackcon@gmail.com Index Who am I Keylogger, GPU GPU based Keylogging - Locating the keyboard buffer - Capturing KEYSTROKES Demo About me Who am I 윤지환 CERT-IS reader BOB

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

Microsoft PowerPoint - 10-EmbedSW-11-모듈

Microsoft PowerPoint - 10-EmbedSW-11-모듈 11. 개요 proc 파일시스템 순천향대학교컴퓨터학부이상정 1 개요 순천향대학교컴퓨터학부이상정 2 개요 커널프래그래밍 커널의일부변경시커널전체를다시컴파일해야하는번거로움 해당모듈만컴파일하고필요할때만동적으로링크시켜커널의일부로사용할수있어효율적 자주사용하지않는커널기능은메모리에상주시키지않아도됨 확장성과재사용성을높일수있음. 순천향대학교컴퓨터학부이상정 3 모듈 (module)

More information

Microsoft PowerPoint - e9.pptx

Microsoft PowerPoint - e9.pptx Kernel Programming 이란? 커널모드에서수행하는프로그램을작성하는것 임베디드리눅스커널프로그래밍 커널프로그래밍종류 Linux kernel core 기능추가 Linux kernel 알고리즘개선 Linux kernel 모듈프로그래밍 커널컴파일필요없음 2 Kernel Program vs. Application Program (1) Kernel Program

More information

제1장 Unix란 무엇인가?

제1장  Unix란 무엇인가? 1 12 장파이프 2 12.1 파이프 파이프원리 $ who sort 파이프 3 물을보내는수도파이프와비슷 한프로세스는쓰기용파일디스크립터를이용하여파이프에데이터를보내고 ( 쓰고 ) 다른프로세스는읽기용파일디스크립터를이용하여그파이프에서데이터를받는다 ( 읽는다 ). 한방향 (one way) 통신 파이프생성 파이프는두개의파일디스크립터를갖는다. 하나는쓰기용이고다른하나는읽기용이다.

More information

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - [2009] 02.pptx 원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include

More information

ABC 11장

ABC 11장 12 장고급응용 0 수행중인프로그램 프로세스 모든프로세스는유일한프로세스식별번호 (PID) 를가짐 유닉스에서는 ps 명령을사용하여프로세스목록을볼수있음 12-1 프로세스 $ ps -aux USER PID %CPU %MEM SZ RSS TT STAT START TIME COMMAND blufox 17725 34.0 1.6 146 105 i2 R 15:13 0:00

More information

LXR 설치 및 사용법.doc

LXR 설치 및 사용법.doc Installation of LXR (Linux Cross-Reference) for Source Code Reference Code Reference LXR : 2002512( ), : 1/1 1 3 2 LXR 3 21 LXR 3 22 LXR 221 LXR 3 222 LXR 3 3 23 LXR lxrconf 4 24 241 httpdconf 6 242 htaccess

More information

Adobe Flash 취약점 분석 (CVE-2012-0754)

Adobe Flash 취약점 분석 (CVE-2012-0754) 기술문서 14. 08. 13. 작성 GNU C library dynamic linker $ORIGIN expansion Vulnerability Author : E-Mail : 윤지환 131ackcon@gmail.com Abstract 2010 년 Tavis Ormandy 에 의해 발견된 취약점으로써 정확한 명칭은 GNU C library dynamic linker

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 얇지만얇지않은 TCP/IP 소켓프로그래밍 C 2 판 4 장 UDP 소켓 제 4 장 UDP 소켓 4.1 UDP 클라이언트 4.2 UDP 서버 4.3 UDP 소켓을이용한데이터송싞및수싞 4.4 UDP 소켓의연결 UDP 소켓의특징 UDP 소켓의특성 싞뢰할수없는데이터젂송방식 목적지에정확하게젂송된다는보장이없음. 별도의처리필요 비연결지향적, 순서바뀌는것이가능 흐름제어 (flow

More information

System Programming Lab

System Programming Lab System Programming Lab Week 4: Shell Schedule for your own shell 1 st shell 기본기능 fork / exec Background Processing/ Sequential Execution ls, find, grep 2 nd Environment variables/ Shell variables built-in

More information

C 프로그래밍 언어 입문 C 프로그래밍 언어 입문 김명호저 숭실대학교 출판국 머리말..... C, C++, Java, Fortran, Python, Ruby,.. C. C 1972. 40 C.. C. 1999 C99. C99. C. C. C., kmh ssu.ac.kr.. ,. 2013 12 Contents 1장 프로그래밍 시작 1.1 C 10 1.2 12

More information

Abstract View of System Components

Abstract View of System Components Operating System 3 주차 - About Linux - Real-Time Computing and Communications Lab. Hanyang University jtlim@rtcc.hanyang.ac.kr yschoi@rtcc.hanyang.ac.kr shpark@rtcc.hanyang.ac.kr Contents Linux Shell Command

More information

C 언어 프로그래밊 과제 풀이

C 언어 프로그래밊 과제 풀이 과제풀이 (1) 홀수 / 짝수판정 (1) /* 20094123 홍길동 20100324 */ /* even_or_odd.c */ /* 정수를입력받아홀수인지짝수인지판정하는프로그램 */ int number; printf(" 정수를입력하시오 => "); scanf("%d", &number); 확인 주석문 가필요한이유 printf 와 scanf 쌍

More information

untitled

untitled Embedded System Lab. II Embedded System Lab. II 2 RTOS Hard Real-Time vs Soft Real-Time RTOS Real-Time, Real-Time RTOS General purpose system OS H/W RTOS H/W task Hard Real-Time Real-Time System, Hard

More information

GNU/Linux 1, GNU/Linux MS-DOS LOADLIN DOS-MBR LILO DOS-MBR LILO... 6

GNU/Linux 1, GNU/Linux MS-DOS LOADLIN DOS-MBR LILO DOS-MBR LILO... 6 GNU/ 1, qkim@pecetrirekr GNU/ 1 1 2 2 3 4 31 MS-DOS 5 32 LOADLIN 5 33 DOS- LILO 6 34 DOS- 6 35 LILO 6 4 7 41 BIOS 7 42 8 43 8 44 8 45 9 46 9 47 2 9 5 X86 GNU/LINUX 10 1 GNU/, GNU/ 2, 3, 1 : V 11, 2001

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 UNIX 및실습 8 장. 프로세스와사용자 명령익히기 1 학습목표 유닉스에서프로세스가무엇인지그개념을이해한다. 프로세스와관련된유닉스명령의사용방법을익힌다. 포그라운드처리와백그라운드처리의차이를이해한다. 사용자정보를보는명령의사용방법을익힌다. 2 01. 프로세스의개념과종류 프로세스 (process) 현재시스템에서실행중인프로그램 프로세스는고유번호를가진다. Process

More information

<4D F736F F F696E74202D205BBAB0C3B75D20B8AEB4AABDBA20B5F0B9D9C0CCBDBA20B5E5B6F3C0CCB9F620B8F0B5A82E >

<4D F736F F F696E74202D205BBAB0C3B75D20B8AEB4AABDBA20B5F0B9D9C0CCBDBA20B5E5B6F3C0CCB9F620B8F0B5A82E > 안드로이드환경에서의 리눅스디바이스드라이버 문자디바이스드라이버설명 Table of contents 디바이스드라이버구조 시스템구조 모듈의기본골격 드라이버 IO 제어 안드로이드환경에서의 한백전자교육사업부 리눅스디바이스드라이버 시스템구조 쉘 응용프로그램 표준라이브러리 시스템콜 가상파일시스템 (VFS) 버퍼캐시 네트워크시스템 문자디바이스드라이버 블럭디바이스드라이버 네트워크디바이스드라이버

More information

BMP 파일 처리

BMP 파일 처리 BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)

More information

11장 포인터

11장 포인터 Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함

More information

지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR

지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR Configure Kernel Build Environment And kernel & root file system Build 2018-09-27 VLSI Design Lab 1 지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함.

More information

1217 WebTrafMon II

1217 WebTrafMon II (1/28) (2/28) (10 Mbps ) Video, Audio. (3/28) 10 ~ 15 ( : telnet, ftp ),, (4/28) UDP/TCP (5/28) centralized environment packet header information analysis network traffic data, capture presentation network

More information

- 코드로읽는리눅스디바이스드라이버 강남용

- 코드로읽는리눅스디바이스드라이버 강남용 - 코드로읽는리눅스디바이스드라이버 - 2011.1.3 강남용 (nykang@ssu.ac.kr) 커널스레드 스레드란? 스레드종류 도우미인터페이스 연결리스트 해시리스트 작업큐 통지연쇄 완료인터페이스 kthread 도우미 오류처리지원 ( 원시코드살펴보기 ) 2 스레드란? - 하나의프로그램내에서실행되는함수를의미 - 일반적인프로세서의경우는한순간에하나의함수만실행되지만,

More information

Microsoft PowerPoint - o8.pptx

Microsoft PowerPoint - o8.pptx 메모리보호 (Memory Protection) 메모리보호를위해 page table entry에 protection bit와 valid bit 추가 Protection bits read-write / read-only / executable-only 정의 page 단위의 memory protection 제공 Valid bit (or valid-invalid bit)

More information

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode] TCP Server/Client Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 TCP Server Program Procedure TCP Server socket() bind() 소켓생성 소켓번호와소켓주소의결합 listen() accept() read() 서비스처리, write()

More information

Chap06(Interprocess Communication).PDF

Chap06(Interprocess Communication).PDF Interprocess Communication 2002 2 Hyun-Ju Park Introduction (interprocess communication; IPC) IPC data transfer sharing data event notification resource sharing process control Interprocess Communication

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

교육지원 IT시스템 선진화

교육지원 IT시스템 선진화 Module 11: 가상디바이스드라이버작성 ESP30076 임베디드시스템프로그래밍 (Embedded System Programming) 조윤석 전산전자공학부 주차별목표 디바이스드라이버의실행과정이해하기 크로스컴파일러를이용하여가상의디바이스드라이버생성하기 Kbuild 에대해이해하기 2 file_operations 구조체 struct file_operations {

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F > 10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절

More information

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

untitled

untitled Block Device Driver in Linux Embedded System Lab. II Embedded System Lab. II 2 Define objective of applications using device Study Hardware manual (Registers) (vector number) Understand interface to related

More information

Microsoft Word doc

Microsoft Word doc 2. 디바이스드라이버 [ DIO ] 2.1. 개요 타겟보드의데이터버스를이용하여 LED 및스위치동작을제어하는방법을설명하겠다. 2.2. 회로도 2.3. 준비조건 ARM 용크로스컴파일러가설치되어있어야한다. 하드웨어적인점검을하여정상적인동작을한다고가정한다. NFS(Network File System) 를사용할경우에는 NFS가마운트되어있어야한다. 여기서는소스전문을포함하지않았다.

More information

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 - (Asynchronous Mode) - - - ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 - UART (Univ ers al As y nchronous Receiver / T rans mitter) 8250A 8250A { COM1(3F8H). - Line Control Register

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 BOOTLOADER Jo, Heeseung 부트로더컴파일 부트로더소스복사및압축해제 부트로더소스는웹페이지에서다운로드 /working 디렉터리로이동한후, wget으로다운로드 이후작업은모두 /working 디렉터리에서진행 root@ubuntu:# cp /media/sm5-linux-111031/source/platform/uboot-s4210.tar.bz2 /working

More information

제9장 프로세스 제어

제9장 프로세스 제어 제 9 장프로세스제어 리눅스시스템프로그래밍 청주대학교전자공학과 한철수 제 9 장 목차 프로세스생성 프로그램실행 입출력재지정 프로세스그룹 시스템부팅 2 9.1 절 프로세스생성 fork() 시스템호출 새로운프로그램을실행하기위해서는먼저새로운프로세스를생성해야하는데, fork() 시스템호출이새로운프로세스를생성하는유일한방법임. 함수프로토타입 pid_t fork(void);

More information

Microsoft Word - Network Programming_NewVersion_01_.docx

Microsoft Word - Network Programming_NewVersion_01_.docx 10. Unix Domain Socket 105/113 10. Unix Domain Socket 본절에서는 Unix Domain Socket(UDS) 에대한개념과이에대한실습을수행하고, 이와동시에비신뢰적인통신시스템의문제점에대해서분석하도록한다. 이번실습의목표는다음과같다. 1. Unix Domain Socket의사용법을익히고, IPC에대해서실습 2. TCP/IP의응용계층과전달계층의동작을구현및실습

More information

Mango-AM335x LCD Type 커널 Module Parameter에서 변경하기

Mango-AM335x LCD Type 커널 Module Parameter에서 변경하기 Mango-AM335x LCD Type 커널 Module Parameter 에서 변경하기 http://www.mangoboard.com/ http://cafe.naver.com/embeddedcrazyboys Crazy Embedded Laboratory www.mangoboard.com cafe.naver.com/embeddedcrazyboys CRZ Technology

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 임베디드리눅스개발환경실습 Jo, Heeseung 타겟보드모니터링동작실습 호스트 PC 에서시리얼포트를통해서타겟보드를모니터링 타겟보드가프로그램을실행하는동안일어나는일을시리얼포트로메시지를출력하면호스트 PC 에서는시리얼포트를통해메시지를수신하여이를화면에출력 minicom 프로그램사용 - minicom 이정상적으로설정이되고, 타겟보드에최소한부트로더가올라간상태라면 minicom

More information

리눅스 프로세스 관리

리눅스 프로세스 관리 프로세스 (Process) Process 프로그램이나명령어를실행하면메모리에적재되어실제로실행되고있는상태를의미 이러한프로세스들은프로세스가시작하면서할당받는프로세스식별번호인 PID(Process ID), 해당프로세스를실행한부모프로세스를나타내는 PPID(Parent Process ID), UID 와 GID 정보를통해해당프로세스가어느사용자에속해있는지, 프로세스가파일에대해갖는권한및프로세스가실행된터미널,

More information

13주-14주proc.PDF

13주-14주proc.PDF 12 : Pro*C/C++ 1 2 Embeded SQL 3 PRO *C 31 C/C++ PRO *C NOT! NOT AND && AND OR OR EQUAL == = SQL,,, Embeded SQL SQL 32 Pro*C C SQL Pro*C C, C Pro*C, C C 321, C char : char[n] : n int, short, long : float

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Sensor Device Jo, Heeseung Sensor 실습 HBE-SM5-S4210 에는근접 / 가속도 / 컴파스센서가장착 각센서들을사용하기위한디바이스드라이버와어플리케이션을작성 2 근접 (Proximity) 센서 HBE-SM5-S4210 Camera Module 근접센서디바이스 근접센서는사물이다른사물에접촉되기이전에가까이접근하였는지를검출할목적으로사용 일반적으로생활에서자동문이나엘리베이터,

More information

1장. 유닉스 시스템 프로그래밍 개요

1장.  유닉스 시스템 프로그래밍 개요 Unix 프로그래밍및실습 7 장. 시그널 - 과제보충 응용과제 1 부모프로세스는반복해서메뉴를출력하고사용자로부터주문을받아자식프로세스에게주문내용을알린다. (SIGUSR1) ( 일단주문을받으면음식이완료되기전까지 SIGUSR1 을제외한다른시그널은모두무시 ) timer 자식프로세스는주문을받으면조리를시작한다. ( 일단조리를시작하면음식이완성되기전까지 SIGALARM 을제외한다른시그널은모두무시

More information

제1장 Unix란 무엇인가?

제1장  Unix란 무엇인가? 4 장파일 컴퓨터과학과박환수 1 2 4.1 시스템호출 컴퓨터시스템구조 유닉스커널 (kernel) 하드웨어를운영관리하여다음과같은서비스를제공 파일관리 (File management) 프로세스관리 (Process management) 메모리관리 (Memory management) 통신관리 (Communication management) 주변장치관리 (Device

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 DEVELOPMENT ENVIRONMENT 2 MAKE Jo, Heeseung MAKE Definition make is utility to maintain groups of programs Object If some file is modified, make detects it and update files related with modified one 2

More information

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D> 뻔뻔한 AVR 프로그래밍 The Last(8 th ) Lecture 유명환 ( yoo@netplug.co.kr) INDEX 1 I 2 C 통신이야기 2 ATmega128 TWI(I 2 C) 구조분석 4 ATmega128 TWI(I 2 C) 실습 : AT24C16 1 I 2 C 통신이야기 I 2 C Inter IC Bus 어떤 IC들간에도공통적으로통할수있는 ex)

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 1 목포해양대해양컴퓨터공학과 UDP 소켓 네트워크프로그램설계 4 장 2 목포해양대해양컴퓨터공학과 목차 제 4장 UDP 소켓 4.1 UDP 클라이언트 4.2 UDP 서버 4.3 UDP 소켓을이용한데이터송신및수신 4.4 UDP 소켓의연결 3 목포해양대해양컴퓨터공학과 UDP 소켓의특징 UDP 소켓의특성 신뢰할수없는데이터전송방식 목적지에정확하게전송된다는보장이없음.

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

Mango220 Android How to compile and Transfer image to Target

Mango220 Android How to compile and Transfer image to Target Mango220 Android How to compile and Transfer image to Target http://www.mangoboard.com/ http://cafe.naver.com/embeddedcrazyboys Crazy Embedded Laboratory www.mangoboard.com cafe.naver.com/embeddedcrazyboys

More information