E D R , A S I H C RSS

QuestionsAboutMultiProcessAndThread (rev. 1.9)

Questions About Multi Process And Thread

  1. Single CPU System에서 프로세서 A 가 Run 중일 때, I/O 작업을 해야 돼서 다른 프로세서 B로 스위칭을 하는 상황이다.
    • 스위칭을 한다면, 프로세서 A에 Time Slice를 조금 남겨놓고 스위칭을 하는 것인가? 즉 I/O 작업을 계속 할 수 있도록 CPU가 조금씩 I/O 작업을 진행하면서 프로세서 B를 실행하는 것인가?
    • 만약 그것이 아니라면, I/O 작업을 CPU가 담당하지 않는 것인가? CPU 내부 ALU와 I/O 작업 회로가 따로 있는 Independent 상황이기 때문에 그런 것인가?
      • A) 다음 링크를 참조하세요. DMA - 변형진
        • 감사합니다. DMA라는 특성 덕분에 독립적으로 I/O를 할 수 있는거군요. - 박성현

  2. Single CPU & Single-processor & Multi-thread 환경이다.
    • CPU가 할당한 Time Slice를 하나의 Processor내부에 있는 각각의 Thread가 쪼개서 사용 하는 것인가?
    • 그렇다면 개념적으로 Single CPU에서 Processor Switching과 같은 것인가?
    • 그럼 여러 개의 Thread가 존재하는 상황일 때, 하나의 Thread가 One Time Slice를 전부 사용하는 경우가 있는가??
      • A) processor라고 쓰신 것이 아마도 process를 의미하는 것 같군요? scheduling 기법이나, time slice 정책, preemption 여부 등은 아키텍처와 운영체제 커널 구현 등 시스템에 따라 서로 다르게 최적화되어 설계합니다. thread 등의 개념도 운영체제와 개발 언어 런타임 등 플랫폼에 따라 다를 수 있습니다. 일반적으로 process의 context switching은 PCB 등 복잡한 context의 전환을 다루므로 단순한 thread 스케줄링보다 좀더 복잡할 수는 있으나 반드시 그런 것은 아닙니다. - 변형진
        • 첫번째와 세번째 질문에 대한 답변은 "time slice 정책에 따라 다르다." 인거에요?? - 박성현
          • 아키텍처, 운영체제, 개발 언어 런타임 등 해당 플랫폼 환경에서의 thread 구현 방식에 따라 다를 수 있습니다. - 변형진

  3. 다음의 예가 적절한 예인가?
    - 학교 내에 건물이 하나 밖에 없다고 가정
    • Single Processor & Single Thread
      - 그 건물엔 화장실이 하나 있네. 그리고 한 명 들어가면 더는 못 들어가네.
    • Single Processor & Multi Thread
      - 역시 화장실이 하나 있네. 그런데 여러 명 동시에 들어갈 수 있네.
    • Multi Processor & Single Thread
      - 화장실이 여러 개 있네. 각 화장실에는 한 명만 들어갈 수 있네.
    • Multi Processor & Multi Thread
      - 화장실이 여러 개 있네. 각 화장실에는 여러 명이 동시에 들어갈 수 있네.

    • … 이 비유에 CPU Scheduler도 추가한다면 어떤 비유를 들 수 있을까?
      • Single CPU 환경이라면
        - Observer가 건물 위에서 하나의 변기 선택??
      • Multi CPU 환경이라면
        - Observer가 건물 위에서 여러 개의 변기 선택??
        • A) processor라고 쓰신 것이 process, cpu가 processor를 의미하신 것 같군요. process는 실행되고 있는 하나의 프로그램 인스턴스이며, thread는 a flow of control입니다. 즉, 하나의 프로그램 안에 논리적으로 여러 개의 제어 흐름이 존재하느냐(*-thread)와, 하나의 컴퓨터에 논리적으로 여러 개의 프로그램 인스턴스가 실행되고 있느냐(*-process)로 생각하는게 가장 좋습니다. multi-processor(multi-core)는 말 그대로 동시에 물리적으로 여러 개의 흐름을 처리할 독립적인 처리기가 병렬로 존재하느냐입니다. 위에 제시된 예는 적절하지 못한 것 같습니다. - 변형진
          • "물리적으로 여러개의 '흐름'을 처리한다."는 말씀은 '각각의 CPU들이 하나의 프로세스 내부의 여러 개의 쓰레드들 중 개별적으로 쓰레드를 선택해 처리한다'는 말씀이신가요? - 박성현
            • 어느 바쁜 음식점(machine)입니다. 두 명의 요리사(processor)가 있는데, 주문이 밀려서 5개의 요리(process)를 동시에 하고 있습니다. 그 중 어떤 한 요리는 소스를 끓이면서(thread) 동시에 양념도 다지고(thread), 재료들을 오븐에 굽는데(thread) 요리를 빠르게 완성하기 위해 이 모든 것을 동시에 합니다. 한 명의 요리사는 특정시점에 단 한 가지 행위(instruction)만 할 수 있으므로, 양념을 다지다가 (context switching) 소스가 잘 끓도록 저어주기도 하고 (context switching) 다시 양념을 다지다가 (context switching) 같이 하던 다른 요리를 확인하다가, 오븐에 타이머가 울리면(interrupt) 구워진 재료를 꺼내어 요리합니다. 물론 두 명의 요리사는 같은 시점에 각자가 물리적으로 서로 다른 행위를 할 수 있으며, 하나의 요리를 두 요리사가 나눠서(parallel program) 동시에 할 수도 있습니다. - 변형진

  • 공부하다 헷갈려서 질문 올려봅니다; - 박성현
  • 오오.. 이렇게 비유를 할 수 있다니 예술스럽네 - 서지혜
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:24:09
Processing time 0.0376 sec