프로세스는 프로그램이 실행되서 메모리에 적재되어있고, CPU 의 할당을 받을 수 있는 상태를 의미합니다. 운영체제로 부터 Code, Data, Stack, Heap 을 할당받은 상태입니다. 쓰레드는 이 프로세스의 실행 단위라고 할 수 있으며, 프로세스 내부 자원을 공유하면서, 하나의 프로세스를 좀 더 효율적이게 실행시키는 멀티쓰레딩이 가능하게 됩니다. 구체적으로 말씀드리자면, 각각의 쓰레드는 프로세스의 Code, Data, Heap 은 공유하지만 고유의 Thread ID, Stack, 레지스터, PC 를 가지게 되고 독립적인 작업을 수행하게 됩니다.
Process Control Block 의 약자로, 프로세스에 대한 정보를 저장하고 있는 자료구조 단위 입니다. pid 나 메모리 정보, 프로세스 상태, CPU 스케쥴링 정보 등을 담고 있습니다. CPU 스케쥴러가 프로세스 전환을 할 떄, 프로세스 정보는 PCB에 모두 기록되어서 전환이 됩니다.
출처 : https://www.notesjam.com/2017/12/process-control-block.html
Context Switch
멀티프로세싱은 말 그대로 여러 프로세스를 동시에 실행하는 것, 멀티쓰레딩은 여러 쓰레드를 병렬적으로 실행하는 것을 의미합니다. 멀티 프로세싱은 일반적으로 하나의 프로그램에 대해서 부모 프로세스로 부터 나온 여러 자식프로세스로 프로그램을 실행하는 것을 의미하고, 멀티쓰레딩은 하나의 프로세스에 대해 여러 쓰레드가 자원을 공유하면서 실행하게 되는 것을 말합니다. 멀티쓰레딩은 힙과 data를 공유하면서 진행되기 때문에 리소스적인 측면에서 멀티프로세싱보다 더 효율적인 경우가 많습니다.
구체적인 차이
CPU 스케쥴링 기법중에 하나로, 타임퀀텀을 정해서 그 인터벌동안 하나의 프로세스를 실행하고, 타임 퀀텀이 지나면 프로세스가 다음 프로세스에게 선점 당하고 ready queue로 이동하는 방식입니다. 긴 프로세스가 있을 때, 다른 프로세스들이 불필요하게 길게 기다리게 되는 현상을 방지할 수 있고, 결과적으로 response time 이 빨라집니다.
장점 및 Keyword
시분할 시스템에 적절
응답시간 감소
선점형 스케쥴링
주의할 점
설정한 time quantum이 너무 커지면 FCFS와 같아진다.
너무 작아지면 스케줄링 알고리즘의 목적에는 이상적이지만 잦은 context switch 로 overhead 가 발생한다.
CPU Bound 프로세스는 사용자 입력보다 계산과 같은 작업들이 주가 돼서 CPU Burst 가 큰 프로세스를 의미합니다. 반대로, I/O Bound 프로세스는 사용자 입력이 잦아서 I/O Burst 가 큰 프로세스를 의미합니다. CPU Bound 프로세스의 예로는 머신러닝 프로그램, 시뮬레이션 프로그램 등이 있겠고, I/O Bound 프로세스의 예시로는 FPS 게임 등이 있습니다.
CPU Burst 와 I/O Burst
CPU Burst
CPU 명령을 실행하는 시간
I/O Burst
I/O 를 요청한 뒤 기다리는 시간
출처 : https://velog.io/@ssseungzz7/OS-CPU-Scheduling
출처: https://programming119.tistory.com/222?category=930152 [개발자 아저씨들 힘을모아]