컴퓨터 시스템의 각종 자원을 효율적으로 관리하고 컴퓨터 HW와 User간의 인터페이스를 담당하는 시스템 프로그램
사람이 컴퓨터를 편하게 이용하고 사용자 대신 HW를 효율적으로 관리
멀티 프로그래밍은 하나의 프로세서가 하나의 프로세스를 수행하는 동안 다른 프로세스에 접근할 수 있도록 하는 방법을 의미한다. 멀티 태스킹을 구현하는 스케쥴링의 한 방식
멀티프로그래밍 vs 멀티태스킹
앞에서 말한 멀티 프로그래밍은 프로세서의 자원낭비를 막기 위함이고,
멀티태스킹은 정해진 시간동안 각각의 task를 번갈아가며 수행하는 것을 의미한다.
다수의 프로세서가 서로 협력적으로 일을 처리하는 것을 의미한다.
멀티 프로세싱 vs 멀티 스레딩
프로세스: 실행될 때 OS로부터 자원을 할당받아 실행되는 프로그램
스레드: 한 프로세스 내에서 동작되는 여러 실행의 흐름
멀티프로세싱 : fork를 통해 프로세스를 다수개로 늘려 여러 개의 프로그램들을 병렬로 처리하며, 멀티스레딩은 하나의 프로그램 안에서 병렬 처리를 한다.
멀티 스레딩 : 멀티 프로세싱보다 훨씬 적은 자원을 소모하기 때문에 더 효율적이나 안정성 측면에서는 멀티 프로세싱이 안정적이다.
- 특정 작업 시간(TIme Slice, Quantum)동안 CPU를 사용한 후에 다시 대기하고 대기큐에 있는 작업을 꺼내와서 다시 CPU를 사용하는 것을 반복
- 사용자 입장에서는 여러 개의 작업이 동시에 수행하는 것처럼 느낄 수 있다.
- 단말기나 제어 대상으로부터 처리를 요구하는 자료가 발생할 때마다 즉시 처리하여 그 결과를 출력하거나 요구에 대하여 응답하는 방식
하나의 프로세스가 다른 프로세스 대신에 프로세서(CPU)를 차지할수 있다는 뜻이다.
하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 사용할 수 없다.
https://cloudstudying.kr/lectures/184
https://oizys.tistory.com/9