-
OS - 멀티 프로그래밍과 멀티태스킹CS 2024. 3. 11. 23:51
우리가 컴퓨터의 전원을 키면 젤 먼저 작동하는 것은 부트스트랩과 같은 초기 프로그램이다.
부트스트랩은 컴퓨터 내 하드웨어를 사용가능한 상태로 초기화 하고, 운영체제를 실행시키기 위해 부트로더를 실행시켜 메모리 위에 운영체제를 올린다.
이렇게 운영체제가 메모리위에서 작동하게 되면 비로소 사용자와 시스템에 서비스를 제공할 수 있게 된다.
여기서 몇몇 서비스들은 운영체제가 실행되는 동안에 함께 실행되기 위해 부팅 시 메모리에 load되는데, 이를 시스템 데몬이 이라고 한다.
여기서 데몬이란 백그라운드에서 실행되는 시스템 서비스를 말한다.
데몬은 사용자와의 상호작용을 하지 않는다.
멀티 프로그래밍
운영체제에서 가장 중요한 점은 CPU가 쉬지 않게 효율적으로 프로그램을 관리하는 것이다.
만약 CPU가 하나의 프로그램만 실행할 수 있다면,
그 하나의 프로세스가 만약 입출력 I/O가 필요할 때, 사실 상 인터럽트가 발생할 때 까지 기다려야 할 수도 있다.
이러면 결국 I/O 작업이 끝날 때 까지, 다른 프로그램을 실행시키지 못하여 CPU의 유휴 상태가 발생한다.
이러한 문제 때문에 생겨난 것이 멀티프로그래밍이다.
멀티 프로그래밍이란 CPU가 단 하나의 프로그램만 실행하는 것이 아닌, 여러 프로그램을 동시에 실행하는 시스템을 말한다.
멀티 프로그래밍에서 실행 중인 프로그램을 프로세스 라고 부른다.
멀티프로그래밍에서는 일단 여러 프로세스를 동시에 메모리위에 유지한다.
그리고 운영체제는 이러한 프로세스들 중 하나를 선택하여 처리하게 한다.
여기서 만약 해당 프로세스가 입출력 I/O 작업을 해야한다면?
멀티 프로그래밍에서는 해당 프로세스가 대기가 필요하다고 판단하고 다른 프로세스가 CPU를 차지하여 수행한다.
그리고 입출력 작업이 끝나면 원래 프로세스가 다시 CPU를 돌려받아서 하던 일을 마저 수행한다.
멀티 태스킹
멀티 태스킹은 멀티 프로그래밍의 논리적 확장이다.
멀티 프로그래밍에서는 CPU의 유휴시간을 최소화 하기 위하여 고안한 시스템이며
여러 프로그램을 동시에 메모리위에 올려놓을 수 있게 하고,
대기가 발생한 프로세스에 대하여 다른 프로세스가 CPU를 차지하게 만들어 준다.
이러한 멀티 프로그래밍은 효율적인 CPU관리에 중점을 두는 것 이고
멀티 태스킹은 사용자의 경험을 중점적으로 다룬다.
사용자가 키보드로 부터 입력받는 프로그램을 실행하였다고 생각해보자.
여기서 사용자가 몇타로 입력을 하던, 대부분의 경우 CPU에겐 매우 느린 행동 일 것이다.
심지어 사용자가 무슨 입력을 할지 고민한다면, CPU는 더더욱 기다려야 할 수도 있다.
이러한 상황에서 멀티 태스킹을 활용한다면, 사용자에 의해 발생하는 대기시간을 캐치 후
빠르게 다른 프로세스로 전환하여 작업을 수행한다.
이러면 사용자가 동시에 여러 프로그램을 켰을 때, 현재 집중하고 있는 프로그램이 사용자로부터 입력대기를 하고 있더라도
다른 프로그램들의 남은 일을 수행하게 되어 사용자가 중간에 다른 프로그램으로 빠르게 전환하더라도 빠른 응답속도를 제공하게 된다.
멀티 프로그래밍과 멀티 태스킹시 신경써야 하는 부분
멀티 프로그래밍에서는 CPU를 바쁘게 유지시키기 위해서 메모리위에 동시에 여러 프로세스를 실행시킨다.
이렇게 여러 프로세스를 동시에 메모리위에 유지시키려면 메모리 관리도 필요하고, 다음에 실행시킬 프로세스를 결정내리기 위하여 CPU 스케줄링이 필요하다.
멀티 태스킹시에는 사용자 경험을 중점적으로 다루기 때문에 응답속도가 가장 중요한 키워드이다.
멀티 태스킹을 하기 위해서는 여러 프로세스를 전환하며 실행시키기 때문에
물리적인 메모리양 보다 더 많은 프로세스를 유지시켜야 할 필요가 있을 때도 있다.
이러한 물리적인 메모리 크기의 한계를 극복하기 위해 가상 메모리 기술을 사용한다.
'CS' 카테고리의 다른 글
OS - 다중모드 운용과 타이머 (0) 2024.03.12 OS - 멀티 프로세서 (0) 2024.03.10 OS - 메인 메모리와 입출력 장치 (0) 2024.03.10 OS - OS가 할일, 컴퓨터 시스템구성 (1) 2024.03.05