홈페이지 » 어떻게 » 이전 버전의 Windows에서 멀티 태스킹은 어떻게 가능합니까?

    이전 버전의 Windows에서 멀티 태스킹은 어떻게 가능합니까?

    도스는 싱글 태스킹 OS 였고 이전 버전의 윈도우와의 관계와 관련하여 이전 버전의 윈도우는 멀티 태스킹을 어떻게 처리했는지를 고려해보십시오. 오늘 수퍼 유저 Q & A 게시물은이 질문에 대한 답변을 살펴 봅니다..

    오늘의 질문 및 답변 세션은 Q & A 웹 사이트의 커뮤니티 중심 그룹 인 Stack Exchange의 하위 부문 인 수퍼 유저의 도움으로 이루어졌습니다..

    Wikipedia의 Windows 95 스크린 샷.

    질문

    수퍼 유저 LeNoob은 이전 버전의 Windows가 멀티 태스킹 시스템으로 실행되는 방법을 알고 싶어합니다 :

    나는 도스가 싱글 태스킹 OS라고 읽었다. 그러나 이전 버전의 Windows (Windows 95도 포함)가 DOS 용 래퍼 일 뿐이라면 어떻게 멀티 태스킹 OS로 실행할 수 있습니까??

    좋은 질문! 이전 버전의 Windows는 멀티 태스킹 시스템으로 어떻게 실행합니까??

    대답

    수퍼 유저 참여자 Bob과 Pete는 우리에게 답을줍니다. 우선, Bob :

    Windows 95는 MS-DOS의 "단순한 래퍼"이상의 기능을했습니다. Raymond Chen을 인용 :

    • MS-DOS는 Windows 95에서 두 가지 용도로 사용되었습니다. 1.) 부트 로더로 사용되었습니다. & 2) 16 비트 레거시 장치 드라이버 계층으로 작동.

    Windows 95는 실제로 모든 MS-DOS에 대해 훅 / 오버로드하여 모든 무거운 작업을 수행하면서 호환성 레이어로 유지합니다. 또한 32 비트 프로그램에 대해 선점 형 멀티 태스킹을 구현했습니다..

    Windows 95 이전 버전

    Windows 3.x 이전은 대부분 16 비트였습니다 (Win32는 16과 32를 연결하는 호환성 레이어의 종류를 제외하고는 여기에서 무시 하겠지만). DOS에 더 의존적이었으며 협력적인 멀티 태스킹 만 사용했습니다. - 실행중인 프로그램을 강제로 전환하지 않는 프로그램입니다. 그들은 실행중인 프로그램이 제어권을 얻을 때까지 기다린다 (기본적으로, 기다리고있는 다음 프로그램을 실행하도록 OS에 알리는 것으로 "끝났다")..

    • 멀티 태스킹은 맥 오에스의 구 버전과 마찬가지로 협동 적이었습니다 (선제 멀티 태스킹을 지원하는 멀티 태스킹 DOS 4.x와는 달리). 다른 작업을 예약하기 위해 작업이 OS에 양보되어야했습니다. 수율은 특정 API 호출, 특히 메시지 처리에 내장되었습니다. 작업이 적시에 메시지를 처리하는 한 모든 것이 훌륭했습니다. 작업이 메시지 처리를 중단하고 일부 처리 루프를 실행하는 중일 때 멀티 태스킹이 더 이상 필요하지 않습니다..

    Windows 3.x 아키텍처

    Windows 프로그램의 초기 제어력은 다음과 같습니다.

    • Windows 3.1은 협업 멀티 태스킹을 사용합니다. 즉, 실행중인 각 응용 프로그램이 메시지 큐를 주기적으로 검사하여 다른 응용 프로그램에서 CPU 사용 여부를 묻는 메시지가 있는지 확인한 다음 그 응용 프로그램. 그러나 많은 Windows 3.1 응용 프로그램은 메시지 큐를 드물게 만 확인하거나 전혀 검사하지 않으며 필요한만큼의 시간 동안 CPU 제어를 독점합니다. Windows 95와 같은 선점 형 멀티 태스킹 시스템은 실행중인 응용 프로그램에서 CPU를 제어하고 시스템 요구 사항에 따라 우선 순위가 높은 응용 프로그램에 배포합니다.

    출처

    모든 DOS는이 단일 응용 프로그램 (Windows 또는 기타)이 실행 중이라는 것을 보았습니다.이 응용 프로그램은 종료하지 않고 제어권을 전달합니다. 이론 상으로는 실시간 클럭 및 하드웨어 인터럽트를 사용하여 스케줄러에 강제 제어권을 부여하여 선제 멀티 태스킹을 DOS 위에 구현할 수 있습니다. Tonny가 언급했듯이 이것은 실제로 DOS 위에서 실행되는 일부 OS에 의해 수행되었습니다..

    386 확장 모드?

    참고 : Windows 3.x의 386 확장 모드가 32 비트이고, 선점 형 멀티 태스킹을 지원한다는 의견이있었습니다.

    이것은 흥미로운 경우입니다. 링크 된 블로그 게시물을 요약하면 386 확장 모드는 기본적으로 가상 컴퓨터를 실행하는 32 비트 하이퍼 바이저입니다. 가상 머신 중 하나에 위에 나열된 모든 작업을 수행하는 Windows 3.x 표준 모드가 실행되었습니다.

    MS-DOS는 또한 가상 컴퓨터 내부에서 실행되기 때문에 분명히 멀티 태스킹이 이루어 졌기 때문에 386 확장 모드 하이퍼 바이저가 가상 컴퓨터간에 CPU 시간 슬라이스를 공유하는 것 같습니다 (그 중 하나는 정상 3.x 및 MS-DOS를 실행 한 다른 사람), 각 VM은 자체 작업을 수행합니다. 3.x는 협력 적으로 다중 작업을 수행하지만 MS-DOS는 단일 작업을 수행합니다.

    MS-DOS

    도스 자체는 종이에 대해 단일 작업 이었지만 하드웨어 인터럽트에 의해 트리거 될 때까지 백그라운드에 머물러있는 TSR 프로그램을 지원했습니다. 진정한 멀티 태스킹과는 거리가 있지만 완전히 싱글 태스킹되지는 않습니다..

    이 모든 비트의 이야기? 나는 멀티 태스킹에 대해 물었다.!

    음, 엄밀히 말하면, 비트와 멀티 태스킹은 서로 의존하지 않습니다. 임의의 멀티 태스킹 모드를 구현할 수 있어야합니다. 그러나 16 비트 프로세서에서 32 비트 프로세서로 이전하면서 선점 형 멀티 태스킹을보다 쉽게 ​​구현할 수있는 다른 하드웨어 기능이 도입되었습니다.

    또한 32 비트 프로그램이 새롭기 때문에 강제로 스위치를 껐을 때 작동하도록하는 것이 쉬웠습니다. 따라서 일부 기존 16 비트 프로그램이 손상되었을 수 있습니다.

    물론 이것은 모두 추측입니다. MS가 Windows 3.x (386 확장 모드에도 불구하고)에서 선점 형 멀티 태스킹을 구현하지 않은 이유를 정말로 알고 싶다면 거기서 일한 사람에게 물어보십시오..

    또한 Windows 95가 DOS 용 래퍼라는 가정을 정정하고자했습니다..

    Pete의 답변이 뒤따 랐습니다.

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

    OS는 CPU가 보호 모드로 들어가기 때문에이 제어를 시행 할 수 있습니다.

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

    그리고이 마지막 부분은 Windows 95와 같은 응용 프로그램이 DOS에서 기본적으로 시작 되었더라도 멀티 스레드 환경을 시작할 수있게합니다..

    DOS (Disk Operating System)는 필자가 아는 한 파일 관리 시스템 이상이었습니다. 파일 시스템, 파일 시스템 탐색 메커니즘, 몇 가지 도구 및 응용 프로그램 실행 기능을 제공합니다. 또한 일부 응용 프로그램 (예 : 마우스 드라이버 및 EMM 에뮬레이터)을 상주시킬 수있었습니다. 그러나 현대 OS가하는 것처럼 컴퓨터의 하드웨어를 제어하려고 시도하지 않았습니다..

    *DOS가 1970 년에 처음 만들어 졌을 때 보호 모드가 CPU에 존재하지 않았습니다. 보호 모드가 CPU의 일부가 된 것은 1980 년대 중반의 80286 프로세서가 없었습니다..

    원래 스레드로 넘어 가서 아래 링크를 사용하여이 주제에 대한 활발한 토론을 읽어보십시오.!


    설명에 추가 할 것이 있습니까? 의견에서 소리가 나지. 다른 기술에 정통한 Stack Exchange 사용자의 답변을 더 읽고 싶습니까? 전체 토론 스레드를 여기에서 확인하십시오..