[オペレーティングシステム]プロセス構造-(6)


IPCテクノロジーのように使用できる信号とスロットについて説明します.

Signal

  • 信号はアクティブ.
  • 特定信号はカスタマイズ可能
  • unixが30年以上使用している伝統技法
  • カーネルまたはプロセス内の他のプロセスで発生したイベントを通知する
  • フロー関連コードに関連信号処理プログラムを登録し、対応する信号処理を実行する
  • 信号無視:
  • 信号ブロック:一定時間非活動
  • 登録した信号ハンドルで特定動作を行う
  • 登録された信号処理プログラムがなければカーネルで基本動作を実行する
  • しゅしんごう

  • SIGKILL:キラープロセス(スーパー管理者が使用する信号)
  • SIGALARM:アラーム発生
  • SIGSOP:プロセス中止(CTRL+z)
  • SIGCONT:運転停止のプロセス
  • SIGINT:プロセスへの割り込み送信によりプロセスを殺す(CTRL+C)
  • SIGSEGV:プロセスが異なるメモリ霊億を侵す
  • kill -l

    信号関連コードの例

  • 信号処理プログラム登録・実施
  • static void signal_handler(int signo) {
      printf("Catch SIGINT!\n");
      exit(EXIT_SUCCESS);
    }
    
    int main (void) {
      if(signal(SIGINT, signal_handler) == SIG_ERR) {
        printf("Can't catch SIGINT!\n");
        exit(EXIT_FAILURE);
      }
      
      for(;;)
        pause();
      return 0;
    }
  • SIG IGN
  • int main(void) {
      if(signal(SIGINT, SIG_IGN) == SIG_ERR){
        printf("Can't catch SIGINT!\n");
        exit (EXIT_FAILURE);
      }
      
      for(;;)
        pause();
      return 0;
    }

    信号とプロセス


  • PCBは、当該プロセスブロックまたは処理により信号に関する情報を管理する
  • signpending:信号が出た場合、PCBに処理が必要な信号があることを通知する
  • pending:信号待ち状態
  • ブロック:ブロック状態の信号通知
  • sig:信号ごとにどのような操作を行うべきかの通知
  • Socket

  • スロットはネットワーク通信用技術
  • 基本的に2台の異なるコンピュータ間でネットワークベースの通信を行うための技術
    /457917、ネットワークデバイスのシステムを使用することを考えてみてください.
  • ソケットとIPC



    画像ソース
  • 1台のコンピュータ内で2つのプロセス間で通信技術を使用する