멀티 프로그래밍과 멀티 태스킹의 차이점


10

멀티 프로그래밍과 멀티 태스킹을 명확하게 구분하기가 어렵습니다.

나의 주요 출처는 Wikipedia 였지만 WP 기사는 평판이 좋지 않은 출처 (대학 교수와 같은)와 약간 상충되는 것으로 보입니다.

WP를 읽으면서 멀티 프로그래밍 은 프로세스가 I / O를 기다릴 때 컨텍스트 전환을 통해 CPU 처리량을 증가시키는 기본적인 방법입니다.

멀티 프로그래밍은 프로그램이 적시에 실행될 것이라는 보장을하지 않습니다. 실제로 첫 번째 프로그램은 주변 장치에 액세스 할 필요없이 몇 시간 동안 매우 잘 실행될 수 있습니다.

Cooperative Multitasking 과 동의어 인 Cooperative Time-sharing 은 멀티 프로그래밍의 향상 (동의어가 아님)입니다. CPU 컨텍스트 전환은 정기적으로 실행되는 인상을주기 위해 정기적으로 전환되지만 프로세스는 여전히 양산해야하며, 제대로 설계되지 않은 프로그램은 나머지 시스템을 고갈시킬 수 있습니다.

선점 형 멀티 태스킹 은 일정을보다 적극적으로 제어하여 일부 프로세스에 우선 순위를 부여합니다.

  1. 이 개요가 맞습니까? 그렇지 않다면 WP가 잘못되었거나 WP를 잘못 읽었 기 때문입니까?
  2. 일부 소스가 멀티 프로그래밍 및 멀티 태스킹을 혼동하는 이유는 무엇입니까?

1
"나의 대학 교수와 같이 평판이 덜 좋은 정보원이있다"고 CS에 반 구운 콘텐츠가 많은 Wikipedia보다 평판이 좋기를 바랍니다.
라파엘

"멀티 프로그래밍"은 더 역사적인 접근 방식 인 것 같습니다. 최신 멀티 태스킹은 실제로 IO 차단과 관련이 있지만 프로세스를 저글링하는 데 사용되는 요소 중 하나 일뿐입니다. 또한 거의 모든 현대식 멀티 태스킹은 CPU의 지원으로 선제 적입니다 (수년 전에는 항상 지원하지 않았으며 올바르게 작동하는 프로세스는 협력을 지원하는 OS 기반 대기 메소드를 호출해야합니다).
vzn

2
@Raphael, 당신은 완벽하게 구워서 전세계에 호의를 베풀 수 있습니다.
vonbrand

1
@vonbrand 나는 시도했지만 불행히도 그러한 시도를 막을 수있는 반 구운 전문가가 충분합니다.
Raphael

@Raphael, 그 군중도 여기에 나타나지 않습니까?
vonbrand

답변:


9

그들은 다소 동의어입니다. 멀티 프로그래밍은 한 CPU가 관련 될 때, 즉 프로세스에서 다른 CPU로 전환 될 때 메모리에 동시에 상주하는 프로세스가 더 많이 사용됩니다. 함께 스레드가 생겨 더 이상 프로그램간에 전환되지 않았습니다 ...

프로세서, 특히 인텔 라인은 최소 80286부터 진정한 멀티 태스킹 (타이머 인터럽트, 권한있는 명령)을위한 메커니즘을 가졌습니다. 최초의 Mac에 사용 된 M68000은 본격적인 멀티 태킹 기능을 갖춘 프로세서였습니다. 이것은 최근 아키텍처 개발이 아닙니다. 공유 시스템이 처음으로 사용자의 프로그램을 스왑하고 스왑했기 때문에 메모리에 여러 프로그램이 동시에 있다는 의미에서 실제로 멀티 프로그래밍되지 않았습니다.

아이디어는 여러 프로그램을 동시에 메모리에 상주시켜 하나의 CPU가 (종료되거나 대기함으로써) 다른 CPU를 사용할 수 있도록하여 CPU 사용률을 높이고 각 CPU 버스트를 I / O 사용 준비, 전체 사용량 증가). 이것은 더 나은 생각을 제공합니다 (배치 시스템에서 중요합니다).

시간 공유와 함께 여러 대화 형 사용자가 컴퓨터에 연결되었습니다. 같은 생각으로, 프로그램을 주변에 두지 말고 "컴퓨터를 자신에게 가져가는"것을 배제 할 수있을 정도로 빠르게 전환하십시오. 독점을 피하기 위해 CPU를 중단시키는 타이머가 필요합니다.

개인용 컴퓨터에서는 적어도 처음에는 한 번에 여러 프로그램을 실행하는 인센티브가 많지 않았습니다 (심하게 제한된 machive 앞에있는 한 명의 사용자는별로 기대하지 않았습니다). 기계가 성장함에 따라이 문제를 해결 하고 운영 체제를 크게 변경하지 않고 한 번에 여러 프로그램을 허용하는 방법"협력 멀티 태스킹"은 모든 프로그램이 운영 체제에 주기적으로 생성하여 실행할 다른 프로그램을 선택해야한다는 점입니다. 이 작업을 수행하는 프로그램이 완전히 제어되므로 다른 사람이 엉망이 될 수 없을 때이를 수행하도록 선택할 수 있습니다. 말할 필요도없이, 양산 의무를 완수하기 위해 "잊어 버린"프로그램은 성능면에서 흥미로운 향상을 가져옵니다 ... 초기 맥 시스템은 이런 식으로 작동했으며, 위와 같은 이유로 이것이 오래 지속되지 않았습니다. 기본 운영 체제가 없거나 내장되어 있고 엄격하게 제어되는 프로그램 세트가 실행되는 임베디드 시스템에서 이것은 확실히 attactive 옵션입니다.


WP 기사는 멀티 태스킹 (시스템)과 달리 멀티 프로그래밍에 가상 메모리가 부족하다는 것을 암시하는 것으로 보입니다. 역사적으로 사실 일 수도 있지만 정의가 직교입니까?
didierc

1
우리는 70 년대에 멀티 프로그래밍 된 IBM S / 370을 사용했으며 가상 메모리는 없었습니다 (스풀링에만 디스크가 사용 된 것으로 기억됩니다). 가상 메모리를 사용하면 제한된 RAM에 더 많은 프로그램을 보유 할 수 있습니다 ( "가장 많이 사용 된"부품 만 보유하고 있기 때문에). 그렇습니다. 저는 완전히 독립적 인 것으로 생각합니다. 그러나 실제로 오늘날에는 다른 것이 없으면 찾을 수 없습니다. 아마도 당신의 WiFi 라우터 나 핸드폰을 제외하고 ...
vonbrand

확인. 사실 나도 그렇게 생각했다. 임베디드 시스템에는 실제로 적절한 메모리 보호 기능이 부족한 경우가 많았습니다. 그럼에도 불구하고, 잘 동작하는 프로그램에서는 문제가되지 않습니다. 물론 프로그램 공급 업체에 따라 다릅니다.
didierc

@didierc 직교? 상호 배타적 권리를 의미합니까?
jsj

2

멀티 태스킹과 멀티 프로그래밍의 차이점은 무엇입니까? 멀티 태스킹은 멀티 프로그래밍의 논리적 확장입니다. 다중 프로그래밍 환경에서 고전적으로, 둘 이상의 사용자가 CPU를 공유하고 CPU는 한 사용자에서 다른 사용자로 빠르게 전환하여 서로에게 완전한 투명성을 제공합니다. 멀티 태스킹에서 사용자는 프로그램으로 대체됩니다. 즉, 하나 이상의 프로그램이 CPU를 공유하고 CPU는 한 프로그램에서 다른 프로그램으로 빠르게 전환합니다. 실제로 디스크에 상주하는 소프트웨어는 프로그램입니다. 실행을 위해 RAM으로 가져 왔을 때 프로세스 또는 작업이라고하며 CPU 내부에서 실행 중일 때 스레드라고합니다. 따라서 멀티 프로그래밍은 기본적으로 다중 사용자를위한 것이며 멀티 태스킹은 여러 프로그램을 가진 단일 사용자를위한 것입니다. 대부분의 최신 OS는 두 가지를 모두 지원하므로 종종 철자가 다릅니다.


0

멀티 태스킹과 멀티 프로그래밍에는 많은 차이가 있습니다.

멀티 태스킹은 한 번에 하나 이상의 작업을 실행하고 있습니다. 예를 들어, 노래를 듣고, 종이를 인쇄하고, 동시에 MS-Word에 입력하고 있습니다.

이러한 유형의 OS에서 멀티 프로그래밍하는 동안 버퍼링 및 스풀링을 사용하여 CPU 사용률을 향상시킵니다. 순차적 실행에서 CPU는 프로그램을 실행 한 후 유휴 상태가되고 주 메모리에서 다음 프로그램을로드합니다. CPU는 idel을 사용하고 CPU는 유휴 상태이지만 멀티 프로그래밍 환경을 사용하면 CPU가 다음 프로그램으로 전환하여 처리합니다. 이것은 버퍼링 및 스풀링의 도움으로 사용되는 기술입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.