[TIL] 프로세스(Process)와 스레드(Thread)

Hi! I'm JENNIE·2022년 9월 22일
0

TIL : 기록

목록 보기
15/16
post-thumbnail

개발자 인생 첫 면접을 앞두고 있다.
너무 막막하고 무섭(?)지만 그래도! 몇 년 후에는 오늘 달달 떨던 내가 귀여워 보이겠지 생각하며 면접 기출 왕 단골 문제인 "프로세스(Process)와 스레드(Thread)" 부터 정리해보자 🥲

  • 프로세스 : OS의 자원(메모리)을 할당받아 실행되는 하나의 작업 단위. (= 작업 중인 프로그램)
    • 총 4개의 영역으로 나누어져 있다.
      • Code(Text) : 현재 프로그램에서 실행중인 코드를 저장
      • Data : 여러군데에서 사용할 전역변수, 상수들을 저장
      • Stack : 지역 함수, 변수 같은 현재까지 실행 중인 컨텍스트와 관련된 정보를 저장
      • Heap : 런타임에 할당할 메모리 영역을 저장 - 나중에 필요하니 남겨 두는 공간
    • Context Switching : 프로세스 간 작업을 전환하는 것. 비용이 든다.
    • 하나의 프로세스의 오류가 다른 프로세스에 영향을 미치지 않는다.→ 독립적

  • 스레드 : 프로세스 내의 실행 흐름의 단위 (= 단위 함수 하나)
    • Stack만 따로 사용하고, 나머지는 메모리 공간은 공유한다.
    • 공유 자원을 이용함으로써, 상호 통신이 용이하다.
    • 자원의 효율성이 증대되며, 처리 비용이 감소한다.
    • 단점
      • 동기화 문제 → 자원을 공유하며 충돌이 생길 수 있다
      • 하나의 스레드에서 오류가 생기면 다른 스레드도 강제 종료 됨.
profile
Front-End Developer

0개의 댓글