프로그램(Program): 컴퓨터에서 어떠한 작업을 할 수 있도록 만들어진 집합체로 H/W에 잠들고 있다. (동작 X)
프로세스(Process): H/W에 있는 프로그램이 운영체제에 의해 메모리에 적재되어 실행 중이거나 대기 중인 상태의 프로그램을 프로세스라고 한다.
프로세서(Processor): 프로세서는 중장 처리 장치를 의미하며, 프로세스가 실행될 수 있도록 한다. 흔히 CPU라고도 불린다.
프로그램(Program): 컴퓨터에서 어떠한 작업을 할 수 있도록 만들어진 집합체로 H/W에 잠들고 있다. (동작 X)
프로세스(Process): H/W에 있는 프로그램이 운영체제에 의해 메모리에 적재되어 실행 중이거나 대기 중인 상태의 프로그램을 프로세스라고 한다.
프로세서(Processor): 프로세서는 중장 처리 장치를 의미하며, 프로세스가 실행될 수 있도록 한다. 흔히 CPU라고도 불린다.
프로세스의 상태 변화의 흐름은 아래와 같다.
Time Sharing System 방식 같은 경우는 running 작업 중인 프로세스가 일정 시간을 초과하면 강제로 ready 상태로 변경하고 다른 프로세스가 작업할 수 있도록 하는 방식이다.
PCB는 프로세스에 대한 모든 정보가 담겨있는 블록으로 운영체제 안의 프로세스 관리파트에 존재하며, 1개의 프로세스에 1개의 PCB를 할당받는다.
PCB 안에는 프로세스의 상태 정보, registers 정보, MMU 정보, CPU 사용 시간 정보, process id 정보 등이 담겨 있다.
프로세스에서 큐(Queues)는 줄을 서서 다음 작업을 기다리는 것을 의미한다.
메모리에 적재된 다양한 프로세스는 작업이 진행되는 동안 상태가 여러 번 변하게 된다. 상태가 변동될 때는 즉각적으로 변하는 경우도 있지만, 다른 프로세스가 먼저 와서 기다리는 경우에는 대기를 해야 한다. 이러한 대기를 큐(Queues)라고 한다.
대기 중인 작업을 선입선출 방식으로 하는 것이 제일 간단하고 편하지만, 효율적인 작업을 진행하기 위해서는 작업의 순서를 결정해야 한다. 이러한 작업의 순서를 정해주는 것을 스케줄링(Scheduling)이라 한다.
큐는 크게 3가지로 나누어 진다.
메인 메모리에 2개 이상의 프로세스가 적재되어 작업하는 것을 멀티프로그래밍(Multiprogramming)이라 한다.
현재 main memory에 적재된 프로세스의 수
I/O를 요청한 뒤 기다리는 시간
CPU 명령을 실행하는 시간
I/O 요청이 자주 일어나고 CPU burst가 짧게 나타나는 프로세스
(워드, 한글, 엑셀 등...)
I/O 작업이 거의 없고 CPU burst가 길게 나타나는 프로세스(엄청난 양의 계산이 요구되는 프로그램)를 말한다.
(슈퍼 컴퓨터, 기상청 날씨 계산 등...)
Medium-term scheduler는 Job Scheduler(Long-term scheduler)보단 자주 발생하고, CPU Scheduler(Short-term scheduler)보단 적게 일어나는 scheduler로 메인 메모리에서 작업 활동을 하지 않는 프로세스를 잠시 H/W(HDD)로 옮기는 것을 한다.
이러한 과정을 Swapping이라 하며, 프로세스를 잠시 H/W(HDD)로 옮기는 것을 swap out, H/W(HDD)에 있는 프로세스를 다시 main memory로 옮기는 것을 swap in 이라 한다. 프로세스를 저장하는 H/W(HDD)를 swap device라 부른다.
(swap out 후 다시 swap in 할 때 기존 사용했던 메모리 공간으로 배정받는 것은 보장되지 않고 다른 공간에 배정될 수 있다.)
main memory에서 운영체제가 CPU가 프로세스의 작업을 중단하고 다른 프로세스로 전환하는 것을 Context Switching(문맥 전환)이라 부른다.