본문 바로가기
면접을 위한 CS 전공지식 노트/3장 운영체제

운영체제: 프로세스와 스레드 2

by 고구마맛탕먹고싶다 2024. 9. 18.

1. 멀티 프로세싱 (Multiprocessing)

프로세스 간 통신(IPC) 기법

    • 공유 메모리
      • 정의 : 두 프로세스가 메모리 공간을 공유하여 통신
      • 통신 방식 : 외부 통신 불가, 양방향
    • 파일
      • 정의 : 프로세스들이 파일을 통해 데이터 교환
      • 통신 방식 : 외부 통신 가능, 양방향
    • 소켓
      • 정의 : 네트워크를 통한 통신 방식
      • 통신 방식 : 외부 통신 가능, 양방향
    • 익명 파이프
      • 정의 : 부모-자식 프로세스 간에만 사용 가능
      • 통신 방식 : 외부 통신 불가, 단방향
    • 명명된 파이프
      • 정의 : 명명된 경로를 사용하여 여러 프로세스 간 통신
      • 통신 방식 : 외부 통신 가능, 양방향
    • 메세지큐
      • 정의 : 프로세스 간에 메세지를 전송하고 수신할 수 있는 큐 구조를 제공하는 통신 방식
      • 통신 방식 : 외부 통신 가능, 양방향
      • 장점 : 
        • 비동기식 통신 지원: 프로세스가 메세지를 전송하고, 수신자는 나중에 메세지를 받을 수 있음
        • 메세지의 순서 보장: 메세지는 FIFO(First In, First Out) 방식으로 처리됨
      • 단점 :
        • 메세지 큐의 크기 제한: 큐의 크기를 초과하면 메세지가 손실될 수 있음
        • 복잡성: 메세지 큐를 설정하고 관리하는 데 추가적인 오버헤드가 발생할 수 있음
      • 종류 : Kafka, RabbitMQ, ActiveMQ

https://velog.io/@jayjoy05/%EB%A9%94%EC%8B%9C%EC%A7%80-%ED%81%90Message-Queue%EB%9E%80


2. 스레드와 멀티 스레딩 (Threads & Multithreading)

  • 스레드
    • 정의 : 하나의 프로세스 내에서 실행되는 작업 단위
  • 멀티 스레딩
    • 정의 : 하나의 프로세스가 여러 스레드를 동시에 실행하는 방식
    • 장점 : 자원 효율성 증가, 병렬 처리로 성능 향상
    • 예시 : 웹 서버의 동시 요청 처리

https://velog.io/@hkh1213/%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%94%A9%EC%9D%98-%EC%9E%A5%EC%A0%90-%EB%8B%A8%EC%A0%90


3. 공유 자원과 임계 영역 (Shared Resources & Critical Section)

  • 공유 자원
    • 정의 : 여러 프로세스나 스레드가 동시에 접근할 수 있는 자원 (예: 파일, 메모리, 프린터 등)
    • 문제점 : 여러 스레드 또는 프로세스가 동시에 공유 자원에 접근할 때, 예상치 못한 동작이나 데이터 무결성 문제가 발생할 수 있음
    • 예시 : 두 개의 스레드가 동시에 은행 계좌의 잔액을 업데이트하면 잘못된 값이 기록될 수 있음 (경쟁 상태 발생)
  • 경쟁 상태
    • 정의 : 두 개 이상의 프로세스나 스레드가 동일한 자원에 동시에 접근하여 자원의 상태가 비일관성 상태에 빠지는 문제
    • 예시 : 두 프로세스가 같은 변수에 값을 동시에 쓰면 잘못된 값이 저장될 수 있음
  • 임계 영역
    • 정의 : 여러 스레드나 프로세스가 동시에 접근하면 문제가 발생할 수 있는 코드 구간 (주로 공유 자원에 접근하는 코드)

 

** 임계 영역 해결 기법 

  • 뮤텍스(Mutex) : 하나의 스레드만 임계 영역에 접근 가능하도록 잠금을 제공하는 동기화 기법

https://hudi.blog/race-condition-critical-section-mutual-exclusion/

 

  • 세마포어(Semaphore) : 카운터를 이용하여 여러 스레드가 자원에 접근하는 횟수를 제어
    • 바이너리 세마포어: 두 상태(0, 1)만 가짐, 뮤텍스와 유사하게 사용
    • 카운팅 세마포어: 여러 개의 스레드가 임계 영역에 접근 가능

https://hudi.blog/race-condition-critical-section-mutual-exclusion/

  • 모니터(Monitor) : 객체 단위로 접근을 제어하여 스레드의 임계 영역 진입을 관리하는 방식

https://hudi.blog/race-condition-critical-section-mutual-exclusion/


4. 교착 상태 (Deadlock)

  • 교착 상태 정의
    • 두 개 이상의 프로세스나 스레드가 서로 자원을 점유한 상태에서 아무도 진행할 수 없는 상태
  • 교착 상태의 4가지 필요 조건:
    • 상호 배제 : 자원은 한 번에 하나의 프로세스만 사용 가능
    • 점유 대기 : 자원을 점유한 상태에서 다른 자원을 대기
    • 비선점 : 점유한 자원을 강제로 뺏을 수 없음
    • 순환 대기 : 자원을 기다리는 프로세스 간에 순환 대기가 존재
  • 해결 방법:
    • 교착 상태 예방 : 조건 중 하나를 없애기
    • 교착 상태 회피 : 자원 할당 시 미리 검토
    • 교착 상태 탐지 및 복구 : 발생 시 해결 방안 마련

https://tech.wonderwall.kr/articles/deadlock/