프로세스와 스레드

이동섭·2023년 10월 16일
0

운영체제

목록 보기
2/13
post-custom-banner

프로세스: 컴퓨터에서 실행중인 프로그램, 프로그램을 메모리 상에서 실행중인 작업
스레드: 프로세스 내에서 실행되는 흐름의 단위

프로세스마다 최소 1개의 스레드 (메인 스레드 포함) 가지고 있다.

  1. Code: 실행할 프로그램의 명령어들이 저장되는 영역
  2. Data: 프로그램의 전역 변수와 정적 변수가 저장되는 영역
  3. Heap: 동적 메모리 할당을 위해 사용되는 영역, 프로그램 실행 중 필요에 따라 메모리를 할당하거나 해제하는 작업이 이루어지는 공간
    ex) C 언어의 malloc() 함수를 사용하여 메모리를 할당하면 Heap 영역에 생성된다.
  4. Stack: 함수 호출과 관련된 정보(지역변수, 매개변수, 반환 주소 등)를 저장하는 공간
  5. Thread: Thread 만의 스택을 가지지만 나머지 영역은 공유한다.

멀티 프로세스

여러 개의 프로세스를 동시에 실행하는 방식

프로세스는 독립된 메모리 공간을 가지고 있어 서로 다른 작업을 수행할 수 있다.

장점

각각의 프로세스는 별도의 메모리 공간과 자원드을 가지고 있으므로 한 프로세스에서 오류가 발생해도 다른 프로세스에 영향을 주지 않는다. -> (안전성이 높다.)

단점

각 프로세스마다 독립적인 메모리 공간을 사용해 높은 자원 사용량과 오버헤드 발생, Context Switching으로 인한 성능 저하

Context Switching 이란?
운영체제의 스케줄러가 하나의 프로세스에서 다른 프로세스로 CPU 제어를 전환하는 과정
Context: 실행 중인 프로세스가 올바르게 동작하기 위해 필요한 모든 정보 (프로그램 카운터, 레지스터 값, 스택 포인터)

멀티 스레드

하나의 프로세스에서 스레드를 동시에 실행하는 방식

장점

프로세스 내부에서 메모리를 공유하기 때문에 데이터 교환이 간단하다.

단점

하나의 스레드가 데이터 공간을 망가뜨리면 모든 스레드가 작동이 불가하다. (메모리를 공유하기 때문)

post-custom-banner

0개의 댓글