시스템 V IPC (System V) 1 -Infinite
CS/시스템 프로그래밍2022. 6. 21. 01:21시스템 V IPC (System V) 1 -Infinite

이번 포스팅은 System V IPC 기법들에 대하여 알아보도록 하겠습니다. System V에서는 메시지 큐, 공유 메모리 기법을 통해 프로세스 간 통신을 진행 할 수 있습니다. 독립적인 프로세스들이 서로 통신을 함에 있어 Critical section(중요한 데이터 영역)에 동시에 진입할 경우 Race Condition(충돌)이 발생 할 수 있습니다. 이를 막기위해 독립적인 프로세스들은 동기화 과정이 필요한데 세마포어가 해결을 도와줄 수 있습니다. -> 세마포어는 단순히 메모리 영역에 접근할 수 있는 프로세스들을 알려주는 역할이며 이는 통신기법이 아닌 동기화기법에 해당합니다. 또한 이번 챕터에서 다룰 통신기법들은 각각 공통된 키 생성 -> 키를 통한 식별자 생성 과정을 거친 후 제공되는 함수들을 사용하..

파이프(PIPE) -Infinite
CS/시스템 프로그래밍2022. 6. 20. 23:34파이프(PIPE) -Infinite

이번 포스팅은 파이프에 대하여 알아보도록 하겠습니다. ● 이름 없는 파이프(PIPEs) -> 파이프는 두 프로세스 간에 통신을 할 수 있도록 인터페이스를 제공합니다. (부모-자식 프로세스 간 통신) -> 파이프는 기본적으로는 단방향이지만 두 개의 파이프를 이용하여 양방향도 가능은 합니다. -> 파이프도 일종의 파일이기 때문에 읽고 쓸 수 있는 파일 기술자가 필요합니다. (부모-자식 간에는 파일 기술자를 공유하고 있기 때문에 통신이 가능한거죠) 파이프와 관련하여 제공되는 함수 - 파이프 만들기 : popen(), pipe() - 파이프 닫기 : pclose() 파이프 생성함수를 통해 파이프를 만들게 되면 fd[0](read전용), fd[1](write전용) 파일 기술자가 생성되고 단방향 통신 특성상 부모-..

CS/시스템 프로그래밍2022. 6. 20. 22:47시그널(signal) -Infinite

이번 포스팅은 8장 시그널에 대하여 알아보도록 하겠습니다. ● 시그널(Signal) - 시그널은 소프트웨어 인터럽트이다. - 시그널은 비동기적으로 프로세스에 신호를 보낸다. 시그널은 다음과 같은 세 가지 경우에 발생한다. 1. 0으로 나누기처럼 프로그램에서 예외적인 상황이 일어나는 경우 2. 프로세스가 kill() 함수와 같이 시그널을 보낼 수 있는 함수를 사용해 다른 프로세스에 시그널을 보내는 경우 3. 사용자가 ctrl+c 같은 인터럽트 키를 입력한 경우 ● 시그널 보내는 함수 - kill(pid, sig) : 시그널을 임의로 보내기 위해서는 kill함수를 사용한다. 매개변수로 시그널을 보낼 프로세스의 pid, 보낼 시그널 번호를 지정한다. pid가 0보다 큰 수 : pid로 지정한 프로세스에 시그널..

쓰레드(Thread) -Infinite
CS/시스템 프로그래밍2022. 6. 20. 19:46쓰레드(Thread) -Infinite

이전 글에서 프로그램 내에서 자식 프로세스를 만들어 여러가지 명령어를 처리하는 방법에 대해서 배웠는데, 이번 글에서는 새롭게 프로세스를 만들어 처리하지 않고 쓰레드를 사용하여 명령어를 처리하는 방법에 대해서 알아 보도록 합시다. ● 프로세스 vs 쓰레드 Process : 프로그램의 실행상태를 의미하며 프로세스 생성 시 상태정보 및 PCB를 생성합니다. Thread : 프로세스의 작업단위를 의미하며 쓰레드 생성 시 PCB는 공유를 하며, 오로지 스택만을 생성합니다. ● 쓰레드를 사용하는 이유 -> 보통 리눅스 시스템에서 서버 프로그램은 수많은 클라이언트의 요청에 대해 응답을 하기위해 여러 프로세스를 만들어 task를 처리합니다. 하지만 주어진 task가 경량화된 작업일 경우에는 쓰레드를 이용하여 한개의 프..

image