프로세스와 쓰레드

soyeon·2023년 8월 30일
0

TIL

목록 보기
31/32

프로세스

  • 프로세스 : 하드디스크에 저장된 프로그램이 메모리에 올라가서 실행된 상태(=실행중인 프로그램)

프로세스의 구조

  • Code : 프로그램을 실행하는 코드들 저장
  • Data : 전역 변수와 정적 변수들 저장
  • Stack : 지역 변수와 함수 호출시 매개변수와 돌아갈 주소가 저장
  • Heap : 프로그래머가 런타임시 할당할 수 있는 메모리 공간

유니프로그래밍 vs 멀티프로그래밍

  • 유니프로그래밍: 메모리에 프로세스 1개
  • 멀티프로그래밍 : 메모리에 프로세스 여러 개

멀티프로세싱

  • CPU가 여러 개의 프로세스를 처리하는 것

멀티프로그래밍과 멀티프로세싱

  • 메모리에 프로세스 여러개 올라감
  • 시분할 처리로 CPU가 각각의 프로세스를 짧은 시간 동안 교대로 실행

PCB(Process Control Block)

  • 각각의 프로세스의 정보를 저장
  • 연결리스트 형태로 있음 : 각각의 데이터가 다음 데이터로 연결되어있음

PCB의 구조

  • 포인터 : 효율적인 접근을 위해
  • 프로세스 상태
  • 프로세스 ID : 프로세스 식별용
  • 프로세스 카운터 : 다음에 실행될 명령어의 주소 등
  • 레지스터 정보 : 프로세스가 실행될 때 CPU에서 열심히 계산 돌린 레지스터 값들을 저장
  • 메모리 관련 정보 : 프로세스가 메모리에 있는 위치 정보 등
  • CPU 스케줄링 정보 : 우선순위, 실행시간, CPU 점유시간 등

프로세스 상태

  • 생성 : PCB 생성, 메모리에 프로그램 적재 요청
  • 준비 : CPU를 사용하기 위해 기다리고 있음
  • 대기 : 인터럽트(입출력 작업이 끝나는 동안 비동기로 돌아가는 거임) -> 그 동안 다른 프로세스에게 cpu 양보함
  • 실행 : 스케줄러에 의해 CPU를 할당받아 실행
  • 완료 : 프로세스와 pcb를 메모리에서 제거

쓰레드

  • 프로세스 내에서 PCB, 코드, 데이터, 힙 영역을 공유
  • 스택은 각각

프로세스 vs 쓰레드

프로세스

  • 각각의 프로세스가 독립적(안정적)
  • 프로세스 간의 통신 -> 오버헤드 큼, 느림
    쓰레드
  • 해당 프로세스에 문제가 생기면 위험
  • 스택을 제외한 모든 영역을 공유해서 오버헤드가 작음
profile
공부중

0개의 댓글