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

Size: px
Start display at page:

Download "Microsoft PowerPoint - LN_5_Linux_Task.ppt [호환 모드]"

Transcription

1 프로젝트 1 Linux Task Management 단국대학교컴퓨터학과 2009 백승재 ibanez1383@dankook.ac.kr k k

2 Linux 의 task 개념이해 강의목표 Task 자료구조파악 Linux 의 task 관리방법파악

3 Task, Process and Thread 3 Process 실행상태에있는프로그램의 instance... 자원소유권의단위 Thread 디스패칭의단위, 실행흐름... 수행의단위 In Linux source code Process is Task and Thread is also Task

4 Linux Task Model 4 User Level Internal structure Process A Process B Process C : Process : Thread : task_struct struct 구조체 : Process Discriptor(8KB) ( 프로세스디스크립터 + 커널모드스택 ) : 커널모드스택 Kernel Level task_structstruct task_structstruct task_structstruct task_struct task_struct task_struct task_struct Kernel Thread A task_struct Kernel Thread B task_struct Scheduler

5 Flow controls Task 관련함수흐름 5 User App Library System call fork() fork() clone() sys_clone() vfork() vfork() vfork() sys_vfork() clone() clone() clone() sys_fork() pthread_create() pthread_create() clone() User Level Kernel Level do_fork() Using strace, ltrace, ctags and cscope kernel_thread()

6 Thread example(1/5) 6 _syscall0(pid_t, gettid); int main(void) { int pid; printf("before fork n n"); } if((pid = fork()) < 0){ printf("fork error n"); exit(-2); }else if (pid == 0){ printf("child, tgid=(%d), pid=(%d) n", getpid(), gettid()); }else{ } exit(0); i(0) printf("parent, tgid=(%d), pid=(%d) n", getpid(), gettid()); sleep(2);

7 _syscall0(pid_t, gettid); Thread example(2/5) 7 void *t_function(void *data) { int id; int i=0; pthread_t t_id; id = *((int *)data); } int main() { printf("child, tgid=(%d), pid=(%d), pthread_self()=(%d) n", (%d) getpid(), gettid(), pthread_self()); sleep(2); return (void *)(id*id); pthread_t p_thread[2]; int thr_id; int status; int a = 1; int b = 2; printf("before pthread_create() n"); if((thr_id = pthread_create(&p_thread[0], NULL, t_function, (void*)&a)) < 0){ perror("thread create error : "); exit(1); } if((thr_id = pthread_create(&p_thread[1], NULL, t_function, (void*)&b)) < 0){ perror("thread create error : "); exit(2); } pthread_join(p_thread[0], (void **)&status); printf("thread join : %d n", status); pthread_join(p_thread[1], (void **)&status); printf("thread thread join : %d n", status); } printf("parent, tgid=(%d), pid=(%d) n", getpid(), gettid()); return 0;

8 Thread example(3/5) 8

9 Thread example(4/5) 9 _syscall0(pid_t, gettid); int main(void) { pid_t pid; printf("before vfork n"); if((pid = vfork()) < 0){ printf("fork error n"); exit(-2); }else if (pid == 0){ printf("child child, tgid=(%d), pid=(%d) n", getpid(), gettid()); _exit(0); }else{ printf("parent, tgid=(%d), pid=(%d) n", getpid(), gettid()); } } exit(0);

10 Thread example(5/5) 10 _syscall0(pid_t, gettid); int sub_a(void *); int main(void) { int child_a_stack[4096], child_b_stack[4096]; printf("main:before clone n"); printf("parent, t tgid=(%d), pid=(%d) n", getpid(), gettid()); CLONE_THREAD option 추가시같은 tgid를가짐 clone (sub_a, (void *)(child_a_stack+4095), CLONE_VM, NULL); clone (sub_a, (void *)(child_b_stack+4095), CLONE_VM, NULL); } exit(0); int sub_a(void *arg) { printf("child, tgid=(%d), pid=(%d) n", getpid(), gettid()); exit(1); }

11 Task in Linux 11 POSIX interface 기반 구현은버전에따라약간씩다름 Linux 1.X User / kernel mode 지원 Thread 생성시 thread의 attribute를지정해줌으로써 thread mode를설정할수있음 Linux 2.X Kernel mode 만지원 (sys_clone) LinuxThreads라고불림 각 thread마다 task 자료구조할당 (MACH의 thread와는다름 ) POSIX incompatible 문제 (pid/tid, signal handling, ) Linux 2.6 NPTL (Native POSIX Thread Library)

12 Task in Linux 12 LinuxThreads vs NPTL

13 Task, Process and Thread 13 Task 는 사용자의요청을대리하며시스템자원을두고서로경쟁한다 자신의메모리공간 ( 코드, 변수, 스택 ) 과하드웨어레지스터를갖는다 태스크계층구조를갖는다 상태와전이를갖는다. /* test.c */ int glob = 6; char buf[] = a write to stdout n ; int main(void) { int var; pid_t pid; var = 88; write(stdout_fileno, buf, sizeof(buf)-1); printf( before fork n ); if ((pid = fork()) == 0) { /* child */ glob++; var++; } else sleep(2); /* parent */ printf( pid = %d, glob = %d, var = %d n, getpid(), glob, var); exit (0); } (Source : Adv. programming in the UNIX Env., pgm 8.1)

14 Process State Diagram(1/2) 14 New Exit Admit dispatch Release Ready Running Event Occurs Time-Out Event Wait Blocked Five-State Process Model (Source : OS(stallings))

15 Process State Diagram(2/2) 15 fork initial (idle) running exit zombie wait fork switch sleep, lock ready wakeup, unlock sleep swap swap suspended d ready suspended d sleep (Source : UNIX Internals)

16 Task State Diagram of LINUX(2.4) 16 create wait signal TASK_STOPPED signal TASK_ZOMBIE schedule exit TASK _ RUNNING (ready) TASK_RUNNING (running) preempt Event Occurs Event Wait TASK_INTERRUPTIBLE TASK_UNINTERRUPTIBLE

17 Task State Diagram of LINUX(2.6) 17 create TASK_STOPPED signal TASK_TRACED signal EXIT_ZOMBIE wait schedule exit EXIT_DEAD TASK _ RUNNING (ready) TASK_RUNNING (running) preempt Event Occurs Event Wait TASK_INTERRUPTIBLE TASK_UNINTERRUPTIBLE

18 문맥 (Context) : Context 커널이관리하는태스크의자원과수행환경집합 3 부분으로구성 : 시스템문맥 (system context), 메모리문맥 (memory context), 하드웨어문맥 (hardware context) system context task_structstruct segment table page table memory 18 file table fd thread structure eip eflags sp eax cs (TSS) hardware context swap or a.out disk memory context

19 System Context 19 태스크를관리하는정보집합 태스크정보 : pid, uid, euid, suid, 태스크상태 : 실행상태, READY 상태, 수면상태, 태스크의가족관계 : p_pptr, p_cptr, next_task, next_run 스케줄링정보 : policy, priority, counter, rt_priority, need_resched 태스크의메모리정보 : 세그먼트, 페이지 태스크가접근한파일정보 : file descriptor 시그널정보 쓰레드정보 그외 : 수행시간정보, 수행파일이름, 등등 (kernel dependent)

20 Task 와 file 20 파일관리자료구조 : fd, inode include/linux/sched.h task_struct... fs_struct files_struct... struct tfs_struct t{ atomic_t count; int umask; struct dentry *root, *pwd; } include/linux/dcache.h include/linux/sched.h struct files_struct { atomic_t count; int max_fds; struct file **fd; fd_set close_on_exec; fd_set open_fds; } include/linux/fs.h struct file { struct file *f_next, **f_pprev; struct dentry f_dentry;; struct file_operations *f_op; mode_t f_mode; loff_t f_pos; unsigned int f_count, f_flags;. struct dentry { int d_count, d_flags; struct inode *d_inode; struct dentry *d_parent;. unsigned char d_iname[] } include/linux/fs.h } struct inode {. }

21 Task 와 signal 21 시그널처리자료구조 task_structstruct. sig blocked signal sigpending. signal_struct count action[_nsig] siglock sigaction sa_handler sa_flags sa_restorer sa_mask sigset_t /* kernel/signal.c */ sys_signal(sig, handler) do_sigaction(sig, new_sa, old_sa) sigset _ t /* kernel/signal.c */ sys_kill(pid,sig) kill_proc_info(sig, info, pid) send_sig_info(sig, info, *t) sigaddset(t->signal, sig); t->sigpending = 1;

22 Task 연결구조 22 태스크연결구조 init_task task_struct task_struct task_struct task_struct next_task next_task next_task next_task... prev_task prev_task prev_task prev_task next_run prev_run next_run prev_run next_run prev_run run_queue where is run_queue? prev_task? next_task? 태스크가족관계 children.next task_structstruct parent children.prev parent, sibling.prev parent, sibling.next parent sibling.next sibling.next younger child child older child task_struct t t sibling.prev task_struct t t sibling.prev task_struct t t

23 Task 계층구조확인 (1/2) 23

24 Task 계층구조확인 (2/2) 24

25 Memory Context (1/5) 25 fork internal : compile results gcc test.c 0xffffffff 0xbfffffff kernel stack header text data bss stack movl %eax, [glob] addl %eax, 1 movl [glob], %eax... glob, buf var, pid 0x0 data text user s perspective (virtual memory) a.out : (ELF format) /*include/linux/elf.h /li / lf */

26 Memory Context (2/5) 26 fork internal : after loading (after run a.out) & before fork segment table memory task_struct pid = 11 (vm_area_struct) text var, pid stack data glob, buf In this figure, we assume that there is no paging mechanism.

27 Memory Context (3/5) 27 fork internal : after fork memory glob, buf task_struct pid = 11 segment data text var, pid stack task_struct pid = 12 segment data glob, buf var, pid stack address space : basic protection ti barrier

28 Memory Context (4/5) 28 fork internal : with COW (Copy on Write) mechanism after fork with COW after glob++ operation task_struct segment task_struct segment data pid = 11 text pid = 11 text stack stack task_struct segment task_struct segment pid = 12 data pid = 12 data memory memory

29 Memory Context (5/5) 29 새로운프로그램수행 : execve() internal memory task_struct segment data pid = 11 text stack text data a.out header textt data bss stack stack

30 Task 의 memory context 30 메모리관리자료구조 task_struct include/linux/sched.h, include/linux/mm.h, include/asm- i386/page.h mm_struct vm_area_struct text mm mmap map_count pgd... start_code, end_code start_data, end_data start_brk, brk start_stack arg_start, arg_end env_start, env_end; rss,... vm_start, vm_end vm_next vm_offset, vm_file vm_start, vm_end vm_next vm_offset, vm_file data swap or a.out pgd_t

31 Hardware Context (1/4) 31 brief reminds the 80x86 architecture ALU IN Control U. Registers OUT eip, eflags eax, ebx, ecx, edx, esi, edi, cs, ds, ss, es, fs,... cr0, cr1, cr2, cr3, LDTR, TR,...

32 Hardware Context(2/4) 32 stack 쓰레드자료구조 : CPU 추상화 stack 2 heap EIP heap data text movl $2, %eax pushl %eax addl %eax, %ebx ESP EAX.... registers 10 2 movl $10, %eax call func1 data text Address space for Task A Address space for Task B 다시 Task A 가수행되려면? 문맥교환 (Context Switch) thread structure

33 Hardware Context(3/4) 33 쓰레드자료구조 : CPU 추상화 stack stack 2 heap dt data EIP ESP EAX... heap data text movl $2, %eax pushl %eax addl %eax, %ebx Address space for Task A EIP ESP EAX registers EIP ESP EAX movl $10, %eax call func1 Address space for Task B text tss struct. for task A tss struct. for task B

34 Hardware Context(4/4) 34 문맥교환 (Context Switch) save context CPU restore context task TSS eip sp eflags eax ebx task TSS eip sp eflags eax ebx

35 Task 의 H/W context 35 쓰레드자료구조 : CPU 추상화 include/asm-i386/processor.h task_struct... struct thread_struct thread;... include/asm-arm/processor.h struct thread_struct { unsigned long r4; unsigned dlong r5; unsigned long r6; unsigned long r7; unsigned long r8; unsigned long r9; unsigned long sl; unsigned long fp; unsigned long pc;.. struct thread_struct { unsigned long esp0; unsigned short ss0; unsigned long esp1; unsigned short ss1; unsigned long esp2; unsigned short ss2; unsigned long cr3; unsigned long eip, eflags; unsigned long eax, ecx, edx, ebx; unsigned long esp; unsigned long ebp, esi, edi; unsigned short es, cs, ss, ds, fs, gs; unsigned short ldt;..

36 Kernel Stack 36 Thread union 커널은각태스크별로 8KB 메모리할당 thread_ info 구조체와 kernel stack alloc_thread_struct, free_thread_struct pt_regs CPU Stack Pointer Register stack current thread_info{ *task flags(need_resched ) } task_struct

37 Kernel mode 진입 37 INT, syscall kernel mode 로전환 control path : kernel mode 로진입하기위한일련의명령어 struct pt_regs? 현재 P 의상태를커널스택에저장하기위해사용 sys_open() 처럼인자가임의의개수인경우저장된 pt_regs구조체의정보중위에서부터차례로전달됨 sys_fork() 처럼 pt_regs를통째로받는경우도있음 변환한 IRQ 번호

38 Linux 의 Task 생성 38 프로세스관련 Interface fork(), vfork(), clone() do_fork() copy_process() dup_task_struct(): 새커널스택, 부모의 task_struct복사 get_pid() 를호출해새로운 PID할당 플래그에따라열린파일, 파일시스템정보, 시그널핸들러, 프로세스주소영역, namespace등을복제 / 공유 하위바이트는자식프로세스종료시부모프로세스에전달할시그널신호 ( 보통 SIGCHLD), 나머지 3바이트는아래와같음 CLONE_VM : 메모리디스크립터와모든 PT 공유 CLONE_FS : 루트 dir과 CWD나타내는 table과 umask 값공유 CLONE_FILES : 열린 file나타내는테이블공유 CLONE_PARENT : 새로만들어지는자식 P의부모를호출P의부모로설정 CLONE _PID : PID 공유 CLONE_PTRACE : ptrace() 로부모 P 추적중이라면, 자식 P도추적가능 CLONE_SIGHAND : 시그널핸들러나타내는 table공유 CLONE_THREAD : 자식P를부모P와같은스레드그룹에넣고, 자식P의 tgid필드도이에알맞게설정, CLONE_PARENT자동설정됨 CLONE_SIGNAL : CLONE_SIGHAND + CLONE_THREAD 멀티스레드 APP 에있는모든스레드에시그널송신가능 CLONE_VFORK : vfork() syst call서사용함 남은 time slice 를부모와자식간에분배 새로운프로세스의포인터반환

39 Linux 의 Task 제거 39 exit() do_exit() task_struct구조체의 flags멤버에 PF_EXITING플래그설정 exit_mm(), sem_exit(), exit_files(), exit_fs(), exit_namespace(), exit_sighand() 태스크의종료코드 task_struct 구조체의 exit_code 멤버 exit_notify() 부모에게시그널자식들의부모를같은스레드그룹의다른스레드나혹은 initit 프로세스로지정 고아라면? forget_original_parent() 를사용함 Reaper를프로세스의스레드그룹에있는다른태스크로설정 다른태스크가없으면 reaper 를 child_reaper 로설정 -> 이것이바로 initit 프로세스이다 태스크의상태를 TASK_ZOMBIE로설정 이후에는부모에게정보를전달하기위한커널스택과슬랩객체즉, thread_info와 task_struct구조체가남아있다. schedule() 함수를호출해새프로세스로스위칭

40 스케줄링기법 40 선점지원여부에따른분류 선점스케줄링 비선점스케줄링 우선순위변경지원여부에따른분류 정적우선순위스케줄링 동적우선순위스케줄링 구체적인스케줄링알고리즘 FIFO 스케줄링 다단계피드백큐스케줄링 SJT, SRT 스케줄링 EDF? RM? RR?...

41 Priority Inversion Problem 41 R/T TASK 1 TASK 2 TASK TASK 3 1 해결책은? Priority inheritance task 3 의우선순위를 R/T task 1 의우선순위와같게하여수행후, R/T task 1이기다리는자원에대한처리가끝나면원래우선순위로복귀시킴 동적우선순위변경이가능해야한다

42 Multi-CPU 를위한리눅스특징 42 스케줄링 Run queue per each CPU T do_fork() Effective priority based O(1) scheduler Priority, affinity, interactivity, Load balancing wake_up_new_task() Run Queue schedule() T T CPU T Task list Run Queue schedule() T T T T T T T T CPU wake_up() load_balance() Run Queue schedule() T CPU

43 Linux Scheduling 43 Multi-level feed back queue based on priority Task의종류 실시간태스크 (SCHED_FIFO, SCHED_RR) 정적우선순위 0 ~ 99 일반태스크 (SCHED_OTHER) 동적우선순위 Nice -20 ~ ~ 139 타임슬라이스 Interactivity를고려한 time slice와 priority의재계산 최소 10ms 기본 100ms 최대 200ms

44 Run Queue 44 실행큐 프로세서에있는실행가능한프로세스의목록 우선순위배열 O(1) scheduling 각실행큐는 2개의우선순위배열을가짐활성 (active), 비활성 (expired) 각우선순위레벨마다의실행가능프로세스큐를유지각큐에는해당우선순위레벨의실행가능한프로세스목록유지 우선순위비트맵사용 상수시간내에최고우선순위태스크선택가능 특정우선순위의태스크가 TASK_RUNNING상태가되면해당우선순위비트가 1로 set됨 sched_find_first_bit() d 이용첫번째 1 로 set 된비트찾음 같은우선순위끼리는라운드로빈

45 Run Queue 동작 45 타임슬라이스의재계산 기존의타임슬라이스재계산위한루프형태의루틴탈피단지, 활성과비활성배열을스위칭하는것으로끝남 schedule() 우선순위 7의실행가능태스크리스트를뒤짐 sched_find_first_set() queue[0] queue[1] queue[2] queue[7] 리스트의첫번째 프로세스를실행 queue[139] prio_array_t.bitmap prio_array_t.queue

46 schedule() 함수의호출 46 schedule() 함수 직접적인호출 (direct invocation) current process 가필요로하는자원을사용할수없어, 이 process 를당장블록해야하는경우 Process를 block 하려는 kernel routine의단계 current를적당한 wait queue에넣는다 current 의상태를 TASK_INTERRUPTIBLE 나 TASK_UNINTERRUPTIBLE 로만든다 schedule() 을호출 자원이사용가능한지검사하여불가하면 2단계로돌아감 사용가능하면 current 를대기큐에서제거 우회적인호출 (lazy invocation) current 의 need_resched 필드를 1 로설정해우회적호출함 쓰이는경우 current 가자신의 CPU 시간 quantum 을모두썼을때, update_process_times() 가설정함 임의의 process 가깨어났는데, 그 process 의우선순위가현재 process 의우선순위보다높을때. seched_setscheduler() 이나, sched_yield() 시스템콜호출시

47 CFS basic concept 47 If N tasks are on the Runqueue fair_clock(virtual clock) Real Clock * 1/N wait_runtime Waiting time of a task To sort tasks on the red-black tree fair_clock wait_runtime

48 부터도입된 CFS 스케줄러의자료구조 CPU CPU CPU runqueues struct rq q{ struct cfs_rq cfs; struct rt_rq rt; u64 clock, prev_clock_raw; u64 clock_max_delta; unsigned int clock_warps, clock_overflows; u64 tick_timestamp }; struct cfs_rq { struct load_weight load; unsigned long nr_running; u64 exec_clock; clock; u64 min_vruntime; struct rb_root tasks_timeline; struct rb_node *rb_leftmost; struct rb_node *rb_load_balance_curr; struct sched_entity entity *curr; unsigned long nr_spread_over; #ifdef CONFIG_FAIR_GROUP_SCHED struct rq *rq; struct list_head leaf_cfs_rq_list; #endif }; struct task_group *tg; struct rt_rq { struct rt_prio_array active; int rt_load_balance_idx; struct list_head *rt_load_balance_head, *rt_load_balance_curr; }; #define MAX_RT_PRIO MAX_USER_RT_PRIO struct rt_prio_array { DECLARE_BITMAP(bitmap, MAX_RT_PRIO+1); struct list_head queue[max_rt_prio]; };

49 task 와스케줄러관련구조체 struct task_struct { int prio, static_prio, normal_prio; struct list_head run_list; const struct sched_class *sched_class; struct sched_entity se; unsigned int policy; cpumask_t cpus_allowed; unsigned int time_slice; } struct sched_entity entity { struct load_weight load; struct rb_node run_node; unsigned int on_rq; u64 exec_start; u64 sum_exec_runtime; u64 vruntime; u64 prev_sum_exec_runtime; #ifdef CONFIG_FAIR_GROUP_SCHED FAIR GROUP struct sched_entity *parent; struct cfs_rq *cfs_rq; struct cfs_rq *my_q; #endif }; SCHED_NORMAL SCHED_BATCH SCHED_IDLE SCHED_FIFO SCHED_RR static const struct sched_class fair_sched_class = {.next = &idle_sched_class,.enqueue_task = enqueue_task_fair,.dequeue_task = dequeue_task_fair,.yield_task = yield_task_fair,.check_preempt_curr = check_preempt_wakeup,.pick_next_task = pick_next_task_fair,.put_prev_task = put_prev_task_fair, #ifdef CONFIG_SMP.load_balance = load_balance_fair,.move_one_task = move_one_task_fair, #endif.set_curr_task = set_curr_task_fair,.task_tick tick = task_tick_fair, tick.task_new = task_new_fair, }; const struct sched_class rt_sched_class = {.next = &fair_sched_class, class,.enqueue_task = enqueue_task_rt,.dequeue_task = dequeue_task_rt,.yield_task = yield_task_rt,.check_preempt_curr = check_preempt_curr_rt,.pick_next_task task = pick_next_task_rt, task.put_prev_task = put_prev_task_rt, #ifdef CONFIG_SMP.load_balance = load_balance_rt,.move_one_task = move_one_task_rt, #endif.set_curr_task = set_curr_task_rt,.task_tick = task_tick_rt, };

50 schedule() 함수의동작 /* kernel/schedc */ schedule() pick_next_task() if( RT 태스크가없으면 ) fair_sched_class의 pick_next_task() 함수호출 else RT class, fair class 순으로 pick_next_task() 함수를호출하여태스크선정

51 Test Code 51 #include <stdio.h> #include <unistd.h> #include <sched.h> int main(void) { struct sched_param param; int i, j; sched_getparam( 0, &param); printf(" nbefore set n"); printf(" Param.priority = %d n", param.sched_priority); printf(" Sched policy = %d n", sched_getscheduler(0)); 1 param.sched a ed_priority = 10; sched_setscheduler(0, SCHED_FIFO, &param); sched_getparam( 0, &param); } printf(" nfifo set n"); printf(" Param.priority = %d n",p param.sched_priority); printf(" Sched policy = %d n", sched_getscheduler(0)); 2 param.sched_priority = 20; sched_setscheduler(0, SCHED_RR, &param); sched_getparam( 0, &param); printf(" nrr set n"); printf(" Param.priority = %d n", param.sched_priority); printf(" Sched policy = %d n", sched_getscheduler(0)); return 0; 3 아래코드를화살표가가리키고있는세군데에각각넣고실행해보자. 실행도중키보드를누르면반응이있는가? 언제반응이있고, 언제없는가? for(i=0; i<100000; i++) for(j=0; j<100000; j++);

52 Context Switching 52 Context? 사용자주소공간 : code, data, stack, 공유메모리제어정보 : task_struct struct credentials : 보안유지위한정보, uid.gid 환경변수 H/W context : reg 값 진행과정 필요시 schedule() 가 context_switch() 호출 switch_mm() 을호출 이전프로세스의가상메모리매핑을새프로세스의것으로대체 switch_to() 를호출 프로세서상태를이전프로세스에서현재프로세스로전환 스택정보와프로세서레지스터값저장 / 복원

53 switch_to() in ARM (1/16) 53 Code Window Memory Dump Window CPU register window

54 switch_to() in ARM (2/16) 54

55 switch_to() in ARM (3/16) 55

56 switch_to() in ARM (4/16) 56

57 switch_to() in ARM (5/16) 57

58 switch_to() in ARM (6/16) 58

59 switch_to() in ARM (7/16) 59

60 switch_to() in ARM (8/16) 60

61 switch_to() in ARM (9/16) 61

62 switch_to() in ARM (10/16) 62

63 switch_to() in ARM (11/16) 63

64 switch_to() in ARM (12/16) 64

65 switch_to() in ARM (13/16) 65

66 switch_to() in ARM (14/16) 66

67 switch_to() in ARM (15/16) 67

68 switch_to() in ARM (16/16) 68

Microsoft PowerPoint - Chapter_02.pptx

Microsoft PowerPoint - Chapter_02.pptx 1 Task Management March, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj Program & Process 2 Task, Process and Thread 3 Process Thread Task, Process and Thread 4 Process

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

슬라이드 1

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

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

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

좀비프로세스 2

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

More information

3. 다음장에나오는 sigprocmask 함수의설명을참고하여다음프로그램의출력물과그출력물이화면이표시되는시점을예측하세요. ( 힌트 : 각줄이표시되는시점은다음 4 가지중하나. (1) 프로그램수행직후, (2) kill 명령실행직후, (3) 15 #include <signal.

3. 다음장에나오는 sigprocmask 함수의설명을참고하여다음프로그램의출력물과그출력물이화면이표시되는시점을예측하세요. ( 힌트 : 각줄이표시되는시점은다음 4 가지중하나. (1) 프로그램수행직후, (2) kill 명령실행직후, (3) 15 #include <signal. 학번 : 이름 : 1. 다음가정하에서아래프로그램의출력물을예측하세요. 가정 : 부모프로세스의 process id=20100, 자식프로세스의 process id=20101. int glob = 31; /* external variable in initialized data */ char buf[] = "a write to stdout\n"; int main(void)

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

hlogin2

hlogin2 0x02. Stack Corruption off-limit Kernel Stack libc Heap BSS Data Code off-limit Kernel Kernel : OS Stack libc Heap BSS Data Code Stack : libc : Heap : BSS, Data : bss Code : off-limit Kernel Kernel : OS

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

Deok9_Exploit Technique

Deok9_Exploit Technique Exploit Technique CodeEngn Co-Administrator!!! and Team Sur3x5F Member Nick : Deok9 E-mail : DDeok9@gmail.com HomePage : http://deok9.sur3x5f.org Twitter :@DDeok9 > 1. Shell Code 2. Security

More information

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

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

More information

<4D F736F F F696E74202D FC7C1B7CEBCBCBDBA20BBFDBCBAB0FA20BDC7C7E0205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D FC7C1B7CEBCBCBDBA20BBFDBCBAB0FA20BDC7C7E0205BC8A3C8AF20B8F0B5E55D> 학습목표 프로세스를생성하는방법을이해한다. 프로세스를종료하는방법을이해한다. exec함수군으로새로운프로그램을실행하는방법을이해한다. 프로세스를동기화하는방법을이해한다. 프로세스생성과실행 IT CookBook, 유닉스시스템프로그래밍 2/24 목차 프로세스생성 프로세스종료함수 exec 함수군활용 exec 함수군과 fork 함수 프로세스동기화 프로세스생성 [1] 프로그램실행

More information

2009년 상반기 사업계획

2009년 상반기 사업계획 프로세스생성과실행 IT CookBook, 유닉스시스템프로그래밍 학습목표 프로세스를생성하는방법을이해한다. 프로세스를종료하는방법을이해한다. exec함수군으로새로운프로그램을실행하는방법을이해한다. 프로세스를동기화하는방법을이해한다. 2/24 목차 프로세스생성 프로세스종료함수 exec 함수군활용 exec 함수군과 fork 함수 프로세스동기화 3/24 프로세스생성 [1]

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

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

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

Chap04(Signals and Sessions).PDF

Chap04(Signals and Sessions).PDF Signals and Session Management 2002 2 Hyun-Ju Park (Signal)? Introduction (1) mechanism events : asynchronous events - interrupt signal from users : synchronous events - exceptions (accessing an illegal

More information

K&R2 Reference Manual 번역본

K&R2 Reference Manual 번역본 typewriter structunion struct union if-else if if else if if else if if if if else else ; auto register static extern typedef void char short int long float double signed unsigned const volatile { } struct

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

강의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

Figure 5.01

Figure 5.01 Chapter 4: Threads Yoon-Joong Kim Hanbat National University, Computer Engineering Department Chapter 4: Multithreaded Programming Overview Multithreading Models Thread Libraries Threading Issues Operating

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

임베디드시스템설계강의자료 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

/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

제9장 프로세스 제어

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

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

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

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

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

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

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

Microsoft PowerPoint - 05_프로세스(my).ppt [호환 모드]

Microsoft PowerPoint - 05_프로세스(my).ppt [호환 모드] 5 장프로세스 프로세스와프로세스디스크립터의이해 task_struct 구조체 프로세스생성과소멸 프로세스상태와전이 스케줄링 시그널 한빛미디어 ( 주 ) Section 01 프로세스와프로세스디스크립터의이해 Section 01 프로세스란? 실행중인프로그램 프로세스 = 태스크 (task) 자신에게포함된기계어명령을종료할때까지실행하는동적인존재 살아있는동안많은자원을사용 자원

More information

슬라이드 1

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

More information

hlogin7

hlogin7 0x07. Return Oriented Programming ROP? , (DEP, ASLR). ROP (Return Oriented Programming) (excutable memory) rop. plt, got got overwrite RTL RTL Chain DEP, ASLR gadget Basic knowledge plt, got call function

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

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

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

<4D F736F F F696E74202D C465F4B6F F6E662DB8AEB4AABDBABFA1BCADC0C7BDC7BDC3B0A3C1F6BFF8>

<4D F736F F F696E74202D C465F4B6F F6E662DB8AEB4AABDBABFA1BCADC0C7BDC7BDC3B0A3C1F6BFF8> Korea Tech Conference 2005 년 5 월 14 일, 서울 2005 년 5 월 14 일 CE Linux Forum Korea Tech Conference 1 리눅스에서의실시간지원 정영준 / 임용관 2005 년 5 월 14 일 CE Linux Forum Korea Tech Conference 2 1. 개요 2. 스케줄러 목차 I. 고정스케줄링시간지원

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

슬라이드 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

Microsoft Word - FunctionCall

Microsoft Word - FunctionCall Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack

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

슬라이드 1

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

More information

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070> #include "stdafx.h" #include "Huffman.h" 1 /* 비트의부분을뽑아내는함수 */ unsigned HF::bits(unsigned x, int k, int j) return (x >> k) & ~(~0

More information

제1장 Unix란 무엇인가?

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

More information

Microsoft PowerPoint - ch09_파이프 [호환 모드]

Microsoft PowerPoint - ch09_파이프 [호환 모드] 학습목표 파이프를이용한 IPC 기법을이해한다. 이름없는파이프를이용해통신프로그램을작성할수있다. 이름있는파이프를이용해통신프로그램을작성할수있다. 파이프 IT CookBook, 유닉스시스템프로그래밍 2/20 목차 파이프의개념 이름없는파이프만들기 복잡한파이프생성 양방향파이프활용 이름있는파이프만들기 파이프의개념 파이프 두프로세스간에통신할수있도록해주는특수파일 그냥파이프라고하면일반적으로이름없는파이프를의미

More information

2009년 상반기 사업계획

2009년 상반기 사업계획 파이프 IT CookBook, 유닉스시스템프로그래밍 학습목표 파이프를이용한 IPC 기법을이해한다. 이름없는파이프를이용해통신프로그램을작성할수있다. 이름있는파이프를이용해통신프로그램을작성할수있다. 2/20 목차 파이프의개념 이름없는파이프만들기 복잡한파이프생성 양방향파이프활용 이름있는파이프만들기 3/20 파이프의개념 파이프 두프로세스간에통신할수있도록해주는특수파일 그냥파이프라고하면일반적으로이름없는파이프를의미

More information

Chapter 4. LISTS

Chapter 4. LISTS C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or

More information

INTRO Basic architecture of modern computers Basic and most used assembly instructions on x86 Installing an assembly compiler and RE tools Practice co

INTRO Basic architecture of modern computers Basic and most used assembly instructions on x86 Installing an assembly compiler and RE tools Practice co Basic reverse engineering on x86 This is for those who want to learn about basic reverse engineering on x86 (Feel free to use this, email me if you need a keynote version.) v0.1 SeungJin Beist Lee beist@grayhash.com

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Reasons for Poor Performance Programs 60% Design 20% System 2.5% Database 17.5% Source: ORACLE Performance Tuning 1 SMS TOOL DBA Monitoring TOOL Administration TOOL Performance Insight Backup SQL TUNING

More information

10주차.key

10주차.key 10, Process synchronization (concurrently) ( ) => critical section ( ) / =>, A, B / Race condition int counter; Process A { counter++; } Process B { counter ;.. } counter++ register1 = counter register1

More information

<4D F736F F F696E74202D BDC3B1D7B3CEB0FA20BDC3B1D7B3CE20C3B3B8AE2E707074>

<4D F736F F F696E74202D BDC3B1D7B3CEB0FA20BDC3B1D7B3CE20C3B3B8AE2E707074> 10 장시그널과시그널처리 시그널과시그널처리 - sigemptyset, sigfillset - sigaddset, sigdelset, sigismember - sigaction - sigprocmask - kill, raise - alarm - pause 1 1. 서론 시그널의종류 이름설명 DA SIGABRT abort() 를호출할때발생 SIGALRM 설정된알람시간이경과한겨우발생

More information

Microsoft PowerPoint - 09-Pipe

Microsoft PowerPoint - 09-Pipe 9. 파이프 상명대학교소프트웨어학부 파이프 시그널은이상한사건이나오류를처리하는데는이용하지만, 한프로세스로부터다른프로세스로대량의정보를전송하는데는부적합하다. 파이프 한프로세스를다른관련된프로세스에연결시켜주는단방향의통신채널 2 pipe() Usage #include int pipe(int filedes[2]); 3 < ex_1.c > #include

More information

<4D F736F F F696E74202D205BBAB0C3B75D20B8AEB4AABDBA20B5F0B9D9C0CCBDBA20B5E5B6F3C0CCB9F620B8F0B5A82E >

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

More information

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

Microsoft PowerPoint - LN_7_Linux_MM.ppt [호환 모드] 프로젝트 1 Memory Management 단국대학교컴퓨터학과 29 백승재 ibanez1383@dankook.ac.kr k k http://embedded.dankook.ac.kr/~ibanez1383 강의목표 리눅스의물리메모리관리기법이해 할당 / 해제기법 리눅스의가상메모리관리기법이해 할당 / 해제기법 리눅스의물리메모리와가상메모리연결 / 혹은변환기법이해 가상메모리개념

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 - a10.ppt [호환 모드]

Microsoft PowerPoint - a10.ppt [호환 모드] Structure Chapter 10: Structures t and Macros Structure 관련된변수들의그룹으로이루어진자료구조 template, pattern field structure를구성하는변수 (cf) C언어의 struct 프로그램의 structure 접근 entire structure 또는 individual fields Structure는

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

3. 다음장에나오는 sigprocmask 함수의설명을참고하여다음프로그램의출력물과그출력물이화면이표시되는시점을예측하세요. ( 힌트 : 각줄이표시되는시점은다음 6 가지중하나. (1) 프로그램수행직후, (2) 5 초후 (3) 10 초후 (4) 15 #include <signa

3. 다음장에나오는 sigprocmask 함수의설명을참고하여다음프로그램의출력물과그출력물이화면이표시되는시점을예측하세요. ( 힌트 : 각줄이표시되는시점은다음 6 가지중하나. (1) 프로그램수행직후, (2) 5 초후 (3) 10 초후 (4) 15 #include <signa 학번 : 이름 : 1. 다음가정하에서아래프로그램의출력물을예측하세요. 가정 : 부모프로세스의 process id=10100, 자식프로세스의 process id=10101. char buf[] = "a write to stdout\n"; int var; /* automatic variable on the stack */ pid_t pid; int glob = 31;

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

Microsoft PowerPoint - 10_Signal

Microsoft PowerPoint - 10_Signal Operating System Laboratory 시그널 - IPC - 시그널의종류 - 시그널구현함수 IPC 프로세스간통신 (Inter-Process Communication) 실행중인프로세스간에데이터를주고받는기법 IPC 에는매우많은방법이있다! File Pipe/Named pipe Socket Shared memory Message passing Remote

More information

No Slide Title

No Slide Title Copyright, 2017 Multimedia Lab., UOS 시스템프로그래밍 (Assembly Code and Calling Convention) Seong Jong Choi chois@uos.ac.kr Multimedia Lab. Dept. of Electrical and Computer Eng. University of Seoul Seoul, Korea

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

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

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

PowerPoint 프레젠테이션

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

More information

Microsoft PowerPoint - 11_Thread

Microsoft PowerPoint - 11_Thread Linux 쓰레드 - 기본 - Pthread - 생성과소멸 - 동기화 - 공유변수 - 상호배제 기본? 경량프로세스 (lightweight process: LWP) 일반프로세스는생성시자신만의메모리영역을할당받는다 PCB, code, static, heap, stack 등 : PCB 와스택만별도로할당받고나머지는부모프로세스와공유 생성과전환 (context switch)

More information

<4D F736F F F696E74202D20322DBDC7BDC3B0A320BFEEBFB5C3BCC1A6>

<4D F736F F F696E74202D20322DBDC7BDC3B0A320BFEEBFB5C3BCC1A6> 컴퓨터시스템구성 2. 실시간운영체제 1 2 운영체제의주요기능 프로세스관리 (Process management) 메모리관리 (Memory management) 인터럽트핸들링 (Interrupt handling) 예외처리 (Exception handling) 프로세스동기화 (Process synchronization) 프로세스스케쥴링 (Process scheduling)

More information

Here is a "PLDWorld.com"... // EXCALIBUR... // Additional Resources // µc/os-ii... Page 1 of 23 Additional Resources: µc/os-ii Author: Source: HiTEL D

Here is a PLDWorld.com... // EXCALIBUR... // Additional Resources // µc/os-ii... Page 1 of 23 Additional Resources: µc/os-ii Author: Source: HiTEL D Page 1 of 23 Additional Resources: µc/os-ii Author: Source: HiTEL Digital Sig Date: 2004929 µ (1) uc/os-ii RTOS uc/os-ii EP7209 uc/os-ii, EP7209 EP7209,, CPU ARM720 Core CPU ARM7 CPU wwwnanowitcom10 '

More information

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600 균형이진탐색트리 -VL Tree delson, Velskii, Landis에의해 1962년에제안됨 VL trees are balanced n VL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at

More information

11장 포인터

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

More information

Microsoft PowerPoint - SP6장-시그널.ppt [호환 모드]

Microsoft PowerPoint - SP6장-시그널.ppt [호환 모드] UNIX System Programming Ki-Hyun, JUNG Email : kingjung@paran.com 구성 1 장 : 기본적인개념들과기초적인용어들 2 장 : 파일을다루는시스템호출 primitives 3 장 : 파일에대한문맥상의특성 4 장 : 유닉스디렉토리개념 5 장 : 유닉스프로세스의기본적인성질과제어 6 장 : 프로세스간통신 7 장 : 유용한유닉스프로세스간통신기법

More information

UI TASK & KEY EVENT

UI TASK & KEY EVENT KEY EVENT & STATE 구현 2007. 1. 25 PLATFORM TEAM 정용학 차례 Key Event HS TASK UI TASK LONG KEY STATE 구현 소스코드및실행화면 질의응답및토의 2 KEY EVENT - HS TASK hs_task keypad_scan_keypad hs_init keypad_pass_key_code keypad_init

More information

ESP1ºÎ-04

ESP1ºÎ-04 Chapter 04 4.1..,..,.,.,.,. RTOS(Real-Time Operating System)., RTOS.. VxWorks(www.windriver.com), psos(www.windriver.com), VRTX(www.mento. com), QNX(www.qnx.com), OSE(www.ose.com), Nucleus(www.atinudclus.

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

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

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

PowerPoint 프레젠테이션

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

More information

Microsoft Word - ExecutionStack

Microsoft Word - ExecutionStack Lecture 15: LM code from high level language /* Simple Program */ external int get_int(); external void put_int(); int sum; clear_sum() { sum=0; int step=2; main() { register int i; static int count; clear_sum();

More information

vi 사용법

vi 사용법 유닉스프로그래밍및실습 gdb 사용법 fprintf 이용 단순디버깅 확인하고자하는코드부분에 fprintf(stderr, ) 를이용하여그지점까지도달했는지여부와관심있는변수의값을확인 여러유형의단순한문제를확인할수있음 그러나자세히살펴보기위해서는디버깅툴필요 int main(void) { int count; long large_no; double real_no; init_vars();

More information

본 강의에 들어가기 전

본 강의에 들어가기 전 유닉스프로그래밍및실습 9 장. 시그널 1. 시그널개념 시그널생명주기 시그널이발생한다. 커널이해당시그널을쌓아둔다.( 동일한시그널이오는경우하나만 ) 가능한시점에서커널이적절하게처리한다 커널의처리방법 시그널무시 아무런동작을하지않는다 절대무시할수없는시그널 SIGKILL SIGSTOP 시그널을붙잡아처리 현재코드경로를따라가는실행을중단하고, 시그널마다등록된함수로점프 기본동작

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

교육지원 IT시스템 선진화

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

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

Microsoft PowerPoint - IOControl [호환 모드]

Microsoft PowerPoint - IOControl [호환 모드] 목차 Input/Output Control I/O Control Mechanism mmap function munmap function RAM Area Access LED Control 4 digits 7 Segment Control Text LCD Control 1 2 I/O Control Mechanism (1) I/O Control Mechanism (2)

More information

Microsoft PowerPoint - 10_Process

Microsoft PowerPoint - 10_Process Linux 프로세스프로그래밍 Programming - 프로세스생성 : fork, exec - 프로세스동기화 : wait - 프로세스관리함수 프로세스관련함수 프로세스생성과종료 함수 의미 fork 자신과완전히동일한프로세스를생성한다. exec 계열지정한실행파일로부터프로세스를생성한다. exit 종료에따른상태값을부모프로세스에게전달하며프로세스를종료한다. atexit exit

More information

2009년 상반기 사업계획

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

More information

02.Create a shellcode that executes "/bin/sh" Excuse the ads! We need some help to keep our site up. List Create a shellcode that executes "/bin/sh" C

02.Create a shellcode that executes /bin/sh Excuse the ads! We need some help to keep our site up. List Create a shellcode that executes /bin/sh C 02.Create a shellcode that executes "/bin/sh" Excuse the ads! We need some help to keep our site up. List Create a shellcode that executes "/bin/sh" C language Assembly code Change permissions(seteuid())

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

61 62 63 64 234 235 p r i n t f ( % 5 d :, i+1); g e t s ( s t u d e n t _ n a m e [ i ] ) ; if (student_name[i][0] == \ 0 ) i = MAX; p r i n t f (\ n :\ n ); 6 1 for (i = 0; student_name[i][0]!= \ 0&&

More information

UI TASK & KEY EVENT

UI TASK & KEY EVENT T9 & AUTOMATA 2007. 3. 23 PLATFORM TEAM 정용학 차례 T9 개요 새로운언어 (LDB) 추가 T9 주요구조체 / 주요함수 Automata 개요 Automata 주요함수 추후세미나계획 질의응답및토의 T9 ( 2 / 30 ) T9 개요 일반적으로 cat 이라는단어를쓸려면... 기존모드 (multitap) 2,2,2, 2,8 ( 총 6번의입력

More information

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap10-함수의활용.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

2. GCC Assembler와 AVR Assembler의차이 A. GCC Assembler 를사용하는경우 i. Assembly Language Program은.S Extension 을갖는다. ii. C Language Program은.c Extension 을갖는다.

2. GCC Assembler와 AVR Assembler의차이 A. GCC Assembler 를사용하는경우 i. Assembly Language Program은.S Extension 을갖는다. ii. C Language Program은.c Extension 을갖는다. C 언어와 Assembly Language 을사용한 Programming 20011.9 경희대학교조원경 1. AVR Studio 에서사용하는 Assembler AVR Studio에서는 GCC Assembler와 AVR Assmbler를사용한다. A. GCC Assembler : GCC를사용하는경우 (WinAVR 등을사용하는경우 ) 사용할수있다. New Project

More information

제1장 Unix란 무엇인가?

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

More information

제1장 Unix란 무엇인가?

제1장  Unix란 무엇인가? 1 시그널 2 11.1 시그널 시그널 시그널은예기치않은사건이발생할때이를알리는소프트웨어인터럽트이다. 시그널발생예 SIGFPE 부동소수점오류 SIGPWR 정전 SIGALRM 알람시계울림 SIGCHLD 자식프로세스종료 SIGINT 키보드로부터종료요청 (Ctrl-C) SIGSTP 키보드로부터정지요청 (Ctrl-Z) 3 주요시그널 시그널이름 의미 기본처리 SIGABRT

More information

IDA 5.x Manual 07.02.hwp

IDA 5.x Manual 07.02.hwp IDA 5.x Manual - Manual 01 - 영리를 목적으로 한 곳에서 배포금지 Last Update 2007. 02 이강석 / certlab@gmail.com 어셈블리어 개발자 그룹 :: 어셈러브 http://www.asmlove.co.kr - 1 - IDA Pro 는 Disassembler 프로그램입니다. 기계어로 되어있는 실행파일을 어셈블리언어

More information

Abstract View of System Components

Abstract View of System Components 운영체제실습 - Synchronization - Real-Time Computing and Communications Lab. Hanyang University jtlim@rtcc.hanyang.ac.kr dhchoi@rtcc.hanyang.ac.kr beespjh@gmail.com Introduction 조교소개 이름 : 임정택 Tel : 010-4780

More information

untitled

untitled (shared) (integrated) (stored) (operational) (data) : (DBMS) :, (database) :DBMS File & Database - : - : ( : ) - : - : - :, - DB - - -DBMScatalog meta-data -DBMS -DBMS - -DBMS concurrency control E-R,

More information

SRC PLUS 제어기 MANUAL

SRC PLUS 제어기 MANUAL ,,,, DE FIN E I N T R E A L L O C E N D SU B E N D S U B M O TIO

More information