운영체제 - 멀티프로세스와 멀티스레드

델리만쥬 디퓨저·2024년 8월 19일

운영체제

목록 보기
2/13
  • 프로그램 : 어떤 작업을 하기 위해 실행할 수 있는 파일 또는 프로그램
  • 프로세스 : 메모리에 적재되고 CPU 자원을 할당받아 프로그램이 실행되고 있는 상태

멀티 프로세스

  • 운영체제에서 하나의 응용 프로그램에 대해 동시에 여러 개의 프로세스를 실행할 수 있게 하는 기술
  • 보통 하나의 프로그램 실행에 대해 하나의 프로세스가 메모리에 생성되지만, 부가적인 기능을 위여러 개의 프로세스를 생성하는 것

장점

  • 프로그램 안정성
    - 각 프로세스가 독립적인 메모리 공간을 가지므로, 한 프로세스가 비정상적으로 종료되어도 다른 프로세스에 영향을 주지 않음
  • 시스템 확장성
    - 각 프로세스가 독립적이므로, 새로운 기능이나 모듈을 추가하거나 수정할 때 다른 프로세스영향을 주지 않으므로 시스템의 규모를 쉽게 확장할 수 있음

단점

  • Context Switching Overhead
    - CPU가 다음 프로세스의 정보를 불러오기 위해 메모리를 검색하고, CPU 캐시 메모리를 초기화하며, 프로세스 상태를 저장하고, 불러올 데이터를 준비하는 과정
    - 빈번한 Context Switching 작업으로 오버헤드 비용이 발생한다.
  • 자원 공유 비효율성
    - 각 프로세스가 독립적인 메모리 공간을 가지므로, 결과적으로 메모리 사용량 증가
    - 각 프로세스간 자원 공유가 필요할 경우 어렵고 복잡한 통신 기법인 IPC(Inter-Process Communication)을 사용해야 함

멀티 스레드

  • 스레드는 하나의 프로세스 내에 있는 실행 흐름
  • 멀티 스레드는 하나의 프로세스 안에 여러 개의 스레드가 있는 것
  • 따라서 하나의 프로그램에서 두 가지 이상의 동작을 동시에 처리하도록 하는 행위가 가능

장점

  • 프로세스보다 가벼움
    - 스레드는 프로세스와 달리 코드, 데이터, 스택 영역을 제외한 나머지 자원을 서로 공유하기 때문에 기본적으로 내장된 데이터 용량이 프로세스보다 작다.
  • 자원의 효율성
    - 하나의 프로세스 내에서 여러 개의 스레드를 생성하기 때문에, heap 영역과 같은 공유 메모에 대해 스레드 간에 자원 공유 가능
    - 프로세스 간 통신을 사용하지 않고도 데이터 공유가 가능하므로 자원을 효율적으로 활용해 시스템 자원 소모가 줄어듬
  • Context Switching 비용 감소
    - 스레드 컨텍스트 스위칭 비용은 스레드 간에 공유하는 자원을 제외한 스레드 정보(stack, register)만 교체하면 되므로 프로세스 컨텍스트 스위칭 비용보다 상대적으로 낮다.
  • 응답 시간 단축
    - 멀티 스레드는 스레드 간의 통신이나 자원 공유가 더욱 용이하며, 프로세스보다 가벼워 컨텍스트 스위칭 오버헤드보다 작다.
    - 여러 개의 스레드가 하나의 프로세스 내에서 요청 처리가 가능하므로 멀티 프로세스보다 응답 시간이 빠르다.

단점

  • 안정성 문제
    - 하나의 스레드에서 문제가 발생하면 다른 스레드들도 영향을 받아 전체 프로그램 종료될 수 있다.
  • 동기화로 인한 성능 저하
    - 여러 개의 스레드가 공유 자원에 동시에 접근 가능하로, 동기화 문제가 발생할 수 있다.
    - 이를 해결하기 위해 임계 영역(Critical Section)에 대하여 뮤텍스(mutex), 또는 세마포어(Semaphore) 방식을 활용
    - 임계 영역(Critical Section)
    - 멀티 스레드 프로그래밍에서 임계 영역은 공유 자원에 접근하는 코드 영역
    - 대표적으로 전역 변수나 heap 메모리 영역
    - 뮤텍스(Mutex)
    - 공유 자원에 대한 접근을 제어하기 위한 상호 배제 기법 중 하나
    - 임계 영역에 진입하기 전에 락(lock)을 획득하고, 임계 영역을 빠져나올 때 락을 해제여 다른 스레드들이 접근할 수 있도록 함
    - 오직 1개의 스레드만이 공유 자원에 접근할 수 있도록 제어하는 기법
    - 세마포어(Semaphore)
    - 동시에 접근 가능한 스레드의 개수를 지정
    - 세마포어 값이 1이면 뮤텍스와 동일
    - 2 이상이면 동시에 접근 가능한 스레드의 수를 제어 가능
    - 스레드가 임계 영역에 진입하기 전에 세마포어 값을 확인하고, 값이 허용된 범위 내에 있을 때만 락을 획득할 수 있는 형식
    - 뮤텍스 상위 호환
profile
< 너만의 듀얼을 해!!! )

0개의 댓글