Signal
-
Exceptional Control Flow 2 - Signal대학/시스템소프트웨어 2022. 10. 22. 22:17
- Signal 시그널은 OS가 어떤 이벤트가 일어났음을 프로세스에게 알리는 것이다. 다음의 예시 상황을 가정해보자. int *ptr; ptr = 0x00000100; 이렇게 합법적으로 할당받은 메모리 공간이 아닌 곳에 접근할 경우, Segmentation violation exception이 발생한다. 이런 exception 들은 CPU에서 kernel에 전달되고, kernel(OS)는 이 코드를 실행시킨 프로세스에게 signal을 보내게 된다. 시그널을 받은 프로세스가 취할 수 있는 행동은 다음 세가지 행동 중 하나이다. 시그널을 무시한다. 프로세스를 종료한다. 개발자가 정의한 시그널 핸들러로 시그널을 처리한다. 시그널은 들어왔다고 바로 처리되는게 아니다. 프로세스가 ready 상태에서 시그널이 도착..
-
시그널대학/자료구조실습 2022. 10. 20. 21:11
- 시그널 프로세스가 실행되는 도중 예외 상황에 발생하는 이벤트 또는 신호를 시그널이라 부른다. 시그널의 정보와 그 의미는 일대일 매칭되기 때문에, 빠르게 전달하고 처리할 수 있다. Linux, UNIX 계열 운영체제에서는 kill -l 명령어로 시그널의 종류를 확인할 수 있다. 시그널은 다음의 두 가지 용도로 특히 잘 사용되는데, 비동기적인 이벤트의 발생을 통지하기 위한 용도(e.g. 프로세스 종료) 프로세스 간의 통신이나 동기화 하기 위한 용도(e.g. 알람) 시그널은 구현에 따라 비동기, 동기적으로 처리될 수 있다. 비동기적: 시그널이 특정 시간에 발생하는 것을 기다리지 않음 동기적: 동작을 중단하고, 시그널이 발생하기를 기다림 시그널은 각 기본동작이 정의되어 있다. (시그널 핸들러를 굳이 구현 안..