Skip to content

Latest commit

 

History

History
51 lines (46 loc) · 3.05 KB

프로세스와 스레드에 대해 설명해주세요..md

File metadata and controls

51 lines (46 loc) · 3.05 KB

프로그램

  • 프로그램: 컴파일 과정을 거쳐 컴퓨터가 이해할 수 있는 기계어로 변환되어 컴퓨터에서 실행할 수 있는 명령 절차가 집합된 파일
  • 실행 파일: 저장 장치에 저장되어 있지만 메모리에는 올라가지 않아 실행되지 않는 정적인 상태

프로세스

개념

  • 운영 체제에서 실행중인 프로그램
  • 실행 파일이 메모리에 적재되어 시스템 자원을 할당 받아 실행되는 작업 단위
  • 프로세스마다 독립적으로 운영 체제로부터 시스템 자원 할당
    • 프로세스가 운영되기 위해 필요한 주소 공간, 프로세스가 CPU를 점유하는 시간, 프로세스가 실행될 때 필요한 메모리 공간 등
  • 각 프로세스는 별도의 주소 공간에서 실행, 원칙적으로 한 프로세스는 다른 프로세스의 자원에 접근 불가
  • 프로세스 5가지 상태: 생성, 준비, 실행, 대기, 종료

멀티 프로세스

  • 2개 이상의 프로세스가 함께 실행되는 것

1. 동시성 Concurrency

  • 하나의 CPU 코어에서 여러 프로세스를 짧은 시간 동안 번갈아가면서 실행하는 것
  • CPU 싱글 코어는 한번에 하나의 프로세스만 연산할 수 있기 때문에 CPU의 작업 시간을 여러 프로세스들이 조금씩 나누어 번갈아가며 실행
  • 시분할 시스템: 어떻게 프로세스를 번갈아가면서 실행할지 CPU 작업 시간을 나누는 방식

2. 병렬성 Parallelism

  • 여러 개의 CPU 코어에서 각각 프로세스를 병렬적으로 실행하는 것

스레드

  • 프로세스 안에서의 실행•동작 단위
  • 프로세스 내에서 독립적으로 특정 동작이나 기능 수행
  • 기본적으로 프로세스는 최소 1개의 스레드(메인 스레드)를 가진다.
    • 여러 개의 스레드 실행 가능

멀티 스레드

  • 하나의 프로세스 내에서 여러 개의 스레드를 실행하여 여러 작업을 수행하는 것
  • 프로세스 내에서 여러 작업을 병렬로 처리
  • 각 스레드는 독립적인 기능을 수행 (독립적으로 함수 호출)
    • 스레드 별로 함수 실행을 위한 메모리가 필요하므로 스레드마다 Stack 영역만 따로 할당
  • 코드, 데이터, 힙 영역은 다른 스레드와 공유하여 사용
    • 한 스레드가 프로세스 자원을 변경하면 같은 자원을 공유하는 다른 스레드도 영향

메모리

  • CPU가 직접적으로 접근할 수 있는 컴퓨터 내부의 기억장치

메모리 공간 구조

  • Code, Data, Heap, Stack 4개 영역으로 이루어져 있습니다.

1. Code 영역

  • 실행한 프로그램의 소스 코드 저장

2. Data 영역

  • 프로그램의 전역 변수와 정적Static 변수 저장

3. Heap 영역

  • 직접 메모리 공간을 할당(malloc)하거나 해제(free)하는 영역

4. Stack 영역

  • 함수 호출 시 생성되는 지역 변수와 매개 변수 저장

연관 질문