7 살짜리 아이에게 멀티 스레딩을 어떻게 설명하겠습니까?


21

7 살짜리 아이에게 멀티 스레딩의 개념을 설명해야한다면 어떻게 하시겠습니까? 최근에 인터뷰에서이 질문을 받았습니다. 나는 직업 (해야 할 일)과 노동자 (실)를 사용하는 이야기를 생각해 냈지만 완전히 설득력이 없었습니다 (아이가 너무 어리다고 생각합니다).

이것을 설명하라는 요청을 받으면 어떻게 하시겠습니까?


55
면접관에게 7 살짜리 어린이를 고용 할 계획인지 물어볼 것입니다.
Craige

14
면접관을 펀칭했을 것입니다.
Morons

11
아마도 주제에 대해 전혀 모르는 사람에게 주제를 충분히 가르 칠 수 있는지 테스트해야 할 것입니다.
FrustratedWithFormsDesigner

6
@Morons 우선, 그것은 약간 폭력적입니다. 둘째, 당신의 말은 특별한 의미로 인해 대문자입니까?
Nicole

11
@FrustratedWithFormsDesigner 글쎄, 그것은 피의 바보입니다. 계산 방법을 모르는 사람에게 복잡한 숫자를 설명 할 수 있습니까? 아니? 당신은 복잡한 숫자에 쓰레기입니다.
biziclop

답변:


35

정의를 제외하고 기술 용어를 생략하십시오.

  1. 해야 할 일이 5 개 있습니다. 지금 모든 작업을 시작해야합니다.
  2. 각 작업은 스레드입니다.
  3. 당신은 프로세서입니다.
  4. 각 작업에 대해 약간의 시간을 보낸 후 다음 작업으로 이동하여 모든 작업에주의를 기울이십시오.
  5. 더 많은 사람이 있으면 한 번에 한 사람 만 작업을 수행 할 수 있습니다.
  6. 각 사람이 서로 다른 작업을 수행 할 수 있으므로 둘 이상의 작업이 있으면 더 많은 사람들이 모든 작업을 더 빨리 수행 할 수 있습니다.

15
내가 추가 할 수있는 유일한 것은 "작업"을 "게임"으로 바꾸거나 장난감을 가지고 놀거나 집안일이나 숙제를하는 것입니다.
bethlakshmi

그런 다음 작업을 수행 할 때 '프로세서' '주의 사항'을 가지고 있다면 여러 프로세서 환경에서 캐시 및 캐시 일관성을 설명 할 수 있습니다.
Steven Evers

좋은 설명이지만, 7 살짜리를 아는 것은 날지 않을 것입니다.
red-dirt

@el 퓨저 나는 오전 7 세! 또는 atlest i ac lke 1 hahahahahaha
Mateen Ulhaq

@bethlakshmi, 7 명의 대부분의 어린이들이 여전히 게임을하고 있고 아직 나가지 않고 생산적인 일자리를 얻지 못했다고 가정하고 있습니까? 어서!
익명 유형

22

꼬마 야 포켓몬에 대해 생각하면서 동시에 껌을 걷고 씹은 적이 있습니까? 이것이 당신의 두뇌 멀티 스레딩입니다.


1
그것은 당신의 두뇌의 주변 장치가 상대적으로 독립적으로 행동 할 수있는 것입니다. DMA를 사용하는 두뇌와 거의 같습니다.
Nick T

@nick T는 구성 요소에 대한 소스 코드 액세스가없는 클라우드 컴퓨팅과 비슷합니다. 잇몸을 씹는 사람조차도 실제로 어떻게 행동하고 있는지 전혀 모릅니다.
익명 유형

@Ano, 마지막 말은 내 주변 비유를 강화하는 것 같습니다. 주변 장치는 CPU를 축소하지 않고 간단히 위임하기 만하면됩니다. 클라우드 컴퓨팅과 같다고 말할 수도 있지만 훨씬 더 큰 규모입니다. DMA 및 주변 장치는 상당히 낮은 수준입니다.
Nick T

정말? 나는 포켓몬 (고차 문제 해결)을 재생하려면 사용자 모드 메모리와 더 높은 수준의 프로그래밍 언어를 사용해야한다고 생각했지만 아마도 저작과 같은 것은 DMA 일 수 있습니다.
익명 유형

10

쉽게 이해할 수있는 내용과 관련시킵니다. 도로에 자동차.

단일 차선 도로를 생각해보십시오. 12 대의 자동차가 달려서 하나씩 운전합니다. 그리고 한 대의 자동차 만 동시에 완성 할 수 있으며, 더 빠른 차는 느린 차를 통과 할 수 없습니다.

그러나 멀티 스레딩을 사용하면 모든 차가 4 차선이있는 넓은 도로에서 운전하는 것과 같습니다. 빠른 자동차는 느린 자동차를 지나갈 수 있습니다.

편집 : 그리고 조심하지 않으면 서로 충돌 할 수 있습니다 ...


4
멀티 스레딩이 도로 인 경우, 한 자동차가 운전 중일 때 다른 차가 전혀 움직이지 않는 곳입니다.
Nicole

@Renesis, 좋은 지적, 나는 두 대의 차가 두 대가 될 것이기 때문에 한 번에 한 대의 차만 지나갈 수있는 좁은 다리로 예를 바꿀 수 있다고 생각합니다.
CaffGeek

10

나는 빨래를하는 것처럼 설명 할 것이다.

세탁물 3 개와 세탁기 1 개, 건조기 1 대가 있습니다.

모든 사람이 세탁을하는 방법은 세탁을 위해 다음 짐을 넣는 것보다 건조기에 첫 번째 짐을 옮기는 것입니다.

두 번째 세탁물을 세탁하기 전에 첫 번째 세탁물이 건조 될 때까지 기다리는 데 시간이 더 걸린다는 것을 모든 어린이는 이해할 것입니다.

세탁실과 같은 세탁기와 건조기가 더 있으면 더 빨리 짐을 싣고 설명 할 수 있습니다.


2
또한 세탁기에 부하가
가해질

나는 거의 당신에게 +1을 주었다. 그러나 나는 그들의 올바른 마음에 아무도이 설명을 따르지 않을 것이라는 것을 깨달았다. 우선 당신은 매우 지루한 것을 사용했습니다 (어린이가 아닌 관점에서). 세탁이라는 단어가 마음이 꺼지면 말 그대로 처음 7 개의 단어 만들을 수 있습니다.
익명 유형

6

작은 난로에서 여러 요리와 함께 식사를 요리. 버너 2 개 (예 : 프로세서 또는 코어)와 요리 4 개 (실)가 있습니다. 따라서 한 번에 최대 2 개의 요리 만 요리 (실행) 할 수 있습니다. 요리마다 요리 시간이 다릅니다. 요리사 (OS)는이 모든 것을 저글링해야 모든 것이 저녁 식사 시간에 요리됩니다.


3

두 개의 공으로 시작하여 점점 더 많은 공을 자신의 행동에 추가하는 서커스 저글러.


이것은 30 세 프로그래머가 아닌 7 살짜리 아이의 관점에서 질문에 대답하기 때문에 가장 좋은 대답입니다.
익명 유형

2

내 경험에 따르면 7 살짜리 아이들은 동시에 진행되고있는 여러 가지 개념에 문제가 없으며, 이는 아이들을 위해 설계된 다양한 프로그래밍 툴킷에서 볼 수 있습니다. 특히 레고 키트뿐만 아니라 스크래치 시스템도 있습니다.

아마도 면접관은 단순히 예상치 못한 것을 요구하는 새로운 각도를 찾으려고했을 것입니다.


2

" 부엌 에서 탁자 까지 두 잔을 가지고 다녀야 합니다 . (그들은 달리고, 양손에 유리를 들고 다니십시오.) 이제 다시 한 번만 사용하십시오.하지만 한 손만 사용하십시오."


2

이 답변 중 일부는 가슴이 아프다 ... 나는 7 살짜리를 아는 유일한 사람 일지 모른다고 생각합니까 ???

자니 .. 멀티 스레딩은 학교에서 시간을 정리할 때 일어나는 것과 비슷합니다. 수업이 끝난 후 모든 수업을 정리해야합니다. 각 어린이는 기본적으로 실입니다. 장난감을 가져 오는 것이 작업이며 장난감 상자는 공유 리소스입니다.

전반적으로 얼굴에 면접관을 치는 것이 더 좋은 대답이라고 생각합니다.


이 -1을 표시 한 사람은 농담입니다. 유머 감각을 심각하게 키 웁니다. 그런 관점에서 다루어야 할 우스운 질문입니다.
익명 유형

이것은 아마도 지금까지 가장 잘 듣는 답변 중 하나입니다. 그것은 개념과 풋이 소요 청취자가 이해 측면에서이 - 리스너가 어떻게 아무 생각이없는 경우에도 코드 다중 스레드 응용 프로그램, 그들은 이제 기본 개념을 이해하는 것이다.
FrustratedWithFormsDesigner

2

멀티 스레드는 한 번에 많은 일을하는 것과 같으며 조금씩 수행하는 것과 같습니다.

젊은 호기심 많은 사람 이여, 매일 먹고, 놀고, 자야합니다. 권리? 하지만 왜 한 번 먹지 않습니까? 더 이상 먹을 수 없을 때까지 많이 먹은 다음, 항상 잠을 자고 재미있는 게임을하세요?

글쎄, 당신이 그것을 먹지 않으면, 당신은 이전 식사에서 얼마를 얻었더라도 배가 고프 게 될 것이기 때문에 그렇게 할 수 없습니다. 잠을 자지 않으면 피곤하고 친구들과 놀 수 없습니다. 알 겠어? 해야 할 일이 몇 가지 있지만 한 번에 할 수는 없습니다. 우리는 아침을 먹고, 게임을하고, 점심을 먹고, 다시 게임을하고 ... 마지막으로 "좋은 밤"이라고 말합니다.

컴퓨터가 작동하는 방식이기도합니다. 음악을 약간 재생 한 다음 그림을 그리는 그림으로 전환 한 다음 다시 전환하여 음악을 재생합니다. 그러나 이러한 모든 일을 천 번 수행하는 데 걸린 시간은 눈의 윙크 일 뿐이므로 볼 수 없습니다.


1

해야 할 6 가지 작업이 있습니다.

  • 너의 숙제를해라
  • 방 청소
  • 쇼핑을하다
  • 정원에서 사과를 따다
  • 설거지하다
  • 현관을 쓸다

각 작업은 1 시간이 걸립니다. 두 형제가 있습니다.

  • 멀티 태스킹을 사용하지 않으면 모든 작업을 직접 수행해야합니다. 6 시간이 걸립니다 (12:00에 시작하면 모든 작업이 18:00에 완료됩니다).
  • 멀티 태스킹을 사용하는 경우 형제에게 몇 가지 작업을 제공 할 수 있습니다. 모두 동시에 작업을 시작하면 모든 작업을 더 빨리 완료 할 수 있습니다. 이 경우 3 명 모두 2 개의 작업을 수행하며 2 시간이 걸립니다 (모두 12시에 시작하면 모든 작업이 14:00에 완료됩니다).

0

조이스틱 / 게임 컨트롤러가 하나 있습니다.

4 명의 아이들이 있습니다. 각 어린이는 각 레벨마다 차례를 달리며 나머지는 휴식을 취합니다. 팀워크를 사용하여 결국 레벨 255 *에 도달합니다.

각 어린이가 놀고있는 동안, 그는 현재 플레이어 만이 먹을 수있는 칩 백에서 음식을 먹습니다.

* 그런 다음 게임이 중단됩니다. ;)


"왜 3 개의 컨트롤러를 더 사지 않습니까?"

글쎄, 그것들은 다중 프로세서입니다!


0

아트 클래스 (멀티 스레드 응용 프로그램)

교사가없는 수업은 없으므로 교사 (메인 스레드)가 필요합니다. 당신이 수업에 도착하면 당신은 앉아서 선생님은 모든 사람을 설명하고 그 날의 그림을 그리도록 수업을 배정합니다.

교사는 하루 동안 모든 학생들에게 그림을 시작하도록 배정합니다 (스레드 초기화 및 과제).

학교에는 페인트가 너무 많기 때문에 모두가 서로 색을 공유해야합니다 (페인트는 메모리를 나타냄).

당신이 용을 그리는 중이고 미친 눈을 원하지만 다른 누군가가 빨간 페인트를 사용하고 있다고 가정 해 봅시다. 다른 사람이 페인트를 사용할 수 없기 때문에 페인트를 직접 가져갈 수는 없습니다. 대신, 당신이하는 일은 정중하게 페인트를 공유 (자원 잠금)하도록 요청하는 것입니다. 조금만 사용한 다음에 전달하십시오. 다시 가져 오기 위해 조금 기다려야 할 수도 있지만 페인트가 필요없는 모든 사람들이 페인트 싸움없이 경쟁 할 수 있습니다.

수업이 끝나면 교사는 수업을 종료합니다 (스레드 참가).


게임 (다중 프로세스 응용 프로그램)

친구와 함께 카드 게임 (또는 수집품과 동등한 게임) :

방과 후에 친구들 (프로세스)과 함께 지낸다 고 말할 수 있습니다. 아무도 당신에게 무엇을 해야할지 말해 줄 교사가 없습니다.

모두가 게임을하기 위해 모입니다 (멀티 프로세스 또는 멀티 레이어 응용 프로그램).

당신은 당신의 카드를 사용하여 상대방을 이길 수있는 방법 (내부 처리)에 대해 열심히 생각하고 아이디어 (메시지 전달)를 생각해 낼 때 파트너와 아이디어를 공유하려고합니다.

실력이 좋아지면 클럽에 가입 할 수 있습니다.

리더 (실행 프로그램) 멤버 (서브 프로그램)

클럽이 정말 좋아지면 전략을 개선하기 위해 서로 소통 할 수있는 특별한 방법 (API)이 나올 수 있습니다.


추상화가 상당히 복잡하기 때문에 여기에서 여러 프로세서 / 코어를 언급하지 않기로 결정했습니다 (그리고 컨텍스트 전환은 여전히 ​​대부분의 응용 프로그램에 투명합니다). 게임의 모든 팀이 별도의 프로세서 / 코어를 나타내며 대부분의 게임은 게임에서 소수의 팀만 함께 플레이 할 수 있기 때문에 여전히 짜증이납니다. 미래는 많은 사람들이 여러 팀의 게임에서 함께 플레이 할 수있는 MMORPG와 비슷한 것 같습니다.

많은 핵심 컴퓨터 또는 많은 호스트 네트워크에서 분산 처리 시스템에 대한 어린이 메타포를 개발하려고 시도하는 것은 꽤 흥미로울 것이지만 Op가 요구 한 것은 아닙니다.


노트 :

위의 메시지 전달은 프로그램이 서로 대화하는 데 사용하는 여러 가지 형태의 통신에 대한 참조입니다. 사람과 마찬가지로 응용 프로그램은 서로 대화하는 여러 가지 방법이 있습니다. 쓰기는 직렬화 된 데이터를 파이핑하는 것과 같고, 말하는 것은 네트워킹과 같으며, 속삭이는 것은 암호화 된 연결을 통한 네트워킹과 같으며, 데이터베이스는 스코어 카드 (정의 된 데이터가있는 유한 한 구조)와 같으며 MSMQ를 사용하는 것은 단단한 표면.

그 이외의 다른 형태의 의사 소통은 너무 모호 해져서 구분할 수없는 것으로 간주하기가 어렵습니다.

곁에:

Halo와 같은 온라인 게임을 해본 적이 있다면 그룹에 합류하거나 프로 선수가되는 사람들은 일반적으로 다른 팀의 플레이어가있는 곳과 그들이 사용하는 것을 서로 안내하기 위해 언어를 줄입니다. 콜 아웃을 모르면 정말 불쾌하지만 게임 플레이 중에는 놀랍도록 효과적입니다.

주어진 문화권 안에 사는 대부분의 사람들이 공통 언어를 사용하지만 그 문화 안에서 사람들이 특정 작업을 처리하도록 최적화 된 간결한 도메인 언어를 개발하는 방법은 흥미 롭습니다. 컴퓨팅에서는 API와 비교합니다.


-1

널리 사용되는 모델을 사용하십시오 : 식당 철학자.

파스타 저녁을 먹는 5 명의 철학자.

5 테이블 주위에 포크가 있습니다.

각 철학자는 먹을 포크 두 개가 필요합니다.

일부는 먹습니다. 기다리는 동안 일부 사람들은 철학을 느낍니다.


2
철학자들은 두 포크로 먹는가? 남자, 그들은 생각보다 낯선 사람이야! : P이 이야기는 포크 대신 젓가락으로 더 의미가 있습니다 ...
FrustratedWithFormsDesigner

4
@ 좌절, 그래서 그들은 그렇게 많이 생각 해야하는 이유입니다.

젓가락을 포크로 교체해도 효과가 없다고 생각합니다. :)
Tyanna

4
나는 젓가락 비유가 더 좋습니다. 먹기 위해서는 반드시 젓가락 두 개가 필요합니다. 실제로 두 개의 포크가 필요하지 않습니다. 포크 문제는 실제로 문제를 혼란스럽게합니다. 특히 포크는 멀티 프로세싱에서 핵심 용어이기 때문입니다.
Paul Sasik

그리고 철학자가 무엇인지 설명하는 당신의 붙어. 그리고 원인 때문에 그들은 왜 두 개의 포크 (7yo의 관점에서 멍청한 것)가 필요한지 그리고 누군가가 먹기 전에 기다리는 이유를 묻습니다!
익명 타입

-1

머리에 공이 튀는다고 가정 해 봅시다. 바운스마다 바운스 수를 계산합니다. 또한 모든 바운스 후 알파벳 문자 (A, B, C, ...)를 말합니다.

아이, 당신은 멀티 스레딩입니다.


-1

회전판이 좋은 예입니다. 접시를 가지고 동시에 회전시키는 마술사들을 생각해보십시오. 마술사는 계속 회전하면서 플레이트 사이를 전환하고 있습니다.


-2

컴퓨터는 실제로 한 번에 한 가지 작업 만 수행 할 수 있지만 매우 빠르게 작업을 수행 할 수 있습니다. (단순함을 위해 멀티 코어 처리를 생략하고 있습니다.) 그러나 음악을 듣고 동시에 게임을하려면 어떻게해야합니까? 컴퓨터는 (매우 빠르게) 음악 처리와 게임 처리 사이를 전환합니다.


"하지만 왜 동시에 둘 다하지 않습니까?"
Mateen Ulhaq

-2

우리 지역 놀이터에는 트리플 슬라이드와 단일 슬라이드가 있습니다. 스레딩은 트리플 슬라이드와 같으며 3 명의 아이들이 동시에 아래로 미끄러질 수 있습니다. 그러나 한 슬라이드에서 두 아이는 맨 처음 아이가 슬라이드를 내려갈 때까지 기다려야합니다.

작업 설명의 일부가 CFO에보고 되었습니까?


-3

제한된 자원을 공유 (싸움)하는 운동장에있는 두 명의 아이들은 좋아하는 로봇을 만들기 위해 작은 상자에서 필요한 레고 조각을 말합니다.

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