Study/TIL(Today I Learned)

24.06.04 복습

에린_1 2024. 6. 4. 23:19
728x90

복습

프로세스와 스레드

  • 컴퓨터의 실행 단위를 의미하며, 각각 다른 특징과 용도로 사용된다.

프로세스(Process)

정의

  • 프로세스는 실행 중인 프로그램의 인스턴스를 말한다. 프로그램이 디스크에 저장된 코드라면, 프로세스는 이 코드를 실행 중인 동적인 엔터티이다.
  • 프로세스는 독립적인 실행 단위로, 각각 고유의 메모리 공간과 리소스를 가진다.

주요 특징

  • 독립성
    • 각 프로세스는 고유한 주소 공간을 가지며, 다른 프로세스와 메모리를 공유하지 않는다.
  • 고유한 메모리 영역
    • 프로세스는 코드, 데이터, 힙, 스택 영역을 포함하는 고유한 메모리 구조를 가진다.
  • 리소스 소유
    • 각 프로세스는 CPU 시간, 파일 디스크립터, 메모리와 같은 시스템 리소스를 할당 받는다.
  • 안정성
    • 한 프로세스의 오류가 다른 프로세스에 영향을 미치지 않는다.

프로세스 상태

  • 프로세스는 다음과 같은 상태를 가질 수 있다.
    • 생성(New)
      • 프로세스가 생성되고 있는 상태
    • 준비(Ready)
      • 프로세스가 실행되기를 기다리고 있는 상태
    • 실행(Running)
      • 프로세스가 CPU를 점유하고 실행 중인 상태
    • 대기(Waiting)
      • 프로세스가 어떤 이벤트(입출력 등)를 기다리고 있는 상태
    • 종료(Terminated)
      • 프로세스가 실행을 마치고 종료된 상태

스레드(Thread)

정의

  • 스레드는 프로세스 내에서 실행되는 가장 작은 실행 단위이다.
  • 하나의 프로세스는 여러 개의 스레드를 가질 수 있으며, 이 스레드들은 프로세스의 자원을 공유한다.

주요 특징

  • 경량성
    • 스레드는 프로세스보다 생성과 관리가 가볍다.
  • 공유 메모리
    • 같은 프로세스 내의 스레드들은 코드, 데이터, 힙을 공유한다.
    • 단, 각 스레드는 자신만의 스택을 가진다.
  • 병렬 처리
    • 스레드를 사용하면 하나의 프로세스 내에서 여러 작업을 병렬로 수행할 수 있다.
  • 협력
    • 스레드는 동일한 프로세스 내에서 다른 스레드와 협력하여 작업을 수행한다.

스레드 상태

  • 스레드의 상태는 프로세스의 상태와 유사하다.
    • 생성(New)
      • 스레드가 생성되고 있는 상태
    • 준비(Ready)
      • 스레드가 실행되기를 기다리고 있는 상태
    • 실행(Running)
      • 스레드가 CPU를 점유하고 실행 중인 상태
    • 대기(Waiting)
      • 스레드가 어떤 이벤트를 기다리고 있는 상태
    • 종료(Terminated)
      • 스레드가 실행을 마치고 종료된 상태

프로세스와 스레드의 차이

  • 메모리 구조
    • 프로세스
      • 각 프로세스는 독립적인 메모리 공간을 가지며, 다른 프로세스와 메모리를 공유하지 않는다.
    • 스레드
      • 같은 프로세스 내의 스레드들은 메모리를 공유하지만, 각 스레드는 독립적인 스택을 가진다.
  • 리소스 관리
    • 프로세스
      • 리소스를 독립적으로 관리하며, 프로세스 간의 통신은 IPC(Inter-Process Communication)를 통해 이루어진다.
    • 스레드
      • 같은 프로세스 내에서 리소스를 공유하며, 스레드 간의 통신이 상대적으로 빠르고 효율적이다.
  • 오버헤드
    • 프로세스
      • 생성, 종료, 컨텍스트 스위칭의 오버헤드가 크고, 독립적인 주소 공간을 유지해야 한다.
    • 스레드
      • 생성, 종료, 컨텍스트 스위칭의 오버헤드가 적으며, 메모리와 자원 공유가 용이하다.

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

  • 멀티프로세싱
    • 여러 프로세스를 병렬로 실행하는 방식이다.
    • 각 프로세스는 독립적인 메모리 공간을 가지며, 프로세스 간의 충돌이 없다.
    • 주로 CPU 집약적인 작업에 적합핟,
  • 멀티스레딩
    • 하나의 프로세스 내에서 여러 스레드를 병렬로 실행하는 방식이다.
    • 스레드 간의 메모리 공유를 통해 더 효율적인 통신과 데이터 처리가 가능하다.
    • 주로 I/O 집약적인 작업에 적합하다.

CPU 스케줄링 알고리즘

  • CPU가 여러 프로세스를 처리할 때, 각 프로세스에 CPU 시간을 할당하는 방법을 결정하는 알고리즘이다.

FCFS(First-Come, First-Served)

  • 개요
    • 가장 먼저 도착한 프로세스를 먼저 처리하는 방식이다.
  • 특징
    • 비선점형(Non-preemptive) 스케줄링
    • 간단하고 구현이 용이하다
    • 평균 대기 시간이 길어 질 수 있다

SJF(Shortest Job First)

  • 개요
    • 가장 짧은 CPU 버스트 시간을 가진 프로세스를 먼저 처리하는 방식이다
  • 특징
    • 비선점형 또는 선점형으로 구현 가능하다.
    • 평균 대기 시간이 최소화된다
    • CPU 버스트 시간을 예측하기 어렵다.

Priority Scheduling

  • 개요
    • 우선순위(Priority)가 높은 프로세스를 먼저 처리하는 방식이다
  • 특징
    • 비선점형 또는 선점형으로 구현 가능하다.
    • 우선순위가 낮은 프로세스는 기아(starvation) 상태가 될 수 있다.
    • 해결책으로 에이징(aging) 기법을 사용 가능하다.

Round Robin(RR)

  • 개요
    • 각 프로세스가 일정한 시간(Time Quantum) 동안 CPU를 할당받고, 그 시간이 지나면 다음 프로세스로 넘어가는 방식이다
  • 특징
    • 각 큐는 다른 특성을 가진 프로세스를 처리한다.
    • 고정 우선순위 큐 간의 기아 문제가 발생할 수 있다.

MultiLevel Queue Scheduling

  • 개요
    • 여러 개의 큐를 사용하여 프로세스를 우선순위에 따라 다른 큐에 배치하고, 각 큐에 다른 스케줄링 알고리즘을 적용하는 방식이다.
  • 특징
    • 각 큐는 다른 특성을 가진 프로세스를 처리한다
    • 고정 우선순위 큐 간의 기아 문제가 발생할 수 있다.

MultiLevel Feedback Queue Scheduling

  • 개요
    • MLQS 를 기반으로 하되, 프로세스가 다른 큐로 이동할 수 있는 피드백을 제공하는 방식이다.
  • 특징
    • 선점형 스케줄링이다.
    • 프로세스의 특성 변화에 동적으로 적응 가능하다.
    • 구현이 복잡하다.
728x90

'Study > TIL(Today I Learned)' 카테고리의 다른 글

24.06.06 복습  (0) 2024.06.07
24.06.05 복습  (0) 2024.06.06
24.06.03 복습  (0) 2024.06.04
24.06.02 복습  (0) 2024.06.01
24.06.01 이력서  (0) 2024.06.01