본문 바로가기

운영체제

3. 프로세스 동기화

인프런의 [그림으로 쉽게 배우는 운영체제] 강의를 듣고 정리한 내용이다.

간단하게 들은 내용을 정리한 것으로, 더 자세한 내용을 원한다면 위 강의를 구매하는 것을 추천한다.

짧은 강의 형태로 단시간에 운영체제를 배우고 싶은 사람, 쉽게 운영체제를 배우고 싶은 사람에게 적합하다고 생각한다.

 

 

✏️ 프로세스 간 통신

  • 프로세스는 독립적으로 통신하지만 다른 프로세스와 데이터를 주고받으며 통신을 하는 경우도 있음
  • 컴퓨터 내에서 프로세스 간 통신을 하는 방법 - 파일파이프 이용
    • 파일 - 프로세스들이 하나의 파일을 이용해 읽고 씀
    • 파이프 - 운영체제가 생성한 파이프를 이용해 데이터를 읽고 쓰는 방법
  • 프로세스 내에서 쓰레드 간 통신을 하는 방법 - 쓰레드 이용
    • 코드, 데이터, 힙 영역은 공유하고, 스택은 각자. 데이터와 힙을 이용해 자원 공유
  • 운영체제가 제공하는 소켓통신이나 다른 컴퓨터 내의 함수를 호출하는 RPC(원격 프로시저 호출)를 이용 - 네트워크 이용

 

✏️ 공유자원과 임계구역

  • 공유 자원 - 프로세스 간 통신 시 공동으로 이용하는 변수나 파일들
  • 공유자원은 여러 프로세스가 공유하고 있기 때문에 각 프로세스의 접근 순서에 따라 결과가 달라질 수 있음
  • 동기화 문제 - 컨텍스트 스위칭으로 시분할 처리를 하기 때문에 어떤 프로세스가 먼저 실행되고 어떤 프로세스가 나중에 실행되는지 예측이 힘듦
  • 임계 구역(critical section) - 여러 프로세스가 동시에 사용하면 안되는 영역
    • 상호 배제(Mutual Exclusion) - 임계 구역의 매커니즘 해결 위한 방법
      1. 임계영역엔 동시에 하나의 프로세스만 접근한다.
      2. 여러 요청에도 하나의 프로세스의 접근만 허용한다.
      3. 임계구역에 들어간 프로세스는 빠르게 나와야 한다.
  • 경쟁조건(Race Condition) - 공유자원을 사용하기 위해 서로 경쟁하는 것

 

 

✏️ 세마포어

  • 정수형 변수로 공유 자원을 보호하려고 사용
  • 공유자원의 개수를 나타내는 변수
  • wait() 함수와 signal() 함수를 호출 - 사용하면 -1, 반납 시 +1

 

 

✏️ 모니터

  • 세마포어의 단점을 해결한 상호배제 메커니즘
  • 따로 운영체제가 해결하는 것이 아닌, 프로그래밍 언어차원에서 지원 - synchronized 키워드(동시에 여러 프로세스에서 실행시킬 수 없음 - 상호배제의 완벽 실행)

 

 

 

'운영체제' 카테고리의 다른 글

6. 메모리  (0) 2022.05.14
4. 데드락  (0) 2022.05.14
2. CPU 스케줄링  (0) 2022.05.07
1. 프로세스와 쓰레드  (0) 2022.05.06
0. 운영체제 들어가기  (0) 2022.05.06