[Operating System] 멀티프로세스 & 멀티스레드

olwooz·2023년 1월 24일
0

Operating System

목록 보기
3/10

멀티프로세스

여러 개의 프로세스를 통해 두 가지 이상의 작업을 병렬적으로 수행하는 것

장점
- 안전성 
  (메모리 침범 문제를 OS 차원에서 해결
  → 특정 프로세스의 메모리, 프로세스 중 일부에 문제가 발생하더라도 다른 프로세스 이용해 처리 가능)

단점
- 각각 독립된 메모리 영역을 갖고 있어 작업량 많을 수록 오버헤드 발생
- Context Switching으로 인한 성능 저하

e.g. 웹 브라우저

- 브라우저 프로세스: 주소 표시줄, 북마크 막대, 앞/뒤로 가기 버튼 등 담당,
                  네트워크 요청이나 파일 접근 같은 권한 담당
- 렌더러 프로세스: 웹 사이트가 ‘보이는’ 부분의 모든 것을 제어
- 플러그인 프로세스: 웹 사이트에서 사용하는 플러그인 제어
- GPU 프로세스: GPU를 이용해서 화면 그리는 부분 제어

멀티스레드

- 프로세스 내 작업을 여러 개의 스레드로 처리하는 것
- 스레드들이 공유 메모리를 통해 다수의 작업을 동시에 처리하도록 해줌

장점
- 독립적인 프로세스에 비해 공유 메모리만큼의 시간, 자원 손실 감소
- 전역 변수와 정적 변수에 대한 자료 공유 가능
- 동시성 - 서로 독립적인 작업들을 작은 단위로 나누고 동시에 실행되는 것처럼 보여주는 것

단점
- 안전성 문제 → 하나의 스레드가 데이터 공간 망가뜨리면 모든 스레드가 작동 불능 상태
- Critical Section 기법을 통해 대비 
  → 하나의 스레드가 공유 데이터 값을 변경하는 시점에 다른 스레드가 그 값을 읽으려 할 때 
    발생하는 문제를 해결하기 위한 동기화 과정
    - `상호 배제, 진행, 한정된 대기` 충족해야 함
    

e.g. 웹 브라우저의 렌더러 프로세스

  • 메인 스레드, 워커 스레드 (조수), 컴포지터 스레드 (레이어 합성), 레스터 스레드 (화면을 픽셀로 변환)

멀티프로세스 vs. 멀티스레드

0개의 댓글