프로세스
프로세스
- 실행 중에 있는 프로그램을 의미한다.
- 스케줄링의 대상이 되는 작업과 같은 의미로 쓰인다.
- 하드 디스크의 프로그램 실행 시 실행을 위해서 메모리 할당이 이루어지고 할당된 메모리 공간으로 바이너리 코드가 올라간다.
- 이순간부터 프로세스라고 부른다.
프로세스 스케줄링
- 컴퓨터의 CPU는 한정적이고 대부분의 경우 프로세스가 CPU보다 많다.
- 물리적 연산장치 - 프로세서
- 논리적 연산장치 - 프로세스
- 스케줄링
- CPU 할당 순서 및 방법을 결정하는 일을 스케줄링이라고 한다.
- 스케줄링에 따른 분류
- 선점형(Preemptive)
- 선점이란? 컴퓨터의 자원을 우선적으로 차지할 수 있는 권한을 뜻한다.
- 이때 선점권은 실행 중에 있는 프로세스가 아닌 대기중인 프로세스가 갖는다.
- 다만, 일정 조건이 맞는다면 선점권을 사용해서 가져올 수 있다.(특정 리소스 사용 중이 아닐때 등..)
- 일반적인 운영체제에서 사용한다.
- 비선점(Non - Preemptive)
- 비선점의 경우프로세스가 자발적으로 자원을 반납하기 전까지는 CPU 사용권이 넘어가지 않는다.
- 일반적인 Realtime Os에서 사용한다.
- Real-time Os란? 실시간 응용 프로그램을 위해 개발된 운영 체제로 운영체제의 기능 중 CPU 시간 관리 부분에 초점을 맞춰 설계됐다.(주어진 작업을 정해놓은 시간 안에 완료하는 것을 의미한다.)
- 선점형(Preemptive)
- 일정한 기준인 알고리즘을 통해서 스케줄링은 정해진다.
- FCFS
- SJF
- HRN
- Priority Scheduling
- Round Robin Scheduling
프로세스 상태 변화
- New: 프로세스 생성(실행전)
- Ready: 프로세스(논리적)가 프로세서(물리적)에서 실행되기 위해 대기중인 상태
- Running: 프로세스가 실행되고 있는 상태
- Blocked(Wait): 프로세스가 특정 자원이나 이벤트를 기다리는 상태
- Terminated: 프로세스가 실행을 완료한 상태
프로세스와 쓰레드
- 하나의 프로세스는 여러 개의 쓰레드로 구성이 가능하다.
- 하나의 프로세스를 구성하는 쓰레드는 프로세스에 할당된 메모리와 자원을 구성한다.
- 각 쓰레드별로 Stack과 Register를 가지고 있다.
- 한 번에 하나의 쓰레드만 실행이 가능하다.
'Back-End > 백엔드 관련 정리' 카테고리의 다른 글
[자바][List] - 인터페이스 기반 프로그래밍 (0) | 2022.09.17 |
---|---|
[백엔드 과정][자바 기초] - 1. 스레드(Thread) (0) | 2022.09.06 |
[백엔드 과정][자바 기초] - 큐 구현하기 (3.DoubleLinkedList를 이용한 구현) (0) | 2022.09.06 |
[백엔드 과정][자바 기초] - 큐 구현하기 (2. LinkedList를 이용한 구현) (0) | 2022.09.06 |
[백엔드 과정][자바 기초] - 큐 구현하기 (1. ArrayList를 이용한 구현) (0) | 2022.09.06 |