신호 프로그래밍이란 무엇입니까?
"신호 프로그래밍"은 상태의 일부 변경 또는 사용자 입력에 의해 생성 된 신호 또는 이벤트에 대한 응답으로 주로 기능하는 컴퓨터 프로그램을 참조하는 데 종종 사용되는 용어입니다. 컴퓨터 시스템의 거의 모든 부분은 주변 장치에서 운영 체제 자체에 이르기까지 응용 프로그램에 의해 캡처 한 다음 처리 될 수있는 신호를 생성 할 수 있습니다. 여러 형태로 신호 프로그래밍은 이벤트 중심 프로그래밍과 유사합니다. 신호 프로그래밍에 대한 가장 일반적인 용도 중 일부는 사용자 입력, 네트워크 통신 및 특정 시스템 신호를 캡처하고 처리하는 저수준 프로그램에 응답하는 그래픽 사용자 인터페이스와 관련이 있습니다.
컴퓨터 프로그래밍의 신호는 기원, 시스템 아키텍처 또는 프로그래머의 선호도에 따라 메시지, 이벤트 또는 인터럽트로 정의 될 수 있습니다. 가장 넓은 용어로는 일부 상태 또는 데이터가 변경되었으며 때로는 변경 사항에 대한 추가 정보가 동반됩니다.발생했습니다. 키를 누르면 수직으로 되돌아 갈 때 모니터와 같은 하드웨어에서 또는 메모리 할당 중에 페이지 결함과 같은 일이 발생할 때 조작 시스템에서 신호를 눌렀을 때 신호를 생성 할 수 있습니다.
응용 프로그램 내에서 신호 프로그래밍은 여러 유형의 아키텍처를 취할 수 있지만 가장 일반적인 중 하나는 청취자 또는 관찰자 모델입니다. 이 방법에서, 사용자 정의 코드는 일반적으로 운영 체제 내에서 신호 핸들러로 어떤 방식으로 전달 될 수 있으며, 이로 인해 해당 코드를 호출하여 함수가 찾고있는 내용과 일치하는 신호를 처리합니다. 함수가 자주 처리 할 수있는 신호의 유형은 신호 마스크로 알려진 변수에 의해 결정되므로 일부 신호는이를 처리하도록 설계되지 않은 루틴으로 전달되지 않습니다.
.두 번째 유형의 신호 프로그래밍에는 들어오는 SIG를 받아들이는 대기열을 구현하는 프로그램이 포함됩니다.nals. 이 대기열은 프로그램의 기본 실행 루프에서 폴링되며 신호가 큐에 들어가면 프로그램이 반응합니다. 그런 다음 각 신호는 논리적으로 정렬, 처리, 무시 또는 다른 프로세스로 전달 될 수 있습니다.
동시 프로세스 또는 다중 스레드 애플리케이션이 사용될 때 신호 프로그래밍에서 일부 어려움이 발생할 수 있습니다. 예를 들어 두 개의 별도 스레드가 두 개의 별도 사용자 입력 장치 또는 두 개의 네트워크 소켓에서 생성 된 신호를 듣는 경우 합병증이 발생할 수 있습니다. 두 사용자가 동시에 일부 데이터를 변경하려고 시도하면 프로그램 데이터가 동기화에서 벗어나 각 사용자마다 다르게 나타날 수 있습니다. 선형 큐를 사용하거나 스레드 동기화 방법을 구현하면이 상황을 방지하는 데 도움이 될 수 있습니다.