프로세스와 스레드

양동귀·2024년 8월 11일

cs

목록 보기
1/5

프로세스와 스레드

프로그램

컴퓨터에서 실행 할 수 있는 파일

프로세서

프로세스를 동작 시키는 하드웨어 (cpu)

프로세스

프로그램을 실행해서 돌아가고 있는 상태, 실행중인 프로그램

  • 다른 프로세스의 메모리 공간에 직접 접근할 수 없음
  • 각 프로세스는 자체 메모리 공간과 자원을 가짐
  • 프로세스 간 전환은 무겁고, 컨텍스트 스위칭(context switching) 시 많은 시간이 소요

멀티 프로세스

cpu 코어 하나는 동시에 하나의 일만 처리한다 -> 프로세스 하나만 돌릴 수 있다
프로세스 여러개를 동시에 또는 동시에 하는것 같이 실행하는 것이 멀티 프로세스

멀티 프로세스 방식 -> 동시성 vs 병렬성

  • 동시성 (컨텍스트 스위칭)
    • 빠르게 여러가지 일을 돌아가면서 하면서 동시에 진행되는 것 같아 보이게 처리하는 형태
  • 병렬성
    • 여러개의 코어를 달아 코어마다 각각 일을 진행해서 동시에 처리 하는 형태
  • cpu의 코어 하나로 동시성의 한계에 다다르자 코어 여러개를 붙여 성능 향상

스레드

한 프로세스 안에서 여러가지 일을 하는 것중 하나의 일, 그 단위

  • 같은 프로세스 내에서 메모리와 자원을 공유
  • 여러 스레드를 통해 프로세스 내에서 병렬 처리가 가능
  • 같은 프로세스 내의 스레드들은 데이터, 힙, 코드 영역을 공유, 스택은 공유하지 않음
  • 스레드 간 전환은 프로세스 간 전환보다 훨씬 빠름

  • 코드 영역(Code / Text) : 프로그램 함수들의 코드가 CPU가 해석 가능한 기계어 형태로 저장되어 있다.
  • 데이터 영역(Data) : 코드가 실행되면서 사용하는 전역 변수나 각종 데이터들이 모여있다.
  • 스택 영역(Stack) : 지역 변수와 같은 호출한 함수가 종료되면 되돌아올 임시적인 자료를 저장하는 독립적인 공간이다. Stack은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸한다. 만일 stack 영역을 초과하면 stack overflow 에러가 발생한다.
  • 힙 영역(Heap) : 생성자, 인스턴스와 같은 동적으로 할당되는 데이터들을 위해 존재하는 공간이다. 사용자에 의해 메모리 공간이 동적으로 할당되고 해제된다.

출처: https://inpa.tistory.com/entry/👩‍💻-프로세스-⚔️-쓰레드-차이 [Inpa Dev 👨‍💻:티스토리]

0개의 댓글