메모리에 올려져서 실행중인 프로그램을 프로세스라고 하며, 실행 중인 파일을 코드이미지라고 한다. 프로세스는 작업, task, job이라는 용어와 혼횽해서 사용하기도 한다. 또한, 응용 프로그램은 내부에 여러 프로세스를 구성할 수 있다.
프로그램이 메모리에 올라가면 프로세스가 되는 인스턴스화가 이러나고, 이후 운영체제의 CPU 스케쥴러에 따라 CPU가 프로세스를 실행한다.
배치 처리 시스템
여러 프로그램을 순차적으로 실행시키는 시스템을 말한다.특정 프로그램의 실행시간이 너무 많이 걸려서 다른 프로그램이 실행하는데 많은 시간을 기다려야 한다는 단점이 있다.
시분할 시스템
다중 사용자 지원을 위해 컴퓨터 응답 시간을 최소화하는 시스템으로 시간을 잘개 쪼개서 여러 프로세스를 돌아가며 실행한다.
멀티태스킹
단일 CPU에서 여러 응용프로그램이 동시에 실행되는 것처럼 보이도록 하는 시스템이다. 매우 짧은 시간을 주기로 실행 응용 프로그램이 바뀌는 특징이 있다.
멀티 프로그래밍
최대한 CPU를 일정 시간당 많이 활용하기 위한 시스템으로 응용프로그램은 CPU외 다양한 하드웨어를 사용한다.
멀티태스킹과 멀티 프로세싱
멀티 태스킹은 단일 CPU에서 실행하며,
멀티 프로세싱은 여러 CPU에 하나의 프로그램을 병렬로 실행해서 실행속도를 극대화 시키는 시스템이다. 특정 프로세스의 메모리, 프로세스 중 일부에 문제가 발생되더라도 다른 프로세스를 이용해서 처리할 수 있으므로 신뢰성이 높다.
스케쥴러란 프로세스 실행을 관리하는 주체를 말한다.
FIFO 스케쥴러
프로세스가 다른 작업 없이 CPU를 처음부터 끝까지 사용한다. First Come First Served 스케쥴러이다.
최단 작업 우선(SJF) 스케쥴러
Shortest Job First 스케쥴러로 가장 프로세스 실행시간이 짧은 프로세스부터 먼저 실행 시키는 알고리즘이다.
우선순위 기반 스케쥴러
프로세스마다 우선순위를 미리 지정하는 정적 우선순위와 스케쥴러 상황에 따라 우선순위를 동적으로 변경하는 동적 우선순위가 있다.
프로세스는 일반적으로 다음과 같은 구조를 가진다.
stack | 동적영역 |
---|---|
↓ | |
↑ | |
heap | 동적영역 |
data | 정적영역 |
text(CODE) | 정적영역 |