WEBVTT 00:00:01.106 --> 00:00:04.216 Muy bien. Esta haciendo un hermoso día de primavera, aquí 00:00:04.217 --> 00:00:06.061 afuera en el campus, Grabaré aqui afuera 00:00:06.165 --> 00:00:08.987 en el campus de Stamford. 00:00:08.988 --> 00:00:11.874 Es un Parque soleado y tranquilo, 00:00:11.875 --> 00:00:15.973 donde los estudiantes universitarios vienen 00:00:16.152 --> 00:00:18.418 Bien, el tema de esta sección es: 00:00:18.734 --> 00:00:20.045 ¿Que es el Software? 00:00:20.219 --> 00:00:21.248 ¿Qué es? ¿Que es el código ? 00:00:21.254 --> 00:00:24.026 ¿Cómo es que algo se ejecuta en la Computadora?. 00:00:24.591 --> 00:00:26.925 Así que cuando hablamos de Hardware en la 00:00:26.935 --> 00:00:28.057 Computadora hablamos de la CPU, 00:00:28.057 --> 00:00:29.452 que es el cerebro la cosa . 00:00:29.453 --> 00:00:31.095 Por lo tanto la CPU es lo que realmente hace correr 00:00:31.186 --> 00:00:33.070 y a CPU implementa, lo que es 00:00:33.071 --> 00:00:35.297 lo que se llama " instrucciones de código máquina". 00:00:35.298 --> 00:00:39.220 y las instrucciones de código máquina son extremadamente simples 00:00:39.230 --> 00:00:41.770 Una instrucción de código máquina podría sumar dos números 00:00:41.771 --> 00:00:43.096 otra instrucción podría 00:00:43.100 --> 00:00:45.497 Comparar dos números para ver cuál es más grande. 00:00:45.870 --> 00:00:48.078 Para el código que hemos visto, 00:00:48.078 --> 00:00:50.667 así que algo como pixel.setred(10). 00:00:50.668 --> 00:00:52.048 Eso es mucho más complicada, 00:00:52.058 --> 00:00:54.607 que instrucciones individuales de código máquina 00:00:54.608 --> 00:00:55.667 La forma en que funciona eso 00:00:55.678 --> 00:00:58.075 es que pixel.setRed(10) 00:00:58.321 --> 00:00:59.805 En última instancia expandirá 00:00:59.995 --> 00:01:02.831 a una serie de tal vez cinco o diez de 00:01:02.851 --> 00:01:04.765 estas simples instrucciones de código máquina. 00:01:05.013 --> 00:01:09.095 Tal que, cuando esos diez instrucciones se ejecutan, uno tras otro, se establece 00:01:09.145 --> 00:01:11.724 el valor rojo, valor del píxel a diez. 00:01:11.713 --> 00:01:13.065 entraremos en más detalle más adelante acerca de 00:01:13.093 --> 00:01:15.564 Cómo ocurre esa expansión. 00:01:15.868 --> 00:01:19.050 creo que una buena primera pregunta sobre la ejecución 00:01:19.038 --> 00:01:21.469 de un programa es, ¿qué es un programa? 00:01:21.470 --> 00:01:23.810 Así que mira, el lado derecho de este diagrama 00:01:23.840 --> 00:01:28.111 Así, un programa, voy a utilizar una especie de ejemplo de ejecución, Firefox 00:01:28.210 --> 00:01:32.225 Así que, un programa está hecho en realidad con una enorme 00:01:32.387 --> 00:01:36.223 cantidad de estas simples Instrucciones de Código de Máquina 00:01:36.797 --> 00:01:41.034 Y así, cuando Firefox, se está ejecutando en su Computadora 00:01:41.044 --> 00:01:42.165 eso significa en algún lugar en la memoria RAM, 00:01:42.166 --> 00:01:44.010 hay un bloque de estas instrucciones. 00:01:44.028 --> 00:01:45.747 Tal que ejecutarlos hace 00:01:45.882 --> 00:01:47.739 las cosas que hace Firefox 00:01:47.779 --> 00:01:48.796 Por lo tanto, parpadea el cursor, 00:01:48.806 --> 00:01:50.189 toma la dirección url, dibuja, 00:01:50.190 --> 00:01:52.240 obtiene las páginas web y todo ese tipo de cosas. 00:01:54.828 --> 00:01:58.047 Las instrucciones individuales son realmente triviales, Sólo adiconan dos números. Por lo tanto 00:01:59.070 --> 00:02:01.416 ¿Cómo obtiene desde como parpadeando el cursor? 00:02:01.483 --> 00:02:03.103 Y lo mejor que puedo decir es 00:02:03.104 --> 00:02:04.714 que tal vez esto es algo así como la relación entre 00:02:04.719 --> 00:02:05.855 la arena y la escultura. 00:02:06.229 --> 00:02:08.016 Cada Instrucción es como un grano de arena 00:02:08.018 --> 00:02:11.361 que por sí mismo no tiene sentido y un poco se parece a todos los demás. 00:02:11.362 --> 00:02:13.098 Pero si usted los pone juntos en la manera correcta, tú 00:02:13.098 --> 00:02:15.972 puedes generar esta complicada estructura general. 00:02:15.972 --> 00:02:17.289 Y esa es la forma en que Firefox 00:02:17.304 --> 00:02:20.391 está construido, a partir de ellas, estas sencillas instrucciones 00:02:20.758 --> 00:02:22.295 Por lo que la forma en que funciona es: 00:02:22.301 --> 00:02:24.240 la CPU, aquí a la izquierda, 00:02:24.245 --> 00:02:26.989 corre lo que se llama un "ciclo de ejecución fetch". 00:02:27.127 --> 00:02:28.779 todo lo que esto significa es que, 00:02:28.790 --> 00:02:31.480 la CPU empezará, vamos a decir aquí, con la primera instrucción 00:02:31.493 --> 00:02:34.486 y podrá cargar esa instrucción y ejecutarla. 00:02:34.487 --> 00:02:36.611 O aveces decimos que se ejecuta esa instrucción. 00:02:36.645 --> 00:02:39.701 Así, agrega los dos números o hace lo que dice la instrucción 00:02:39.712 --> 00:02:42.482 y cuando, se hace la instrucción uno, solo va hacia abajo en la lista 00:02:42.486 --> 00:02:44.183 Va a la instrucción dos, y la hace. 00:02:44.184 --> 00:02:45.615 va a la instrucción 3 y la hace, 00:02:45.991 --> 00:02:50.049 es tan sólo ejecutar la secuencia. Así, cuando decimos 00:02:50.049 --> 00:02:55.014 que una CPU opera en dos gigahercios, dos mil millones de operaciones por segundo, es estos 00:02:55.014 --> 00:03:00.010 instrucciones poco que se refiere a. Por lo que hay, obviamente, hay una, una gran 00:03:00.010 --> 00:03:05.020 variedad de instrucciones. Pero estoy solo va a señalar un par tipos especiales. Por lo tanto 00:03:05.020 --> 00:03:10.048 un tipo de instrucción tiene el efecto de los cambios en el orden que la instrucción. 00:03:10.048 --> 00:03:15.026 Normalmente la CPU sólo se ejecuta abajo en la lista y les hace en orden. Pero dejemos? s decir 00:03:15.026 --> 00:03:20.036 instrucción cuatro quizás dice, oh jump back y inicio ejecutar nuevamente en instrucción 00:03:20.036 --> 00:03:24.030 uno. Y entonces pensar en la cpu va a hacer. Por lo que va a hacer las instrucciones... 00:03:24.030 --> 00:03:27.085 Uno, dos, tres, cuatro. Y luego cuando se pone a cuatro, te sorta saltar hacia atrás, y 00:03:27.085 --> 00:03:31.074 instrucciones de hacer uno, dos, tres nuevamente. Y, a continuación, uno, dos, tres una y otra vez. Le 00:03:31.074 --> 00:03:35.000 sorta puede ver que es cómo se implementan los bucles. Sólo organizar el 00:03:35.000 --> 00:03:38.079 instrucciones para que they'res algún fragmento de código quieres hacer 500.000 veces. Bueno, 00:03:38.079 --> 00:03:42.072 puede configurar una instrucción sólo bucle de vuelta y por lo tanto, hacer de nuevo las instrucciones 00:03:42.072 --> 00:03:47.040 y otra vez. Otro tipo de instrucción. Nuestra idea [inaudible] es una instrucción, 00:03:47.040 --> 00:03:53.023 así, la misma instrucción dos aquí, que las pruebas alguna condición y si la condición 00:03:53.023 --> 00:03:58.084 es en verdad tal vez omite adelante donde instrucción cinco estaría aquí. SO. Es decir 00:03:58.084 --> 00:04:02.031 ¿Cómo si se implementan las declaraciones. Tienes una instrucción que se va a mirar 00:04:02.031 --> 00:04:05.065 alguna condición, y si es, si la condición es verdadera, es va a ordenar de tell 00:04:05.065 --> 00:04:08.099 la CPU para pasar aquí. Y si es false, iré a otro lugar. 00:04:09.012 --> 00:04:12.085 Por lo tanto por organizar tan las instrucciones, puede obtener el efecto de algo 00:04:12.085 --> 00:04:18.090 nosotros, que, en nuestro código, parece un si declaración. [sonido]. Alrighty. Tan bien lo 00:04:18.090 --> 00:04:24.005 ¿Cómo, cómo un programa consigue correr y cómo llegamos a, ¿cómo llegamos a esto 00:04:24.005 --> 00:04:28.082 cosa. Así que me imagino que tienes, Firefox en su unidad flash, usted sabe, la 00:04:28.082 --> 00:04:33.043 archivo. Así que en la unidad flash o en el disco duro. Así que aquí que he almacenado, largo 00:04:33.043 --> 00:04:37.081 plazo, ustedes saben, almacenamiento persistente aquí abajo. Y aquí es RAM y aquí está la CPU. 00:04:37.081 --> 00:04:42.018 Así que cuando tienes Firefox en tu disco duro. Tiene, básicamente, es un archivo, y 00:04:42.018 --> 00:04:46.042 aquí es llamado Firefox exe, que es sólo una Convención de windows, para saber cómo 00:04:46.042 --> 00:04:50.067 nombre de un archivo, que es un programa, sino, lo ayuda a mantener las cosas más claras, así que iré 00:04:50.067 --> 00:04:55.048 siga. Firefox.exe así, ese archivo, tiene un montón de bytes en él y para la mayoría 00:04:55.048 --> 00:04:59.033 parte, esos bytes, son sólo las instrucciones que componen el programa, 00:04:59.033 --> 00:05:03.071 Además de algunos iconos. [inaudible] y otras cosas. Lo que quiero pensar en eso 00:05:03.071 --> 00:05:08.016 bien, ¿qué sucede cuando se hace doble clic en Firefox.exc? ¿Cómo iniciar ejecución? 00:05:08.016 --> 00:05:12.095 Y básicamente lo que pasa es hay dos pasos. Lo primero que ocurre es la 00:05:12.095 --> 00:05:17.051 bytes de estas instrucciones, por lo menos suficiente de las instrucciones para comenzar, 00:05:17.051 --> 00:05:22.018 se copian a la RAM. Por lo que sólo copia, pone las instrucciones en la memoria RAM donde la CPU 00:05:22.018 --> 00:05:26.011 puede llegar a ellos. Y solo paso dos, decirle a la CPU, ' bueno, bueno, aquí es 00:05:26.011 --> 00:05:30.062 instrucción uno. Inicio Ejecutar aquí. " Y así entonces la CPU sólo comienza a extraer 00:05:30.062 --> 00:05:35.025 la serie de instrucciones y ahora se está ejecutando Firefox. Así que creo que esto 00:05:35.025 --> 00:05:40.019 ¿lleva a la pregunta de como, bien que hacer esto justo? ¿Cómo lo hizo, cómo lo hizo, quien maneja 00:05:40.019 --> 00:05:45.033 ¿doble clic? ¿Quién obtiene Firefox ejecutando? Y eso es lo que un operativo 00:05:45.033 --> 00:05:50.073 es el sistema. Por lo que el sistema operativo es un conjunto de tipo de supervisión y 00:05:50.073 --> 00:05:56.071 programas administrativos que ordenan de ustedes saben, organizan, organizan todo el sistema. 00:05:56.093 --> 00:06:01.027 Así, en particular, el sistema operativo administra varios programas e iniciar 00:06:01.027 --> 00:06:06.005 y poner fin a programas. Por lo que una computadora moderna puede ejecutar varios programas al mismo 00:06:06.005 --> 00:06:10.073 tiempo y para el sistema operativo sorta mantiene las cosas organizadas. Así, hace la 00:06:10.073 --> 00:06:15.006 Inicio de un programa, dándole algunos RAM a utilizar y quizás dándole un 00:06:15.006 --> 00:06:19.012 para dibujar en la ventana. También, sistemas operativos intentan mantener programas aislados de cada uno 00:06:19.012 --> 00:06:22.086 otros. Así que cada programa tiene su memoria RAM, pero necesariamente no vaya lío con el 00:06:22.086 --> 00:06:26.060 RAM de algún otro programa. Así ayuda si un programa tiene errores. Ojalá, te 00:06:26.060 --> 00:06:30.047 sólo desordenar ese programa, pero no metan a algún otro programa que se está ejecutando. O 00:06:30.047 --> 00:06:34.031 maliciosa, si programa intentaba hacer algo malo para algún otro programa que, 00:06:34.044 --> 00:06:38.007 el sistema operativo intenta mantenerlos separados. Por lo tanto, es el sistema operativo 00:06:38.007 --> 00:06:42.009 realmente lo primero que se ejecuta cuando se inicia el equipo. Eso es lo que tiene va a 00:06:42.009 --> 00:06:45.075 ponen esas ventanas primeras y tal vez mostrarle lo que está en el disco duro. Y entonces, 00:06:45.075 --> 00:06:49.045 desde luego, puede haga doble clic o hacer otras cosas y el sistema operativo 00:06:49.045 --> 00:06:52.074 comenzará a esos programas para usted. Por lo que es realmente, la cosa está 00:06:52.074 --> 00:06:56.029 ver, cuando arranca el portátil. Cámara digital, no piense en ello 00:06:56.029 --> 00:06:59.029 como un equipo, necesariamente, pero realmente es el mismo. Cuando la cámara digital 00:06:59.029 --> 00:07:02.058 inicia por primera vez, existe probablemente un par programas. Tal vez es el programa que 00:07:02.058 --> 00:07:05.070 toma fotografías y el programa que le permite mirar a través de las imágenes has 00:07:05.070 --> 00:07:08.079 ya adoptadas. Y así, cuando la cámara se inicia en primer lugar, hay un poco de 00:07:08.079 --> 00:07:11.091 obtener administrativo, sorta, obtener ejecutan programas, los tipo de mostrarle la 00:07:11.091 --> 00:07:17.046 interfaz y, a continuación, sólo permite ir. Estoy. Así como, una última cosa, hay 00:07:17.046 --> 00:07:21.034 tipo de, el, estos, esta terminología arranque y reinicio, siempre pensó que era 00:07:21.034 --> 00:07:25.007 divertido Kinda. ¿Como, de dónde viene? Y yo-, se refiere a la ordenación de 00:07:25.007 --> 00:07:28.090 problema de huevo de gallina, como, bueno, cuando el equipo primero enciende, cuando lo primero 00:07:28.090 --> 00:07:31.098 comienza arriba, cómo lo hace. ¿Cómo se organizó conseguir? Cómo empezar 00:07:31.098 --> 00:07:36.005 ¿ejecución de un programa? Y esta terminología proviene realmente de tipo de un viejo chiste, 00:07:36.005 --> 00:07:40.014 acerca de si desea obtener sobre una valla, lo que sólo podría hacer es llegar a a 00:07:40.014 --> 00:07:44.013 tus elevarnos y tire hacia arriba y al igual que ascensor usted sobre la valla que 00:07:44.013 --> 00:07:48.033 forma. Y es, obviamente, especie de absurdo. Pero, tiene la misma calidad de como, 00:07:48.033 --> 00:07:52.027 bien esperar, qué programa funciona el equipo para activar el equipo para ejecutar 00:07:52.027 --> 00:07:57.025 programas. Así ordena de un problema de huevo y la gallina. Por lo que el modo en que funciona es que el 00:07:57.025 --> 00:08:02.041 hardware, CPU, el, tiene, cuando reconoce que tiene, fue desactivada, 00:08:02.041 --> 00:08:07.089 y que tiene, acaba de empezar. Y así hay un especial pequeño programa que 00:08:07.089 --> 00:08:13.020 está cableado en el equipo para ejecutar, en ese momento. Y ese programa puede quizás 00:08:13.020 --> 00:08:17.055 comprobar, comprobar lo que es área de hardware, ya sabes, hacen algunas cosas de puesta en marcha de principios básicos. 00:08:17.055 --> 00:08:22.023 Y entonces bastante mucho busca alrededor de un disco duro o una unidad flash o algo 00:08:22.023 --> 00:08:26.058 contiene un sistema operativo en él. Y, a continuación, puede iniciar ese operativo 00:08:26.058 --> 00:08:31.015 sistema y, a continuación, entonces el equipo puede iniciar de esa forma. Eso ha 00:08:31.015 --> 00:08:35.089 arranque llamado. Se refiere a esta vieja idea de correa de arranque. Y, a continuación, es lo que reiniciar 00:08:35.089 --> 00:08:40.047 es. Para reiniciar significa sólo para ordenar de, queremos conseguir un borrón por lo que se va a 00:08:40.047 --> 00:08:44.032 apagar y arrancar fresco. Muy bien. Así que ya sabes.