프로세스? 스레드?

김준태·2023년 8월 5일
0

공부

목록 보기
10/10
post-thumbnail

프로세스(process)

  • 프로그램이 메모리에 올라가 인스턴스화 된것 (독립적으로 실행되는 개체)
  • 프로세스 간의 자원 공유는 좀 더 복잡한 절차를 거쳐 이루어짐
  • 프로세스는 최소 1개의 스레드(thread)를 존재

프로세스의 메모리 구조

스택

  • 프로세스의 실행 시 함수 호출지역 변수를 저장하고 관리하는 메모리 영역
  • 메모리가 늘거나 줄어들수 있음

  • 프로그램 실행 중 동적 할당을 위해 사용되는 메모리 영역

데이터 영역

  • 프로세스의 전역 변수정적 변수를 저장하는 공간

코드 영역

  • 프로그램의 코드

PCB

  • 운영체제에서 프로세스에 대한 메타데이터를 저장한 데이터
  • 일반 사용자가 접근하지 못하도록 커널 스택의 가장 앞부분에서 관리
  • 프로세스 관리와 스케줄링을 용이하게 하고, 프로세스 간 전환(context switch)을 원활하게 수행
  • 프로세스 식별자(Process ID) : 프로세스를 고유하게 식별하는 번호
  • 프로세스 상태(Process State) : 프로세스의 현재 상태를 나타내는 정보
  • 프로그램 카운터(Program Counter, PC) : 프로세스에서 실행해야 할 다음 명령어의 주소에 대한 포인터
  • 레지스터 상태(Register State) : 프로세스가 실행되는 동안 사용되는 레지스터들의 상태를 저장(이 정보는 프로세스 간 전환 시 필요)
  • 메모리 관리 정보(Memory Management) : 프로세스의 메모리 할당을 관리하기 위한 정보
  • 프로세스 우선순위(Process Priority) : 프로세스 대기열에서 스케줄링 알고리즘에 따라 실행 순서를 정하기 위해 사용되는 우선순위 값
  • 입출력 상태 및 정보(Input/Output Status, Information): 프로세스에 할당된 I/O 디바이스 목록
  • 계정 정보(Accounting Information) : 프로세스 실행에 사용된 CPU사용량, 실행한 유저의 정보

컨텍스트 스위칭(context switching)

  • 운영 체제에서 실행 중인 프로세스(혹은 스레드)를 중단하고 다른 프로세스(혹은 스레드)로 전환하는 과정
  • 여러 프로세스들이 동시에 실행되는 것처럼 느껴지게 하며, 프로세서의 사용을 효율적으로 관리(아주 빠른 속도로 실행)

실행 순서

  1. 현재 실행 중인 프로세스(Process P1)의 상태를 PCB에 저장
  2. 다음 실행할 프로세스(Process P2)를 결정
  3. 프로세스의(Process P2) PCB에서 프로세서 상태와 관련된 정보를 가져와 프로세서에 로드

스레드(thread)

  • 프로세스 내에서 독립적으로 실행되는 작업의 흐름
  • 프로세스 내의 코드와 자원을 공유(스레드 간에 데이터 공유와 통신이 상대적으로 간단)
  • 자신만의 스택 공간을 가지며, 프로세스의 다른 스레드와 힙 공간, 전역 변수, 프로세스 코드 등을 공유
  • CPU에서 실행되는 단위(unit of execution)

멀티스레딩 & 멀티프로세싱

멀티스레딩

  • 프로세스 내 작업을 여러 개의 스레드, 멀티스레드로 처리하는 기법
  • 스레드끼리 메모리, 파일, 그리고 네트워크 리소스와 같은 프로세스 내부의 코드와 데이터를 공유
  • 한 스레드가 중단 되어도 다른 스레드는 실행 상태일 수 있기 때문에 중단되지 않는 빠른 처리 가능(동시성)
  • 한 스레드에 문제가 생기면 다른 스레드에 영향을 끼쳐 프로세스에 영향을 줄수도 있음

멀티프로세싱

  • 여러 개의 프로세서(CPU)가 동시에 작업을 수행하는 컴퓨팅 방식
  • 여러 프로세스들 또는 스레드들을 병렬로 처리(프로세스 중 문제가 발생되더라도 다른프로세스를 이용 -> 신뢰성 높음)

대칭 다중처리(SMP, Symmetric multiprocessing)

  • 두 개 이상의 프로세서가 메모리와 기타 시스템 리소스를 공유하는 방식
  • 모든 CPU가 동등한 상태로 동작하며, 운영 체제에서 각 프로세서에 작업을 균등하게 분산하는 스케줄링 방식
  • 부하 분산을 효과적으로 수행(한 프로세서가 필요할 때 다른 프로세서의 작업을 쉽게 전달가능)

비대칭 다중처리(ASMP, Asymmetric multiprocessing)

  • 각 프로세서가 전용 역할을 수행하고 특정 작업이나 리소스에 대한 권한이 할당된 구조
  • 특정 프로세서가 시스템 관리 업무(Master)를 전담하고, 나머지 프로세서들이 사용자 작업(Slave)을 전담
  • 특정 프로세서가 오버헤드를 처리하므로, 다른 프로세서들이 더 효과적으로 동작

📎 참고자료

2개의 댓글

comment-user-thumbnail
2023년 8월 5일

유익한 자료 감사합니다.

1개의 답글