[운영체제] Multitasking

SeongWon Oh·2021년 11월 7일
0

Computer Science

목록 보기
2/3
post-thumbnail

Multitasking이 생겨난 이유

초창기 OS는 disk를 읽는동안 CPU가 기다리거나 하는 등의 hardware문제, 각각의 program이 끝나야 다음 프로그램을 실행시킬 수 있는 문제 등이 있어서 utilization이 떨어졌다.

그래서 이러한 낭비를 줄이기 위해 지금의 OS에서 제공하고 있는 multitasking을 만들게 되었습니다.

Multitasking

  • 메인메모리에 동시에 여러 프로세스가 올라가있는 환경이 Multitasking이다.
  • Multitasking이라고 CPU를 공유해서 같이 사용하는게 아니고 시간을 나눠서 사용하는 것이다.
  • 메모리에 올라가서 실행되는 process가 한번에 여러개가 되도록 하는 기술로 multitasking을 통해 초기 OS의 utilization이 떨어지는 것을 극복하였다.
  • Multitasking은 infinite loop에 들어가서 CPU를 놓아주지 않는 문제, 다른 Process의 메모리에 접근할 수 있는 문제들이 발생할 수 있다. 그래서 OS는 PreemptionMemory protection을 제공한다.
    • Preemption: CPU 자원을 Process로부터 강제로 뺐어올 수 있다.
    • Memory protection: 자신의 process 영역이 아닌 다른 memory영역으로 process가 침범하지 못하도록 막아준다. (OS도 Kernel process로 동작을 하여 memory protection이 없다면 침범을 받을 수도 있다.)
ex) gcc라는 프로그램을 실행하고 디스크에서 하는것을 기다리는동안 cpu가 emacs의 일을 할 수 있다.

Multitasking의 장점

  • Advantage1: CPU Utilization
    • Scheduling을 통해 CPU의 사용을 극대화시킨다!!
    • ex) I/O장치 관련 작업을 하는 동안에는 CPU가 놀지 않게 다른 Process를 실행시켜주며 실행이 필요한 작업이 있으면 CPU는 절대로 idle한 상태로 두지 않게 한다.
  • Advantage2: Timesharing (of CPU resource)
    • CPU 자원을 시간을 나눠서 계속 일을 바꿔서 실행하여서 동시에 실행하는 것처럼 보이게 한다.
    • 많은 유저가 같이 사용하는 것은 대표적으로 서버가 있다. 여러 유저가 사용하는 Multi-user도 CPU schduling을 통해 가능한 것이다.
    • 여러 작업이 동시에 ready상태에 왔을 때 어떠한 process를 먼저 실행시킬지는 OSCPU Job Scheduling을 통해 정해준다.

🚨 용어 주의!!
Multiprocessor vs Multitasking
multitasking: 하나의 CPU가 여러개의 Process를 실행하는 것
Multiprocessor: 하나의 Computer안에 여러개의 CPU가 있는 것.

profile
블로그 이전했습니다. -> https://seongwon.dev/

0개의 댓글