프로세스.
프로세스(Process)는 운영체제에서 실행 중인 프로그램의 인스턴스입니다.
프로세스는 실행 중인 프로그램의 작업 단위로서 컴퓨터 시스템에서 독립적으로 실행됩니다.
프로세스라는 용어는 작업, tast,job 이라는 용어와 혼용하여 사용합니다.
프로세스는 다음과 같은 특징을 가지고 있습니다:
프로그램 코드와 데이터.
프로세스는 실행 중인 프로그램의 코드와 데이터를 포함합니다.
이는 프로그램의 명령어들과 그에 따른 변수, 상수, 자료 구조 등을 의미합니다.
주소 공간.
각 프로세스는 독립된 가상 주소 공간을 가지고 있습니다. 이는 프로세스가 메모리에 로드되어 실행될 때 해당 프로세스를 위한 메모리 공간이 할당되는 것을 의미합니다. 각 프로세스는 다른 프로세스의 주소 공간에 직접적인 접근이 불가능하며, 메모리 보호를 위해 이러한 격리된 공간을 가지고 있습니다.
스레드.
프로세스 내에서는 하나 이상의 스레드(Thread)가 실행될 수 있습니다.
스레드는 프로세스 내에서 동시에 실행되는 작업 단위로, 프로세스 내의 자원을 공유하면서 동작합니다.
스레드를 통해 프로세스는 병렬적이고 동시에 실행되는 작업을 수행할 수 있습니다.
자원 할당.
각 프로세스는 실행에 필요한 자원을 할당받습니다.
이는 CPU 시간, 메모리, 파일 핸들, 입출력 장치 등을 포함합니다.
운영체제는 프로세스에게 필요한 자원을 할당하고, 프로세스 간에 자원을 공유 또는 분배하는 역할을 합니다.
상태 관리.
각 프로세스는 실행 상태, 준비 상태, 대기 상태 등의 다양한 상태를 가질 수 있습니다.
운영체제는 프로세스 상태를 관리하고 스케줄링을 통해 CPU 시간을 적절히 할당하여 다수의 프로세스를 실행합니다.
프로세스는 컴퓨터 시스템에서 다양한 응용 프로그램을 동시에 실행하고 관리하는데 중요한 역할을 합니다.
프로세스의 구성.
프로세스.
실행 중인 프로그램( != 응용프로그램)
텍스트 부분(text section).
프로그램 코드
현재 상태.
프로그램 카운터를 포함한 현재 프로세서의 레지스터 값
스택(stack).
일시적인 데이터(파라미터, 복귀주소, 지역변수 등)를 저장하는 곳
데이터부분.
광역 변수를 저장하는 곳
프로세스의 상태.
가능한 상태.
- 생성중(new) : 프로세스가 생성중, 예) 로그온, 프로그램의 실행
- 실행중(running) : 프로스세가 실행 중
- 대기중(waiting) : 프로세스가 어떤 사건을 기다리고 있는 상태
- 준비완료(ready) : 프로세스가 프로세서에 할당되기를 기다리고 있는 상태
- 종료(terminate) : 프로세스의 실행이 종료 된 상태
단일 프로세스 시스템에서는 현재 실행 상태에 이을 수 있는 프로세스는 오직 하나.
하지만 많은 프로세스가 대기 또는 준비완료 상태에 있을 수 있다.
대기 중인 프로세스는 현재 프로세서가 실행할 프로세스가 없더라도 실행될 수 없다.
프로세스 스케쥴링.
여러 프로세스들 중에서 CPU를 할당받을 프로세스를 선택하는 작업을 의미합니다.
프로세스 스케줄링은 운영체제의 단기 스케줄러(Short-term Scheduler)에 의해 수행되며,
다중 프로그래밍 환경에서 CPU 자원을 효율적으로 활용하여 프로세스 실행을 관리합니다.
다중 프로그래밍의 목적은 항상 실행할 프로세스가 있도록 하는것입니다.
이를 통해 CPU 사용 효율을 높이는 것입니다.
시분할 시스템의 목적은 프로세스를 빈번하게 바꾸어 가면서 실행하여 사용자들이
프로그램과 상호작용할 수 있도록 하는 것입니다.
스케쥴링 큐.
프로세스의 스케쥴링을 위해 운영체제는 여러 종류의 큐를 유지합니다.
큐는 일반적으로 연결 리스트로 구현되어 있습니다.
큐의 종류.
- 작업 큐(job queue) : 프로세스가 시스템에 처음 들어와서 대기하는 큐
- 준비완료 큐(ready queue) : 주기억장치에 적재되어 실행을 기다리는 프로세스를 유지하는 큐
- 장치 큐(device queue) : 장치를 사용하기 위해 기다리는 큐로서, 각 장치는 자신만의 장치 큐를 가지고 있다.
- 대기 큐(waiting queue) : 특정한 사건마다 그 사건을 기다리는 프로세스를 유지하는 큐를 사용할 수 있다.
스케쥴러.
각 큐마다 다음 차례의 프로세스를 결정하해주는 스케쥴러가 있다.
프로세스의 종류.
- 입출력 중심 프로세스(I/O-bound process) : 계산보다는 입출력을 많이 하는 프로세스
- 계산 중심 프로세스(CPU-bound process) : 입출력보다는 계산을 많이 하는 프로세스
장기 스케쥴러(long-term scheduler).
한 번에 병행으로 수행할 수 있는 작업의 수가 제한되어 있으며
준비 완료 큐에 수용하지 못하는 작업은 디스크에 유지되는 작업풀에 유지된다.
장기 스케줄러는 작업풀에서 준비완료 큐로 옮겨질 다음 작업을 결정한다.
다른 말로 작업 스케줄러라 한다.
단기 스케쥴러(short-term scheduler).
이 스케줄러는 준비완료 큐에서 다음에 CPU에 할당하여 실행할 프로세를 결정합니다.
다른 말로 CPU 스케줄러라고 합니다.
중기 스케쥴러(medium-term scheduler).
시분할 시스템에서 프로세르를 메모리에서 디스크로 옮겨 당분간 실행되지 못하도록 하는 경우가 있는데
다중 프로그래밍의 정도를 조절하여 프로세스 혼합을 향상 시키거나 메모리 요구사항을 충족시키기 위함입니다.
이것을 담당하는 스케쥴러가 중기 스케쥴러 입니다.
프로세스 스케쥴러와 CPU 스케쥴러의 차이점.
프로세스 스케줄링과 CPU 스케줄링은 CPU를 할당받을 프로세스를 선택하는 작업을 수행하는 데 있어서
목적과 시점의 차이가 있습니다.
프로세스 스케줄링(Process Scheduling):
목적: 여러 프로세스들 중에서 CPU를 할당받을 프로세스를 선택합니다.
시점: 장기 스케줄러(Long-term Scheduler)에 의해 수행되며,
프로세스가 메모리로 적재되기 전에 선택됩니다.
역할: 메모리에 적재될 프로세스를 선택하여 CPU 자원을 할당하고,
시스템의 처리량과 응답 시간에 영향을 줍니다.
CPU 스케줄링(CPU Scheduling):
목적: CPU를 사용할 수 있는 실행 가능한 프로세스들 중에서 CPU를 할당받을 프로세스를 선택합니다.
시점: 단기 스케줄러(Short-term Scheduler 또는 CPU Scheduler)에 의해 수행되며,
현재 실행 중인 프로세스와 경쟁하여 CPU를 할당받을 프로세스를 선택합니다.
역할: 현재 실행 중인 프로세스와의 전환을 관리하여 CPU를 효율적으로 활용하고,
공정성, 처리량, 응답 시간, 대기 시간 등의 목표를 달성합니다.
요약하면, 프로세스 스케줄링은 장기 스케줄러에 의해 메모리에 적재될 프로세스를 선택하는 작업이며,
CPU 스케줄링은 단기 스케줄러에 의해
현재 실행 중인 프로세스와 경쟁하여 CPU를 할당받을 프로세스를 선택하는 작업입니다.
두 스케줄링은 서로 다른 시점에서 수행되며, 각각의 목표와 역할이 있습니다.
'COMPUTER SCIENCE' 카테고리의 다른 글
프로세스 구조와 콘텍스트 스위치 이해하기 (0) | 2023.06.08 |
---|---|
CPU 스케쥴링 및 스케쥴링 알고리즘 (0) | 2023.06.07 |
운영체제 개념과 역할의 이해 (0) | 2023.06.07 |
반가산기와 전가산기 그리고 Oscillator (0) | 2023.06.05 |
논리회로 게이트 종류 - AND, OR, NOT, NAND, NOR, XOR, XNOR (0) | 2023.06.05 |