[운영체제] 프로세스와 스레드의 차이

혀니앤·2022년 9월 14일
0

컴퓨터 지식 공부

목록 보기
1/10

✔️ 프로세스 (Process)

  • 프로세스는 메모리 상에서 실행 중인 프로그램
  • 최소 하나의 스레드를 가짐
  • Code, data, heap(프로세스 실행 중에 동적으로 할당되는 메모리), stack의 구조
  • 운영체제로부터 자원을 할당받는 단위
  • CPU로부터 주소 공간, 파일, 메모리 등을 할당받음, 각 프로세스는 고유 공간과 자원 할당받음

PCB (Process Control Block)

  • 특정 프로세스에 관한 중요한 정보를 저장하는 Block
  • 운영체제가 프로세스 생성과 동시에 고유한 PCB를 생성
  • 프로세스 전환(Context Switching) 이 발생했을 때, 진행상황을 PCB에 저장하고 이후 다시 불러와 마저 진행
  • 저장되는 정보 8가지
    • 프로세스 ID
    • 프로세스 상태 State
    • 프로세스 카운터 : 다음 실행할 프로세스 포인터
    • CPU 레지스터
    • CPU 스케줄링 : 프로세스 우선순위
    • 메모리 관리 : 페이지 테이블, 세그먼트 테이블
    • 입출력 상태 : 프로세스에 할당된 입출력 장치, 열린 파일
    • 어카운팅 : 사용된 CPU 시간, 시간제한, 계정정보

✔️ 스레드 (Thread)

  • 프로세스의 실행 단위
  • 프로세스들간에는 IPC를 통한 통신만 가능하므로, 더 작은 실행 단위가 필요해짐
  • 프로세스 내의 다른 스레드와 주소 공간과 자원을 공유(프로세스의 heap 공유)
  • 스레드의 구성 4가지 (각각의 스택과 레지스터를 가짐)
    • 쓰레드 ID
    • 프로그램 카운터
    • 레지스터 집합
      • PC 레지스터 : 스레드가 어디까지 실행했는지를 나타냄
    • 스택
      • 함수 호출 시의 매개변수, 되돌아갈 주소 값, 지역 변수 등을 가지고 있으므로 독립적인 함수 호출이 가능해짐

✔️ 그래서 Process와 Thread의 차이?

ProcessThread
정의실행 중인 프로그램프로세스의 실행 단위
단위운영체제의 가장 작은 실행단위CPU의 가장 작은 실행단위
자원프로세스마다 고유의 자원, 메모리 할당Stack, 레지스터만 다르고 나머지 프로세스 메모리는 공유함
오류 종료 시다른 프로세스에는 영향 없음모든 Thread 한번에 종료
Context Switching비교적 느림더 빠름
상호 통신IPC 통신 사용해야만 함쓰레드들끼리 자유롭게 가능 (다른 프로세스는 불가능)

개별 Stack을 가지는 Thread 구조

참고

https://velog.io/@raejoonee/프로세스와-스레드의-차이

https://zeroco.tistory.com/75

https://velog.io/@dbsrud11/CS-면접-질문-정리#️-os-thread-vs-process

https://jhnyang.tistory.com/33

profile
일단 시작하기

0개의 댓글