여러개의 프로세스들이 CPU의 점유시간에 나눠지기 때문에 여러개의 프로세스가 동시에 실행되는 것처럼 보이는 것임.
CPU는 여러개의 프로세스를 빠르게 번갈아 실행하기 위해, 각 프로세스를 위해 일하는 시간을 조 금씩 나누어 배분함.
프로세스의 CPU 점유순서 및 방법을 결정짓는 일을 '프로세스 스케줄링' 이라고 함.
운영체제는 자신이 가지고있는 스케줄링 알고리즘을 적용해 자신이 가진 스케줄러 모듈을 운영함.
CPU를 누구에게 먼저, 얼마 동안 할당해 줄지, 또 우선순위도 고려해야 한다.
입출력 작업이 더 많은지, CPU이용시간이 더 많은지도 달라서 이에 따라 입출력 집중 프로세스 다, CPU집중 프로세스다 로 구분하여 부름
프로세스 별로 요구하는 자원이 상이하기 때문에, 운영체제(스케줄러)가 모든 프로세스에 동일한 빈도로 CPU를 할당하는 것은 비합리적이다. 운영체제는 프로세스마다 우선순위를 부여하고 이를 기준으로 프로세스를 실행한다.
but 우선순위가 같은 프로세스도 존재한다. 실습 예제를 통해 확인.
from multiprocessing import Process
import os
import time
def coke():
while True:
try:
print("콜라 프로세스 아이디: ", os.getpid())
print("부모 프로세스 아이디: ", os.getppid())
except KeyboardInterrupt:
break
def cider():
while True:
try:
print("사이다 프로세스 아이디: ", os.getpid())
print("부모 프로세스 아이디: ", os.getppid())
except KeyboardInterrupt:
break
def juice():
while True:
try:
print("주스 프로세스 아이디: ", os.getpid())
print("부모 프로세스 아이디: ", os.getppid())
except KeyboardInterrupt:
break
if __name__ == '__main__' :
print('07.py 프로세스 아이디 :', os.getpid())
child1 = Process(target=coke)
child1.start()
time.sleep(0.5)
child2 = Process(target=cider)
child2.start()
time.sleep(0.5)
child3 = Process(target=juice)
child3.start()
time.sleep(0.5)
<실행결과>

31이 우선순위 번호를 의미하고 같은 번호가 있는 것 확인