DOS가 싱글 태스킹이라면 이전 버전의 Windows에서는 어떻게 멀티 태스킹이 가능했습니까?

DOS가 싱글 태스킹이라면 이전 버전의 Windows에서는 어떻게 멀티 태스킹이 가능했습니까?

DOS는 단일 작업 OS라는 것을 읽었습니다.

그러나 이전 버전의 Windows(Windows 95도 포함?)가 단지 DOS의 래퍼라면 Windows가 어떻게 멀티태스킹 OS로 실행될 수 있겠습니까?

답변1

윈도우 95

윈도우 95MS-DOS의 "단순한 래퍼" 그 이상입니다.. 레이먼드 첸의 말을 인용하자면:

MS-DOS는 Windows 95에서 두 가지 목적을 수행했습니다.

  • 부트로더 역할을 했습니다.
  • 이는 16비트 레거시 장치 드라이버 계층의 역할을 했습니다.

Windows 95는 실제로 거의 모든 MS-DOS를 훅/오버라이드하여 모든 무거운 작업을 자체적으로 수행하는 동시에 MS-DOS를 호환성 계층으로 유지했습니다. 또한 32비트 프로그램에 대한 선점형 멀티태스킹을 구현했습니다.


Windows 95 이전

Windows 3.x 및 이전 버전은 대부분 16비트였으며(16비트와 32비트를 연결하는 일종의 호환성 레이어인 Win32를 제외하고 여기서는 무시하겠습니다) DOS에 더 의존하고 협력적 멀티태스킹만 사용했습니다. 실행 중인 프로그램을 강제로 종료하지 않는 경우; 그들은 실행 중인 프로그램이 제어권을 양보할 때까지 기다립니다(기본적으로 OS에 대기 중인 다음 프로그램을 실행하라고 지시하여 "완료"라고 말합니다).

멀티태스킹은 이전 버전의 MacOS와 마찬가지로 협력적이었습니다(선점형 멀티태스킹을 지원했던 멀티태스킹 DOS 4.x와는 달리). 다른 작업을 예약하려면 작업이 OS에 양보되어야 했습니다. 결과는 특정 API 호출, 특히 메시지 처리에 내장되었습니다. 작업이 적시에 메시지를 처리하는 한 모든 것이 훌륭했습니다. 작업이 메시지 처리를 중지하고 일부 처리 루프를 실행하느라 바빴다면 멀티태스킹은 더 이상 불가능했습니다.

윈도우 3.x 아키텍처

Windows 프로그램이 얼마나 일찍 제어권을 얻을 수 있는지에 관해서는 다음과 같습니다.

Windows 3.1은 협력적 멀티태스킹을 사용합니다. 즉, 실행 중인 각 응용 프로그램은 주기적으로 메시지 대기열을 확인하여 다른 응용 프로그램이 CPU 사용을 요구하는지 알아보고, 그렇다면 해당 응용 프로그램에 제어권을 양보하라는 지시를 받습니다. . 그러나 많은 Windows 3.1 응용 프로그램은 메시지 큐를 아주 가끔씩만 확인하거나 전혀 확인하지 않고 필요한 만큼의 시간 동안 CPU 제어를 독점합니다. Windows 95와 같은 선점형 멀티태스킹 시스템은 실행 중인 응용 프로그램에서 CPU 제어권을 빼앗아 시스템 요구 사항에 따라 우선 순위가 더 높은 응용 프로그램에 분배합니다.

원천

DOS가 볼 수 있는 모든 것은 종료하지 않고 제어를 전달하는 이 단일 응용 프로그램(Windows 또는 기타)이 실행되고 있다는 것입니다. 이론적으로 선점형 멀티태스킹은 실시간 시계와 하드웨어 인터럽트를 사용하여 스케줄러에 강제로 제어권을 부여함으로써 DOS 위에 구현될 수 있습니다. 처럼토니 댓글, 이것은 실제로 DOS 위에서 실행되는 일부 OS에 의해 수행되었습니다.

386 확장 모드?

참고: 다음과 같은 의견이 있었습니다.386 강화 모드Windows 3.x는 32비트이며 선점형 멀티태스킹을 지원합니다.

이것은 흥미로운 사례입니다. 링크된 내용을 요약하자면블로그 게시물, 386 확장 모드는 기본적으로 가상 머신을 실행하는 32비트 하이퍼바이저였습니다. 해당 가상 머신 중 하나에서는 위에 나열된 모든 작업을 수행하는 Windows 3.x 표준 모드를 ​​실행했습니다.

MS-DOS도 해당 가상 머신 내에서 실행되며 선제적으로 멀티태스킹된 것으로 보입니다. 따라서 386 강화 모드 하이퍼바이저는 가상 머신(그 중 하나는 일반 3.x를 실행하고 다른 하나는 MS를 실행함) 간에 CPU 시간 조각을 공유하는 것으로 보입니다. -DOS), 각 VM은 자체 작업을 수행합니다. 3.x는 협력적으로 멀티태스킹을 수행하는 반면 MS-DOS는 단일 작업을 수행합니다.


MS-DOS

DOS 자체는 서류상으로 단일 작업을 수행했지만 다음을 지원했습니다.TSR하드웨어 인터럽트에 의해 트리거될 때까지 백그라운드에 유지되는 프로그램입니다. 진정한 멀티태스킹과는 거리가 멀지만 완전한 단일 작업도 아닙니다.


비트성에 대한 이 모든 이야기? 멀티태스킹에 대해 물어봤습니다!

엄밀히 말하면 비트성과 멀티태스킹은 서로 종속되지 않습니다. 모든 비트에서 모든 멀티태스킹 모드를 구현하는 것이 가능해야 합니다. 그러나 16비트 프로세서에서 32비트 프로세서로 전환하면서 선점형 멀티태스킹을 더 쉽게 구현할 수 있는 다른 하드웨어 기능도 도입되었습니다.

또한 32비트 프로그램은 새로운 것이기 때문에 강제로 전환되었을 때 작동시키기가 더 쉬웠습니다. 이로 인해 일부 기존 16비트 프로그램이 손상되었을 수 있습니다.

물론 이것은 모두 추측이다. MS가 Windows 3.x(386 확장 모드에도 불구하고)에서 선점형 멀티태스킹을 구현하지 않은 이유를 정말로 알고 싶다면 그곳에서 일했던 사람에게 물어봐야 합니다.

또한 Windows 95가 DOS용 래퍼라는 가정을 바로잡고 싶었습니다.)

답변2

Windows라는 단일 프로그램을 지속적으로 실행했습니다. 이는 서로 다른 프로그램 간에 CPU 시간(및 기타 리소스)을 분산시키는 것입니다.

다음 비유를 생각해 보세요.

한 번에 한 사람만 가질 수 있는 사무실이 있습니다(그 사람을 Mr. 또는 Missus DOS라고 합니다). 그 사람은 그 시간에 한 가지 일만 합니다. 예를 들어 한 사람에게 전화를 걸어 연중무휴 24시간 채팅을 시작합니다.

이제 그 사람을 비서님으로 바꾸세요. (창문). 누군가에게 전화를 걸어 항상 대화를 나눌 것입니다(여전히 단일 작업). 그러다가 시간이 좀 지나면 상대방이 "이제 얘기는 충분히 했으니 다른 사람한테 가서 얘기하고 좀 있다가 다시 전화해"라고 말할 것이다.

비서님이 다른 사람에게 전화할 거예요. 그 사람이 똑같은 말을 할 때까지 그 사람과 이야기를 나눠보세요. 그런 다음 대화할 사람 목록이 끝날 때까지 다음 사람에게 전화를 겁니다. 그때는 처음부터 다시 시작됩니다.

  • 기술적인 용어로 이를 협력적 멀티태스킹이라고 합니다. 상대방이 CPU 시간이 충분하다고 말해야 합니다. 그렇게 하지 않으면 모든 것이 무너진다.
  • 현대 시스템은 훨씬 더 똑똑합니다. 선제적 멀티태스킹을 포함합니다. 비서가 알람 시계를 설정하고 5분 후에 다른 사람의 말을 끊는 것을 생각해 보십시오. "잘됐네요 제인. 하지만 지금은 조와 얘기해야 해요. 잠시 후에 다시 전화할게요. - 클릭하세요."

여러 프로세서를 추가하면 훨씬 더 복잡해집니다. :)

답변3

최신 운영 체제에서는 운영 체제가 모든 하드웨어 리소스를 제어하고 실행 중인 애플리케이션은 샌드박스에 보관됩니다. 애플리케이션은 OS가 해당 애플리케이션에 할당하지 않은 메모리에 액세스하는 것이 허용되지 않으며 컴퓨터의 하드웨어 장치에 직접 액세스할 수 없습니다. 하드웨어 액세스가 필요한 경우 애플리케이션은 장치 드라이버를 통해 통신해야 합니다.

OS는 CPU가 강제로 진입하도록 하기 때문에 이 제어를 시행할 수 있습니다.보호 모드.

반면에 DOS는 보호 모드로 들어가지 않고 유지됩니다.리얼 모드*. 리얼 모드에서 실행 중인 애플리케이션은 하드웨어에 직접 액세스하는 등 원하는 모든 작업을 수행할 수 있습니다. 그러나 리얼 모드에서 실행되는 응용 프로그램은 CPU에 보호 모드로 들어가도록 지시할 수도 있습니다.

그리고 이 마지막 부분을 사용하면 Windows 95와 같은 응용 프로그램이 기본적으로 DOS에서 시작되었음에도 불구하고 다중 스레드 환경을 시작할 수 있습니다.

DOS(디스크 운영 체제)는 사실 파일 관리 시스템에 지나지 않습니다. 이는 파일 시스템, 파일 시스템 탐색 메커니즘, 몇 가지 도구 및 애플리케이션 실행 가능성을 제공했습니다. 또한 마우스 드라이버 및 EMM 에뮬레이터와 같은 일부 응용 프로그램이 상주 상태로 유지되도록 허용했습니다. 그러나 현대 OS처럼 컴퓨터의 하드웨어를 제어하려고 시도하지는 않았습니다.

* 70년대 DOS가 처음 만들어졌을 당시 CPU에는 보호모드가 존재하지 않았습니다. 보호 모드가 CPU의 일부가 된 것은 80년대 중반의 80286 프로세서가 되어서였습니다.

답변4

멀티태스킹은 응용 프로그램을 동시에 실행하는 환상에 지나지 않습니다. 사용자 측에서는 동시 실행으로 인식되지만 실제로는 프로세스 A, B, C가 A, B, C, A, B, C, A, B 순서로 CPU 시간을 공유하고 있습니다. 아주 빨리 꺼져. 실제로는 두 개의 프로세스가 동시에 실행되지 않습니다.

따라서 한 프로세스를 일시 중지하고, 다음 프로세스를 짧은 시간 동안 실행하고, 해당 프로세스를 일시 중지하고, 첫 번째 프로세스로 다시 이동하는 등의 방식으로 MS-DOS 멀티태스킹을 수행하는 것이 완벽하게 가능합니다.

멀티태스킹은 CPU가 이러한 프로세스를 계속 순환하면서 최종 사용자에게 동시에 보이도록 할 만큼 빠르기 시작했을 때 개발된 영리한 기능입니다.

기억하시는 분들을 위해 말씀드리자면, Windows가 너무 느리기 때문에 게임은 여전히 ​​DOS4GW에서 실행되고 있었습니다.

관련 정보