ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [운영체제] 프로세스 VS 스레드 개념 및 예상 질문
    Computer Science/Operating System 2023. 2. 7. 12:24
    반응형

    프로세스 VS 스레드

    구분 프로세스 스레드
    사전적 의미 컴퓨터에서 실행되고 있는 컴퓨터 프로그램
    - 메모리에 올라와 실행되고 있는 프로그램 인스턴스
    프로세스 내에서 실행되는 여러 흐름의 단위
    - 프로세스의 특정한 수행 경로
    고유 할당 자원
    Code, Data, Stack, Heap
    프로세스 내에서 Stack만 따로 할당
    특징 1. 프로세스 한 개당 최소 1개의 스레드를 가지고 있음
    2. 각 프로세스는 별도의 주소 공간에서 실행되어 다른 프로세스의 변수나 자료구조에 접근 불가
    3. 다른 프로세스 자원에 접근하려면 프로세스간 통신(IPC) 사용 필요 (파이프, 파일, 소켓 등)
    1. 같은 프로세스 내의 여러 스레드들은 같은 힙 공간 공유
    2. 한 스레드가 프로세스 자원을 변경하면 다른 이웃 스레드도 그 변경 결과를 즉시 볼 수 있음

    멀티 프로세스 VS 멀티 스레드

    구분 멀티 프로세스 멀티 스레드
    설명 하나의 응용 프로그램을 여러 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리 하나의 응용 프로그램을 여러 개의 스레드로 구성하여 각 스레드로 하여금 하나의 작업을 처리
    - 대부분의 운영체제에서 멀티 스레딩을 기본으로 함
    - 웹 서버는 대표적인 멀티 스레드 응용 프로그램
    장점 1. 독립된 구조로 높은 안전성
    - 하나의 프로세스에 문제 발생하여도 문제가 확산되지 않음
    2. 병렬적으로 처리 가능한 작업으로 분해하여 성능 향상 가능
    1. 시스템 자원 효율성 증가
    - 프로세스를 생성하여 자원을 할당하는 시스템콜 감소로 자원의 효율적 관리 가능
    2. 시스템 처리 비용 감소, 처리량 증가
    - 스레드間 데이터를 공유하기 때문에 Context Switching이 빠름
    3. 간단한 통신 방법으로 프로그램 응답 시간 단축
    - 스레드는 프로세스 내의 Stack 영역을 제외한 모든 메모리를 공유하기 때문에 통신 부담 적음
    단점 1. Context Switching 과정에서 오버헤드 발생
    2. 프로세스間 공유 메모리가 없어 캐시에 있는 모든 데이터를 리셋하고 다시 불러와야 함
    3. 프로세스間 복잡한 통신 기법(IPC) - 각각의 고유 메모리 영역을 할당 받기 때문에 프로세스간 변수 공유 불가
    1. 주의 깊은 설계 필요, 디버깅이 까다로움
    2. 하나의 스레드에 문제가 발생하면 전체 프로세스에 영향을 받음
    3. 자원 공유(동기화 문제) 발생
    - 병목 현상, 데드락 등

    Q. 프로세스와 스레드의 차이점은?

    더보기

    프로세스: 메모리 상에서 실행 중인 프로그램으로 자신만의 고유 공간과 자원을 할당 받아 사용(code, heap, stack)

    스레드: 프로세스 안에서 실행되는 흐름 단위로 다른 스레드와 공간, 자원을 공유하면서 사용(단, stack은 할당 받음)

    Q. 프로세스의 문제점은?

    더보기

    1. 프로세스 생성시 많은 시간이 소요됨

    2. 프로세스 컨텍스트 스위칭이 비효율적임 (CPU가 왔다갔다 할 때 PCB를 저장하고 불러오고 하면서 오버헤드 큼)
    3. 프로세스 사이에 통신이 어려움(IPC 사용해야 함)

    Q. 스레드 출현 목적?

    더보기

    1. 프로세스보다 크기가 작은 실행 단위 필요

    2. 프로세스의 생성 및 소멸에 따른 오버헤드 감소

    3. 빠른 컨텍스트 스위칭

    4. 프로세스들의 통신 시간, 방법 어려움 해소

    Q. 멀티 프로세스와 멀티 스레드의 차이점은?

    더보기

    - 멀티 프로세스
    : 하나의 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리
    장점으로는 하나의 프로세스가 잘못되어도 프로그램이 동작하나 단점으로는 컨텍스트 스위칭으로 인해 오버헤드 및 비용 증가

    - 멀티 스레드
    : 프로그램을 여러개의 스레드로 구성하고 각 스레드가 작업을 처리
    장점으로는 스레드간 자원 공유가 가능하기 때문에 실행속도가 향상되고 시스템 자원 소모가 감소함 단점으로는 디버깅이 어렵고 동기화 이슈가 발생할 수 있으며, 하나의 스레드 오류로 전체 프로세스에 문제가 발생할 수 있음

    Q. 컨텍스트 스위칭이란?

    더보기

    CPU에서 여러 프로세스를 돌아가면서 작업을 처리하는 과정
    동작중인 프로세스가 대기를 하면서 프로세스 상태를 보관하고 대기하고 있다가 다시 실행시 복구하는 비용을 의미

    Q. Thread Safe란?

    더보기

    여러 스레드가 동시에 사용되어도 안전하다는 뜻으로, 특정 함수 A와 변수 AA가 여러 스레드에서 호출되어도 하나의 스레드에서 호출했을 때와 같은 결과가 보장되어야 한다는 의미
    - Thread safe 하지 않은 조건을 만드는 방법의 예
    : 전역 변수에 값을 로드하면 value가 1증가하도록 했다면.. 다른 스레드에서 동시에 이를 호출 했을 때 벨류 값이 2 증가할 수도 있고 1 증가할 수도 있음.. 

    - Thread safe 하지 않은 환경을 Thread safe 하게 변경하는 방법
    1) 공유되는 변수를 스레드 간 공유되지 않게 변경
    2) 공유되는 상태 변수를 변경할 수 없게 설정
    3) 공유되는 상태 변수를 사용할 때 항상 동기화 사용 

     

    반응형

    댓글

Designed by Tistory.