운영체제

Thread - 멀티태스킹 + 멀티프로세싱

으엉어엉 2024. 11. 17. 14:11
728x90

멀티태스킹

만약 CPU가 매우 빠르게 두 프로그램의 코드를 번갈아 수행한다면, 사람이 느낄 때 두 프로그램이 동시에 실행되는 것 처럼 느껴질 것이다. (대략 0.01초(10ms) 단위로 돌아가며 실행한다.)

 

결과

 

이 방식은 CPU 코어가 프로그램A의 코드를 0.01초 정도 수행하다가 잠시 멈추고, 프로그램B의 코드를 0.01초 정도 수행한다. 그리고 다시 프로그램A의 이전에 실행중인 코드로 돌아가서 0.01초 정도 코드를 수행하는 방식으로 반복 동작한다.

 

이렇게 각 프로그램의 실행 시간을 분할해서 마치 동시에 실행되는 것 처럼 하는 기법을 시분할(Time Sharing, 시간 공유) 기법이라 한다. 이런 방식을 사용하면 CPU 코어가 하나만 있어도 여러 프로그램이 동시에 실행되는 것 처럼 느낄 수 있다.

 

참고 : CPU에 어떤 프로그램이 얼마만큼 실행될지는 운영체제가 결정하는데 이것을 스케줄링(Scheduling)이라 한다. 이때 단순히 시간으로만 작업을 분할하지는 않고, CPU를 최대한 활용할 수 있는 다양한 우선순위와 최적화 기법을 사용한다. 우리는 운영체제가 스케줄링을 수행하고, CPU를 최대한 사용하면서 작업이 골고루 수행될 수 있게 최적화한다는 정도로 이해하면 충분하다.

 

 

 

멀티프로세싱

CPU 코어가 둘 이상이면 어떻게 될까? CPU 안에는 실제 연산을 처리할 수 있는 코어라는 것이 있다.

 

 

멀티프로세싱(Multiprocessing)은 컴퓨터 시스템에서 둘 이상의 프로세서(CPU 코어)를 사용하여 여러 작업을 동시 에 처리하는 기술을 의미한다. 멀티프로세싱 시스템은 하나의 CPU 코어만을 사용하는 시스템보다 동시에 더 많은 작업 을 처리할 수 있다.

 

 

멀티프로세싱 vs. 멀티태스킹

멀티프로세싱은 하드웨어 장비의 관점이고, 멀티태스킹은 운영체제 소프트웨어의 관점이다.

멀티프로세싱 

  • 여러 CPU(여러 CPU 코어)를 사용하여 동시에 여러 작업을 수행하는 것을 의미한다.
  • 하드웨어 기반으로 성능을 향상시킨다. 예: 다중 코어 프로세서를 사용하는 현대 컴퓨터 시스템

멀티태스킹

  • 단일 CPU(단일 CPU 코어)가 여러 작업을 동시에 수행하는 것처럼 보이게 하는 것을 의미한다.
  • 소프트웨어 기반으로 CPU 시간을 분할하여 각 작업에 할당한다. 예: 현대 운영 체제에서 여러 애플리케이션이 동시에 실행되는 환경

이 예는 여러 CPU 코어를 사용하기 때문에 멀티프로세싱이다. 동시에 각각의 단일 CPU 코어에 여러 작업을 분 할해서 수행하기 때문에 멀티태스킹이다.

 

728x90

'운영체제' 카테고리의 다른 글

Thread - Scheduling,Thread  (0) 2024.11.17
Thread - process ,thread  (0) 2024.11.17
주소 바인딩  (0) 2024.06.14
교착상태  (0) 2024.06.14
프로세스 동기화  (0) 2024.06.14