728x90
복습
프로세스와 스레드
- 컴퓨터의 실행 단위를 의미하며, 각각 다른 특징과 용도로 사용된다.
프로세스(Process)
정의
- 프로세스는 실행 중인 프로그램의 인스턴스를 말한다. 프로그램이 디스크에 저장된 코드라면, 프로세스는 이 코드를 실행 중인 동적인 엔터티이다.
- 프로세스는 독립적인 실행 단위로, 각각 고유의 메모리 공간과 리소스를 가진다.
주요 특징
- 독립성
- 각 프로세스는 고유한 주소 공간을 가지며, 다른 프로세스와 메모리를 공유하지 않는다.
- 고유한 메모리 영역
- 프로세스는 코드, 데이터, 힙, 스택 영역을 포함하는 고유한 메모리 구조를 가진다.
- 리소스 소유
- 각 프로세스는 CPU 시간, 파일 디스크립터, 메모리와 같은 시스템 리소스를 할당 받는다.
- 안정성
- 한 프로세스의 오류가 다른 프로세스에 영향을 미치지 않는다.
프로세스 상태
- 프로세스는 다음과 같은 상태를 가질 수 있다.
- 생성(New)
- 프로세스가 생성되고 있는 상태
- 준비(Ready)
- 프로세스가 실행되기를 기다리고 있는 상태
- 실행(Running)
- 프로세스가 CPU를 점유하고 실행 중인 상태
- 대기(Waiting)
- 프로세스가 어떤 이벤트(입출력 등)를 기다리고 있는 상태
- 종료(Terminated)
- 프로세스가 실행을 마치고 종료된 상태
- 생성(New)
스레드(Thread)
정의
- 스레드는 프로세스 내에서 실행되는 가장 작은 실행 단위이다.
- 하나의 프로세스는 여러 개의 스레드를 가질 수 있으며, 이 스레드들은 프로세스의 자원을 공유한다.
주요 특징
- 경량성
- 스레드는 프로세스보다 생성과 관리가 가볍다.
- 공유 메모리
- 같은 프로세스 내의 스레드들은 코드, 데이터, 힙을 공유한다.
- 단, 각 스레드는 자신만의 스택을 가진다.
- 병렬 처리
- 스레드를 사용하면 하나의 프로세스 내에서 여러 작업을 병렬로 수행할 수 있다.
- 협력
- 스레드는 동일한 프로세스 내에서 다른 스레드와 협력하여 작업을 수행한다.
스레드 상태
- 스레드의 상태는 프로세스의 상태와 유사하다.
- 생성(New)
- 스레드가 생성되고 있는 상태
- 준비(Ready)
- 스레드가 실행되기를 기다리고 있는 상태
- 실행(Running)
- 스레드가 CPU를 점유하고 실행 중인 상태
- 대기(Waiting)
- 스레드가 어떤 이벤트를 기다리고 있는 상태
- 종료(Terminated)
- 스레드가 실행을 마치고 종료된 상태
- 생성(New)
프로세스와 스레드의 차이
- 메모리 구조
- 프로세스
- 각 프로세스는 독립적인 메모리 공간을 가지며, 다른 프로세스와 메모리를 공유하지 않는다.
- 스레드
- 같은 프로세스 내의 스레드들은 메모리를 공유하지만, 각 스레드는 독립적인 스택을 가진다.
- 프로세스
- 리소스 관리
- 프로세스
- 리소스를 독립적으로 관리하며, 프로세스 간의 통신은 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 |