- 이번 단원에서는 프로세스와 스레드에 대한 내용을 정리해보며 둘 간의 차이와 특징에 대해서 함께 알아보며 스케줄링의 개념도 같이 정리를 해보았다.
<프로세스>
- 프로세스는 실행중인 프로그램이라고 불리며, 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램이라고도 할 수 있다.
- 운영체제로부터 시스템 자원을 할당받는 작업의 단위이기도 하다. 즉 동적인 개념으로는 실행된 프로그램을 의미한다.
- 프로세스의 상태는 준비, 실행, 대기, 종료로 나눠서 볼 수 있다.
<멀티 프로세스>
- 멀티프로세싱이란 하나의 응용 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것을 의미한다.
- 부모 자식 관계를 갖더라도 자신만의 메모리 영역을 가지게 된다.
링커와 로더
- 링커는 연결 편집기로 목적 프로그램들과 또 다른 실행 프로그램 등을 연결하여 실행 가능한 로드 모듈을 만드는 시스템 소프트웨어이다.
- 로더는 로드 모듈을 주기억장치에 적재하는 시스템 소프트웨어이다.
- 로더의 기능으로는 할당, 연결, 재배치, 적재가 있다.
<스레드>
- 스레드는 프로세스를 여러개로 나눈 조각과 같다. 이 때문에 경량 프로세스라고도 불린다.
- 하드웨어, 운영체제의 성능과 응용 프로그램의 처리율을 향상시킬 수 있다.
- 프로세스 내에서 실행되는 여러 흐름의 단위이기도 하고, 프로세스 내의 주소 공간이나 자원들을 같은 프로세스 내에 스레드끼리 서로 공유하면서 실행되게 된다.
<멀티스레드>
- 멀티스레딩이란 하나의 응용프로그램을 여러개의 스레드로 구성하고 각 스레드로 하여금 하나의 작업을 처리하도록 하는 것을 말한다.
- 윈도우, 리눅스 등 많은 운영체제들이 멀티 프로세싱을 지원하고 있지만 멀티 스레딩을 기본으로 적용하고 있다.
<자바스레드>
- 일반 스레드와 거의 차이가 없으며, JVM 같은 운영체제의 역할을 한다.
(여기서 JVM이란 자바 가상 머신의 약자를 따서 줄여 부르는 용어이다. JVM의 역할은 자바 애플리케이션을 클래스 로더를 통해 읽어 들여 자바 API와 함께 실행하는 것이다.)
<스케줄링>
- CPU가 하나의 프로세스가 끝난 뒤에, 다음 프로세스 작업을 수행한다. 이 때 다음 프로세스를 선택하는데 있어서 사용하는 것이 CPU 스케줄링 알고리즘이다.
- 스케줄링의 목적으로는 대표적으로 공정성, 처리율 증가, CPU 이용률 증가, 응답시간 및 반환시간 최소화가 있다.
프로세스 스케줄링 기법
- 비 선점형
-이미 할당받은 CPU를 다른 프로세스가 강제로 점유하지 못하는 방식으로 일괄처리 시스템에서 사용된다.
- 선점형
-한 프로세스가 CPU를 차지하고 있을 때, 우선순위가 높은 다른 프로세스가 현재 실행중인 프로세스를 점유하여 사용할 수 있는 방식으로 대화형 시스템에서 사용된다.
-우선순위가 높은 프로세스를 빠르게 처리할 수 있다.
1) 비선점 스케줄링
- FIFO(선입 선출 방식)
- SJF(단기 작업 우선 방식)- 프로세스들 중에서 실행 시간이 가장 짧은 프로세스에게 먼저 CPU를 할당하는 기법이다.
- HRN 기법- SJF 기법을 보완하기 위한 방법으로 대기시간과 서비스 시간을 이용한 기법이다. 대기 시간이 긴 프로세스에게 우선순위를 주어 CPU를 할당한다.
2) 선점 스케줄링
- SRT- 현재 실행중인 프로세스의 남은 시간과 준비상태 큐에 새로 도착한 프로세스의 실행시간을 비교하여 가장 짧은 실행 시간을 요구하는 프로세스에게 CPU를 할당하는 기법이다.
- RR- 시분할 시스템을 위해 고안된 방식이다.
- MLQ (다단계 큐)- 프로세스를 특정그룹으로 분류할 수 있을 경우 그룹에 따라 각기 다른 준비상태 큐를 준비한다.