WEBVTT 00:00:16.027 --> 00:00:17.238 여러분은 컴퓨터가 00:00:17.238 --> 00:00:18.659 키보드와 모니터뿐이 아니라는 것을 00:00:18.659 --> 00:00:20.742 처음 깨달았을 때를 기억하십니까? 00:00:20.742 --> 00:00:23.325 마우스 클릭과 비디오 실행 사이에 00:00:23.325 --> 00:00:25.598 무언가가 여러분의 의도를 잡아내어 00:00:25.598 --> 00:00:26.428 이해하고 00:00:26.428 --> 00:00:28.264 실행합니다. 00:00:28.650 --> 00:00:30.270 그 무언가가 무엇일까요? 00:00:30.270 --> 00:00:32.006 그렘린이 한 짓 일까요? 00:00:32.006 --> 00:00:33.665 우리가 전자만큼 작아져서 00:00:33.665 --> 00:00:35.141 마우스를 클릭하는 순간으로 00:00:35.141 --> 00:00:37.894 들어간다고 상상해 봅시다. 00:00:37.894 --> 00:00:39.531 마우스를 분해해 보면 00:00:39.531 --> 00:00:42.193 마우스는 아주 간단한 기계입니다. 00:00:42.193 --> 00:00:43.444 몇 개의 버튼과 00:00:43.444 --> 00:00:46.747 움직임과 거리를 감지하는 시스템을 가지고 있죠. 00:00:46.747 --> 00:00:48.163 여러분은 빛과 센서로 감지하는 00:00:48.163 --> 00:00:50.868 광 마우스를 갖고 있는지도 모르겠군요. 00:00:50.868 --> 00:00:52.958 그러나 옛날 마우스는 단단한 고무공과 00:00:52.958 --> 00:00:54.576 플라스틱 바퀴로 감지했습니다. 00:00:54.576 --> 00:00:56.325 똑같은 개념입니다. 00:00:56.325 --> 00:00:57.914 마우스의 버튼을 누르면 00:00:57.914 --> 00:00:59.716 마우스의 위치 정보를 00:00:59.716 --> 00:01:01.825 컴퓨터로 보냅니다. 00:01:01.825 --> 00:01:03.491 마우스를 눌렀다는 정보를 받으면 00:01:03.491 --> 00:01:06.880 그걸 기초적인 입출력 하위 시스템이 처리합니다. 00:01:06.880 --> 00:01:09.444 이 하위 시스템은 컴퓨터의 눈, 귀, 00:01:09.444 --> 00:01:12.053 입, 손처럼 행동합니다. 00:01:12.053 --> 00:01:13.958 무엇보다도 하위 시스템은 컴퓨터가 00:01:13.958 --> 00:01:16.443 주변 환경과 교류하는 방법을 제공합니다. 00:01:16.443 --> 00:01:18.090 하위시스템은 또 중앙 처리 장치가 방해 요소에 00:01:18.090 --> 00:01:21.501 압도당하지 않도록 완충제 역할을 합니다. 00:01:21.501 --> 00:01:23.811 이 경우에는 입출력 하위시스템이 00:01:23.811 --> 00:01:25.942 마우스 클릭이 매우 중요하다고 결정해서 00:01:25.942 --> 00:01:28.939 중앙 처리 장치에 끼어듭니다. 00:01:28.939 --> 00:01:31.521 "어이, 중앙 처리 장치! 여기 클릭했어." 00:01:31.952 --> 00:01:34.327 CPU, 중앙 처리 장치는 00:01:34.327 --> 00:01:36.522 전체 컴퓨터의 뇌 역할을 합니다. 00:01:36.522 --> 00:01:39.072 뇌가 여러분 몸을 다 차지하지 않듯이 00:01:39.072 --> 00:01:41.577 CPU도 컴퓨터 전체를 차지하지 않지만 00:01:41.577 --> 00:01:44.262 CPU가 모든 것을 운영하죠. 00:01:44.262 --> 00:01:46.506 그리고 CPU가 하는 일은 00:01:46.506 --> 00:01:48.444 메모리에서 지시를 받아 00:01:48.444 --> 00:01:50.451 실행하는 것입니다. 00:01:50.451 --> 00:01:52.380 그래서 여러분이 글자를 치고, 치고, 치고 00:01:52.380 --> 00:01:53.610 정말 빨리 쳐서 00:01:53.610 --> 00:01:55.088 1분에 낱말 60개를 치면 00:01:55.088 --> 00:01:57.090 CPU는 1초에 수십억개의 지시 사항을 00:01:57.090 --> 00:01:59.137 불러오고 실행합니다. 00:01:59.137 --> 00:02:02.176 네, 1초당 수십억입니다. 00:02:02.176 --> 00:02:04.982 마우스를 스크린 위에서 움직이고 00:02:04.982 --> 00:02:07.145 데스크톱에 있는 시계를 작동시키고 00:02:07.145 --> 00:02:08.892 인터넷 라디오를 켜고 00:02:08.892 --> 00:02:11.145 여러분이 하드 드라이브에서 편집하는 파일들을 관리하는 지시 따위, 00:02:11.145 --> 00:02:12.900 그 밖에도 훨씬 많습니다. 00:02:12.900 --> 00:02:16.590 컴퓨터 CPU는 엄청나게 많은 일들을 동시에 해냅니다. 00:02:16.743 --> 00:02:17.613 "그런데 어머나 00:02:17.613 --> 00:02:18.909 지금 매우 중요한 마우스 클릭 정보가 00:02:18.909 --> 00:02:20.030 들어오고 있어! 00:02:20.030 --> 00:02:22.560 모든 걸 멈추고 클릭을 처리하자!" 00:02:23.207 --> 00:02:24.604 CPU가 하는 일마다 00:02:24.604 --> 00:02:26.336 프로그램이 있습니다. 00:02:26.336 --> 00:02:28.058 마우스, 00:02:28.058 --> 00:02:29.092 시계, 00:02:29.092 --> 00:02:30.303 인터넷 라디오, 00:02:30.303 --> 00:02:33.136 그리고 키보드가 보내는 글자를 처리하는 프로그램이 있습니다. 00:02:33.136 --> 00:02:35.688 각 프로그램은 처음에는 사람이 읽을 수 있는 00:02:35.688 --> 00:02:37.906 프로그램 언어로 만들어졌습니다. 00:02:37.906 --> 00:02:38.765 자바(Java) 나 00:02:38.765 --> 00:02:39.798 C++, 00:02:39.798 --> 00:02:41.219 파이톤(Python) 같이 말이죠. 00:02:41.219 --> 00:02:43.741 그러나 사람이 읽을 수 있는 프로그램은 너무 많은 공간을 차지하고 00:02:43.741 --> 00:02:47.450 컴퓨터에게 필요없는 정보가 많아서 00:02:47.450 --> 00:02:49.191 이걸 컴파일해서 작게 만들고 00:02:49.191 --> 00:02:52.653 메모리 안에 1과 0의 정보로 저장합니다. 00:02:52.653 --> 00:02:55.410 CPU는 마우스 클릭을 처리하는 법에 대한 00:02:55.410 --> 00:02:57.411 지침이 필요한 것을 깨닫습니다. 00:02:57.411 --> 00:02:59.380 그래서 마우스 프로그램 주소를 찾아서 00:02:59.380 --> 00:03:01.755 메모리에 저장된 지침을 00:03:01.755 --> 00:03:04.625 달라고 메모리 하위시스템에게 요청합니다. 00:03:05.287 --> 00:03:07.216 마우스 장치 드라이버의 지침을 각각 00:03:07.216 --> 00:03:09.742 때맞게 가져와서 실행합니다. 00:03:09.742 --> 00:03:12.113 이야기는 여기서 끝이 아닙니다! 00:03:12.113 --> 00:03:14.654 모니터 화면의 버튼 그림 위로 00:03:14.654 --> 00:03:16.216 커서가 움직이면 00:03:16.216 --> 00:03:18.177 CPU는 마우스가 클릭된 것을 감지하고 00:03:18.177 --> 00:03:21.248 그 버튼이 무엇인지 알기 위해 00:03:21.248 --> 00:03:23.353 CPU는 메모리에게 모니터 프로그램을 요청합니다. 00:03:23.353 --> 00:03:25.601 그리고 나서 CPU는 메모리에게 00:03:25.601 --> 00:03:27.437 버튼 프로그램을 요청해야 하는데 00:03:27.437 --> 00:03:28.948 이 말은 CPU가 버튼과 연결되어있는 00:03:28.948 --> 00:03:30.688 비디오를 보여주기 위해 모니터 프로그램을 00:03:30.688 --> 00:03:32.860 다시 필요로 한다는 뜻입니다. 00:03:32.860 --> 00:03:34.742 그렇게 비디오가 실행됩니다. 00:03:34.742 --> 00:03:37.487 클릭하면 스크린에 있는 버튼에 빛이 들어오는 것을 00:03:37.487 --> 00:03:39.472 여러분이 보기도 전에 00:03:39.472 --> 00:03:41.379 아주 많은 프로그램이 관여한다고 생각하면 됩니다. 00:03:41.379 --> 00:03:43.848 그래서 마우스를 클릭하는 단순한 일은 00:03:43.848 --> 00:03:46.216 컴퓨터 구조에서 중요한 부분을 00:03:46.216 --> 00:03:48.196 다 사용한다는 뜻입니다. 00:03:48.196 --> 00:03:49.238 주변 장치들, 00:03:49.238 --> 00:03:51.047 기본적인 입출력 시스템, 00:03:51.047 --> 00:03:52.379 중앙 처리 장치, 00:03:52.379 --> 00:03:53.154 프로그램들, 00:03:53.154 --> 00:03:54.140 그리고 메모리가 이런 일을 하고 있습니다. 00:03:54.140 --> 00:03:56.133 그렘린이 아니고요.