슬라이드 1

Size: px
Start display at page:

Download "슬라이드 1"

Transcription

1 Task 통신및동기화 : 시그널 (Signal) Chapter #10

2 Cooperating Processes Signal 개요 Signal 처리 Signal 전송 타이머처리 강의목차 Unix System Programming 2

3 Cooperating Processes (1) Independent process cannot affect or be affected by the execution of another process. Cooperating process can affect or be affected by the execution of another process Advantages of process cooperation Information sharing Computation speed-up Modularity Convenience Unix System Programming 3

4 Cooperating Processes (2) Cooperating process 적용 producer and consumer shared resource parallel matrix processing mobile computing Unix System Programming 4

5 Cooperating Processes (3) Interprocess Communication & Synchronization Producer : Consumer : : while (1) { /* produce an item */ while (counter == BUFFER_SIZE); /* do nothing */ buffer[in] = nextproduced; in = (in+1) % BUFFER_SIZE; counter++; } : : while (1) { /* consume an item */ while (counter == 0); /* do nothing */ nextconsumed = buffer[out]; out = (out+1) % BUFFER_SIZE; counter--; } : 공유에따른동기화문제가발생 Unix System Programming 5

6 Cooperating Processes (4) Interface for Cooperating processes at the same sites Signal Semaphore Pipe, FIFO System V IPC (InterProcess Communication) message passing shared memory STREAM socket Interface for Cooperating processes at the different sites Socket RPC RMI, DCOM, CORBA, Unix System Programming 6

7 시그널 (signal) Signal (1) 비동기적인사건 (asynchronous event) 의발생을프로세스에게알리는메커니즘 Facility for handling exceptional conditions Software interrupts to processes 가장기본적인유형의프로세스간의통신메커니즘 시그널전송 커널이프로세스에게 프로세스간에 Unix System Programming 7

8 Signal (2) 시그널의종류 <signal.h> 에서정의 SIGKILL, SIGINT, SIGBUS, SIGUSR1,. ( 최대64) 대표적인시그널 SIGHUP(1) 제어터미널이 hangup되었는지를검출 SIGINT(2) 키보드에서발생한인터럽트 SIGQUIT(3) 키보드에의한중지 SIGKILL(9) 프로세스강제종료 SIGUSR1(10) 사용자정수시그널 1 SIGSEGV(11) 세그멘테이션폴트에러 SIGUSR2(12) 사용자정수시그널 2 SIGALRM(14) 타이머알람시그널 SIGTERM(15) 소프트웨어종료 SIGCHLD(17) 자식프로세스의정지또는종료를부모프로세스에게알림 Unix System Programming 8

9 Signal (3) 태스크의시그널처리방법 태스크종료 (exit, abort) 대부분의시그널은시그널수신시에프로세스가정상종료 (normal termination) 한다 SIGABRT, SIGBUS, SIGSEGV, SIGQUIT, SIGILL, SIGTRAP, SIGSYS, SIGXCPU, SIGXFSZ, SIGFPE 시그널은비정상종료 (abnormal termination) 을발생시킴 abort() SIGABRT 발생, core dump 디버깅에사용 시그널무시 (ignore) 태스크수행중지 (stop) 사용자수준시그널처리함수 (user level catch function) 수행 Unix System Programming 9

10 Linux Signal (1) Signals for terminating processes SIGHUP This signal is sent to the controlling process associated with a controlling terminal if a disconnect is detected by the terminal interface. This signal is also generated if the session leader terminates. In this case the signal is sent to each process in the foreground process group. This signal is commonly used to notify daemon processes to reread their configuration files. The reason SIGHUP is chosen for this is because a daemon should not have a controlling terminal and would normally never receive this signal. default action: termination Unix System Programming 10

11 Linux Signal (2) Signals for terminating processes SIGINT sending of the interrupt character from the terminal [CTRL-C] Termination SIGQUIT sending of the quit character from the terminal [CTRL- ] Termination with core SIGABRT, SIGIOT abnormal termination (abort( )), hardware fault Termination SIGKILL irrevocable termination signal Termination SIGTERM default signal sent out by the kill command Termination Unix System Programming 11

12 Linux Signal (3) Signals triggered by a particular physical circumstance SIGILL illegal instruction / termination SIGTRAP breakpoint in a program (system call ptrace) termination with core SIGBUS bus error / termination SIGFPE arithmetic error (floating point exception) / termination SIGSEGV memory address invalid / termination with core SIGSTKFLT Maths co-processor stack overflow (only in the Intel architecture) termination Unix System Programming 12

13 Linux Signal (4) Signals available for use by the programmer SIGUSR1, SIGUSR2 Termination Signal generated when a pipe is closed SIGPIPE pipe without reader / termination Linked to resources SIGXCPU CPU time limit exceeded / termination SIGXFSZ file size limit exceeded / termination Unix System Programming 13

14 Linux Signal (5) Suspending or resuming SIGCHLD, SIGCLD termination of child process / ignore SIGCONT repetition in the foreground or background of the process resume execution if it is stopped SIGSTOP suspension of process / suspension (non-changeable) SIGTSTP sending out of suspension character from the terminal [CTRL-Z] Suspension SIGTTIN terminal read for a background process / suspension SIGTTOU writing to a terminal for a background process / suspension Unix System Programming 14

15 Management of alarms Linux Signal (6) SIGALRM end of timer ITIMER_REAL or alarm() / termination SIGVTALRM end of timer ITIMER_VIRTUAL / termination SIGPROF end of timer ITIMER_PROF / termination Unix System Programming 15

16 Linux Signal (7) Management of inputs and outputs SIGWINCH change of window size (used by X11) / ignore SIGIO, SIGPOLL data available for an input/output / termination SIGURG urgent data for sockets / ignore Fault with the power supply SIGPWR, SIGINFO power fault / termination Unix System Programming 16

17 Signal 생성 터미널에서특수키를누르는경우 e.g: ^-C SIGINT 하드웨어의오류 0 으로나눈경우, 잘못된메모리를참조하는경우등 kill 함수의호출 특정프로세스나프로세스그룹에게원하는시그널을발생 / 전달한다. 대상프로세스에대한권한이있어야한다. kill 명령의실행 내부적으로 kill 함수를호출한다. 소프트웨어적조건 네트워크에서의데이터오류 (SIGURG), 파이프작업에서의오류 (SIGPIPE), 알람시계의종료 (SIGALRM) 등 Unix System Programming 17

18 시그널의전달 Signal 전달 발생된시그널이수신되어정해진방법대로처리되는것 지연 (pending) : 발생된시그널의전달되지못한상태 시그널의블록킹 (blocking) 블록킹이해제되거나무시하도록변경될때까지지연된상태로남는다. 시그널마스크 (signal mask) : 블록킹될시그널집합지정 Unix System Programming 18

19 Signal 처리 시그널을받은프로세스의행동 ( 세가지처리 ) Default action (SIG_DFL) 특별한처리방법을선택하지않은경우 대부분시그널의기본처리방법은프로세스를종료시킴 Ignore the signal (SIG_IGN) SIGKILL과 SIGSTOP 시그널을제외한모든시그널을무시할수있다. 하드웨어오류에의해발생한시그널에대해서는주의해야한다. Catch the signal 시그널이발생하면미리등록된함수 (signal handler) 가수행 SIGKILL and SIGSTOP cannot be caught or ignored Unix System Programming 19

20 Signal 관련시스템콜 (1) 시그널집합 (Signal Set) 설정 시그널리스트생성및설정 #include <signal.h> /* 초기화 */ int sigemptyset(sigset_t *set); int sigfillset(sigset_t *set); /* 조작 */ int sigaddset(sigset_t *set, int signo); int sigdelset(sigset_t *set, int signo); Unix System Programming 20

21 Signal 관련시스템콜 (2) 시그널집합 (Signal Set) 설정 ( 계속 ) #include <signal.h> sigset_tmask1, mask2;... /* 빈집합을생성한다. */ sigemptyset(&mask1); /* 시그널을추가한다. */ sigaddset(&mask1, SIGINT); sigaddset(&mask1, SIGQUIT); /* 완전히차있는집합을생성한다. */ sigfillset(&mask2); /* 시그널을제거한다 */ sigdelset(&mask2, SIGCHLD);... Unix System Programming 21

22 Signal 관련시스템콜 (3) 시그널처리함수설정 : signal() #include <signal.h> void (*signal(int signum, void(*handler)(int)))(int) /* int signum : 시그널번호 */ /* void (*handler)(int) : 시그널처리함수 */ /* 정상종료하면 signum 에대한이전의 handler 값을반환하고, 에러가발생한경우에서는 SIG_ERR 를반환한다. 외부변수 errno 에에러를나타내는값을설정한다 */ 첫번째인자 signum에서지정한번호의시그널에새로운시그널처리함수 handler를지정한다 SIGKILL(9), SIGSTOP(19) 시그널에대해서는시그널처리함수를지정할수없다 Unix System Programming 22

23 Signal 관련시스템콜 (4) 시그널처리함수설정 : signal() ( 계속 ) signal() 함수재정의 #include <signal.h> typedef void (*sighandler_t)(int) #define SIG_ERR ((sighandler_t) -1) sighandler_t signal(int signum, sighandler_t handler) 미리정의된시그널처리함수 SIG_DFL 디폴트처리동작을지정 SIG_IGN 시그널을무시 SIGKILL, SIGSTOP 시그널은무시할수없다 Unix System Programming 23

24 Signal 관련시스템콜 (5) 시그널처리함수설정 : signal() ( 계속 ) 리눅스운영체제에서는시그널이발생할때마다디폴트동작으로되돌아간다 signal() 시스템콜을통해시그널처리함수를지정하여도시그널처리함수를종료하고복귀하면 SIG_DFL 값이지정된다 시그널처리함수를반복적으로지정하여야하는경우에는시그널처리함수에서다시 signal() 시스템콜를이용하여시그널처리함수를지정하여야한다 Unix System Programming 24

25 Signal 관련시스템콜 (6) 시그널처리함수설정 : signal() ( 계속 ) 예제프로그램 #1: 교재 pp.315~315, setsigint.c 예제프로그램 #2: 교재 pp.318~320, ctohex_sig.c 예제프로그램 #3: 교재 pp.321~324, parent_sig.c Unix System Programming 25

26 Signal 관련시스템콜 (7) 시그널처리함수설정 : sigaction() #include <signal.h> int sigaction(int signo, const struct sigaction *act, struct sigaction *oact) /* signo: signal to be processed */ /* struct sigaction{ void (*sa_handler)(int); /*the action to be taken */ sigset_t sa_mask; /* 시그널을처리하는동안봉쇄할시그널 */ int sa_flags; /* 시그널의형태에영향을미칠플래그들 */ void (*sa_sigaction)(int, siginfo_t*, void *)); /* 시그널핸들러에대한포인터 */ } */ /* the first field can hold SIG_DFL, SIG_IGN */ Unix System Programming 26

27 Signal 관련시스템콜 (8) 시그널처리함수설정 : sigaction() ( 계속 ) 예제프로그램 : /* sigex--sigaction 이어떻게동작하는지보인다 */ #include <signal.h> int main(void) { static struct sigaction act; /* catchint 를선언한다. 후에핸들러로사용된다. */ void catchint(int); /* SIGINT 를수신했을때취해질행동을지정한다. */ act.sa_handler= catchint; /* 완전히찬마스크를하나생성한다. */ sigfillset(&(act.sa_mask)); /* sigaction호출전에는, SIGINT가프로세스를종료시킨다 ( 디폴트행동 ) */ Unix System Programming 27

28 Signal 관련시스템콜 (9) } sigaction(sigint, &act, NULL); /* SIGINT 를수신하면제어가 catchint 로전달될것이다 */ printf("sleep call #1\n"); sleep (1); printf("sleep call #2\n"); sleep (1); printf("sleep call #3\n"); sleep (1); printf("sleep call #4\n"); sleep (1); printf("exiting\n"); exit (0); /* SIGINT를처리하는간단한함수 */ void catchint(intsigno) { printf("\ncatchint: signo=%d\n", signo); printf("catchint: returning\n\n"); } Unix System Programming 28

29 Signal 관련시스템콜 (10) 시그널처리함수설정 : sigaction() ( 계속 ) SIGINT 무시 act.sa_handler= SIG_IGN sigaction(sigint, &act, NULL); 인터럽트키의 enable act.sa_handler= SIG_DFL; sigaction(sigint, &act, NULL); 여러개의시그널을동시에무시 act.sa_handler= SIG_IGN; sigaction(sigint, &act, NULL); sigaction(sigquit, &act, NULL); Unix System Programming 29

30 Signal 관련시스템콜 (11) 시그널처리함수설정 : sigaction() ( 계속 ) 이전의처리동작으로복원하기 #include <signal.h> static struct sigaction act, oact; /* SIGTERM 을위한과거의처리동작을남겨둔다. */ sigaction(sigterm, NULL, &oact); /* SIGTERM 을위한새로운처리동작을지정한다. */ act.sa_handler= SIG_IGN; sigaction(sigterm, &act, NULL); /* 여기서무언가작업을수행한다... */ /* 이제과거의행동을복원한다. */ sigaction(sigterm, &oact, NULL); Unix System Programming 30

31 Signal 관련시스템콜 (12) 시그널처리함수설정 : sigaction() ( 계속 ) 우아한퇴장 (A Graceful Exit) 프로그램수행중에임시로만든파일을삭제하고프로그램종료 /* 프로그램으로부터우아하게퇴장 (exit) 한다. */ #include <stdio.h> #include <stdlib.h> void g_exit(ints) { unlink ("tempfile"); fprintf(stderr, "Interrupted --exiting\n"); exit (1); } /* 특정시그널과연관 */ extern void g_exit(int);.. static struct sigaction act; act.sa_handler= g_exit; sigaction(sigint, &act, NULL); Unix System Programming 31

32 Signal 관련시스템콜 (13) 시그널 & 시스템호출 시스템호출수행도중에시그널이도착하는경우 대부분의경우, 시스템호출이종료될때까지아무런영향을미치지않는다 특수한경우, 시스템호출이인터럽트된다 느린장치에대한 read, write, open 등 -1을 return, errno에 EINTR을저장 if( write(tfd, buf, size) < 0) { if( errno== EINTR ) { warn("write interrupted");... } } Unix System Programming 32

33 Signal 관련시스템콜 (14) 시그널봉쇄 (blocking) : sigprocmask() #include <signal.h> int sigprocmask(int how, const sigset_t *set, sigset_t *oset) /* int how: 특정동작을지정 o SIG_SETMASK : 두번째인자시그널집합에서지정한시그널을봉쇄 o SIG_UNBLOCK : 시그널봉쇄를제거 o SIG_BLOCK : 현재봉쇄된시그널집합에두번째인자에서지정한시그널을추가 */ /* sigset_t *set : 처리를원하는시그널집합 */ /* sigset_t *oset : 원하는동작을수행하기이전의시그널집합 */ 프로세스가특정한동작을수행완료할때까지시그널처리를봉쇄한다 Unix System Programming 33

34 Signal 관련시스템콜 (15) 시그널봉쇄 (blocking) : sigprocmask() ( 계속 ) 예제 : sigset_t set1; /* 시그널집합을완전히채운다. */ sigfillset(&set1); /* 봉쇄 (block) 를설정한다. */ sigprocmask(sig_setmask, &set1, NULL); /* 극도로중요한코드를수행한다... */ /* 시그널봉쇄를제거한다 */ sigprocmask(sig_unblock, &set1, NULL); Unix System Programming 34

35 Signal 관련시스템콜 (16) 시그널봉쇄 (blocking) : sigprocmask() ( 계속 ) 예제 : /* signal blocking -- sigprocmask 의사용예를보인다. */ #include <signal.h> int main(void) { sigset_tset1, set2; /* 시그널집합을완전히채운다. */ sigfillset(&set1); /* SIGINT 와 SIGQUIT 를포함하지않는시그널집합을생성한다. */ sigfillset(&set2); sigdelset(&set2, SIGINT); sigdelset(&set2, SIGQUIT); /* 중요하지않은코드를수행... */ Unix System Programming 35

36 Signal 관련시스템콜 (17) /* 봉쇄를설정한다. */ sigprocmask(sig_setmask, &set1, NULL); /* 극도로중대한코드를수행한다... */ /* 하나의봉쇄를제거한다. */ sigprocmask(sig_unblock, &set2, NULL); /* (SIGINT 와 SIGQUIT 만을봉쇄 )*/ /* 덜중대한코드를수행한다... */ } /* 모든시그널봉쇄를제거한다. */ sigprocmask(sig_unblock, &set1, NULL); Unix System Programming 36

37 Signal 관련시스템콜 (18) 시그널송신 : kill() #include <sys/types.h> #include <signal.h> int kill(pid_t pid, int sig) /* pid_t pid: 시그널을수신할프로세스 ID */ /* int sig : 전송할시그널번호 */ 지정된프로세스에게시그널을전송한다 첫번째인자 pid 값에따른동작차이 : 0 : 같은프로세스그룹에속하는모든프로세스에게시그널전송 -1 (euid가 root가아닐때 ): 보내는프로세스의 euid와같은 real uid를갖는모든프로세스에게시그널전송 -1 (euid가 root일때 ): 특수한시스템프로세스를제외한모든프로세스에게전송 <0 (not 1): pgid가 pid의절대값과같은모든프로세스에게전송 Unix System Programming 37

38 Signal 관련시스템콜 (19) 시그널송신 : kill() ( 계속 ) 예제 /* synchro -- kill 의예 */ #include <unistd.h> #include <signal.h> int ntimes= 0; int main(void) { pid_t pid, ppid; void p_action(int), c_action(int); static struct sigaction pact, cact; /* 부모를위해 SIGUSR1 행동을지정한다. */ pact.sa_handler= p_action; sigaction(sigusr1, &pact, NULL); switch (pid= fork()){ case 1:/* 오류 */ perror("synchro"); exit (1); Unix System Programming 38

39 Signal 관련시스템콜 (20) case 0:/* 자식 */ /* 자식을위해행동을지정 */ cact.sa_handler= c_action; sigaction(sigusr1, &cact, NULL); /* 부모의프로세스식별번호를얻음. */ ppid= getppid(); for (;;){ sleep (1); kill (ppid, GUSR1); pause(); } /* 결코퇴장 (exit) 않음. */ default: /* 부모 */ for(;;){ pause(); sleep (1); kill (pid, GUSR1); } /* 결코퇴장 (exit) 않음 */ } /* switch */ } /* main */ Unix System Programming 39

40 Signal 관련시스템콜 (21) void p_action (intsig) { printf("parent caught signal #%d\n", ++ntimes); } void c_action (intsig) { printf("child caught signal #%d\n", ++ntimes); } Unix System Programming 40

41 Signal 관련시스템콜 (22) 시그널송신 : kill() ( 계속 ) 예제프로그램 : 교재 pp.332~333, sendsigint.c Unix System Programming 41

42 Signal 관련시스템콜 (23) 시그널송신 : killpg() #include <sys/types.h> #include <signal.h> int killpg(int pgrp, int sig) /* int pgrp: 시그널을수신할프로세스그룹 ID */ /* int sig : 전송할시그널번호 */ 지정된프로세스그룹에게시그널을전송한다 시그널을전송하는프로세스와시그널을수신하는프로세스그룹의유효사용자 ID 가동일하여야한다 Unix System Programming 42

43 Signal 관련시스템콜 (24) 자신에게시그널송신 : raise() #include <signal.h> int raise(int sig) /* int sig : 전송할시그널번호 */ 자기자신에게지정된시그널을전송한다 Unix System Programming 43

44 Signal 관련시스템콜 (25) 타이머알람설정 : alarm() #include <unistd.h> unsigned int alarm(unsigned int seconds) /* unsigned int seconds : SIGALRM 시그널을보낼때까지의시간 ( 초단위 ) */ /* 호출한프로세스의알람클럭이남아있는시간을반환한다 */ 인자에지정한시간이경과한후에 SIGALRM 시그널을보내도록호출프로세스의알람클럭을설정한다 Unix System Programming 44

45 Signal 관련시스템콜 (26) 타이머알람설정 : alarm() ( 계속 ) #include <stdio.h> #include <signal.h> #define TIMEOUT 5 /* 초단위 */ #define MAXTRIES 5 #define LINESIZE 100 #define CTRL_G '\007' /* ASCII 벨 */ #define TRUE 1 #define FALSE 0 /* 타임아웃이발생했는지알아보기위해사용한다. */ static int timed_out; /* 입력줄을보관한다. */ static char answer[linesize]; char *quickreply(char *prompt) { void catch (int); int ntries; static struct sigaction act, oact; Unix System Programming 45

46 Signal 관련시스템콜 (27) /* SIGALRM 을포착하고, 과거행동을저장한다. */ act.sa_handler= catch; sigaction(sigalrm, &act, &oact); for (ntries=0; ntries<maxtries; ntries++){ timed_out = FALSE; printf("\n%s > ", prompt); /* 얼람시계를설정 */ alarm (TIMEOUT); /* 입력줄을가져온다. */ gets (answer); /* 얼람을끈다. */ alarm (0); /* timed_out이참이면, 응답이없는경우이다. */ if (!timed_out) break; } /* for */ Unix System Programming 46

47 Signal 관련시스템콜 (28) /* 과거행동을복원한다. */ sigaction(sigalrm, &oact, NULL); } /* 적절한값을복귀한다. */ return (ntries== MAXTRIES? ((char *)0) : answer); /* SIGALRM 을받으면수행한다. */ void catch (intsig) { /* 타임아웃플래그를설정한다. */ timed_out = TRUE; } /* 벨을울린다. */ putchar(ctrl_g); Unix System Programming 47

48 Signal 관련시스템콜 (29) 시그널수신까지프로세스중단 : pause() #include <unistd.h> int pause(void) /* 시그널에의해호출프로세스가종료하는경우에는반환되지않으며, 시그널을수신하여시그널처리함수를수행하고반환되었을때에반환된다 */ Unix System Programming 48

49 Signal 관련시스템콜 (30) 시그널수신까지프로세스중단 : pause() /* tml -- tell-me-later 프로그램 */ #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <signal.h> #include <unistd.h> #define TRUE 1 #define FALSE 0 #define BELLS "\007\007\007" /*ASCII bells */ int alarm_flag = FALSE; /* SIGALRM을처리할루틴 */ void setflag(intsig) { alarm_flag = TRUE; } main (intargc, char **argv) { Unix System Programming 49

50 Signal 관련시스템콜 (31) int main(int argc, char **argv) { int nsecs, j; pid_t pid; static struct sigaction act; if ( argc<=2 ){ fprintf(stderr, "Usage: tml#minutes message\n"); exit (1); } if ((nsecs=atoi(argv[1])*60) <= 0){ fprintf(stderr, " tml: invalid time\n"); exit (2); } /* 백그라운드프로세스를생성하기위해 fork한다. */ switch (pid= fork()){ case -1: /* 오류 */ perror("tml"); exit (1); case 0: /* 자식 */ break; default: /* 부모 */ printf("tmlprocess-id %d\n", pid); exit (0); } /* switch */ Unix System Programming 50

51 Signal 관련시스템콜 (32) /* 얼람을위한행동을지정한다. */ act.sa_handler= setflag; sigaction(sigalrm, &act, NULL); /* 얼람시계를켠다. */ alarm (nsecs); /* 시그널이올때까지중단 (pause)... */ pause(); /* 만일시그널이 SIGALRM 이면메시지를프린트하라. */ if (alarm_flag == TRUE){ printf(bells); for (j = 2; j < argc; j++) printf("%s", argv[j]); printf("\n"); } } exit (0); Unix System Programming 51

52 Signal 구현및동작 (1) 시그널처리를위한커널기능 시그널보내기 (kill) 시그널발견 : 커널수준수행에서사용자수준수행으로전이할때 사용자수준시그널처리함수등록 (signal) 사용자수준시그널처리함수호출 Unix System Programming 52

53 Signal 구현및동작 (2) 시그널처리를위한태스크자료구조 Unix System Programming 53

54 Signal 구현및동작 (3) 사용자수준시그널처리함수등록 Unix System Programming 54

55 시그널전송 Signal 구현및동작 (4) Unix System Programming 55

56 시그널발견 Signal 구현및동작 (5) Unix System Programming 56

57 시그널처리 Signal 구현및동작 (6) Unix System Programming 57

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

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

<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

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

본 강의에 들어가기 전

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

More information

제1장 Unix란 무엇인가?

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

More information

좀비프로세스 2

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

More information

2009년 상반기 사업계획

2009년 상반기 사업계획 시그널 IT CookBook, 유닉스시스템프로그래밍 학습목표 시그널의기본개념을이해한다. 시그널을보내는방법을이해한다. 시그널을받아서처리하는기본적인방법을이해한다. 시그널집합의개념과사용방법을이해한다. sigaction 함수를사용해시그널을처리하는방법을이해한다. 알람시그널의처리방법을이해한다. 시그널관련기타함수들의사용방법을이해한다. 2/38 목차 시그널의개념 시그널의종류

More information

Microsoft PowerPoint - ch07_시그널 [호환 모드]

Microsoft PowerPoint - ch07_시그널 [호환 모드] 학습목표 시그널의기본개념을이해한다. 시그널을보내는방법을이해한다. 시그널을받아서처리하는기본적인방법을이해한다. 시그널집합의개념과사용방법을이해한다. sigaction 함수를사용해시그널을처리하는방법을이해한다. 알람시그널의처리방법을이해한다. 시그널관련기타함수들의사용방법을이해한다. 시그널 IT CookBook, 유닉스시스템프로그래밍 2/38 목차 시그널의개념 시그널의종류

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

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 인터넷프로토콜 6 장 중급소켓프로그래밍 (2) 목차 제 6 장중급소켓프로그래밍 6.1 소켓옵션 6.2 시그널 6.3 넌블로킹입 / 출력 6.4 멀티태스킹 6.5 멀티플렉싱 6.6 다수의수신자처리 2 시그널 (Signal) 시그널이란? 예상치않은이벤트발생에따른일종의소프트웨어인터럽트 Ex) ctrl + c, ctrl + z, 자식프로세스의종료 외부에서프로세스에게전달할수있는유일한통로

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

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

/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

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

Microsoft PowerPoint - chap9 [호환 모드]

Microsoft PowerPoint - chap9 [호환 모드] 제 9 장프로세스관계 숙대창병모 1 Contents 1. Logins 2. Process Groups 3. Sessions 4. Controlling Terminal 5. Job Control 숙대창병모 2 로그인 숙대창병모 3 터미널로그인 /etc/ttys: 1 line per terminal device getty: opens terminal device

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

<C1A63130C0E5C7C1B7CEBCBCBDBA2E687770>

<C1A63130C0E5C7C1B7CEBCBCBDBA2E687770> 제 10 장프로세스프로그래밍 프로세스시작 / 종료 자식프로세스생성 프로세스내에서새로운프로그램실행 시그널 시스템부팅 10.1 프로그램시작및종료 Unix 에서프로그램은어떻게실행이시작되고종료될까? 프로그램은 10.3 절에서살펴볼 exec 시스템호출에의해실행된다. 이호출은실행될프로그램의시작루틴에게명령줄인수 (command-line arguments) 와환경변수 (environment

More information

리눅스 프로세스 관리

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

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

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

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

<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

PowerPoint 프레젠테이션

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

More information

chap12(process).hwp

chap12(process).hwp 제 12 장프로세스 프로세스는파일과더불어유닉스운영체제가제공하는핵심개념중의하나이다. 유닉스시스템을깊이있게이해하기위해서는프로세스에대해정확히이해해야한다. 이장에서는프로그램이시작되는과정, 프로세스의구조, 프로세스생성및프로그램실행메커니즘, 프로세스사이의시그널등에대해서자세히살펴본다. 12.1 프로그램시작및종료 유닉스에서프로그램은어떻게실행이시작되고종료될까? 프로그램은 12.3절에서살펴볼

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

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

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

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

슬라이드 1

슬라이드 1 7.4 프로세스간통신 Interprocess Communication 기본적인프로세스간통신기법 데이터스트림과파이프 data stream and pipe 정보의송수신에사용되는일련의연속된데이터 a sequence of data used to send or receive information 예 : 프로세스와파일 ( 파일디스크립터을통하여 ) 을연결해주는데이터스트림

More information

<4D F736F F F696E74202D FB8DEB8F0B8AE20B8C5C7CE205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D FB8DEB8F0B8AE20B8C5C7CE205BC8A3C8AF20B8F0B5E55D> 학습목표 통신프로그램이무엇인지이해한다. 을이용한 IPC 기법을이해한다. 함수를사용해프로그램을작성할수있다. IT CookBook, 유닉스시스템프로그래밍 2/20 목차 의개념 함수 해제함수 의보호모드변경 파일의크기확장 매핑된메모리동기화 데이터교환하기 의개념 파일을프로세스의메모리에매핑 프로세스에전달할데이터를저장한파일을직접프로세스의가상주소공간으로매핑 read, write

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

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

제9장 프로세스 제어

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

More information

슬라이드 1

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

More information

2009년 상반기 사업계획

2009년 상반기 사업계획 메모리매핑 IT CookBook, 유닉스시스템프로그래밍 학습목표 통신프로그램이무엇인지이해한다. 메모리매핑을이용한 IPC 기법을이해한다. 메모리매핑함수를사용해프로그램을작성할수있다. 2/20 목차 메모리매핑의개념 메모리매핑함수 메모리매핑해제함수 메모리매핑의보호모드변경 파일의크기확장 매핑된메모리동기화 데이터교환하기 3/20 메모리매핑의개념 메모리매핑 파일을프로세스의메모리에매핑

More information

제1장 Unix란 무엇인가?

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

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

슬라이드 1

슬라이드 1 Task 통신및동기화 : 파이프 (Pipe) Chapter #11 파이프 (Unamed Pipe) 표준입출력과파이프 FIFO(Named Pipe) 강의목차 Unix System Programming 2 파이프 (Unnamed Pipe) 파이프 (Pipe) (1) 하나의프로세스를다른프로세스에연결시켜주는단방향의통신채널 입출력채널과동기화기능을제공하는특수한형태의파일

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

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

11장 포인터

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

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 인터넷프로토콜 6 장 중급소켓프로그래밍 목차 제 6 장중급소켓프로그래밍 6.1 소켓옵션 6.2 시그널 6.3 넌블로킹입 / 출력 6.4 멀티태스킹 6.5 멀티플렉싱 6.6 다수의수신자처리 2 소켓옵션 소켓옵션 (socket options) 소켓의기본동작을변경 소켓코드와프로토콜구현코드에대한세부적인제어가능 소켓옵션관련함수 #include

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

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

03장.스택.key

03장.스택.key ---------------- DATA STRUCTURES USING C ---------------- 03CHAPTER 1 ? (stack): (LIFO:Last-In First-Out) 2 : top : ( index -1 ),,, 3 : ( ) ( ) -> ->. ->.... 4 Stack ADT : (LIFO) : init():. is_empty():

More information

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp Lab 4. Circular singly-linked list 의구현 실험실습일시 : 2009. 4. 6. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 12. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Circular Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Circular

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

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

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

Lab 3. 실습문제 (Single linked list)_해답.hwp

Lab 3. 실습문제 (Single linked list)_해답.hwp Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.

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

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

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

5. 소켓 프로그래밍

5. 소켓 프로그래밍 Chapter 5. 소켓프로그래밍 목차 5.1 소켓옵션들 5.2 신호 (Signals) 5.3 넌블로킹입 출력 (Nonblocking I/O) 5.4 멀티태스킹 (Multitasking) 5.5 멀티플렉싱 (Multiplexing) 5.6 여러수신자들 (Multiple Recipients) 5.1 소켓옵션들 TCP/IP 프로토콜개발자들은대부분의애플리케이션들을만족시킬수있는디폴트동작에대해많은시간고려

More information

2009년 상반기 사업계획

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

More information

슬라이드 1

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

More information

PowerPoint 프레젠테이션

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

More information

5.스택(강의자료).key

5.스택(강의자료).key CHP 5: https://www.youtube.com/watch?v=ns-r91557ds ? (stack): (LIFO:Last-In First-Out):. D C B C B C B C B (element) C (top) B (bottom) (DT) : n element : create() ::=. is_empty(s) ::=. is_full(s) ::=.

More information

제1장 Unix란 무엇인가?

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

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

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

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾ P a 02 r t Chapter 4 TCP Chapter 5 Chapter 6 UDP Chapter 7 Chapter 8 GUI C h a p t e r 04 TCP 1 3 1 2 3 TCP TCP TCP [ 4 2] listen connect send accept recv send recv [ 4 1] PC Internet Explorer HTTP HTTP

More information

제12장 파일 입출력

제12장 파일 입출력 제 4 장파일입출력 리눅스시스템프로그래밍 청주대학교전자공학과 한철수 1 시스템호출 (system call) 파일 (file) 임의접근 (random access) 주요학습내용 2 4.1 절 커널의역할 (kernel) 커널 (kernel) 은운영체제의핵심부분으로서, 하드웨어를운영관리하는여러가지서비스를제공함 파일관리 (File management) 디스크 프로세스관리

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

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - chap13-입출력라이브러리.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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi

More information

PowerPoint 프레젠테이션

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

More information

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2 제 17 장동적메모리와연결리스트 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다.

More information

Microsoft PowerPoint - 10_Process

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

More information

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

1장.  유닉스 시스템 프로그래밍 개요 9 장. 파이프 Unix 프로그래밍및실습 1 강의내용 1 절개요 2 절이름없는파이프 3 절이름있는파이프 http://lily.mmu.ac.kr/lecture/13u2/ch09.pdf 책에나온내용반드시 man 으로확인할것! UNIX, LINUX 등시스템마다차이가있을수있음을반드시인식 2 기본실습 #1 [ 예제 9-1] ~ [ 예제 9-7] ( 각 10점 ) 과제개요

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 얇지만얇지않은 TCP/IP 소켓프로그래밍 C 2 판 Chap. 6 Beyond Basic Socket Programming 제 6 장중급소켓프로그래밍 6.1 소켓옵션 6.2 시그널 6.3 넌블로킹입 / 출력 6.4 멀티태스킹 6.5 멀티플렉싱 6.6 다수의수싞자처리 소켓옵션 소켓옵션 (socket options) 소켓의기본동작을변경 소켓코드와프로토콜구현코드에대한세부적인제어가능

More information

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow

More information

슬라이드 1

슬라이드 1 마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님 학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다. 1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //***

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

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

untitled

untitled 1 hamks@dongguk.ac.kr (goal) (abstraction), (modularity), (interface) (efficient) (robust) C Unix C Unix (operating system) (network) (compiler) (machine architecture) 1 2 3 4 5 6 7 8 9 10 ANSI C Systems

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

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

본 강의에 들어가기 전

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

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

untitled

untitled if( ) ; if( sales > 2000 ) bonus = 200; if( score >= 60 ) printf(".\n"); if( height >= 130 && age >= 10 ) printf(".\n"); if ( temperature < 0 ) printf(".\n"); // printf(" %.\n \n", temperature); // if(

More information

교육지원 IT시스템 선진화

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

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

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

Microsoft PowerPoint - polling.pptx

Microsoft PowerPoint - polling.pptx 지현석 (binish@home.cnu.ac.kr) http://binish.or.kr Index 이슈화된키보드해킹 최근키보드해킹이슈의배경지식 Interrupt VS polling What is polling? Polling pseudo code Polling 을이용한키로거분석 방어기법연구 이슈화된키보드해킹 키보드해킹은연일상한가! 주식, 펀드투자의시기?! 최근키보드해킹이슈의배경지식

More information

학번 : 이름 1. 다음프로그램실행결과를예측하시오. $./a.out & [1] 7216 $ kill -USR $ kill -USR 아래학생이작성한쓰레드코드의문제점을설명하시오. void* thread_main() { pthread_mutex_t

학번 : 이름 1. 다음프로그램실행결과를예측하시오. $./a.out & [1] 7216 $ kill -USR $ kill -USR 아래학생이작성한쓰레드코드의문제점을설명하시오. void* thread_main() { pthread_mutex_t 학번 : 이름 1. 다음프로그램실행결과를예측하시오. $./a.out & [1] 7216 $ kill -USR1 7216 $ kill -USR2 7216 2. 아래학생이작성한쓰레드코드의문제점을설명하시오. void* thread_main() pthread_mutex_t lock=pthread_mutex_initializer; pthread_mutex_lock(&lock);

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

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

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

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

< 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

SYN flooding

SYN flooding Hacking & Security Frontier SecurityFirst SYN flooding - SYN flooding 공격의원리와코드그리고대응 by amur, myusgun, leemeca 2008. 09. myusgun Agenda 개요...3 원리...3 위협...4 잠깐! - 문서에관하여...4 이문서는...4 Code...4 대응방안...4 소스코드...5

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

4. What will be the output of this program? Explain results for each variable and each thread. #include "apue.h" int var=1; pthread_mutex_t lock; void

4. What will be the output of this program? Explain results for each variable and each thread. #include apue.h int var=1; pthread_mutex_t lock; void 학번 : 이름 : 1. What will be the output of this program? assumption: parent's process id=10100, child process id=10101. #include "apue.h" char buf[] = "a write to stdout\n"; int main(void) int var; /* automatic

More information

기술문서 LD_PRELOAD 와공유라이브러리를사용한 libc 함수후킹 정지훈

기술문서 LD_PRELOAD 와공유라이브러리를사용한 libc 함수후킹 정지훈 기술문서 LD_PRELOAD 와공유라이브러리를사용한 libc 함수후킹 정지훈 binoopang@is119.jnu.ac.kr Abstract libc에서제공하는 API를후킹해본다. 물론이방법을사용하면다른라이브러리에서제공하는 API들도후킹할수있다. 여기서제시하는방법은리눅스후킹에서가장기본적인방법이될것이기때문에후킹의워밍업이라고생각하고읽어보자 :D Content 1.

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