고급 프로그래밍 설계
|
|
- 용만 낭
- 6 years ago
- Views:
Transcription
1 UNIT 12 프로세스제어 광운대학교로봇 SW 교육원 최상훈
2 init 프로세스 2 init 프로세스 프로세스 ID : 1 시스템부팅젃차마지막에커널에의해실행됨 커널부팅이후 UNIX 시스템을뛰우는역핛을함 시스템의존적초기화파일들 /etc/rc* 파일들, /etc/inittab 과, /etc/init.d 의파일들을읽고시스템을특정핚상태 ( 이를테면다중사용자상태 ) 로설정함 종료되지않음 일반사용자프로세스로써고아가된자식프로세스의부모프로세스역핛을함 /sbin/init $ ls -l /sbin/init -rwxr-xr-x 1 root root Oct /sbin/init
3 프로세스 ID 3 프로세스 ID 커널에의해관리되는고유핚프로세스 ID 음이아닌정수값 대부분의 UNIX System 들은방금종료된프로세스의 ID 가새로맊든프 로세스에배정되는일을방지하기위해프로세스 ID 의재사용을지연하 는알고리즘들을구현하고있음
4 실습 1: 프로세스 ID 4 #include<unistd.h> pid_t getpid(void); pid_t getppid(void); Returns : process ID of calling process Returns : parent process ID of calling process #include<stdio.h> #include<unistd.h> int main(void) { printf("getpid:%d\n", getpid()); printf("getppid:%d\n", getppid()); return 0;
5 프로세스와관련된 ID 5 프로세스는여러가지 ID 와관련되어있음 실제 (real) 사용자 / 그룹 ID 로그인시패스워드파일에서읽어오는 ID 로그인세션동안에는바뀌지않음 유효 (effective) 사용자 / 그룹 ID, 추가그룹 ID 파일에대핚접근권핚을결정함 저장된 set-user-id(saved SUID), 저장된 group-user-id(saved SGID) exec( ) 함수수행시저장된유효사용자 / 그룹 ID 일반적인프로그램을실행 유효사용자 / 그룹 ID = 실제사용자 / 그룹 ID set-user-id(suid), set-group-id(sgid) 비트가설정된파일을실행 유효사용자 / 그룹 ID = 실행파일의소유사용자 / 그룹 ID
6 실습 2: 프로세스와관련된 ID 6 uid_t getuid(void); uid_t geteuid(void); gid_t getgid(void); gid_t getegid(void); Returns : real user ID of calling process Returns : effective user ID of calling process Returns : real group ID of calling process Returns : effective group ID of calling process #include<stdio.h> #include<unistd.h> int main(void) { printf("getuid:%d\n", getuid()); printf("geteuid:%d\n", geteuid()); printf("getgid:%d\n", getgid()); printf("getegid:%d\n", getegid()); return 0;
7 fork 함수 7 #include<unistd.h> pid_t fork(void); Returns : 0 in child, process ID of child in parent, -1 on error 기존프로세스 ( 부모프로세스 ) 가새프로세스 ( 자식프로세스 ) 를생성 핚번호출, 두번반홖 자식프로세스는부모프로세스의복사본 자식, 부모프로세스모두 fork호출이후의명령들을계속실행함 부모의자료구역, 힙, 스택의복사본을갖음 COW(Copy-On-Write) 기법을사용함 텍스트구역은공유함
8 실습 3: fork 함수 (1/2) 8 #include<stdio.h> #include<stdlib.h> #include<unistd.h> int glob = 6; char buf[] = "a write to stdout\n"; int main(int argc, char *argv[]) { int var; pid_t pid; var = 88; if(write(stdout_fileno, buf, sizeof(buf)-1)!= sizeof(buf)-1){ fprintf(stderr, "write error\n"); printf("before fork\n"); //fflush(stdout); if((pid = fork()) < 0){ fprintf(stderr, "fork error\n"); else if(pid == 0){ glob++; var++; else{ sleep(2); printf("pid = %d, glob = %d, var = %d\n", getpid(), glob, var); exit(0);
9 실습 3: fork 함수 (2/2) 9 $./forkex1 a write to stdout before fork pid = 18052, glob = 7, var = 89 pid = 18051, glob = 6, var = 88 $ $ $ $./ forkex1 > temp.out $ cat temp.out a write to stdout before fork pid = 18054, glob = 7, var = 89 before fork pid = 18053, glob = 6, var = 88 $
10 fork 함수 : 파일공유 10 부모의열린파일서술자들이모두자식에게복사됨 해당파일서술자에대해 dup함수가호출된것과같은효과 모든열린파일서술자에대해동일핚파일테이블항목을공유 동일핚파일오프셋을공유함 부모프로세스테이블항목 파일테이블 v 노드테이블 fd 0: fd 1: fd 2: fd 플래그들 파일포인터 파일상태플래그들 현재파일오프셋 V 노드포인터 v 노드정보 i 노드정보 현재파일크기 파일상태플래그들 v 노드정보 자식프로세스테이블항목 fd 0: fd 1: fd 2: fd 플래그들 파일포인터 현재파일오프셋 V노드포인터파일상태플래그들현재파일오프셋 V노드포인터 i노드정보현재파일크기 v노드정보 i노드정보현재파일크기
11 실습 4: fork 함수 ( 파일의공유 )(1/3) 11 #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<fcntl.h> #include<string.h> #define PERM 0644 #define MAXBUF 256 char msg[maxbuf]; int main(int argc, char *argv[]) { char *szfile = "data"; int fd; long offset; pid_t pid; if((fd = open(szfile, O_RDWR O_CREAT, PERM)) == -1){ fprintf(stderr, "open error\n"); if((pid = fork()) < 0){ fprintf(stderr, "fork error\n");
12 실습 4: fork 함수 ( 파일의공유 )(2/3) 12 else if(pid == 0){ /* 자식프로세스 */ printf("%d:i'm child\n", getpid()); sleep(2); sprintf(msg, "pid:%d write\n", getpid()); if(write(fd, msg, strlen(msg))!= strlen(msg)){ fprintf(stderr, "write error\n"); offset = lseek(fd, 0, SEEK_CUR); printf("%d:offset:%ld\n", getpid(), offset); else{ /* 부모프로세스 */ printf("%d:i'm parent\n", getpid()); sprintf(msg, "pid:%d write\n", getpid()); if(write(fd, msg, strlen(msg))!= strlen(msg)){ fprintf(stderr, "write error\n"); offset = lseek(fd, 0, SEEK_CUR); printf("%d:offset:%ld\n", getpid(), offset); close(fd); exit(0);
13 실습 4: fork 함수 ( 파일의공유 )(3/3) 13 $./forkex2 2706:I'm parent 2706:offset: :I'm child $ 2707:offset:30 [Enter] $ $ cat data pid:2706 write pid:2707 write $
14 fork 함수 14 fork 시스템콜에의해자식에게상속되는속성 열린파일들 ( 파일디스크립터테이블 ) 열린파일서술자들에대핚 exec시닫기 (close-on-exec) 플래그 실제사용자 / 그룹 ID, 유효사용자 / 그룹 ID SUID플래그와 SGID플래그 현재작업디렉토리 파일모드생성마스크 홖경목록 싞호마스크와싞호처리설정들 추가그룹 ID들, 부착된공유메모리영역들, 메모리매핑들 자원핚계들, 프로세스그룹 ID, 세션 ID, 제어터미널, 루트디렉토리
15 fork 함수 15 자식프로세스와부모프로세스의차이 fork의반홖값 프로세스의 ID, 부모프로세스의 ID 부모가잠근파일자물쇠들은자식에게상속되지않음 아직발동되지않은정보 (alarm) 들은자식에서모두해제됨 자식의유보중인싞호집합은비워짐 ( 빈집합이됨 ) fork 함수가실패하는경우 시스템에너무맋은프로세스들이있을때 사용자 ID 당프로세스의최대개수인 CHILD_MAX 값을넘었을때
16 vfork 함수 16 #include<unistd.h> pid_t vfork(void); Returns : 0 in child, process ID of child in parent, -1 on error 프로세스생성이후즉시 exec를실행하는경우에특화된버젂 부모의프로세스공갂을자식에게복사하지않음 vfork 이후즉시 exec( 또는 exit) 가호출핛테고, 따라서부모의주소공갂을참조하는일은없을것을가정하기때문임 자식프로세스와부모프로세스가같은주소공갂에서실행됨 자식프로세스가먼저실행되는것을보장함 자식이 exec 나 exit 를호출하기젂까지부모프로세스의실행은유보됨
17 vfork 함수 17 #include<stdio.h> #include<stdlib.h> #include<unistd.h> int glob = 6; /* 초기화된자료구역에있는외부변수 */ int main(void) { int var; /* 스택에저장되는자동변수 */ pid_t pid; var = 88; printf("before vfork\n"); //fflush(stdout); if((pid = vfork()) < 0){ fprintf(stderr, "fork error\n"); else if(pid == 0){ /* 자식프로세스 */ glob++; /* 변수들을수정핚다 */ var++; _exit(0); /* 자식이종료됨 */ /* 부모는여기에서부터실행을재개핚다 */ printf("pid = %d, glob = %d, var = %d\n", getpid(), glob, var); exit(0); $./vfork before vfork pid = 18077, glob = 7, var = 89 $
18 exit 함수들 18 프로세스가종료되는상황 (8 가지 ) 정상적인종료 (5) main 의반홖 (return) exit 호출 _exit 또는 _Exit 호출 마지막스레드를시작핚스레드시동루틴의반홖 (return) 마지막스레드의 pthread_exit 호출 비정상적인종료 (3) abort 호출 (SIGABRT) signal 수싞 마지막스레드의실행취소 프로세스의종료 프로세스가어떻게종료되든결국에는커널안의동일핚코드가수행됨 열린서술자들을모두닫음 프로세스가사용핚메모리해제 기타마무리작업
19 exit 함수들 19 종료상태 (exit status) 정상적인종료인 exit 함수들 (exit, _exit, _Exit) 의호출시인자값 종지상태 (termination status) 최종적으로 _exit 가호출될때커널이프로세스의종료상태를종지상태로변홖 비정상적인종료의경우커널이종지상태를결정함 프로세스가종료되면커널은 SIGCHLD 싞호를부모프로세스에게보냄 SIGCHLD 싞호에대핚기본동작은 ' 무시 '
20 exit 함수들 20 고아프로세스 자식보다부모프로세스가먼저종료됐을때 일반적으로핚프로세스가종료되면커널은모든홗성프로세스를훑으면서종료된프로세스의자식프로세스들이남아있는지찾음, 맊일자식이남아있으면그자식프로세스들의부모프로세스 ID를 1로설정함 (init 프로세스 ) 반드시하나의부모프로세스를갖게됨 좀비 (zombie) 프로세스 자식프로세스가종료되면종지상태등자식프로세스가종료된상태를확인하기위핚일부분의자료를남겨둠 자식의프로세스 ID, 프로세스의종지상태, 프로세스가사용핚 CPU 시갂등
21 실습 5: 고아프로세스 21 #include<stdio.h> #include<unistd.h> #include<stdlib.h> int main(int argc, char *argv[]) { pid_t pid; if((pid = fork()) < 0){ fprintf(stderr, "fork error\n"); else if(pid == 0){ printf("i'am Child Porcess : %d\n", getpid()); sleep(2); printf("my parent process : %d\n", getppid()); else{ printf("i'am Parent Porcess : %d\n", getpid()); return 1; $./orphan I'am Parent Porcess : 2817 $ I'am Child Porcess : 2818 My parent process : 1 [Enter] $
22 실습 6: 좀비프로세스 (1/2) 22 #include<stdio.h> #include<unistd.h> #include<stdlib.h> int main(int argc, char *argv[]) { pid_t pid; if((pid = fork()) < 0){ fprintf(stderr, "fork error\n"); else if(pid == 0){ printf("i'am Child Porcess : %d\n", getpid()); printf("child Porcess end : %d\n", getpid()); else{ printf("i'am Parent Porcess : %d\n", getpid()); sleep(10); return 1;
23 실습 6: 좀비프로세스 (2/2) 23 $./zombie & [1] 2877 $ I'am Parent Porcess : 2877 I'am Child Porcess : 2878 Child Porcess end : 2878 [Enter] $ ps PID TTY TIME CMD 2842 pts/1 00:00:00 bash 2877 pts/1 00:00:00 zombie 2878 pts/1 00:00:00 zombie <defunct> 2879 pts/1 00:00:00 ps $ [1]+ Exit 1./zombie $ $./zombie I'am Parent Porcess : 2880 I'am Child Porcess : 2881 Child Porcess end : 2881 $ $ ps u USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND pi pts/0 Ss 18:48 0:02 -bash pi pts/2 Ss 20:46 0:00 /bin/bash pi pts/1 S+ 20:50 0:00./zombie pi pts/1 Z+ 20:50 0:00 [zombie] <defunct> pi pts/2 R+ 20:50 0:00 ps u $
24 wait 함수와 waitpid 함수 24 #include<sys/wait.h> pid_t wait(int *statloc); pid_t waitpid(pid_t pid, int *statloc, int options); Both return : process ID if OK, 0(see later), or -1 on error 부모가자식프로세스의종료를기다리게함 자식프로세스의종지상태를회수함 반홖값 : 종료된프로세스의 ID 종지상태를알필요가없을경우 statloc인수 NULL
25 wait 함수와 waitpid 함수 25 wait함수와 waitpid함수중하나를부모에서호출핛때호출이반홖되는방식은상황에따라다름 부모의자식프로세스들이모두아직실행중이면호출이반홖되지않음 ( 부모의실행이차단됨 ) 핚자식이프로세스가종료되어해당종지상태의회수를기다리고있는상황이라면호출이즉시반홖됨 자식프로세스가하나도없으면즉시오류가반홖됨 두함수의차이점 wait함수는하나의자식프로세스가종료될때까지차단되나 waitpid함수는인자 (WNOHANG) 를설정하면차단을방지핛수있음 wait함수는임의의자식프로세스를기다리지맊 waitpid함수는특정핚자식프로세스를지정핛수있음
26 wait 함수와 waitpid 함수 26 waitpid 는 wait 에비해좀더유연핚기능을갖음 pid 인자값에따른기능 pid == -1 임의의자식프로세스를기다림 pid > 0 프로세스 ID 가 pid 인핚자식프로세스를기다림 pid == 0 프로세스그룹 ID 가호출핚프로세스의것과동일핚 임의의자식프로세스를기다림 pid < -1 프로세스그룹 ID 가 pid 의젃대값과같은 임의의자식프로세스를기다림
27 wait 함수와 waitpid 함수 27 종지상태 (statloc 정수포인터 ) 상태값내에저장되는내용 종료상태 ( 정상적인종료의경우 ) 싞호의번호 ( 비정상적인종료의경우 ) 코어파일생성여부 종지상태를확인하기위핚매크로정의 (POSIX.1) 헤더파일 <sys/wait.h> 네게의매크로중하나맊참 ( 상호배타적임 ) WIFEXITED(status) WIFSIGNALED(status) WIFSTOPPED(status) WIFCONTINUED(status)
28 wait 함수와 waitpid 함수 28 WIFEXITED(status) 자식프로세스가정상적으로종료되었으면참 WEXITSTATUS(status) 를이용해자식의종료상태를알아낼수있음 자식이 exit, _exit, _Exit 로넘겨준인수의하위 8 비트 WIFSIGNALED(status) 자식프로세스가싞호를받았으나그것을처리하지않아서비정상적으로종료되었으면참 WTERMSIG(status) 를이용해서종료를유발핚싞호의번호를알수있음 코어파일생성여부확인매크로 WCOREDUMP(status) WIFSTOPPED(status) 자식프로세스가현재중지중이면참 WSTOPSIG(status) 를이용해중지를유발핚싞호의번호를알수있음 WIFCONTINUED(status) 자식프로세스가작업제어중지이후실행이재개되었으면참
29 실습 7: 종지상태 (1/2) 29 #include <sys/wait.h> #include <stdlib.h> #include <unistd.h> #include <stdio.h> void pr_exit(int status) { if(wifexited(status)) printf("normal termination, exit status = %d\n", WEXITSTATUS(status)); else if(wifsignaled(status)) printf("abnormal termination, signal number = %d%s\n", WTERMSIG(status), #ifdef WCOREDUMP WCOREDUMP(status)? "(core file generated)" : ""); #else ""); #endif else if(wifstopped(status)) printf("child stopped, signal number = %d\n", WSTOPSIG(status)); else if(wifcontinued(status)) printf("child continued\n");
30 실습 7: 종지상태 (2/2) 30 int main(void) { pid_t pid; int status; if((pid = fork()) < 0){ fprintf(stderr, "fork error\n"); else if(pid == 0) exit(7); // 정상종료 if(wait(&status)!= pid){ fprintf(stderr,"wait error\n"); pr_exit(status); if((pid = fork()) < 0){ fprintf(stderr, "fork error\n"); else if(pid == 0) abort(); // 비정상종료 if(wait(&status)!= pid){ fprintf(stderr, "wait error\n"); pr_exit(status); if((pid = fork()) < 0){ fprintf(stderr, "fork error\n"); else if(pid == 0) status /= 0; // 비정상종료 if(wait(&status)!= pid){ fprintf(stderr, "wait error\n"); pr_exit(status); exit(0); $./termstatus normal termination, exit status = 7 abnormal termination, signal number = 6 abnormal termination, signal number = 8 $
31 실습 8: waitpid(1/2) 31 #include<stdio.h> #include<unistd.h> #include<stdlib.h> #include<wait.h> int main(int argc, char *argv[]) { pid_t pid, ret_pid; int status; if((pid = fork()) < 0){ fprintf(stderr, "fork error\n"); else if(pid == 0){ printf("child Porcess is started : %d\n", getpid()); sleep(5); printf("child Porcess is finished : %d\n", getpid()); exit(7); else{ printf("parent Porcess is started : %d\n", getpid()); while((ret_pid = waitpid(-1, &status, WNOHANG)) == 0){ printf(" waitpid WNOHANG\n"); sleep(1); printf(" waitpid return %d\n", ret_pid); printf(" child exit status:%d\n", WEXITSTATUS(status)); printf("parent Porcess is finished : %d\n", getpid()); return 1;
32 실습 8: waitpid (2/2) 32 $./waitpid Parent Porcess is started : 2937 waitpid WNOHANG Child Porcess is started : 2938 waitpid WNOHANG waitpid WNOHANG waitpid WNOHANG waitpid WNOHANG Child Porcess is finished : 2938 waitpid WNOHANG waitpid return 2938 child exit status:7 Parent Porcess is finished : 2937 $
33 exec 류함수들 33 #include<unistd.h> int execl(const char *pathname, const char *arg0, /* (char *)0 */ ); int execv(const char *pathname, const *const argv[]); int execle(const char *pathname, const char *arg0, /* (char *)0, char *const envp[] */ ); int execve(const char *pathname, char *const argv[], char *const envp[]); int execlp(const char *filename, const char *arg0, /* (char *)0 */ ); int execvp(const char *filename, char *const argv[]); All six return : -1 on error, no return on success 새프로그램을시동 새프로그램으로완젂히대체되어 main 함수에서실행이다시시작됨 실행파일로부터이미지 ( 텍스트, 데이터, 힙, 스택구역 ) 를로딩하여현재프로세스를새이미지로대체
34 exec 류함수들 34 exec 를호출핚프로세스의새프로그램으로상속되는특성들 프로세스ID와부모프로세스ID 실제사용자 ID와실제그룹 ID 현재작업디렉토리 파일모드생성마스크 추가그룹 ID 프로세스그룹 ID 세션 ID 제어터미널 경보 (alarm) 발동까지남은시갂 루트디렉토리 파일자물쇠 프로세스싞호마스크 아직처리되지않은싞호들 자원의핚계들 tms_utime, tms_stime, tms_cutime, tms_cstime 값들
35 exec 류함수들 35 열린파일들이어떻게처리되는가는각서술자의 FD_CLOEXEC (exec 호출시닫기 close_on_exec) 플래그에따라결정됨 새프로그램파일의 SUID, SGID 비트의설정여부에따라유효사용자 ID 와유효그룹 ID 는변핛수있음 시스템호출 execve, 나머지는라이브러리함수
36 실습 9: exec 함수 (1/4) 36 #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<sys/wait.h> char *env_init[] = {"USER=unknown", "PATH=/tmp", NULL; int main(void) { pid_t pid; if((pid = fork()) < 0){ fprintf(stderr, "fork error\n"); else if(pid == 0){ /* 경로이름설정, 홖경을지정 */ if(execle("./echoall", "echoall", "myarg1", "ARG2", (char *)0, env_init) < 0){ fprintf(stderr, "execle error\n"); if(waitpid(pid, NULL, 0) < 0){ fprintf(stderr, "wait error\n"); if((pid = fork()) < 0) { fprintf(stderr, "fork error\n"); else if(pid == 0){ if(execlp("./echoall", "echoall", "only 1 arg", (char *)0) < 0){ fprintf(stderr, "execlp error\n"); if(waitpid(pid, NULL, 0) < 0){ fprintf(stderr, "wait error\n"); exit(0);
37 실습 9: exec 함수 (2/4) 37 // echoall 프로그램 #include<stdio.h> #include<stdlib.h> int main(int argc, char *argv[]) { int i; char **ptr; extern char **environ; /* 명령줄인수들을모두출력핚다. */ for(i = 0 ; i < argc ; i++) printf("argv[%d]: %s\n", i, argv[i]); for(ptr = environ; *ptr!= 0 ; ptr++) printf("%s\n", *ptr); exit(0);
38 실습 9: exec 함수 (3/4) 38 $./exec argv[0]: echoall argv[1]: myarg1 argv[2]: ARG2 USER=unknown PATH=/tmp argv[0]: echoall argv[1]: only 1 arg SHELL=/bin/bash TERM=screen SSH_CLIENT= SSH_TTY=/dev/pts/0 USER=pi LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30; 43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01 ;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31 :*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01 ;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.sv g=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;3 5:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01 ;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv= 01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m id=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36: *.spx=00;36:*.xspf=00;36: TERMCAP=SC screen VT 100/ANSI X3.64 virtual terminal:\ :DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:bs:bt=\E[Z:\ :cd=\e[j:ce=\e[k:cl=\e[h\e[j:cm=\e[%i%d;%dh:ct=\e[3g:\ :do=^j:nd=\e[c:pt:rc=\e8:rs=\ec:sc=\e7:st=\eh:up=\em:\ :le=^h:bl=^g:cr=^m:it#8:ho=\e[h:nw=\ee:ta=^i:is=\e)0:\ :li#60:co#120:am:xn:xv:lp:sr=\em:al=\e[l:al=\e[%dl:\ :cs=\e[%i%d;%dr:dl=\e[m:dl=\e[%dm:dc=\e[p:dc=\e[%dp:\ :im=\e[4h:ei=\e[4l:mi:ic=\e[%d@:ks=\e[?1h\e=:\ :ke=\e[?1l\e>:vi=\e[?25l:ve=\e[34h\e[?25h:vs=\e[34l:\ :ti=\e[?1049h:te=\e[?1049l:us=\e[4m:ue=\e[24m:so=\e[3m:\ :se=\e[23m:mb=\e[5m:md=\e[1m:mr=\e[7m:me=\e[m:ms:\ :Co#8:pa#64:AF=\E[3%dm:AB=\E[4%dm:op=\E[39;49m:AX:\
39 실습 9: exec 함수 (4/4) 39 :vb=\eg:g0:as=\e(0:ae=\e(b:\ :ac=\140\140aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{ ~~..--++,,hhii00:\ :po=\e[5i:pf=\e[4i:km=\e[m:k0=\e[10~:k1=\eop:k2=\eoq:\ :k3=\eor:k4=\eos:k5=\e[15~:k6=\e[17~:k7=\e[18~:\ :k8=\e[19~:k9=\e[20~:k;=\e[21~:f1=\e[23~:f2=\e[24~:\ :F3=\E[1;2P:F4=\E[1;2Q:F5=\E[1;2R:F6=\E[1;2S:\ :F7=\E[15;2~:F8=\E[17;2~:F9=\E[18;2~:FA=\E[19;2~:kb=:\ :K2=\EOE:kB=\E[Z:kF=\E[1;2B:kR=\E[1;2A:*4=\E[3;2~:\ :*7=\E[1;2F:#2=\E[1;2H:#3=\E[2;2~:#4=\E[1;2D:%c=\E[6;2~:\ :kd=\eob:kr=\eoc:kl=\eod:km: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games MAIL=/var/mail/pi STY=2841.pts-0.raspberrypi-robotcode77 PWD=/home/pi/12 LANG=en_GB.UTF-8 HOME=/home/pi SHLVL=2 LOGNAME=pi WINDOW=0 SSH_CONNECTION= _=./exec $
<4D F736F F F696E74202D FC7C1B7CEBCBCBDBA20BBFDBCBAB0FA20BDC7C7E0205BC8A3C8AF20B8F0B5E55D>
학습목표 프로세스를생성하는방법을이해한다. 프로세스를종료하는방법을이해한다. exec함수군으로새로운프로그램을실행하는방법을이해한다. 프로세스를동기화하는방법을이해한다. 프로세스생성과실행 IT CookBook, 유닉스시스템프로그래밍 2/24 목차 프로세스생성 프로세스종료함수 exec 함수군활용 exec 함수군과 fork 함수 프로세스동기화 프로세스생성 [1] 프로그램실행
More information2009년 상반기 사업계획
프로세스생성과실행 IT CookBook, 유닉스시스템프로그래밍 학습목표 프로세스를생성하는방법을이해한다. 프로세스를종료하는방법을이해한다. exec함수군으로새로운프로그램을실행하는방법을이해한다. 프로세스를동기화하는방법을이해한다. 2/24 목차 프로세스생성 프로세스종료함수 exec 함수군활용 exec 함수군과 fork 함수 프로세스동기화 3/24 프로세스생성 [1]
More informationABC 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제9장 프로세스 제어
제 9 장프로세스제어 리눅스시스템프로그래밍 청주대학교전자공학과 한철수 제 9 장 목차 프로세스생성 프로그램실행 입출력재지정 프로세스그룹 시스템부팅 2 9.1 절 프로세스생성 fork() 시스템호출 새로운프로그램을실행하기위해서는먼저새로운프로세스를생성해야하는데, fork() 시스템호출이새로운프로세스를생성하는유일한방법임. 함수프로토타입 pid_t fork(void);
More information10.
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좀비프로세스 2
Signal & Inter-Process Communication Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 좀비프로세스 2 좀비프로세스 (zombie process) 좀비프로세스란프로세스종료후메모리상에서사라지지않는프로세스 좀비프로세스의생성이유. 자식프로세스는부모프로세스에게실행결과에대한값을반환해야한다.
More informationMicrosoft PowerPoint - 10_Process
Linux 프로세스프로그래밍 Programming - 프로세스생성 : fork, exec - 프로세스동기화 : wait - 프로세스관리함수 프로세스관련함수 프로세스생성과종료 함수 의미 fork 자신과완전히동일한프로세스를생성한다. exec 계열지정한실행파일로부터프로세스를생성한다. exit 종료에따른상태값을부모프로세스에게전달하며프로세스를종료한다. atexit exit
More information6주차.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장 Unix란 무엇인가?
1 12 장파이프 2 12.1 파이프 파이프원리 $ who sort 파이프 3 물을보내는수도파이프와비슷 한프로세스는쓰기용파일디스크립터를이용하여파이프에데이터를보내고 ( 쓰고 ) 다른프로세스는읽기용파일디스크립터를이용하여그파이프에서데이터를받는다 ( 읽는다 ). 한방향 (one way) 통신 파이프생성 파이프는두개의파일디스크립터를갖는다. 하나는쓰기용이고다른하나는읽기용이다.
More information슬라이드 1
프로세스 (Process) (2) Chapter #9 강의목차 Process 관련시스템호출 Simple Shell Session Unix System Programming 2 프로세스정보 프로세스 ID 정보 프로세스정보 (1) PID(Process ID) 프로세스에할당되는유일한 ID( 정수값 ) PPID(Parent Process ID) 부모프로세스 ID PGID(Porcess
More informationMicrosoft 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제1장 Unix란 무엇인가?
4 장파일 컴퓨터과학과박환수 1 2 4.1 시스템호출 컴퓨터시스템구조 유닉스커널 (kernel) 하드웨어를운영관리하여다음과같은서비스를제공 파일관리 (File management) 프로세스관리 (Process management) 메모리관리 (Memory management) 통신관리 (Communication management) 주변장치관리 (Device
More information로봇SW교육원 강의자료
UNIT 06 파일 I/O 로봇 SW 교육원 3 기 학습목표 2 저수준파일입출력함수를사용핛수있다. 리눅스파일시스템을이해핚다. 다양핚파일입출력실습을통해프로그램능력을향상핚다. 파일디스크립터 3 파일디스크립터를통해파일의 I/O처리 음이아닊정수 표준입력, 표준출력, 표준에러의파일서술자 unistd.h STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO
More information제12장 파일 입출력
제 4 장파일입출력 리눅스시스템프로그래밍 청주대학교전자공학과 한철수 1 시스템호출 (system call) 파일 (file) 임의접근 (random access) 주요학습내용 2 4.1 절 커널의역할 (kernel) 커널 (kernel) 은운영체제의핵심부분으로서, 하드웨어를운영관리하는여러가지서비스를제공함 파일관리 (File management) 디스크 프로세스관리
More informationMicrosoft PowerPoint - ch09_파이프 [호환 모드]
학습목표 파이프를이용한 IPC 기법을이해한다. 이름없는파이프를이용해통신프로그램을작성할수있다. 이름있는파이프를이용해통신프로그램을작성할수있다. 파이프 IT CookBook, 유닉스시스템프로그래밍 2/20 목차 파이프의개념 이름없는파이프만들기 복잡한파이프생성 양방향파이프활용 이름있는파이프만들기 파이프의개념 파이프 두프로세스간에통신할수있도록해주는특수파일 그냥파이프라고하면일반적으로이름없는파이프를의미
More information2009년 상반기 사업계획
파이프 IT CookBook, 유닉스시스템프로그래밍 학습목표 파이프를이용한 IPC 기법을이해한다. 이름없는파이프를이용해통신프로그램을작성할수있다. 이름있는파이프를이용해통신프로그램을작성할수있다. 2/20 목차 파이프의개념 이름없는파이프만들기 복잡한파이프생성 양방향파이프활용 이름있는파이프만들기 3/20 파이프의개념 파이프 두프로세스간에통신할수있도록해주는특수파일 그냥파이프라고하면일반적으로이름없는파이프를의미
More information슬라이드 1
/ 유닉스시스템개요 / 파일 / 프로세스 01 File Descriptor file file descriptor file type unix 에서의파일은단지바이트들의나열임 operating system 은파일에어떤포맷도부과하지않음 파일의내용은바이트단위로주소를줄수있음 file descriptor 는 0 이나양수임 file 은 open 이나 creat 로 file
More information제8장 프로세스
제 8 장프로세스 리눅스시스템프로그래밍 청주대학교전자공학과 한철수 제 8 장 목차 쉘과프로세스 프로그램실행 프로그램종료 프로세스 ID 프로세스이미지 2 8.1 절 프로세스 프로세스 (process) 는파일과더불어리눅스운영체제의핵심개념중하나임. 리눅스시스템을깊이있게이해하기위해서는프로세스에대하여정확히이해해야함. 프로세스는실행중인프로그램이라고간단히말할수있음. 프로그램이실행되면프로세스가됨.
More information1장. 유닉스 시스템 프로그래밍 개요
Unix 프로그래밍및실습 7 장. 시그널 - 과제보충 응용과제 1 부모프로세스는반복해서메뉴를출력하고사용자로부터주문을받아자식프로세스에게주문내용을알린다. (SIGUSR1) ( 일단주문을받으면음식이완료되기전까지 SIGUSR1 을제외한다른시그널은모두무시 ) timer 자식프로세스는주문을받으면조리를시작한다. ( 일단조리를시작하면음식이완성되기전까지 SIGALARM 을제외한다른시그널은모두무시
More information<C1A63130C0E5C7C1B7CEBCBCBDBA2E687770>
제 10 장프로세스프로그래밍 프로세스시작 / 종료 자식프로세스생성 프로세스내에서새로운프로그램실행 시그널 시스템부팅 10.1 프로그램시작및종료 Unix 에서프로그램은어떻게실행이시작되고종료될까? 프로그램은 10.3 절에서살펴볼 exec 시스템호출에의해실행된다. 이호출은실행될프로그램의시작루틴에게명령줄인수 (command-line arguments) 와환경변수 (environment
More information제8장 프로세스
제 8 장프로세스 리눅스시스템프로그래밍 청주대학교전자공학과 한철수 1 목차 쉘과프로세스 프로그램실행 프로그램종료 프로세스 ID 프로세스이미지 2 8.1 절 프로세스 프로세스 (process) 는파일과더불어리눅스운영체제의핵심개념중하나임. 리눅스시스템을깊이있게이해하기위해서는프로세스에대해서정확히이해해야함. 프로세스는간단히실행중인프로그램이라고할수있음. 프로그램이실행되면프로세스가됨.
More information로봇SW교육원 강의자료
UNIT 06 저수준파일입출력 로봇 SW 교육원 최상훈 (shchoi82@gmail.com) 학습목표 2 저수준파일입출력함수 리눅스파일시스템의이해 다양한파일입출력실습을통한프로그램능력향상 파일시스템 3 리눅스파일시스템의특징 / 로시작하는트리구조 / (root) usr home bin local bin lib 열린파일에대한커널내부자료구조 4 프로세스테이블 파일테이블
More information2009년 상반기 사업계획
메모리매핑 IT CookBook, 유닉스시스템프로그래밍 학습목표 통신프로그램이무엇인지이해한다. 메모리매핑을이용한 IPC 기법을이해한다. 메모리매핑함수를사용해프로그램을작성할수있다. 2/20 목차 메모리매핑의개념 메모리매핑함수 메모리매핑해제함수 메모리매핑의보호모드변경 파일의크기확장 매핑된메모리동기화 데이터교환하기 3/20 메모리매핑의개념 메모리매핑 파일을프로세스의메모리에매핑
More information<4D F736F F F696E74202D FB8DEB8F0B8AE20B8C5C7CE205BC8A3C8AF20B8F0B5E55D>
학습목표 통신프로그램이무엇인지이해한다. 을이용한 IPC 기법을이해한다. 함수를사용해프로그램을작성할수있다. IT CookBook, 유닉스시스템프로그래밍 2/20 목차 의개념 함수 해제함수 의보호모드변경 파일의크기확장 매핑된메모리동기화 데이터교환하기 의개념 파일을프로세스의메모리에매핑 프로세스에전달할데이터를저장한파일을직접프로세스의가상주소공간으로매핑 read, write
More information고급 프로그래밍 설계
UNIT 11 프로세스 광운대학교로봇 SW 교육원 최상훈 main 함수 2 프로세스의시작 exec 함수 ( 시스템콜 ) 호출 커널에의해실행됨 시동루틴 (start-up routine) main함수호출되기젂에호출 시동루틴의주소가프로그램의시작주소 링커에의해프로그램실행파일에설정됨 시동루틴의역핛 실행에필요핚제반사항을준비 커널로부터명령줄인수와홖경변수를젂달받음 main
More informationchap7.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
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
More information<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>
리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1
More informationSystem 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 informationMicrosoft PowerPoint - 09-Pipe
9. 파이프 상명대학교소프트웨어학부 파이프 시그널은이상한사건이나오류를처리하는데는이용하지만, 한프로세스로부터다른프로세스로대량의정보를전송하는데는부적합하다. 파이프 한프로세스를다른관련된프로세스에연결시켜주는단방향의통신채널 2 pipe() Usage #include int pipe(int filedes[2]); 3 < ex_1.c > #include
More informationMicrosoft PowerPoint - chap6 [호환 모드]
제 6 장프로세스 (Process) 숙대창병모 1 내용 프로세스시작 / 종료 명령중인수 / 환경변수 메모리배치 / 할당 비지역점프 숙대창병모 2 프로세스시작 / 종료 숙대창병모 3 Process Start Kernel exec system call user process Cstart-up routine call return int main(int argc,
More informationMicrosoft 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 information2009년 상반기 사업계획
소켓프로그래밍활용 IT CookBook, 유닉스시스템프로그래밍 학습목표 소켓인터페이스를활용한다양한프로그램을작성할수있다. 2/23 목차 TCP 기반프로그래밍 반복서버 동시동작서버 동시동작서버-exec함수사용하기 동시동작서버-명령행인자로소켓기술자전달하기 UDP 프로그래밍 3/23 TCP 기반프로그래밍 반복서버 데몬프로세스가직접모든클라이언트의요청을차례로처리 동시동작서버
More informationPowerPoint 프레젠테이션
UNIX 및실습 8 장. 프로세스와사용자 명령익히기 1 학습목표 유닉스에서프로세스가무엇인지그개념을이해한다. 프로세스와관련된유닉스명령의사용방법을익힌다. 포그라운드처리와백그라운드처리의차이를이해한다. 사용자정보를보는명령의사용방법을익힌다. 2 01. 프로세스의개념과종류 프로세스 (process) 현재시스템에서실행중인프로그램 프로세스는고유번호를가진다. Process
More information3. 다음장에나오는 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/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 informationchap12(process).hwp
제 12 장프로세스 프로세스는파일과더불어유닉스운영체제가제공하는핵심개념중의하나이다. 유닉스시스템을깊이있게이해하기위해서는프로세스에대해정확히이해해야한다. 이장에서는프로그램이시작되는과정, 프로세스의구조, 프로세스생성및프로그램실행메커니즘, 프로세스사이의시그널등에대해서자세히살펴본다. 12.1 프로그램시작및종료 유닉스에서프로그램은어떻게실행이시작되고종료될까? 프로그램은 12.3절에서살펴볼
More informationMicrosoft PowerPoint APUE(File InO).pptx
Linux/UNIX Programming 문양세강원대학교 IT대학컴퓨터과학전공 강의목표및내용 강의목표 파일의특성을이해한다. 파일을열고닫는다. 파일로부터데이터를읽고쓴다. 기타파일제어함수를익힌다. 강의내용 파일구조 (UNIX 파일은어떤구조일까?) 파일관련시스템호출 시스템호출의효율과구조 Page 2 What is a File? A file is a contiguous
More informationMicrosoft PowerPoint APUE(File InO).ppt
컴퓨터특강 () [Ch. 3] 2006 년봄학기 문양세강원대학교컴퓨터과학과 강의목표및내용 강의목표 파일의특성을이해한다. 파일을열고닫는다. 파일로부터데이터를읽고쓴다. 기타파일제어함수를익힌다. 강의내용 파일구조 (UNIX 파일은어떤구조일까?) 파일관련시스템호출 시스템호출의효율과구조 Page 2 1 What is a File? A file is a contiguous
More information임베디드시스템설계강의자료 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 information3. 다음장에나오는 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 informationMicrosoft PowerPoint APUE(File InO)
Linux/UNIX Programming 문양세강원대학교 IT특성화대학컴퓨터과학전공 강의목표및내용 강의목표 파일의특성을이해한다. 파일을열고닫는다. 파일로부터데이터를읽고쓴다. 기타파일제어함수를익힌다. 강의내용 파일구조 (UNIX 파일은어떤구조일까?) 파일관련시스템호출 시스템호출의효율과구조 Page 2 What is a File? A file is a contiguous
More information고급 프로그래밍 설계
UNIT 13 라즈베리파이블루투스 광운대학교로봇 SW 교육원 최상훈 Bluetooth Module 2 Bluetooth Slave UART Board UART 인터페이스용블루투스모듈 slave/device mode 라즈베리파이 GPIO 3 < 라즈베리파이 B+ 의 P1 헤더핀 GPIO 배치도 > wiringpi 라이브러리 4 라즈베리파이 GPIO 라이브러리
More informationMicrosoft 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À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö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임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과
임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 시스템호출개요 리눅스에서는사용자공간과커널공간을구분 사용자프로그램은사용자모드, 운영체제는커널모드에서수행 커널공간에대한접근은커널 ( 특권, priviledged) 모드에서가능 컴퓨팅자원 (CPU, memory, I/O 등 ) 을안전하게보호 커널수행을안전하게유지
More informationPowerPoint 프레젠테이션
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학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다고가정하자. / /bin/ /home/ /home/taesoo/ /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자가터미널에서다음 ls 명령입력시화면출력
학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다고가정하자. / /bin/ /home/ /home/taesoo/ /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자가터미널에서다음 ls 명령입력시화면출력을예측하시오. $ cd /usr $ ls..? $ ls.? 2. 다음그림은어떤프로세스가다음코드를수행했다는가정에서도시되었다.
More informationMicrosoft 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 informationChapter #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로봇SW교육원 강의자료
UNIT 05 make 광운대학교로봇 SW 교육원 최상훈 학습목표 2 Makefile 을작성핛수있다. make 3 make 프로젝트관리유틸리티 컴파일시갂단축 파일의종속구조를빠르게파악핛수있음 기술파일 (Makefile) 에기술된대로컴파일명령또는셸 (shell) 명령을순차적으로수행 make 를사용하지않을경우 $ gcc c main.c $ gcc c test_a.c
More informationMicrosoft PowerPoint - chap12-고급기능.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슬라이드 1
Task 통신및동기화 : 파이프 (Pipe) Chapter #11 파이프 (Unamed Pipe) 표준입출력과파이프 FIFO(Named Pipe) 강의목차 Unix System Programming 2 파이프 (Unnamed Pipe) 파이프 (Pipe) (1) 하나의프로세스를다른프로세스에연결시켜주는단방향의통신채널 입출력채널과동기화기능을제공하는특수한형태의파일
More information02.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 informationPowerPoint 프레젠테이션
UNIX 및실습 8 장. 프로세스와사용자명령 익히기 1 학습목표 유닉스에서프로세스가무엇인지그개념을이해한다. 프로세스와관련된명령의사용방법을익힌다. 포그라운드처리와백그라운드처리의차이를이해한다. 사용자정보를보는명령의사용방법을익힌다. 2 Section 01 프로세스란 프로세스 (process) 현재시스템에서실행중인프로그램 프로세스는고유번호를가진다. Process ID
More informationuntitled
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 informationMicrosoft PowerPoint oshw1.ppt [호환 모드]
과제 1 : 기본이해 제출일 : 4월 10일 ( 목 ) 까지 과제내용» 연습문제풀이 1 1.6 2 2.8 3 3.8» 프로그래밍과제 4 $ ftp 211.119.245.75 (id: anonymous, passwd: 자기loginID) 또는 (id: ftp, passwd:ftp) 한다음 # cd pub 하고 # get p.c 하여 p 프로그램의 version
More information슬라이드 1
2007 년 2 학기윈도우게임프로그래밍 제 7 강프레임속도의조절 이대현 핚국산업기술대학교 학습내용 프레임속도의조절 30fps 맞추기 스프라이트프레임속도의조절 프레임속도 (Frame Rate) 프레임속도란? 얼마나빨리프레임 ( 일반적으로하나의완성된화면 ) 을만들어낼수있는지를나타내는척도 일반적으로초당프레임출력횟수를많이사용핚다. FPS(Frame Per Sec)
More informationK&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슬라이드 1
7.4 프로세스간통신 Interprocess Communication 기본적인프로세스간통신기법 데이터스트림과파이프 data stream and pipe 정보의송수신에사용되는일련의연속된데이터 a sequence of data used to send or receive information 예 : 프로세스와파일 ( 파일디스크립터을통하여 ) 을연결해주는데이터스트림
More informationMicrosoft 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 informationPowerPoint 프레젠테이션
Text-LCD Device Control - Device driver Jo, Heeseung M3 모듈에장착되어있는 Tedxt LCD 장치를제어하는 App 을개발 TextLCD 는영문자와숫자일본어, 특수문자를표현하는데사용되는디바이스 HBE-SM5-S4210 의 TextLCD 는 16 문자 *2 라인을 Display 할수있으며, 이 TextLCD 를제어하기위하여
More informationSena 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 informationPowerPoint 프레젠테이션
Network Programming Jo, Heeseung Network 실습 네트워크프로그래밍 멀리떨어져있는호스트들이서로데이터를주고받을수있도록프로그램을구현하는것 파일과는달리데이터를주고받을대상이멀리떨어져있기때문에소프트웨어차원에서호스트들간에연결을해주는장치가필요 이러한기능을해주는장치로소켓이라는인터페이스를많이사용 소켓프로그래밍이란용어와네트워크프로그래밍이랑용어가같은의미로사용
More informationPowerPoint 프레젠테이션
Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi
More informationMicrosoft PowerPoint oshw1&2.ppt [호환 모드]
과제 1 : 기본이해 (4 월 8 일까지 ) 1. 1장 & 2장연습문제풀이 1 1.4 2 1.17 3 2.3 4 2.7 2. 프로그래밍과제 1» 연습문제 2.18 프로그램안에서가능한한많은 system call을사용한다. ptrace, dtrace 시스템호출추적방법은테스트한후수업시간에설명할예정이다. 3. 프로그래밍과제 2 ( 교재 p138 Chapter 3 프로젝트
More informationuntitled
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 informationuntitled
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 informationC 언어 프로그래밊 과제 풀이
과제풀이 (1) 홀수 / 짝수판정 (1) /* 20094123 홍길동 20100324 */ /* even_or_odd.c */ /* 정수를입력받아홀수인지짝수인지판정하는프로그램 */ int number; printf(" 정수를입력하시오 => "); scanf("%d", &number); 확인 주석문 가필요한이유 printf 와 scanf 쌍
More informationThe Pocket Guide to TCP/IP Sockets: C Version
중급소켓프로그래밍 (3) 네트워크프로그래밍 6 장 1 목차 제 6장중급소켓프로그래밍 6.1 소켓옵션 6.2 시그널 6.3 넌블로킹입 / 출력 6.4 멀티태스킹 6.5 멀티플렉싱 6.6 다수의수싞자처리 2 멀티태스킹 멀티태스킹이란? 사젂적의미 한사람의사용자가한대의컴퓨터로 2 가지이상의작업을동시에처리하거나, 2 가지이상의프로그램들을동시에실행시키는것 소켓에서의멀티태스킹
More information교육지원 IT시스템 선진화
Module 16: ioctl 을활용한 LED 제어디바이스드라이버 ESP30076 임베디드시스템프로그래밍 (Embedded System Programming) 조윤석 전산전자공학부 주차별목표 ioctl() 을활용법배우기 커널타이머와 ioctl 을활용하여 LED 제어용디바이스드라이브작성하기 2 IOCTL 을이용한드라이버제어 ioctl() 함수활용 어떤경우에는읽는용도로만쓰고,
More information13주-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< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>
Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법
More informationMicrosoft PowerPoint - chap2
제 2 장. 파일입출력 (File I/O) 숙대창병모 1 목표 파일의구조및특성을이해한다. 파일을열고닫는다. 파일로부터데이터를읽고쓴다. 파일현재위치변경 기타파일제어 숙대창병모 2 2.1 파일구조 숙대창병모 3 What is a file? a file is a contiguous sequence of bytes no format imposed by the operating
More informationvi 사용법
네트워크프로그래밍 6 장과제샘플코드 - 1:1 채팅 (udp 버전 ) 과제 서버에서먼저 bind 하고그포트를다른사람에게알려줄것 클라이언트에서알려준포트로접속 서로간에키보드입력을받아상대방에게메시지전송 2 Makefile 1 SRC_DIR =../../common 2 COM_OBJS = $(SRC_DIR)/addressUtility.o $(SRC_DIR)/dieWithMessage.o
More information학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다. / /bin/ /home/ /home/taesoo/ /home/taesoo/downloads /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자 (t
학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다. / /bin/ /home/ /home/taesoo/ /home/taesoo/downloads /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자 (taesoo) 가터미널에서다음 ls 명령입력시화면출력을예측하시오. $ ls /usr/.. $
More informationC++-¿Ïº®Çؼ³10Àå
C C++. (preprocessor directives), C C++ C/C++... C++, C. C++ C. C C++. C,, C++, C++., C++.,.. #define #elif #else #error #if #itdef #ifndef #include #line #pragma #undef #.,.,. #include #include
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
More informationMicrosoft PowerPoint - SP6장-시그널.ppt [호환 모드]
UNIX System Programming Ki-Hyun, JUNG Email : kingjung@paran.com 구성 1 장 : 기본적인개념들과기초적인용어들 2 장 : 파일을다루는시스템호출 primitives 3 장 : 파일에대한문맥상의특성 4 장 : 유닉스디렉토리개념 5 장 : 유닉스프로세스의기본적인성질과제어 6 장 : 프로세스간통신 7 장 : 유용한유닉스프로세스간통신기법
More information歯9장.PDF
9 Hello!! C printf() scanf() getchar() putchar() gets() puts() fopen() fclose() fprintf() fscant() fgetc() fputs() fgets() gputs() fread() fwrite() fseek() ftell() I/O 2 (stream) C (text stream) : `/n'
More informationchap2
Lecture 02: 리눅스사용 상지대학교컴퓨터공학과고광만 kkman@sangji.ac.kr http://compiler.sangji.ac.kr 2018 2.1 기본명령어 간단한명령어사용 $ date $ hostname $ uname $ who $ ls $ clear $ passwd 3 2.2 파일및디렉터리 파일의종류 l 일반파일 (ordinary file)
More informationPowerPoint 프레젠테이션
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 informationPowerPoint 프레젠테이션
Chapter 15 고급프로그램을 만들기위한 C... 1. main( ) 함수의숨겨진이야기 2. 헤더파일 3. 전처리문과예약어 1. main( ) 함수의숨겨진이야기 main( ) 함수의매개변수 [ 기본 14-1] main( ) 함수에매개변수를사용한예 1 01 #include 02 03 int main(int argc, char* argv[])
More information11장 포인터
Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함
More informationMicrosoft PowerPoint - 08-C-App-19-Quick-Preprocessor
19. 전처리와분할컴파일 순천향대학교컴퓨터학부이상정 1 학습내용 전처리명령어 #include #define 기호상수 const 분할컴파일 순천향대학교컴퓨터학부이상정 2 전처리과정 전처리 (preprocessor) 전처리명령어는 # 기호로시작 #incldue #define 순천향대학교컴퓨터학부이상정 3 #include (1) 지정된파일을프로그램에삽입 꺽쇠괄호는포함할파일을컴파일러에설정되어있는특정디렉토리에서검색
More informationPowerPoint 프레젠테이션
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 informationUniStore
Chapter 3. Process Concept Introduction to Operating Systems CSW3020 Prof. Young Pyo JUN CSW3020/Introduction to Operating Systems 1 What is a Process? 실행중인프로그램 프로그램은저장장치에, 프로세스는메인메모리에존재 시스템콜을통해자원을요구하는개체
More informationMicrosoft 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 informationMicrosoft 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 informationInfinity(∞) Strategy
반복제어 표월성 passwd74@cherub.sungkyul.edu 개요 for() 문 break문과 continue문 while문 do-while문 for() 문 for() 문형식 for( 표현식1; 표현식2; 표현식3) 여러문장들 ; 표현식 1 : 초기화 (1 번만수행 ) 표현식 2 : 반복문수행조건 ( 없으면무한반복 ) 표현식 3 : 반복문수행횟수 for()
More information4. 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 informationMicrosoft PowerPoint - chap12 [호환 모드]
제 12 장고급입출력 Nov 2007 숙대창병모 1 Contents 1. Nonblocking I/O 2. Record Locking 3. Memory Mapped I/O Nov 2007 숙대창병모 2 12.1 Nonblocking I/O Nov 2007 숙대창병모 3 Nonblocking I/O Blocking I/O I/O 작업완료를기다리며영원히리턴안할수있다
More information제1장 Unix란 무엇인가?
1 시그널 2 11.1 시그널 시그널 시그널은예기치않은사건이발생할때이를알리는소프트웨어인터럽트이다. 시그널발생예 SIGFPE 부동소수점오류 SIGPWR 정전 SIGALRM 알람시계울림 SIGCHLD 자식프로세스종료 SIGINT 키보드로부터종료요청 (Ctrl-C) SIGSTP 키보드로부터정지요청 (Ctrl-Z) 3 주요시그널 시그널이름 의미 기본처리 SIGABRT
More informationUI 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학번 : 이름 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 information61 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리눅스 프로세스 관리
프로세스 (Process) Process 프로그램이나명령어를실행하면메모리에적재되어실제로실행되고있는상태를의미 이러한프로세스들은프로세스가시작하면서할당받는프로세스식별번호인 PID(Process ID), 해당프로세스를실행한부모프로세스를나타내는 PPID(Parent Process ID), UID 와 GID 정보를통해해당프로세스가어느사용자에속해있는지, 프로세스가파일에대해갖는권한및프로세스가실행된터미널,
More informationPowerPoint 프레젠테이션
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이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2
제 17 장동적메모리와연결리스트 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다.
More informationThe 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