Signal Handling 2005. 4. 1( 금 ) 한 민 규

Slides:



Advertisements
Similar presentations
Green Ajou Administrative Procedures그린아주 운영절차
Advertisements

ALL IN ONE WORKING HOLIDAY!
* 07/16/96 처음으로 배우는 C 프로그래밍 제1부 기초 제1장 시작하기 *.
C++ Tutorial 1 서강대학교 데이터베이스 연구실.
10. 예외 처리.
Project #2-2. Pintos User Program
Chapter 7 ARP and RARP.
SYSTEM CALL (Syscall) CSLAB SEWON PARK.
Linux/UNIX Programming APUE (The Environment of a UNIX Process)
Chapter 3 데이터와 신호 (Data and Signals).
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
Linux/UNIX Programming APUE (Process Control)
22 장 프로세스간 전달 : UDP와 TCP 22.1 프로세스간 전달 22.2 사용자 데이터그램 프로토콜
과목 홈페이지  전산학개론 이메일 숙제를 제출할 경우, 메일 제목은 반드시 ‘[전산학개론]’으로 시작.
Synchronization.
Internet Control Message Protocol (ICMP)
Internet Computing KUT Youn-Hee Han
인공지능실험실 석사 2학기 김승겸 TCP/IP Socket Programming… 제 10장 멀티태스킹 기반의 서버구현 인공지능실험실 석사 2학기 김승겸
Signal & Inter-Process Communication
Department of Computer Engineering
제 18 장 TCP/IP 연결 확립과 종료 정보통신연구실.
6 프로세스 생성과 실행.
6 프로세스 생성과 실행.
Chapter 2 OSI 모델과 TCP/IP 프로토콜.
Global array – 1M의 integer, P0.dat, P1.dat, P2.dat, P3.dat
Department of Computer Engineering
Routing Protocol - Router의 주 목적 중 하나는 Routing
PPP (Point-to-Point Protocol)
fork로 생성한 자식 프로세스에서 exec 함수군을 호출
Carlos Guimar˜aes1, Daniel Corujo2, Rui L. Aguiar3
Internet Computing KUT Youn-Hee Han
Signal & Inter-Process Communication
Term Project Team Member
프로세스 생성[1] 프로그램 실행 : system(3) #include <stdlib.h>
Lecture #3 프로세스(Process).
After You Read, Talk and Talk
Chapter 2. Finite Automata Exercises
Discrete Math II Howon Kim
프로젝트 시연 1M integer를 사용할 것 코드 부분 설명 (5~10분), 실행 ./lvm_write –L1M 4M
Chapter 31 Faraday’s Law.
Lecture 1. Overview of the Course
제 4 장. Regular Language의 특성
Signal & Inter-Process Communication
제4장 유닉스 쉘 숙명여대 창병모 2011 가을.
Transmission Control Protocol (TCP)
Discrete Math II Howon Kim
Operating System 10주차 - IPC(InterProcess Communication) -
Linux/UNIX Programming
School of Electronics and Information. Kyung Hee University.
신경계(nerve) nervous system.
CEO가 가져야 할 품질 혁신 마인드.
Operating System Multiple Access Chatting Program using Multithread
제 세 동.
Signal & Inter-Process Communication
-았/었을 때 한국어를 처음 배웠을 때 뭐가 제일 어려웠어요? 발음이 어려웠어요.
23. Unix 시스템 커널. 개요 커널의 기본 서비스 커널의 특징 참고서적 프로세스 관리 장치 관리 파일 관리 가상 메모리
Department of Computer Engineering
10% 여행자보험도 하나샵 하나샵 회원이라면! 당연히 챙겨야 할 혜택 출발 당일 가입 가능
의성어 국어어휘론 이신옥 정지연 정지형 임총인.
창 병 모 숙명여대 전산학과 자바 언어를 위한 CFA 창 병 모 숙명여대 전산학과
1. 관계 데이터 모델 (1) 관계 데이터 모델 정의 ① 논리적인 데이터 모델에서 데이터간의 관계를 기본키(primary key) 와 이를 참조하는 외래키(foreign key)로 표현하는 데이터 모델 ② 개체 집합에 대한 속성 관계를 표현하기 위해 개체를 테이블(table)
제 9 장 ICMP 9.1 메시지 유형 9.2 메시지 형식 9.3 오류 보고 9.4 질의 9.5 검사합 9.6 ICMP 설계
제4장 유닉스 쉘 숙명여대 창병모
Signal & Inter-Process Communication
Linux/UNIX Programming
[CPA340] Algorithms and Practice Youn-Hee Han
빈칸에 알맞은 것을 [보기]에서 골라 문장을 완성하시오
Signal & Inter-Process Communication
Chapter 7: Deadlocks.
Sawasdee ka.
Presentation transcript:

Signal Handling ( 금 ) 한 민 규

2 Contents TIME_WAIT STATE Signal Handling POSIX Signal Semantics Wait, Waitpid Function

3 TIME_WAIT STATE To implement TCP ’ s full-duplex connection termination reliably. Because that end is the one that might have to retransmit the final ACK To allow old duplicate segments to expire in the network. To do TCP will not initiate a new incarnation of a connection that is currently in the TIME_WAIT state. Since the duration of the TIME_WAIT state is twice the MSL(120 sec), this allows MSL seconds for a packet in one direction to be lost, and another MSL seconds for the reply to be lost. By enforcing this rule we are guaranteed that when we successfully establish a TCP connection, all old duplicates from previous incarnations of this connection have expired in the network

4 Signal Handling Definition A signal is a notification to a process that an event has occurred Signals usually occur asynchronously Operation By one process to another process (or to itself) By the kernel to a process  Ex) The SIGCHLD signal is one that is sent by the kernel whenever a process terminates, to the parent of the terminating process Every signal has a disposition, which is also called the action associated with the signal. We set the disposition of a signal by calling the sigaction function

5 POSIX Signal Semantics Once a signal handler is installed, it remains installed. Older systems removed the signal handler each time it was executed. While a signal handler is executing, the signal being delivered is blocked. Furthermore any additional signals that were specified in the sa_mask singnal set passed to sigaction when the handler was installed are also blocked. In Figure 5.6 we set sa_mask to the empty set, meaning no additional signals are blocked other than the signal being caught. That is, by default Unix signals are not queued If a signal is generated one or more times while it is blocked, it is normally delivered only one time after the signal is unblocked. That is, by default Unix signals are not queued

6 Signal Function Unp.h Definition Lib/signal.c Normal function prototype :  void (*signal(int signo, void (*func) (int))) (int);

7 Handling SIGCHLD Signals The purpose of the zombie state is to maintain information about the child for the parent to fetch at some later time This information includes  The process ID of the child  Its termination status  Information on the resource utilization of the child

8 Handling Zombies We establish the signal handler by adding the function call Signal(SIGCHLD, sig_chld);

9 Handling Interrupted System call 4. Since the signal was caught by the parent while the parent was blocked in a slow system call(accept), the kernel causes the accept to return an error of EINTR(interrupted system call). The parent does not handle this error, so it aborts

10 Handling Interrupted System call(Con’t) parent process 가 slow system call(accept) 에서 blocked 됐을 때 signal 이 발생하면 accept() 는 EINTR error 로 return 하게 됨  parent process aborted ( 교재 p.133~135 참고 )

11 Wait & waitpid Functions #include pid_twait(int *statloc); return : process ID if OK, 0 or -1 on error 정의 child process 가 종료될때 까지 또는 현재 프로세스를 종료시키거나 시그널 처리 함수를 호출하는 행동을 하는 신호가 전달될 때까지 현재 프로세스의 실행을 일시 중지한다. 만일 child process 가 wait() 사용시 이미 종료되었다면 (zombie process), 함수는 즉시 리턴한다. child process 가 사용한 resource 들은 모두 반환된다.

12 Wait & waitpid Functions(Con’t) 정의 pid 인자가 가리키는 child process 가 종료될때까지 또는 현재 프로세스를 종료시키거나 시그널 처리함수를 호출하는 행동을 하는 신호가 전달될때까지 현재 프로세스의 실행을 일시 중지한다. 만일 pid 로 지정된 child process 가 waitpid() 사용시 이미 종료되었다면 (zombie process), 함수는 즉시 리턴한다. child process 가 사용한 resource 들은 모두 반환된다. pid < -1 : 프로세세 그룹 ID 가 pid 의 절대값과 같은 child process 를 대기 -1 : child process 를 대기. (wait 와 유사 ) 0 : process group ID 가 호출 process ID 와 같은 child process 를 대기 > 0 : process ID 가 pid 의 값과 같은 child process 를 대기 options WNOHANG : 어떠한 child process 도 종료되지 않았다면 즉시 리턴 #include pid_t waitpid(pid_t pid, int *statloc, int options); return : process ID if OK, 0 or -1 on error

13 Wait & waitpid Functions(Con’t)

14 Wait & waitpid Functions(Con’t)

15 Wait & waitpid Functions(Con’t)

16 Wait & waitpid Functions(Con’t) 여러개의 client process 들이 동시에 terminate 될 경우 하나의 SIGCHLD 만 parent process 에 전달되고 나머지는 처리되지 않음. signal 은 queuing 되지 않는다.

17 Server Program 작성시 주의사항 We must catch the SIGCHLD signal when forking child processes We must handle interrupted system calls when we catch signals A SIGCHLD handler must be coded correctly using waitpid() to prevent any zombies from being left around