[컴퓨터구조] 프로세스와 쓰레드

Tkdyun·2024년 3월 6일

컴퓨터구조

목록 보기
1/2

메인보드의 주된 역할

CPU, 보조기억장치, 입출력 장치 등 컴퓨터의 작동을 구성하는 핵심 부품들끼리 정보를 주고 받을 수 있는 버스 BUS 를 제공한다.

  • 여러 버스들 중 가장 중요한 버스는 부품끼리의 정보를 주고 받는 시스템 버스
    시스템 버스는 : 주소 버스, 제어 버스, 데이터 버스로 구성된다.

프로세스와 쓰레드

프로세스

  • 메모리를 할당받고 실행되어지는 프로그램
  • 할당받는 자원으로는 CPU 시간, 메모리 공간, Code, Data, Heap, Stack 의 독립된 메모리 영역
  • 각각의 프로세스는 각자만의 영역을 할당받으며, 서로 영향을 주고받기 위해선 소켓이나 파일 통신 등을 통해 접근해야 한다.

쓰레드

  • 프로세스가 메모리를 할당 받았다면, 그 자원을 활용하는 대상
  • 각각의 쓰레드는 stack 영역을 할당받고, 프로세스 내부에서 Code, Data, Heap 영역은 공유한다.
  • 쓰레드는 각자 자신만의 레지스터와 Stack 영역 을 가지고 있지만, Heap 영역을 서로 읽고 쓸 수 있기 때문에
    공유되는 자원에서의 변화를 각각의 쓰레드는 즉각적으로 인식

멀티프로세스

  • 여러 개의 프로세서가 동시에 작업을 처리하는 것
  • 한 개의 프로세서가 작동을 중단해도 남은 프로세서들이 연산을 수행해주기 때문에, Task 수행에 큰 영향 주지 않는다.
  • 단점으로는 Context Switch 작업 에서 발생
    • 멀티 프로세스 환경에서 CPU 가 프로세스를 실행하는 과정 중 인터럽트 요청으로 다른 프로세스를 실행해야할때, 기존 프로세스의 상태와 레지스터(Context)를 저장하고 새로운 프로세스를 실행하기 위해 상태와 레지스터를 바꾸는 작업을 Context Switch 라고 한다.
    • 레지스터에 저장된 Context 는 프로세스의 PCB (Process Control Block) 에 저장되는데,
      프로세스 상태 / 프로그램 카운터 / 레지스터 / 프로세스 번호
      4개의 정보가 저장돼 인터럽트가 요청한 프로세스 작업이 완료되면 PCB 를 읽어 이전에 하던 Task 를 수행할 수 있다.
      -> 이때, Context Switch 작업이 이루어지는 동안 CPU는 아무 일도 할 수 없는 상태가 되기 때문에 Context Switch 의 빈도가 높으면 오버헤드 로 효율이 떨어진다.
    • 인터럽트란
      : CPU가 수행하고 있는 프로세스 외의 외부에서 예외상황이 발생해 이에 대한 처리가 필요할 때 CPU 이를 처리하도록 알리는 것
  • 프로세스 간의 통신은 구현과 효율적인 차원에서 뒤떨어지고, Context Switch 의 오버헤드 문제 때문에
    멀티 쓰레드를 이용해 여러 작업들을 동시에 실행한다.

멀티 쓰레드

  • 하나의 프로그램 (프로세스) 를 멀티 쓰레드로 구성함으로써 각각의 쓰레드들이 하나의 작업들을 실행해 다중 작업을 실행
  • 프로세서가 여러개인 경우 프로세스의 쓰레드들이 다른 프로세서에서 병렬적으로 사용될 수 있다.
  • 싱글 스레드 환경에서는 하나의 프로세스는 오직 하나의 프로세서가 할당 받지만,
    멀티 쓰레드 환경에서는 하나의 프로세스가 여러 개의 프로세서에서 병렬적으로 수행되어 효율적이다.
  • 프로세스를 생성하는 것보다, 쓰레드를 생성하는게 훨씬 빠르고 효율적이다.
  • 단일 프로세스 환경에서는 딱히 큰 효과가 없다
  • 단점
    • 설계의 어려움
    • 쓰레드끼리 공유되는 Heap 영역 -> 동기화 문제
    • 하나의 쓰레드에서 문제가 발생하면 전체가 영향을 받는다.
profile
"Hello World"

0개의 댓글