본문 바로가기
OS/쉽게 배우는 운영체제

프로세스 동기화 (1)

by re-hwi 2022. 3. 3.

최근 개강전 컴활 자격증을 따느라 블로그에 소홀했었던것 같다. 짧은 기간동안 되게 열심히 자격증 공부를 했음에도 불구하고 좋은 결과가 나와 뿌듯했다. 

컴활 자격증에 대한 이야기는 자격증 카테고리에서 다루도록 하고 이번에 공부한 내용은 '프로세스의 통신'이다.

 

내가 1학년일때 아무 프로그램이나 만들어 오라는 과제를 받았었다. 한참 갈피를 못 찾고 고민하던 중 개발자 친구가 서버를 만든 후  '소켓'을 이용하여 클라이언트 PC와 통신을 할 수 있는 프로그램은 만들어 준 적이 있었다. 

 

당시에는 정말 어려운 기술을 썼구나 라는 생각을 했었는데 지금 다시 보니 생각보다 쉽고 익숙한 내용이었다. OS를 끝내면 구글링을 통해 소켓에 대해 조금 더 알아보고 다시 그 프로그램을 만들 생각이다. 


프로세스 간 통신

 

프로세스 통신의 종류

- 프로세스 내부 데이터 통신 : 하나의 프로세스 내에 2개 이상의 스레드가 존재하는 경우의 통신. 프로세스 내부의 스레드는 전역변수나 파일을 이용하여 데이터를 주고받는다.

 

- 프로세스 간 데이터 통신 : 같은 컴퓨터에 있는 여러 프로세스끼리 통신하는 경우. 공용 파일 또는 운영체제가 제공하는 파이프를 사용하여 통신

 

- 네트워크를 이용한 데이터 통신 : 여러 컴퓨터가 네트워크로 연결되어 있을 때 소켓을 이용하여 데이터를 주고 받음. 소켓을 이용하는 프로세스간의 통신을 '네트워킹' 이라고 한다.

프로세스 간 통신의 분류

 

1) 통신 방향에 따른 분류

 

- 양방향 통신 : 데이터를 동시에 양쪽 방향으로 전송할 수 있는 구조이다.

- 반양방향 통신 : 양방향으로 데이터를 전송할 수 있지만 동시 전송은 불가능하다. 

- 단방향 통신 : 한쪽 방향으로만 데이터를 전송할 수 있는 구조이다. 

 

2) 통신 구현 방식에 따른 분류

 

- 대기가 있는 통신 : 동기화를 지원하는 통신방식. 데이터를 받는 쪽은 데이터가 도착할 때까지 자동으로 대기 상태에 머물러 있다. 

 

- 대기가 없는 통신 : 동기화를 지원하지 않는 형식. 데이터를 받는 쪽은 *바쁜 대기를 사용하여 데이터가 도착했는지 확인해야 한다. 

 

프로세스 간 통신의 종류

 

- 전역변수를 이용한 통신

: 공동으로 관리하는 메모리를 사용하여 데이터를 주고받는 것 

  • 직접적인 관련이 있는 프로세스 간에 사용
  • 단방향 통신 
  • *동기화 지원 X → 바쁜 대기를 돌아야함

ex) 부모자식 관계를 가진 프로세스에 전역변수를 설정해 부모 클래스에서 자식에게 무언가를 전하고 싶을 때 전역변수를 바꾸어 알려준다. 

 

 

- 파일을 이용한 통신

: 코드를 통해 다른 외부의 파일을 불러올 수 있다.

  • 파일을 열고/ 읽고/ 쓰고/ 닫는 4가지 부분으로 나누어져있음
  • 파일 열기 (open) : 사용하고자 하는 파일이 있는지, 파일이 있다면 쓰기권한이 있는지 확인
  • 읽기/쓰기 연산 (write/read) : 파일의 정보를 읽거나 쓸 수 있음. → write(fd,"쓰고싶은 내용",데이터의 바이트 수)
  • 파일 닫기 (close) : *fd가 가리키는 파일을 닫는다. 
  • 단방향 통신
  • 동기화 지원 X

- *파이프를 이용한 통신

: 운영체제가 제공하는 방식이여서 동기화를 사용할 수 있으며 파일 입출력과 비슷함

  • 단방향 통신
  • 동기화 지원

이름 없는 파이프 : 일반적인 파이프. 서로 관련있는 프로세스에 사용

이름 있는 파이프 : *FIFO라는 파일을 사용하여 서로 관련 없는 프로세스 간 통신에 사용

 

- 소켓을 이용한 통신

: 여러 컴퓨터에 있는 프로세스끼리의 통신. 네트워킹이라고도 함

  • 원격 프로세저 호출이나 소켓 사용
  • 동기화 지원
  • 하나의 소켓으로 양방향 통신 가능

 

용어정리

바쁜 대기 : 데이터의 상태변화를 살펴보기 위해 반복문을 무한 실행하며 기다리는 것

동기화 : 데이터가 도착했음을 알려줌 → 바쁜 대기를 안할 수 있게 도움

fd (file descriptor) : 파일 기술자. 파일에 접근할 수 있게 해주는 코드

파이프 : 운영체제가 제공하는 동기화 통신방식

FIFO : 가장 먼저 들어간 데이터가 가장 먼저 나옴

 

반응형

'OS > 쉽게 배우는 운영체제' 카테고리의 다른 글

교착 상태  (2) 2022.03.08
프로세스 동기화 (2)  (0) 2022.03.06
CPU 스케줄링 (2)  (0) 2022.02.23
CPU 스케줄링 (1)  (0) 2022.02.22
프로세스 관리 (2)  (0) 2022.02.19

댓글