IPC tutorials : signal1.c 및 signal2.c

2024. 4. 4. 22:43코딩 도구/운영체제

반응형

signal1.c 및 signal2.c

https://www.youtube.com/watch?v=ODixeqqD-Kc

이 강의에서는 시그널링을 사용하여 프로세스 간 통신을 하는 방법을 살펴봅니다.
시그널링은 운영 체제에서 제공하는 소프트 인터럽트 메커니즘 중 하나입니다.
하드웨어 인터럽트 외에도 소프트웨어 생성 인터럽트가 있어 서로 통신할 수 있습니다.
시그널은 이벤트 드리븐 커뮤니케이션을 위한 원시적인 방법 중 하나이며, 다양한 프로세스끼리 통신하는데 사용됩니다.
시그널은 다양한 운영 체제 기능들을 활용하는데 도움이 되며, 매뉴얼을 통해 그 활용법을 자세히 알 수 있습니다.


1.신호 및 인터럽트 처리에 대한 컴퓨터 시스템 설명

   - 운영 체제에서 제공되는 소프트한 인터프로세스 메커니즘인 '신호'를 통해 인터프로세스 통신 방법 살펴볼 것.
   - 인터럽트가 발생할 때 운영 체제가 없다면 프로그램 안에서 직접 인터럽트 핸들러를 연결하고 처리할 수 있지만, 운영 체제가 있는 경우, 하드웨어 인터럽트와 해당 핸들러를 운영 체제에 의해 관리함.
   - 운영 체제는 인터럽트 신호를 응용 프로그램으로 전달하고 해석하여 관리함, 이를 빠른 인터럽트나 인터럽트 관리자의 한 형태로 생각할 수 있음.
   - 하드웨어 인터럽트 외에도 운영 체제는 지원 구성요소 사이의 통신을 위해 소프트웨어 인터럽트도 사용함.

 

  • 운영 체제는 컴퓨터 시스템에서 하드웨어와 소프트웨어 간의 인터페이스를 제공하고, 자원을 효율적으로 관리하여 프로그램이 실행될 수 있도록 하는 시스템 소프트웨어입니다.
  •   영상에서 운영 체제(OS)의 역할 및 기능에 대한 언급과 관련이 있습니다. 전체적인 문맥으로 볼 때, 운영 체제는 하드웨어와 프로그램 간의 상호작용을 조정하고, 인터럽트와 같은 이벤트를 관리하여 프로세스 간 통신을 원활하게 하는 역할을 한다고 해석될 수 있습니다. 가능성이 높아 보이지만, 확실하지 않다면 추가 정보가 필요하다고 명시하면 좋을 것 같습니다.
  • 인터프로세스 메커니즘은 프로세스 간 통신을 위한 방법이며, 시그널링이 운영 체제에서 제공하는 하나의 소프트 인터럽트 메커니즘 중 하나로 사용된다. 시그널링을 사용하여 하드웨어와 소프트웨어 간 통신을 원활히 할 수 있다. 전체적인 문맥으로 볼 때, 이 내용은 프로세스들이 서로 통신하고 상호작용하는 방식을 강조하는 것으로 해석될 수 있다.
  • 신호는 컴퓨터 시스템에서 프로세스 간 통신을 위해 사용되는 메커니즘 중 하나입니다. 이는 운영 체제에서 제공하는 소프트 인터럽트 방식 중 하나로, 이벤트 드리븐 커뮤니케이션을 위한 원시적인 방법 중 하나입니다.
  • 전체적인 문맥으로 볼 때, 이 내용은 시그널을 사용하여 하드웨어 및 소프트웨어 인터럽트를 관리하고 다양한 프로세스끼리 통신하는데 도움이 되는 기술적인 측면을 설명하고 있습니다. 이는 운영 체제의 기능을 활용하면서 프로그램 간 상호작용 및 통신을 원활하게 하는데 사용되며, 주로 프로세스 간 메시지 전달이나 상태 변화 알림에 활용됩니다. 가능성이 높아 보이지만, 확실하지 않습니다.
  • 인터프로세스 통신은 프로세스들 간에 데이터를 교환하거나 통신하는 것을 말합니다.
  • 전체적인 문맥으로 볼 때, 이 내용은 운영 체제에서 제공하는 소프트 인터럽트 메커니즘인 시그널링을 통해 프로세스들이 서로 통신하는 방법을 다룹니다.
  • 시그널을 통해 프로세스들은 이벤트 기반으로 통신하며, 운영 체제의 기능을 활용하여 상호작용하고 데이터를 교환할 수 있습니다.
  • 이는 프로세스간 효율적인 협력과 작업 분산을 가능하게 하며, 운영 체제의 매뉴얼을 통해 자세한 활용법을 학습할 수 있습니다.



2.‍소프트웨어 시그널링과 프로세스 커뮤니케이션 예제


   - 프로세스 간 통신의 원시적 메커니즘, 시그널은 많은 정보를 주지 않지만 상호 통신을 가능케 함.
   - 예시로, 시그널은 다른 프로세스에 알림을 주는 데 주로 사용되며 이벤트 주도형 프로세스 간 통신을 실현함.
   - 시그널을 이용한 운영체제 기능을 자세히 보고 싶다면, Emanuel leave C 라이브러리를 확인할 수 있음.
   - 이러한 내용은 운영 체제의 기본 기능을 설명하며, 계속해서 이를 탐구하면 컴퓨터 시스템에 대한 폭넓은 지식을 얻을 수 있음.

 

  • 프로세스 간 통신은 여러 프로세스들이 서로 통신하고 데이터를 교환하는 메커니즘을 의미합니다. 이번 강의에서는 **시그널(signal)**이라는 소프트 인터럽트를 사용하여 프로세스 간 통신하는 방법에 대해 다루고 있습니다.
  • 이벤트 주도형(event-driven)은 소프트웨어 디자인 패턴 중 하나로, 이벤트가 발생했을 때 해당 이벤트에 반응하도록 설계된 소프트웨어를 의미합니다.

3.인터럽트 처리를 위한 시그널 핸들러 등록 방법과 동작 방식


   - 시그널 핸들러를 등록할 때 첫 번째 매개변수는 등록하려는 시그널의 인터럽트 *유형*이 아니라 인터럽트 *유형*의 종류이다.
   - 시그널 핸들러를 재정의하여 프로그램을 즉시 종료하는 *기본 동작*을 바꿀 수 있고, 이때 두 번째 매개변수는 함수 핸들러이다.
   - 핸들러 함수는 *시그널이 발생했을 때 호출되며* 반환 값이 없지만, 입력 값으로 시그널 값을 받는다.
   - 하나의 핸들러 함수를 여러 다른 신호 번호 또는 시그널 식별자에 등록할 수 있기 때문에, 시그널 코드를 명확히 하고, 이를 구분하기 위해 신호 코드가 있다.
   - 시그널 코드는 *프로그램 종료를 대신해* 직접 프린트하여 사용자에게 확인 여부를 묻는 방식으로 작동한다.

  • 시그널 핸들러란 시그널이 발생했을 때 실행되는 함수를 의미합니다. **이 문맥에서, '시그널 핸들러'는 프로그램이 특정 시그널을 받았을 때 어떤 동작을 할지 정의하는 함수를 가리킵니다. 즉, 시그널 핸들러를 등록함으로써 프로그램이 특정 상황에서 어떻게 반응해야 하는지를 제어할 수 있습니다. 전체적인 문맥으로 볼 때, 이 내용은 소프트웨어 간 통신에서 발생하는 인터럽트 메커니즘을 다루고 있으며, 시그널 핸들러는 그 중요한 개념 중 하나로 사용된 것으로 추정됩니다.
  • 시그널 핸들러는 프로세스 간 통신을 위해 사용되는데, 프로세스가 특정 시그널을 받았을 때 실행되는 함수로써 특정 동작을 수행합니다. 이 함수는 시그널 발생 시 원하는 작업을 정의할 수 있어, 시그널을 처리하는 데 유용하게 활용됩니다. 가능성이 높아 보이지만, 명확한 문맥을 통해 확신할 수 있습니다.
  • *유형*  : 전체적인 문맥으로 볼 때, 이 내용은 '유형'이 시그널 처리를 할 때 특정한 종류의 동작을 수행하기 위해 필요한 매개변수임을 보여줍니다.
  • 시그널 코드는 프로세스 간 통신을 하는데 사용되는 시그널링 메커니즘에서 중요한 부분입니다. 이 데이터에서 시그널 코드는 각 시그널에 대한 식별번호 또는 코드를 의미합니다.
  • 시그널 코드는 여러 시그널들을 구분하는 데 사용되며, 예를 들어 SIGINT는 인터럽트 시그널을 의미하고, 이를 통해 프로그램이 어떻게 동작할지 결정할 수 있습니다.



4.신호 처리와 프로그램 제어에 대한 기본 예제


   - 사용자가 'Y'를 입력하면 프로그램이 종료된다.
   - 사용자가 'Y'를 입력하지 않으면 핸들러가 종료되고 제어는 main 함수로 돌아가 계속 실행된다.
   - 프로그램이 무한 루프에 들어가면 Ctrl+C를 누르면 핸들러 함수가 실행되어 종료 여부를 묻는다.
   - 사용자가 'Yes'를 입력하면 프로세스가 종료되며, 'No'를 입력하면 종료되지 않는다.
   - 외부에서 생성된 이벤트나 신호가 프로그램으로 전달되며, 이를 통해 응용 프로그램의 제어 흐름이 변경될 수 있다.

 

  • 이러한 시스템에서 이벤트는 외부에서 생성된 신호를 프로그램으로 전달하고, 프로세스의 흐름을 제어하는 역할을 합니다.

5.간단한 예제와 함께 신호 및 타이머 신호의 활용 설명

   - 간단한 예제로부터 시작하여 Signal 1 to C와 같은 신호의 활용법을 설명함.
   - 두 번째 예시에서는 다양한 신호 종류와 타이머 신호 활용을 설명하며, 사용되는 API 및 구조체에 대해 집중적으로 설명함.
   - 구조체를 생성하고 타이머 신호를 활용하는 코드와 그에 따른 동작 과정을 다룸.
   - 시그널이 발생할 때의 동작 과정에 대한 설명 및 관련 용어 해석을 제시함.


6. 인터벌 타이머 구현과 작동 방법


   - 일정 간격의 *아이*를 등록해야 합니다. TV를 먼저 배치한 다음 TV를 다시 배치합니다. 여기에는 마이크로초가 있으므로 1과 사진을 가진 100,000 값을 넣습니다.
   - 이 조합은 1.1초를 만들어냅니다. 이 값을 'T'로 지정된 시간 값에 넣습니다. 여기서 'T'를 지정된 간격 타이머에 전달합니다. 여기에는 간격 타이머로 코드를 배치하세요.
   - 여기서 시간 간격의 구조에 의해 지정된 시간 간격이 주어지며 무한 루프로 빠집니다. 이 예제를 확인해봅시다. 1초 후에 벨이 울립니다. 1.1초마다 설정된 인터럽트 타이머로 자동으로 중단됩니다.
   - API를 사용해 타이머를 설정하고, 그 타이밍 이벤트 또는 타이밍 시그널에 대한 등록된 핸들러 함수를 호출합니다. 프로그램을 Ctrl+C를 눌러 중지할 수 있습니다. 프로그램이 중지될 때 동시에 두 번째 실행이 종료됩니다.

 

  • '아이' : 전체적인 문맥으로 볼 때, 여기서 '아이'는 시그널링 과정에서 등장하는 'T1길이'를 나타내는 것으로 추정됩니다.
  • 강의에서는 '아이'를 통해 프로세스 간 통신 과정에서 발생하는 시간 간격(1.1초)을 의미하는 것으로 사용되었습니다.
  • 이 정보를 바탕으로, '아이'는 시그널링을 위해 설정하는 시간 간격을 제어하는 중요한 변수임을 알 수 있습니다.
  • 인터럽트 타이머는 주기적인 시그널링을 통해 프로세스 간 통신을 가능하게 합니다.
  • **문맥(context)**을 보면, 인터럽트 타이머는 시간 간격을 설정하고, 설정한 시간에 맞춰 일어나는 인터럽트를 제어하는 역할을 합니다.
  • API란 Application Programming Interface의 약자로, 서로 다른 소프트웨어 시스템이 상호 작용하기 위한 규약이라고 할 수 있습니다.
  • 이 문맥에서는 API가 시그널링을 위해 사용된다는 것을 알 수 있습니다. 정확히는 타이밍 이벤트나 신호와 관련된 작업이 발생할 때 API를 사용하여 등록된 핸들러 함수를 호출하는 역할을 합니다.
  • 전체적인 문맥으로 볼 때, 이 내용은 API가 운영 체제와 프로세스 간 효율적인 통신을 위해 사용되는 중요한 도구임을 시사합니다. API를 활용함으로써 다양한 프로세스 간의 상호작용이 가능해지며, 프로그램의 실행 흐름을 유연하게 관리할 수 있습니다. 가능성이 높아 보이지만, 정확한 사용 방식은 API의 종류나 운용 방식에 따라 달라질 수 있습니다.



7.신호 2번과 2가지 예시를 다룬 후속 비디오 예고


   - 이것은 신호 2번이었습니다. 이 방향으로 고정합시다.
   - 다음 비디오에서는 *신호*를 사용한 2가지 예시를 더 다룰 예정입니다.

 

다음 게시글에서 다루겠습니다.


유튜브 일부 공개 영상 요약 정리입니다.

반응형

'코딩 도구 > 운영체제' 카테고리의 다른 글

프로세스 간 통신과 시그널 처리  (7) 2024.04.07
시그널링을 사용하여 프로세스 간 통신을 하는 방법  (2) 2024.04.06
IPC: pipe2.c  (13) 2024.04.05
IPC: pipe1.c  (15) 2024.04.05
IPC: signal3.c 및 signal4.c  (2) 2024.04.04