Microsoft PowerPoint - UnixNetProg3rd_08_완.ppt [호환 모드]

Size: px
Start display at page:

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

Transcription

1 8. 프로세스간통신 IPC(Inter Process Communication) 은멀티프로세스로구현된서버에서프로세스간에데이터를전달하는데사용 IPC 기술 파이프, 메시지큐, 세마포어, 공유메모리 1

2 8.1 파이프 2

3 파이프 (PIPE) 운영체제가제공하는프로세스간통신채널로서특별한타입의파일 일반파일과달리메모리에저장되지않고운영체제가관리하는임시파일 데이터저장용이아닌프로세스간데이터전달용으로사용 파이프를이용한프로세스간통신 송신측은파이프에데이터를쓰고수신측은파이프에서데이터를읽음 스트림채널을제공 TCP연결은원격프로세스간에스트림채널을제공 pipe는같은컴퓨터내의프로세스간의스트림채널을제공 송신된데이터는바이트순서를유지 3

4 파이프생성 파이프를열기위해서는시스템콜 pipe() 를사용 하나의파이프를생성하면두개 ( 읽기, 쓰기 ) 의파일디스크립터가생성됨 #include <unistd.h> int pipe(int fd[2]); fd[0] 은읽기용, fd[1] 은쓰기용 파이프를생성한프로세스가 fork() 를호출하면자식프로세스는부모프로세스의파이프를공유 부모, 자식프로세스가동일디스크립터 (fd[1]: 쓰기, fd[0]: 읽기 ) 를사용 fd[1] : write 부모프로세스 fd[0] : read 파이프 fd[1] : write 자식프로세스 fd[0] : read 4

5 파이프생성 부모에서자식으로데이터를보내는경우 fd[1] : write 부모프로세스 fd[0] : read 파이프 fd[1] : write 자식프로세스 fd[0] : read 사용하지않는파일디스크립터를닫은상태 파이프를이용한부모와자식프로세스간통신 fd[1] : write fd[0] : read 부모프로세스 파이프 ( 스트림 ) 자식프로세스 5

6 파이프생성 파이프생성코드 int fd[2]; pid_t pid; pipe(fd); if ((pid=fork())<0) { exit(0); } else if (pid>0) { close(fd[0]); } else if (pid==0) { close(fd[1]); } // 자식프로세스생성 // 부모프로세스 : 읽기용파일디스크립터제거 // 자식프로세스 : 쓰기용파일디스크립터제거 파이프의특징 단방향스트림채널만제공 양방향통신을위해서는추가적인파이프를생성해야함 6

7 파이프를이용한에코서버, 클라이언트프로그램 (udpserv_pipeecho.c, udpechocli.c) 두개의프로세스로구성된 UDP형에코서버프로그램 부모프로세스 (parent_start) 는클라이언트로부터받은메시지를파이프에 write UDP 서버이므로부모프로세스는클라이언트가보내온데이터와함께클라이언트의주소를자식프로세스에게전달 자식프로세스 (child_start) 는파이프로부터데이터를 read 하여클라이언트로에코 파이프를통해전달할데이터의구조체정의 // 파이프에쓰는데이터구조 typedef struct mseg { } mesg_t; struct sockaddr_in addr; // 클라이언트주소 char data[max_bufsz]; // 에코할데이터 클라이언트는 UDP 소켓을개설, 키보드입력을 sendto() 로서버에전달, recvfrom() 으로수신하여화면에출력 7

8 8.2 FIFO FIFO(named pipe) 는임의의프로세스간의통신을허용 8

9 FIFO 생성 파이프는 fork() 로만들어진프로세스들사이의통신에만사용가능한제약이있음 제한을극복하기위해파이프에이름을지정하고임의의다른프로세스에서파이프에접근하도록한것을 named pipe(fifo) 라함 mkfifo() int mkfifo(const char *pathname, mode_t mode); pathname : 파이프의이름, 경로명이없으면현재디렉토리 mode : FIFO 의파일접근권한설정 읽기 / 쓰기수행 FIFO 를생성한후 FIFO 를 open() 해야함 FIFO 도파이프의일종으로프로세스간스트림채널을제공 write mode /tmp/myfifo read mode 프로세스 A FIFO( 스트림 ) 프로세스 B 9

10 FIFO 를이용한에코서버프로그램 (udpserv_fifoecho.c) 파이프를이용한에코서버를 FIFO 를이용하여작성 부모프로세스 클라이언트로부터받은메시지를 FIFO 에 write 자식프로세스 FIFO 로부터데이터를읽어클라이언트에에코 FIFO 에서는 FIFO 의이름만알면언제든지오픈하여사용 파이프에서는 fork() 전에파이프를생성해야부모, 자식프로세스가파일을공유할수있다. 10

11 8.3 메시지큐 메시지큐를사용하여프로세스사이에통신 특정프로세스에게메시지단위전송이가능 메시지전송에우선순위부여가능 파이프나 FIFO는프로세스사이에제공되는스트림을사용하여통신 메시지단위로송신할때는주의가필요 11

12 메시지큐개요 메시지단위 의송수신용큐 메시지전송에우선순위부여가가능 메시지큐를이용한프로세스간통신 put : 메시지큐에메시지쓰기 get : 메시지큐의메시지읽기 프로세스 A 프로세스 B... 프로세스 C put get put get put get msg5 msg4 msg3 msg2 msg1 메시지큐 12

13 타입이있는메시지큐 2 차원메시지큐 프로세스 A 프로세스 B... 프로세스 C put get put get put get 1 msg4 msg3 msg2 msg1 2 3 msg1 msg2 msg N 메시지큐 13

14 타입이있는메시지큐 (2) 메시지송수신시에프로세스는타입을지정 큐를타입값으로구분하고, 메시지를읽고쓸때큐타입을지정 특정프로세스에메시지전송이가능 예 : 메시지를 put 할때수신할프로세스의 PID 값을타입으로지정하고, 수신프로세스는자신의 PID 를타입으로 get 메시지큐의우선순위부여가능 예 : 타입값을우선순위로사용하면우선순위가높은메시지를먼저수신하고우선순위가높은메시지가없으면우선순위가낮은메시지를수신 14

15 메시지큐생성 msgget() int msgget(key_t key, int msgflg); key 메시지큐를구분하기위한고유키 메시지큐를생성하지않은다른프로세스가메시지큐에접근하려면 key를알아야함 msgflag : 메시지큐생성시옵션을지정 (bitmask 형태 ) IPC_CREATE, IPC_EXCL 등의상수와파일접근권한지정 메시지큐 ID 를반환 : 다른프로세스는이 ID 를통해메시지큐를사용 msqid_ds 구조체 메시지큐가생성될때마다메시지큐에관한각종정보를담는메시지큐객체를생성 마지막으로송신또는수신한프로세스 PID 송수신시간 큐의최대바이트수 메시지큐소유자정보 15

16 메시지큐객체 struct msqid_ds { struct ipc_perm msg_perm; // 메시지큐접근권한 struct msg *msg_first; // 처음메시지 struct msg *msg_last; // 마지막메시지 time_t msg_stime; // 마지막메시지송신시각 time_t msg_rtime; // 마지막메시지수신시각 time_t msg_ctime; // 마지막으로 change가수행된시각 struct wait_queue *wwait; // wait 큐 struct wait_queue *rwait; ushort msg_cbytes; // 큐에있는모든메시지들의바이트수 ushort msg_qnum; // 큐에있는메시지수 ushort msg_qbytes; // 메시지큐최대바이트수 ushort msg_lspid; // 마지막으로 msgsnd를수행한 PID ushort msg_lrpid; // 마지막으로받은 PID }; struct ipc_perm { key_t key; ushort uid; // owner의 euid와 egid ushort gid; ushort cuid; // 생성자의 euid와 egid ushort cgid; ushort mode; // 접근모드의하위 9bits ushort seq; // 순서번호 (sequence number) }; 16

17 msgflag 옵션 IPC_CREAT 동일한 key를사용하는메시지큐가존재하면그객체에대한 ID를정상적으로리턴 존재하지않는다면메시지큐객체를생성하고 ID 를리턴 IPC_EXCL 동일한 key를사용하는메시지큐가존재하면 -1을리턴 단독으로사용하지못하고 IPC_CREAT와같이사용해야함 IPC_PRIVATEPRIVATE key가없는메시지큐생성 명시적으로키값을정의하여사용할필요가없는경우이용 예 : 메시지큐 ID를서로공유할수있는부모와자식프로세스사이에사용가능 외부의다른프로세스는이메시지큐에접근불가 msgget() 사용예 : mkq.c 키값을인자로주어메시지큐객체를생성한후메시지큐 ID 를출력 17

18 실행결과 $ mkq 123 created queue id = key is = 123 opened queue id =

19 메시지송신 msgsnd() 메시지큐에메시지를넣는함수 int msgsnd(int msqid, struct msgbuf *msgp, size_t msgsz, int msgflg); struct msgbuf { long mtype; // 메시지타입 > 0 char mtext[1]; // 메시지데이터 } mtype 은 1 이상이어야함 msgbuf의첫4바이트는반드시 long 타입 mtext는문자열, binary등임의의데이터사용가능 msgsz 는 mtext 만의크기 msgflg 를 IPC_NOWAIT 로하면메시지큐공간이부족한경우블록되지않고 EAGAIN 에러코드와함께 -1 을리턴 0 으로한경우메시지큐공간이부족하면블록 msgsnd 함수는성공하면 0, 실패하면 -1 을리턴 19

20 메시지수신 msgrcv() 메시지큐로부터메시지를읽는함수 ssize_t msgrcv(int msqid, struct msgbuf *msgp, size_t msgsz, long msgtype, int msgflg); msqid : 메시지큐객체 ID msgp : 메시지큐에서읽은메시지를저장하는수신공간 msgsz : 수신공간의크기 msgflg : 메시지가없는경우취할동작, 0이면대기, IPC_NOWAIT이면 EAGAIN 에러코드와 -1을리턴 읽은메시지가수신공간크기보다크면 E2BIG 에러가발생 msgflg g를 MSG_NOERROR로설정하면 msgsz 크기만큼만읽고, 나머지는잘려진다. msgtype은메시지큐에서읽을메시지타입을지정 0 으로하면타입의구분없이메시지큐에입력된순서대로읽음 -10 을지정하면타입이 10 보다같거나작은메시지를읽음» 타입이 10 인메시지부터우선순위를두어읽음 20

21 메시지큐이용예 (qsnd_pid.c) msgtype 값을특정프로세스의 PID로지정하여지정된프로세스가메시지를수신하는프로그램 자식프로세스는 msgtype=getppid() 로부모프로세스의 PID를구하여이를큐타입으로사용하여메시지큐로송신 부모프로세스는메시지를수신후메시지큐를삭제 실행결과 msgctl(qid, IPC_RMID, 0) $ qsnd_pid 1234 Enter message to post : 프로세스메시지큐읽기대기중.. Hi! my parent <----- 자식프로세스입력데이터 message posted recv = 14 bytes < 부모프로세스출력 type = 수신프로세스 PID= value = Hi! my parent 21

22 메시지큐제어 msgctl() 메시지큐에관한정보읽기, 동작허가권한변경, 메시지큐삭제등을제어 int msgctl(int msqid, int cmd, struct msqid_ds *buf); msqid : 메시지큐객체 ID cmd : 제어명령구분 IPC_STAT : 메시지큐객체에대한정보를얻는명령 IPC_SET : r/w 권한, euid, egid, msg_qbytes를변경하는명령 IPC_RMID : 메시지큐를삭제하는명령 buf : cmd 명령에따라동작 IPC_SET r/w권한, euid, egid, msg_qbytes만변경이가능 IPC_STAT 명령으로메시지큐객체를얻은후변경시키고 IPC_SET을호출 IPC_RMID 삭제명령을내렸을때아직읽지않은메시지가있어도즉시삭제 22

23 msgctl() 사용예 (qctl.c) IPC_STAT 를사용해메시지큐객체를얻어와서큐에대한정보를출력하고, IPC_RMID 를사용하여큐를삭제 실행결과 $mkq 1234 created queue id = key is = 1234 opened queue id = $ qctl 1234 큐의최대바이트수 : 큐의유효사용자 UID : 502 큐의유효사용자 GID : 502 큐접근권한 : 0666 메시지큐 삭제됨 23

24 메시지큐를이용한에코서버 (msgq_echoserv.c, res_send.c) UDP 형에코서버를메시지큐를이용하여멀티프로세스모델로구현 REQ_RECV_PROC : 에코요청메시지를수신하는프로세스 에코요청을메시지큐에넣고다음요청을기다리는동작을반복 한개의프로세스만실행 RES_SEND_PROC _ : 에코메시지를응답하는프로세스 메시지큐에서읽기를대기하다메시지가도착하면클라이언트에게응답하는동작을반복 여러개의프로세스를실행 한개의메시지큐로부터메시지를읽도록내부적으로동기화 RES_SEND_PROC 를생성하는코드 #define RES_SEND_PROC SEND res_send void fork_and_exec(char *key, char *port) { pid_t pid = fork(); if (pid < 0) errquit(" fork fail"); else if(pid >0) return; execlp(res_send_proc, SEND RES_SEND_PROC, SEND key, port, 0); perror("execlp fail "); } 24

25 메시지큐를이용한에코서버 ( 계속 ) 메시지큐로전달할메시지구조 typedef struct _msg { long msg_type; // 메시지큐타입 struct sockaddr_in addr; // 클라이언트의소켓주소 char msg_text[ MAX_BUFSZ ]; // 메시지를저장 } msg_t ; 메시지큐와소켓을생성후클라이언트의메시지가도착하면 recvfrom으로읽고, msgsnd를사용하여메시지큐에넣는다. while(1) { nbytes = recvfrom(sock,pmsg.msg_text, t MAX_BUFSZ, 0, (struct sockaddr *)&pmsg.addr, &len); if(nbytes < 0) { perror("recvfrom fail "); continue; } pmsg.msg_text[ nbytes ] = 0; } // 메시지큐에쓰기 if( msgsnd(msqid, &pmsg, size, 0)==-1 ) errquit("msgsnd fail "); 25

26 RES_SEND_PROC(res_send.c) execpl 가호출될때인자로부터키와포트번호를얻는다. 메시지큐에서읽기를대기하다메시지가도착하면클라이언트에게응답메시지를전송 수행결과 여러프로세스가순서대로에코를처리 커널의프로세스스케쥴러가최근에실행한프로세스의우선순위를낮게주어같은프로세스가연속적으로 CPU 서비스를받는것을금지 $ msgq_echoserv Server starting. reply process PID = 7228 aaaaaaaaaaaaaaaaaaaaaa reply process PID = 7229 bbbbb reply process PID = 7230 ccccccccccccccccccc reply process PID = 7228 dddddddddddddd reply process PID = 7229 eeeeeeeeeee reply process PID = 7230 ffffffffffffffffffffffffffffffffffffff 26

27 8.4 공유메모리 프로세스간의통신을위해서공유메모리를사용하는방법을소개 27

28 공유메모리사용 공유메모리 프로세스들이공통으로사용할수있는메모리영역 특정메모리영역을다른프로세스와공유하여프로세스간통신이가능 데이터를한번읽어도데이터가계속남아있음 같은데이터를여러프로세스가중복하여읽어야할때효과적 공유메모리를생성하는함수 : shmget() int shmget(key_t key, int size, int shmflg); int 타입의공유메모리 ID 를리턴 struct shmid_ds 구조체에정보를저장 key : 새로생성될공유메모리를식별하기위한값 다른프로세스가접근하기위해서는이키값을알아야함 int size : 공유메모리크기 shmflg : 공유메모리생성옵션을지정 bitmask 형태의인자 IPC_CREAT, IPC_EXCL, 파일접근권한 28

29 공유메모리사용 shmid_ds 구조체 sturct t shmid_ds d { struct ipc_perm shm_perm; // 동작허가사항 int shm_segsz; // 세그먼트의크기 (bytes) time_t t shm_atime; // 마지막 attach 시각 time_t shm_dtime; // 마지막 detach 시각 time_t shm_ctime; // 마지막 change 시각 unsigned short shm_cpid; // 생성자의 PID unsigned short shm_lpid; // 마지막접근자의 PID short shm_nattch; // 현재 attaches 프로세스수 // 아래는 private unsigned short shm_npages; // 세그먼트의크기 (pages) unsigned long *shm_pages; // array of ptrs to frames ->SHMMAX sturct vm_area_struct *attaches; // descriptors for attaches }; 29

30 Shmflg : 공유메모리생성옵션 IPC_CREAT 를설정한경우 같은 key값을사용하는공유메모리가존재하면해당객체에대한 ID를리턴 같은 key 값의공유메모리가존재하지않으면새로운공유메모리를생성하고그 ID 를리턴 IPC_EXCL 과 IPC_CREAT 를같이설정한경우 같은 key값을사용하는공유메모리가존재하면 shmget() 호출은실패하고 -1 을리턴 IPC_CREAT 와같이사용해야함 IPC_PRIVATE key 값이없는공유메모리를생성 명시적으로 key값을사용할필요가없는경우에사용 메시지큐 ID를서로공유할수있는부모와자식프로세스사이에사용가능 외부의다른프로세스는이메시지큐에접근불가 30

31 공유메모리첨부 shmat() 공유메모리생성후실제사용전에물리적주소를자신의프로세스의가상메모리주소로맵핑 ( 프로세스에공유메모리를첨부한다고표현 ) void *shmat(int shmid, const void *shmaddr, int shmflg); shmid : 공유메모리객체 ID shmaddr : 첨부시킬프로세스의메모리주소 0 : 커널이자동으로빈공간을찾아서처리 shmflg : 공유메모리옵션 0 : 읽기 / 쓰기모드 SHM_RDONLY : 읽기전용 호출성공시첨부된주소를리턴하고, 에러시 -1 을리턴 사용예 int shmid = shmget(0x1234, 1024, IPC_CREAT 0600); char *myaddr = shmat(shmid, 0, 0);// 자동으로빈공간을찾고, 읽기 / 쓰기가능 // 오류발생시 -1 을리턴 if (myaddr = (chat *)-1) { perror( 공유메모리를 attach 하지못했습니다.\n ); exit(0); } 31

32 공유메모리의분리 shmdt() 공유메모리의사용종료시, 자신이사용하던메모리영역에서공유메모리를분리 int shmdt(const void *shmaddr); shmaddr : shmat() 가리턴했던주소, 현재프로세스에첨부된공유메모리의시작주소 공유메모리의분리가공유메모리의삭제를의미하지는않음 다른프로세스는계속그공유메모리를사용할수있음 shmid_ds 구조체의 shm_nattach 멤버변수 shmat() 로공유메모리를첨부하면 1 증가 공유메모리를분리하면 1 감소 32

33 공유메모리제어 공유메모리의정보읽기, 동작허가권한변경, 공유메모리삭제등의공유메모리제어 int shmctl(int shmid, int cmd, struct shmid_ds *buf); shmid : 공유메모리객체 ID cmd : 수행할명령 IPC_STAT : 공유메모리객체에대한정보를얻어오는명령 shmctl(shmid, IPC_STAT, buf) IPC_SET : r/w 권한, euid, egid 를변경하는명령 shmctl(shmid, IPC_SET, &shmds) IPC_RMID : 공유메모리를삭제하는명령 shmctl(shmid, IPC_RMID, 0) buf : cmd 명령에따라의미가변경 공유메모리객체정보를얻어오는명령 : 얻어온객체를 buf 에저장 동작허가권한을변경하는명령 : 변경할내용을 buf 에저장 33

34 공유메모리의동기화문제처리 공유메모리는메모리에기록한데이터를다수의프로세스가복사하여읽는것이가능 같은데이터를다수의프로세스에게전달이용이 예 : 상태정보를공유메모리에쓰면여러프로세스가읽도록하는경우 여러프로세스가병행하여쓰기 / 읽기작업을수행하면동기화문제가발생할수있음 하나의공유데이터를둘이상의프로세스가동시에접근함으로써발생할수있는문제 데이터의값이부정확하게사용되는문제가있음 해결방안 : 세마포어, 스레드 34

35 동기화문제예 (shmbusyaccess.c) 3개의프로세스 ( 부모, 2개의자식 ) 가경쟁적으로공유메모리에접근하여동기화문제를발생시키는예 공유메모리생성하고두개의자식프로세스를생성 3개의프로세스에서공유메모리를접근하는 busy() 를수행 busy() 에서는 access_shm() shm() 을호출하여공유메모리에접근 access_shm() 공유메모리에자신의 PID를기록 지연 공유메모리에남아있는 PID 와자신의 PID 를비교 실행결과 다르면 access_shm() 이반환되기전에다른프로세스가공유메모리를접근한경우 동일하면정상적으로처리 $ shmbusyaccess Error(count=9975) : 다른프로세스도동시에공유메모리접근함 Error(count=31642) : 다른프로세스도동시에공유메모리접근함 Error(count=43453) : 다른프로세스도동시에공유메모리접근함... 35

36 8.5 세마포어 동기화문제를소개 세마포어를이용하여동기화문제를해결하는방법 36

37 세마포어 프로세스간통신에서발생할수있는동기화문제를해결하기위해사용 동기화문제예 프로세스 A의작업 : { printf( A: before increase x=%d\n, x); x++; printf( A: after increase x=%d\n, x); } 프로세스 B의작업 : { printf( B: before decrease x=%d\n, x); x--; printf( B: after decrease x=%d\n, x); } X 의초기값이 3 이고, 프로세스 A, B 가차례로수행했을때결과 A: before increase x=3 A: after increase x=4 // A 는 x=4 를사용 B: before decrease x=4 B: after decrease x=3 // B 는 x=3 을사용 37

38 동기화문제예 ( 계속 ) A 가수행하는중간 (x++ 를수행하기직전 ) 에 B 가 CPU 스케줄을받아 x 를접근한경우의결과 A: before increase x=3 B: before decrease x=3 // B는 x=3를사용 B: after decrease x=2 // B는 x=2를사용 A: after decrease x=3 // A 는 x=3 을사용 A 가 x++ 를수행한직후에 B 가 CPU 스케줄을받아 x 를접근한경우의결과 A: before increase x=3 B: before decrease x=4 // x 는 x++ 직후이므로 4 B: after decrease x=3 // B는 x=3를사용 A: after increase x=3 // A는 x=3을사용 38

39 세마포어의정의 동기화문제해결방법 공유데이터를액세스하는프로세스수를한순간에하나로제한 세마포어를사용하여제한할수있음 세마포어 공유데이터에대해현재사용가능한데이터수를나타낸다. 이진세마포어 : 공유데이터가한개일경우, 0 과 1 값을사용 동작방법 공유데이터에접근하기전에세마포어 s의값을확인 1이면 s를 0으로변경하고액세스 0이면대기 액세스가끝나면 s 값을 1 로다시변경 카운터세마포어 : 공유할수있는데이터가둘이상일경우 공유데이터가 5 개이면세마포어값은최대 5 를가진다. 세마포어가 4이면 4개의공유데이터가남아있음을의미 39

40 semget(), 세마포어생성 semget() 세마포어를생성할때사용하는함수 int semget(key_t t key, int nsems, int semflg); key : 세마포어를구분하기위한키 다른프로세스는이키를알아야사용할수있음 nsems : 세마포어집합을구성하는멤버의수 3 으로설정하면 3 개의세마포어집합을얻음 semflg : 세마포어생성옵션, 세마포어객체에대한접근권한을설정 세마포어정보를갖는세마포어객체를생성하고세마포어객체 ID 를반환 세마포어객체 : semid_ds 구조체 struct semid_ds d { struct ipc_perm sem_perm; // 접근허가내용, ipc.h time_t sem_otime; // 최근세마포어조작시각 time_t sem_ctime; // 최근변경시각 struct t sem *sem_base; // 첫세마포어포인터 struct wait_queue *eventn; struct wait_queue *eventz; struct sem_undo *undo; // 배열안에있는 undo의수 ushort sem_nsems; // 세마포어멤버수 }; 40

41 semflg : 세마포어생성에관한옵션, 접근권한을설정 IPC_CREAT 같은 key값을사용하는세마포어가존재하면해당객체에대한 ID를리턴 같은 key값의세마포어가존재하지않으면새로운세마포어를생성하고그id를리턴 semget(key, nsems, IPC_CREAT mode); IPC_EXCL 같은 key 값을사용하는세마포어가존재하면 semget() 호출은실패하고 -1을리턴 IPC_CREAT와같이사용해야함 mode = 0660; semget(key, nsems, IPC_CREAT IPC_EXCL mode); IPC_PRIVATE key값이없는세마포어를생성 명시적으로 key값을사용할필요가없는경우에사용 세마포어생성후 fork() 를호출하면자식프로세스는세마포어객체의 ID 를상속받으므로접근이가능 부모와자식프로세스간의통신을위해편리하게사용 41

42 세마포어연산 세마포어의값을변경 ( 증가또는감소하는것 ) semop() 함수사용 int semop(int semid, struct sembuf *opeations, unsigned nsops); semid : 세마포어 ID operations : 세마포어를변경시킬값이있는구조체 sembuf 구조체사용 nsops : operations가몇개의리스트를가지는지명시 sembuf 구조체 struct sembuf { short sem_num; // 멤버세마포어번호 (0 번이첫번째멤버 ) short sem_op; // 세마포어연산내용 short sem_flg; // 조작플래그 }; 42

43 sembuf 구조체 sem_num 세마포어집합중몇번째멤버세마포어를연산할지구분하는번호 첫번째멤버세마포어일경우 0 을사용 sem_op 증가또는감소시킬값 : 1증가시키려면 +1, 3감소시키려면 -3 sem_flg 0, IPC_NOWAIT, SEM_UNDO 등을 bitmask 형태로취함 0 디폴트인블록킹모드로 semop() 를수행 어떤세마포어값을 N만큼감소시키려할때현재값이 N-1이하면세마포어값이 N 이상이될때가지블록 IPC_NOWAIT 세마포어값이부족해도블록되지않고리턴 리턴값은 -1이고에러코드는 EAGAIN SEM_UNDO 프로세스의종료시커널은해당세마포어연산을취소 어떤프로세스가세마포어값을감소한후바로비정상적으로종료되었을경우원래의값으로환원할기회를읽게되며이는다른프로세스가공유데이터를계속사용할수없게함 43

44 세마포어사용예 연필 3 자루, 노트 3 권의공유데이터가있고, 각프로세스는연필 1 자루와공책 1 권을동시에사용하여작업한다. 현재 10 개의프로세스가실행중 // 세마포어값을증감시키기위한 sembuf 구조체정의 struct sembuf increase[] = {{0, +1, SEM_UNDO}, {1, +1, SEM_UNDO}}; struct sembuf decrease[] = {{0, -1, SEM_UNDO}, {1, -1, SEM_UNDO}}; //nsems=2 : 연필 (0) 과노트 (1) 에대해각각의세마포어를생성 semid = semget(mykey, 2, IPC_CREAT mode); // 세마포어값감소 semop(semid, &decrease[0], 1) // 연필 semop(semid, &decrease[1], 1) // 노트 // 연필과노트를사용하는작업기술. // 세마포어값증가 semop(semid, &increase[0], 1) // 연필 semop(semid, &increase[1], 1) // 노트 44

45 세마포어제어 세마포어의사용종료, 세마포어값읽기및설정, 특정멤버세마포어를기다리는프로세스의수를확인할때사용하는함수 int semctl(int semid, int member_index, int cmd, union semun semarg); semid : 제어할대상의세마포어 ID member_index : 세마포어멤버번호 cmd : 수행할동작 semarg : cmd의종류에따라다르게사용되는인자 (semun 타입 ) union semun { int val; struct semid_ds buf; unsigned short int *array; struct seminfo * buf; void * pad; }; // SETVAL을위한값 // IPC_STAT, IPC_SET을위한버퍼 // GETALL, SETALL 을위한배열 // IPC_INFO를위한버퍼 // dummy 45

46 cmd IPC_STAT semid_ds 타입의세마포어객체를얻어오는명령 union semun semarg 인자에세마포어객체가리턴 member_index 인자는사용되지않음 (0) struct semid_ds ds semobj; union semun semarg; semarg.buf = &semobj; semctl(semid, 0, IPC_STAT, semarg); SETVAL 공유데이터의수를설정해주는작업 ( 세마포어객체초기화 ) semarg 에설정할값을지정하여 semarg.val 변수에입력 union semun semarg; unsigned short semvalue = 10; semarg.val = semvalue; semctl(semid, 2, SETVAL, semarg); // 2번세마포어값을 10으로설정 46

47 cmd SETALL 세마포어집합내의모든세마포어의값을초기화하는명령 semarg.array 인자에초기값을배열형태로지정 member_index는사용하지않음 unsigned short values = {3, 14, 1, 25}; union semun semarg; semarg.array = values; semctl(semid, 0, SETALL, semarg); //4개의세마포어의값을초기화 GETVAL 특정멤버세마포어의현재값을얻어오는명령 int n = semctl(semid, 2, GETVAL, 0); // 2 번세마포어값을구함 47

48 cmd GETALL 모든멤버세마포어의현재값을읽는데사용 union semun semarg; unsigned short semvalues[3]; // 세마포어의수는 3 semarg.array = semvalues; semctl(semid, 0, GETALL, semarg); for (i=0; i<3; i++) printf( %d번멤버세마포어의값 = %d\n, i, semvalue[i]); GETNCNT 세마포어값이원하는값이상으로증가되기를기다리는프로세스의수를얻는데사용 세마포어를기다리는프로세스의수를반환 union semun semarg 인자는사용안함 (0) semctl(semid, member_index, GETNCNT, 0); 48

49 cmd GETPID 특정멤버세마포어에대해마지막으로 semop() 함수를수행한프로세스의 PID 를얻는데사용 int pid = semctl(semid, member_index, GETPID, 0); IPC_RMID 세마포어를삭제하는명령 semctl(semid, 0, IPC_RMID, 0); 49

50 세마포어예제 (pen_and_note.c) 연필한자루와노트두권을 4개의프로세스가연필한자루와노트한권을동시에사용하는프로그램 실행결과 $ pen_and_note [pid:18178] 연필을들고 [pid:18178] 노트를들고 [pid:18178] 공부를함 [pid:18178] 연필을내려놓음 [pid:18178] 노트를내려놓음 [pid:18177] 연필을들고 [pid:18177] 노트를들고 [pid:18177] 공부를함 [pid:18177] 연필을내려놓음 [pid:18177] 노트를내려놓음... 50

51 공유메모리의동기화문제처리 (shmcontrol.c) 세마포어를이용해공유메모리의동기화를해결 공유메모리사용시동기화문제가있었던 shmbusyaccess.c를세마포어를사용하여해결 공유메모리접근함수 access_shm() 에서세마포어를이용하여 critical 영역으로보호하여두프로세스가 access_shm() 을동시에호출못하게한다. 실행결과 access_shm() 호출전후에세마포어를사용하기위하여 semop() 를호출. 은정상적으로공유메모리에접근하고있다는것을나타낸다. $ shmcotrol

<4D F736F F F696E74202D FBDC3BDBAC5DB56C0C720C7C1B7CEBCBCBDBAB0A320C5EBBDC5205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D FBDC3BDBAC5DB56C0C720C7C1B7CEBCBCBDBAB0A320C5EBBDC5205BC8A3C8AF20B8F0B5E55D> 학습목표 유닉스시스템V에서제공하는 IPC기법을이해한다. 메시지큐를이용해통신프로그램을작성할수있다. 공유메모리를이용해통신프로그램을작성할수있다. 세마포어를이용한 IPC기법을배운다. 시스템 V 의프로세스간통신 IT CookBook, 유닉스시스템프로그래밍 2/42 목차 시스템 V IPC 기초 시스템 V IPC 관련명령 메시지큐 공유메모리 세마포어 시스템 V IPC 기초

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

메시지큐를이용한 IPC 프로그램구현과제보고서 1. 과제의목적 1 리눅스가지원하는프로세스간통신방식중다수의프로세스사이에구조화된데이터블럭, 즉메시지를전달하는데주로사용되는메시지큐방식에대하여무엇인지, 어떻게사용하는지공부한다. 2 공부한내용을점검하기위해기작성된 epda 프로세스관

메시지큐를이용한 IPC 프로그램구현과제보고서 1. 과제의목적 1 리눅스가지원하는프로세스간통신방식중다수의프로세스사이에구조화된데이터블럭, 즉메시지를전달하는데주로사용되는메시지큐방식에대하여무엇인지, 어떻게사용하는지공부한다. 2 공부한내용을점검하기위해기작성된 epda 프로세스관 [ R E P O R T ] 정보통신공학전공 200301582 김성태 메시지큐를이용한 IPC 프로그램구현과제보고서 1. 과제의목적 1 리눅스가지원하는프로세스간통신방식중다수의프로세스사이에구조화된데이터블럭, 즉메시지를전달하는데주로사용되는메시지큐방식에대하여무엇인지, 어떻게사용하는지공부한다. 2 공부한내용을점검하기위해기작성된 epda 프로세스관리프로그램과 sms 메시지전송에뮬레이션프로그램을활용하여

More information

2009년 상반기 사업계획

2009년 상반기 사업계획 시스템 V 의프로세스간통신 IT CookBook, 유닉스시스템프로그래밍 학습목표 유닉스시스템V에서제공하는 IPC기법을이해한다. 메시지큐를이용해통신프로그램을작성할수있다. 공유메모리를이용해통신프로그램을작성할수있다. 세마포어를이용한 IPC기법을배운다. 2/42 목차 시스템 V IPC 기초 시스템 V IPC 관련명령 메시지큐 공유메모리 세마포어 3/42 시스템 V

More information

고급 IPC 설비

고급 IPC 설비 고급프로세스갂통싞 #2 세마포어 네델란드의 E.W.Dijikstra 가프로세스동기화문제의해결방안으로제시 p( ) 또는 wait( ) if (sem!= 0) decrement sem by 1 else v( ) 또는 signal( ) wait until sem become non-zero, then decrement increment sem by one if (queue

More information

운영체제 실습 - Introduction -

운영체제 실습 - Introduction - 운영체제실습 - IPC(InterProcess Communication) - Real-Time Computing and Communications Lab. Hanyang University jtlim@rtcc.hanyang.ac.kr dhchoi@rtcc.hanyang.ac.kr beespjh@gmail.com Introduction 조교소개 이름 : 임정택

More information

제1장 Unix란 무엇인가?

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

More information

Abstract View of System Components

Abstract View of System Components Operating System 10 주차 - IPC(InterProcess Communication) - Real-Time Computing and Communications Lab. Hanyang University jtlim@rtcc.hanyang.ac.kr yschoi@rtcc.hanyang.ac.kr shpark@rtcc.hanyang.ac.kr Contents

More information

고급 IPC 설비

고급 IPC 설비 고급프로세스갂통싞 #1 Record Locking 여러프로세스가동시에한파일에접근하는경우경주상황 (race condition) 이발생할수있음 한가지해결방안 : Record locking 파일의일부분을잠그는행위 fcntl 을이용 #include Int fcntl(int filedes, int cmd, struct flock* ldata); cmd

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

The Pocket Guide to TCP/IP Sockets: C Version

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

More information

The Pocket Guide to TCP/IP Sockets: C Version

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

More information

2009년 상반기 사업계획

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

More information

슬라이드 1

슬라이드 1 Task 통신및동기화 : Message Queue, Semaphore Shared Memory Chapter #12 강의목차 IPC(Inter-Process Communication) 메시지큐 (Message Queue) 세마포어 (Semaphore) 공유메모리 (Shared Memory) Unix System Programming 2 IPC(Inter-Process

More information

좀비프로세스 2

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

More information

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]

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

More information

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

제1장 Unix란 무엇인가?

제1장  Unix란 무엇인가? 1 소켓 2 1 소켓 클라이언트 - 서버모델 네트워크응용프로그램 클리이언트 - 서버모델을기반으로동작한다. 클라이언트 - 서버모델 하나의서버프로세스와여러개의클라이언트로구성된다. 서버는어떤자원을관리하고클라이언트를위해자원관련서비스를제공한다. 3 소켓의종류 소켓 네트워크에대한사용자수준의인터페이스를제공 소켓은양방향통신방법으로클라이언트 - 서버모델을기반으로프로세스사이의통신에매우적합하다.

More information

슬라이드 1

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

More information

Microsoft PowerPoint - 09-Pipe

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

More information

ABC 11장

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

More information

<4D F736F F F696E74202D FB8DEB8F0B8AE20B8C5C7CE205BC8A3C8AF20B8F0B5E55D>

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

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 인터넷프로토콜 5 장 데이터송수신 (3) 1 파일전송메시지구성예제 ( 고정크기메시지 ) 전송방식 : 고정크기 ( 바이너리전송 ) 필요한전송정보 파일이름 ( 최대 255 자 => 255byte 의메모리공간필요 ) 파일크기 (4byte 의경우최대 4GB 크기의파일처리가능 ) 파일내용 ( 가변길이, 0~4GB 크기 ) 메시지구성 FileName (255bytes)

More information

2009년 상반기 사업계획

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

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

제1장 Unix란 무엇인가?

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

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

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

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

슬라이드 1

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

More information

Microsoft PowerPoint - 13 ¼ÒÄÏÀ» ÀÌ¿ëÇÑ Åë½Å 2.ppt

Microsoft PowerPoint - 13 ¼ÒÄÏÀ» ÀÌ¿ëÇÑ Åë½Å 2.ppt 13 장소켓을이용한통신 (2) 소켓을이용한통신 (2) 함수 - recvfrom - sendto - uname - gethostname - gethostbyname - gethostbyaddr 1 1. 서론 소켓을사용하여비연결형모델로통신을하기위한함수와그외의함수 함수 의미 recvfrom 비연결형모델에서소켓을통해메시지를수신한다. sendto 비연결형모델에서소켓을통해메시지를송신한다.

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

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

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

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

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 - 12 ¼ÒÄÏÀ» ÀÌ¿ëÇÑ Åë½Å 1.ppt

Microsoft PowerPoint - 12 ¼ÒÄÏÀ» ÀÌ¿ëÇÑ Åë½Å 1.ppt 12 장 소켓을이용한통신 (1) 함수 - inet_addr - inet_ntoa - socket - bind - listen - accept - connect - recv -send 1 서론 파이프를사용하여통신을하기위한시스템호출 / 표준라이브러리함수 함수 의미 inet_addr 문자열형태의인터넷주소를바이너리형태로변환한다. inet_ntoa 바이너리형태의인터넷주소를문자열형태로변환한다.

More information

Microsoft PowerPoint - all_CDSP_2(2009).ppt [호환 모드]

Microsoft PowerPoint - all_CDSP_2(2009).ppt [호환 모드] Contents Delivery Programming 2009 년 2 학기 숙명여자대학교정보과학부 멀티미디어과학전공 윤용익 yiyoon@sookmyung.ac.kr 강의목차 1 주 : 강의소개및 Part 1- Contents Delivery

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

KNK_C_05_Pointers_Arrays_structures_summary_v02

KNK_C_05_Pointers_Arrays_structures_summary_v02 Pointers and Arrays Structures adopted from KNK C Programming : A Modern Approach 요약 2 Pointers and Arrays 3 배열의주소 #include int main(){ int c[] = {1, 2, 3, 4}; printf("c\t%p\n", c); printf("&c\t%p\n",

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

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

제12장 파일 입출력

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

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

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

슬라이드 1

슬라이드 1 CHAP 6: 큐 yicho@gachon.ac.kr 1 큐 (QUEUE) 큐 : 먼저들어온데이터가먼저나가는자료구조 선입선출 (FIFO: First-In First-Out) ( 예 ) 매표소의대기열 Ticket Box 전단 () 후단 () 2 큐 ADT 삽입과삭제는 FIFO 순서를따른다. 삽입은큐의후단에서, 삭제는전단에서이루어진다. 객체 : n 개의 element

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

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

03_queue

03_queue Queue Data Structures and Algorithms 목차 큐의이해와 ADT 정의 큐의배열기반구현 큐의연결리스트기반구현 큐의활용 덱 (Deque) 의이해와구현 Data Structures and Algorithms 2 큐의이해와 ADT 정의 Data Structures and Algorithms 3 큐 (Stack) 의이해와 ADT 정의 큐는 LIFO(Last-in,

More information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

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

슬라이드 1

슬라이드 1 CHP 6: 큐 C 로쉽게풀어쓴자료구조 생능출판사 2005 큐 (QUEUE) 큐 : 먼저들어온데이터가먼저나가는자료구조 선입선출 (FIFO: First-In First-Out) ( 예 ) 매표소의대기열 Ticket Box 전단 () 후단 () 큐 DT 삽입과삭제는 FIFO 순서를따른다. 삽입은큐의후단에서, 삭제는전단에서이루어진다. 객체 : n 개의 element

More information

슬라이드 1

슬라이드 1 Computer Networks Practice Socket 1 DK Han Junghwan Song dkhan@mmlab.snu.ac.kr jhsong@mmlab.snu.ac.kr 2012-3-26 Multimedia and Mobile communications Laboratory Introduction Client / Server model Server

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

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

슬라이드 1

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

More information

슬라이드 1

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

More information

리눅스 프로세스 관리

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

More information

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C4C656D70656C2D5A69762E637070>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C4C656D70656C2D5A69762E637070> /* */ /* LZWIN.C : Lempel-Ziv compression using Sliding Window */ /* */ #include "stdafx.h" #include "Lempel-Ziv.h" 1 /* 큐를초기화 */ void LZ::init_queue(void) front = rear = 0; /* 큐가꽉찼으면 1 을되돌림 */ int LZ::queue_full(void)

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

Microsoft PowerPoint APUE(File InO).pptx

Microsoft PowerPoint APUE(File InO).pptx Linux/UNIX Programming 문양세강원대학교 IT대학컴퓨터과학전공 강의목표및내용 강의목표 파일의특성을이해한다. 파일을열고닫는다. 파일로부터데이터를읽고쓴다. 기타파일제어함수를익힌다. 강의내용 파일구조 (UNIX 파일은어떤구조일까?) 파일관련시스템호출 시스템호출의효율과구조 Page 2 What is a File? A file is a contiguous

More information

Microsoft PowerPoint - 08-chap06-Queue.ppt

Microsoft PowerPoint - 08-chap06-Queue.ppt / 큐 (QUEUE) Chapter 큐 : 먼저들어온데이터가먼저나가는자료구조 선입선출 (FIFO: First-In First-Out) ( 예 ) 매표소의대기열 큐 Ticket ox Dongwon Jeong djeong@kunsan.ac.kr Department of Kunsan National University 전단 () 후단 () 학습목표 큐 DT 큐의개념및추상데이터타입에대한이해

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 16 강. 파일입출력목차 파일입출력기초 파일입출력모드 텍스트파일과이진파일 이진파일입출력 임의접근 1 /18 16 강. 파일입출력파일입출력기초 파일입출력과정 파일스트림객체생성 파일열기 사용 : 기본적으로표준입출력객체 (cin, cout) 사용방법과동일 파일닫기 파일스트림클래스의종류

More information

API 매뉴얼

API 매뉴얼 PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned

More information

Microsoft PowerPoint - Supplement-02-Socket Overview.ppt [호환 모드]

Microsoft PowerPoint - Supplement-02-Socket Overview.ppt [호환 모드] 소켓개요 참고문헌 : 컴퓨터네트워크프로그래밍, 김화종, 홍릉과학출판사 Socket 정의 Socket 은 Transport 계층 (TCP 나 UDP) 을이용하는 API 1982 년 BSD 유닉스 41 에서처음소개 윈도우즈의경우 Winsock 제공 JAVA 또한 Socket 프로그래밍을위한클래스제공 Socket Interface 의위치 5-7 (Ses, Pre,

More information

Microsoft PowerPoint - 08-Queue.ppt

Microsoft PowerPoint - 08-Queue.ppt Chapter Queue ( 큐 ) Dongwon Jeong djeong@kunsan.ac.kr Department of Informatics & Statistics 학습목표 큐의개념및추상데이터타입에대한이해 큐의구현방법 배열 링크드리스트 덱 / 데크의개념과구현방법 큐 (QUEUE) 큐 : 먼저들어온데이터가먼저나가는자료구조 선입선출 (FIFO: First-In

More information

11장 포인터

11장 포인터 누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E > 웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 소켓 (Socket) (1/2) Socket 이란? 서버와클라이언트가서로특정한규약을사용하여데이터를전송하기위한방식 서버와클라이언트는소켓연결을기다렸다가소켓이연결되면서로데이터를전송 현재네트워크상에서의모든통신의근간은 Socket 이라할수있음 Page 2 1 소켓 (Socket) (2/2)

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

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö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

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

<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

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

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

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해

More information

Microsoft PowerPoint - 03-TCP Programming.ppt

Microsoft PowerPoint - 03-TCP Programming.ppt Chapter 3. - Socket in Java - 목차 소켓소개 자바에서의 프로그램작성방법 주요클래스와메소드 HTTP 프로토콜을이용한예제 에코프로그램 에코프로그램 - EchoServer 에코프로그램 - EchoClient Q/A 1 1 소켓소개 IP,, and Socket 포트 (): 전송계층에서통신을수행하는응용프로그램을찾기위한주소 소켓 (Socket):

More information

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드] - Socket Programming in Java - 목차 소켓소개 자바에서의 TCP 프로그램작성방법 주요클래스와메소드 HTTP 프로토콜을이용한예제 에코프로그램 Q/A 에코프로그램 - EchoServer 에코프로그램 - EchoClient TCP Programming 1 소켓소개 IP, Port, and Socket 포트 (Port): 전송계층에서통신을수행하는응용프로그램을찾기위한주소

More information

Frama-C/JESSIS 사용법 소개

Frama-C/JESSIS 사용법 소개 Frama-C 프로그램검증시스템소개 박종현 @ POSTECH PL Frama-C? C 프로그램대상정적분석도구 플러그인구조 JESSIE Wp Aorai Frama-C 커널 2 ROSAEC 2011 동계워크샵 @ 통영 JESSIE? Frama-C 연역검증플러그인 프로그램분석 검증조건추출 증명 Hoare 논리에기초한프로그램검증도구 사용법 $ frama-c jessie

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(File InO).ppt

Microsoft PowerPoint APUE(File InO).ppt 컴퓨터특강 () [Ch. 3] 2006 년봄학기 문양세강원대학교컴퓨터과학과 강의목표및내용 강의목표 파일의특성을이해한다. 파일을열고닫는다. 파일로부터데이터를읽고쓴다. 기타파일제어함수를익힌다. 강의내용 파일구조 (UNIX 파일은어떤구조일까?) 파일관련시스템호출 시스템호출의효율과구조 Page 2 1 What is a File? A file is a contiguous

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

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

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

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

More information

<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

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 인터넷프로토콜 03 장 도메인네임시스템과주소 패밀리 (IPv4-IPv6 서비스 ) 1 목차 제 3 장도메인네임시스템과주소패밀리 3.1 도메인네임주소를숫자주소로매핑하기 3.2 IP 버전에무관한주소-범용코드의작성 3.3 숫자주소에서도메인네임주소획득하기 2 getaddrinfo() 를활용한주소 범용 (Generic) 코드 주소범용 (Generic) 코드란? 주소버전

More information

컴파일러

컴파일러 YACC 응용예 Desktop Calculator 7/23 Lex 입력 수식문법을위한 lex 입력 : calc.l %{ #include calc.tab.h" %} %% [0-9]+ return(number) [ \t] \n return(0) \+ return('+') \* return('*'). { printf("'%c': illegal character\n",

More information

슬라이드 1

슬라이드 1 CHAP 6: 큐 큐 (QUEUE) 큐 : 먼저들어온데이터가먼저나가는자료구조 선입선출 (FIFO: First-In First-Out) ( 예 ) 매표소의대기열 Ticket Box 전단 (front) 후단 (rear) 큐 ADT 삽입과삭제는 FIFO 순서를따른다. 삽입은큐의후단에서, 삭제는전단에서이루어진다. 객체 : n 개의 element 형으로구성된요소들의순서있는모임

More information

The OSI Model

The OSI Model Advanced Socket Programming Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 다중처리기술 2 다중처리기술 Multitasking Multi-process Multi-thread Multiplexing Polling Selecting Interrupt

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 13 장파일처리 1. 스트림의개념을이해한다. 2. 객체지향적인방법을사용하여파일입출력을할수있다. 3. 텍스트파일과이진파일의차이점을이해한다. 4. 순차파일과임의접근파일의차이점을이해한다. 이번장에서만들어볼프로그램 스트림 (stream) 스트림 (stream) 은 순서가있는데이터의연속적인흐름 이다. 스트림은입출력을물의흐름처럼간주하는것이다. 입출력관련클래스들 파일쓰기

More information

제9장 프로세스 제어

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

More information

Microsoft PowerPoint APUE(File InO)

Microsoft PowerPoint APUE(File InO) Linux/UNIX Programming 문양세강원대학교 IT특성화대학컴퓨터과학전공 강의목표및내용 강의목표 파일의특성을이해한다. 파일을열고닫는다. 파일로부터데이터를읽고쓴다. 기타파일제어함수를익힌다. 강의내용 파일구조 (UNIX 파일은어떤구조일까?) 파일관련시스템호출 시스템호출의효율과구조 Page 2 What is a File? A file is a contiguous

More information

슬라이드 1

슬라이드 1 1 Computer Networks Practice #1-1 - Socket Programming 이지민 (jmlee@mmlab.snu.ac.kr) 장동현 (dhjang@mmlab.snu.ac.kr) 2011. 9. 14 2 Transport layer 가하는일 Reliability 패킷젂송에오류가생기면잧젂송함으로써마치 오류가나지않는것처럼 싞뢰된젂송을 Application

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

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

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음

More information