신호 프로그래밍이란 무엇입니까?

"신호 프로그래밍"은 상태의 일부 변화 또는 사용자 입력에 의해 생성 된 신호 또는 이벤트에 응답하여 주로 기능하는 컴퓨터 프로그램을 나타내는 데 종종 사용되는 용어입니다. 주변 장치에서 운영 체제 자체에 이르기까지 컴퓨터 시스템의 거의 모든 부분은 응용 프로그램에서 캡처 한 후 처리 할 수있는 신호를 생성 할 수 있습니다. 많은 형태에서 신호 프로그래밍은 이벤트 중심 프로그래밍과 유사합니다. 신호 프로그래밍의 가장 일반적인 용도 중 일부는 사용자 입력, 네트워크 통신 및 특정 시스템 신호를 캡처하고 처리하는 저수준 프로그램에 응답하는 그래픽 사용자 인터페이스입니다.

컴퓨터 프로그래밍의 신호는 출처, 시스템 구조 또는 프로그래머의 선호도에 따라 메시지, 이벤트 또는 인터럽트로 정의 될 수 있습니다. 가장 넓은 의미에서, 이는 일부 상태 나 데이터가 변경되었음을 나타내는 지표이며, 때때로 발생한 변경에 대한 추가 정보가 수반됩니다. 이 신호는 키를 눌렀을 때, 수직 복귀가 발생할 때 모니터와 같은 하드웨어에서, 또는 메모리 할당 중에 페이지 오류와 같은 문제가 발생하는 경우에도 운영 체제에서 생성 할 수 있습니다.

애플리케이션 내에서 신호 프로그래밍은 여러 유형의 아키텍처를 취할 수 있지만 가장 일반적인 것 중 하나는 리스너 또는 옵저버 모델입니다. 이 방법에서 사용자 정의 코드는 일반적으로 운영 체제 내에서 신호 처리기로 전달 될 수 있으며, 그런 다음 해당 코드를 호출하여 함수가 찾는 것과 일치하는 신호를 처리합니다. 함수가 자주 처리 할 수있는 신호 유형은 신호 마스크라고하는 변수에 의해 결정되므로 일부 신호는 처리하도록 설계되지 않은 루틴으로 전달되지 않습니다.

두 번째 유형의 신호 프로그래밍에는 들어오는 신호를 허용하는 큐를 구현하는 프로그램이 있어야합니다. 이 큐는 프로그램의 기본 실행 루프에서 폴링되며 신호가 큐에 들어 오면 프로그램이 반응합니다. 각 신호는 논리적으로 정렬, 처리, 무시 또는 다른 프로세스로 전달 될 수 있습니다.

동시 프로세스 또는 다중 스레드 응용 프로그램을 사용하는 경우 신호 프로그래밍에 약간의 어려움이 발생할 수 있습니다. 예를 들어, 두 개의 개별 스레드가 두 개의 개별 사용자 입력 장치 또는 두 개의 네트워크 소켓에서 생성 된 신호를 수신하는 경우 복잡한 문제가 발생할 수 있습니다. 두 명의 사용자가 동시에 일부 데이터를 변경하려고하면 프로그램 데이터가 동기화되지 않고 각 사용자마다 다르게 나타날 수 있습니다. 선형 큐를 사용하거나 스레드 동기화 방법을 구현하면 이러한 상황을 방지 할 수 있습니다.

다른 언어

이 문서가 도움이 되었나요? 피드백 감사드립니다 피드백 감사드립니다

어떻게 도와 드릴까요? 어떻게 도와 드릴까요?