티스토리 뷰
Signal
시그널
[ Signal ]
Signal
: 시스템에서 발생하는 이벤트에 대한 작은 Message.
: Kernel이 목적지 프로세스(Destination Process)에 Signal Number를 전송.
: 프로세스 및 Kernel이 다른 프로세스를 중단하는 것을 허용.
: 소프트웨어 인터럽트(Software Interrupt)라고 하는 인터럽트의 한 종류이다.
Pending & Blocked Bits
: Kernel은 각 프로세스에서 Pending과 Blocked Bit를 유지.
· Pending
: Signal이 보내졌지만 아직 도착하지 않은 상태를 표시. → 처리 대기중인 Signal.
( Signal 전송 → Pending Bit Set )
: 이벤트가 전송되면 Set, 도착(Recieve)하면 Clear를 유지.
: Signal이 도착했는지 도착하지 않았는지 확인 가능.
: Bit로 유지되기 때문에 받지 않으면 알 수 없음.
: 동일한 유형의 Signal이 연속적으로 보내질 경우 후속 신호가 무시됨.
( Bit로 관리되므로 보내졌을 때 Set, 도착했을 때 Clear가 됨. 사이에 있는 신호를 알 수 없음. Not Queued라고 함 )
· Blocked
: 시그널이 Blocked 상태인지 아닌지를 표시.
: Blocked 상태이면 Signal이 전송되어도 수신할 수 없음. → 이 때 수신할 시 Error.
: sigprocmask라는 함수로 Set과 Clear를 지정.
: Signal Mask라고도 함.
Recieve
: 목적지 프로세스의 Signal의 수신.
: Kernel이 프로세스를 Kernel Mode에서 User Mode로 전환할 때 PnB 집합을 체크.
( PnB : Pending & not Blocked. Pending 상태이고 Block되지 않은 시그널이 있으면 받아야 하므로, 확인 후 수신 )
: Signal이 Recieve되었을 때, 3가지 방법으로 이를 처리.
· Ignore : 아무 조치도 취하지 않음.
· Terminate : 프로세스 종료.
· Catch : 획득. 시그널 제어. Catch 시 수행해야 할 별도의 함수가 존재. → Signal Handler
( Signal Handler는 User-Level 함수이다. Signal Handler의 실행이 끝나면 중단된 작업 재개. )
Installing Signal Handlers
: Signal 함수를 통하여 Signal Handler를 등록(Install).
: Signal은 두 개의 인자를 가짐. → signum과 sighandler
: User-Level에서 Catch 시 함수가 수행되도록 함.
: Signal Handler는 프로세스 간의 동기화(Concurrency) 문제가 생길 수 있음.
( Error Number같은 경우, 본래 프로세스에서 보내려 했던 Error Number가 Handler의 Error Number로 바뀔 수 있음 )
※ Signal Handler는 최대한 빠르게 끝나도록 코딩하는 것이 좋음.
: Signal Handler는 Signal이 Catch 되었을 때 발생하므로 Delay가 생길 수 있음.
Installing 방식
· signal function
: 시스템에 따라 다르게 구현됨.
· sigaction function
: signal function의 단점 보완.
: 시스템이 달라도 동일하게 구현됨.
'컴퓨터 공학 이론 > 시스템 프로그래밍' 카테고리의 다른 글
[시스템 프로그래밍] Status Register (0) | 2022.12.04 |
---|---|
[시스템 프로그래밍] File Structure & I/O (0) | 2022.12.03 |
[시스템 프로그래밍] Process의 생성과 종료 (0) | 2022.12.02 |
[시스템 프로그래밍] Process와 Context Switching (0) | 2022.11.30 |
[시스템 프로그래밍] Exceptional Control Flow와 System Call (0) | 2022.11.29 |