1 00:00:01,106 --> 00:00:04,216 Muy bien. Esta haciendo un hermoso día de primavera, aquí 2 00:00:04,217 --> 00:00:06,061 afuera en el campus, Grabaré aqui afuera 3 00:00:06,165 --> 00:00:08,987 en el campus de Stamford. 4 00:00:08,988 --> 00:00:11,874 Es un Parque soleado y tranquilo, 5 00:00:11,875 --> 00:00:15,973 donde los estudiantes universitarios vienen 6 00:00:16,152 --> 00:00:18,418 Bien, el tema de esta sección es: 7 00:00:18,734 --> 00:00:20,045 ¿Que es el Software? 8 00:00:20,219 --> 00:00:21,248 ¿Qué es? ¿Que es el código ? 9 00:00:21,254 --> 00:00:24,026 ¿Cómo es que algo se ejecuta en la Computadora?. 10 00:00:24,591 --> 00:00:26,925 Así que cuando hablamos de Hardware en la 11 00:00:26,935 --> 00:00:28,057 Computadora hablamos de la CPU, 12 00:00:28,057 --> 00:00:29,452 que es el cerebro la cosa . 13 00:00:29,453 --> 00:00:31,095 Por lo tanto la CPU es lo que realmente hace correr 14 00:00:31,186 --> 00:00:33,070 y a CPU implementa, lo que es 15 00:00:33,071 --> 00:00:35,297 lo que se llama " instrucciones de código máquina". 16 00:00:35,298 --> 00:00:39,220 y las instrucciones de código máquina son extremadamente simples 17 00:00:39,230 --> 00:00:41,770 Una instrucción de código máquina podría sumar dos números 18 00:00:41,771 --> 00:00:43,096 otra instrucción podría 19 00:00:43,100 --> 00:00:45,497 Comparar dos números para ver cuál es más grande. 20 00:00:45,870 --> 00:00:48,078 Para el código que hemos visto, 21 00:00:48,078 --> 00:00:50,667 así que algo como pixel.setred(10). 22 00:00:50,668 --> 00:00:52,048 Eso es mucho más complicada, 23 00:00:52,058 --> 00:00:54,607 que instrucciones individuales de código máquina 24 00:00:54,608 --> 00:00:55,667 La forma en que funciona eso 25 00:00:55,678 --> 00:00:58,075 es que pixel.setRed(10) 26 00:00:58,321 --> 00:00:59,805 En última instancia expandirá 27 00:00:59,995 --> 00:01:02,831 a una serie de tal vez cinco o diez de 28 00:01:02,851 --> 00:01:04,765 estas simples instrucciones de código máquina. 29 00:01:05,013 --> 00:01:09,095 Tal que, cuando esos diez instrucciones se ejecutan, uno tras otro, se establece 30 00:01:09,145 --> 00:01:11,724 el valor rojo, valor del píxel a diez. 31 00:01:11,713 --> 00:01:13,065 entraremos en más detalle más adelante acerca de 32 00:01:13,093 --> 00:01:15,564 Cómo ocurre esa expansión. 33 00:01:15,868 --> 00:01:19,050 creo que una buena primera pregunta sobre la ejecución 34 00:01:19,038 --> 00:01:21,469 de un programa es, ¿qué es un programa? 35 00:01:21,470 --> 00:01:23,810 Así que mira, el lado derecho de este diagrama 36 00:01:23,840 --> 00:01:28,111 Así, un programa, voy a utilizar una especie de ejemplo de ejecución, Firefox 37 00:01:28,210 --> 00:01:32,225 Así que, un programa está hecho en realidad con una enorme 38 00:01:32,387 --> 00:01:36,223 cantidad de estas simples Instrucciones de Código de Máquina 39 00:01:36,797 --> 00:01:41,034 Y así, cuando Firefox, se está ejecutando en su Computadora 40 00:01:41,044 --> 00:01:42,165 eso significa en algún lugar en la memoria RAM, 41 00:01:42,166 --> 00:01:44,010 hay un bloque de estas instrucciones. 42 00:01:44,028 --> 00:01:45,747 Tal que ejecutarlos hace 43 00:01:45,882 --> 00:01:47,739 las cosas que hace Firefox 44 00:01:47,779 --> 00:01:48,796 Por lo tanto, parpadea el cursor, 45 00:01:48,806 --> 00:01:50,189 toma la dirección url, dibuja, 46 00:01:50,190 --> 00:01:52,240 obtiene las páginas web y todo ese tipo de cosas. 47 00:01:54,828 --> 00:01:58,047 Las instrucciones individuales son realmente triviales, Sólo adiconan dos números. Por lo tanto 48 00:01:59,070 --> 00:02:01,416 ¿Cómo obtiene desde como parpadeando el cursor? 49 00:02:01,483 --> 00:02:03,103 Y lo mejor que puedo decir es 50 00:02:03,104 --> 00:02:04,714 que tal vez esto es algo así como la relación entre 51 00:02:04,719 --> 00:02:05,855 la arena y la escultura. 52 00:02:06,229 --> 00:02:08,016 Cada Instrucción es como un grano de arena 53 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. 54 00:02:11,362 --> 00:02:13,098 Pero si usted los pone juntos en la manera correcta, tú 55 00:02:13,098 --> 00:02:15,972 puedes generar esta complicada estructura general. 56 00:02:15,972 --> 00:02:17,289 Y esa es la forma en que Firefox 57 00:02:17,304 --> 00:02:20,391 está construido, a partir de ellas, estas sencillas instrucciones 58 00:02:20,758 --> 00:02:22,295 Por lo que la forma en que funciona es: 59 00:02:22,301 --> 00:02:24,240 la CPU, aquí a la izquierda, 60 00:02:24,245 --> 00:02:26,989 corre lo que se llama un "ciclo de ejecución fetch". 61 00:02:27,127 --> 00:02:28,779 todo lo que esto significa es que, 62 00:02:28,790 --> 00:02:31,480 la CPU empezará, vamos a decir aquí, con la primera instrucción 63 00:02:31,493 --> 00:02:34,486 y podrá cargar esa instrucción y ejecutarla. 64 00:02:34,487 --> 00:02:36,611 O aveces decimos que se ejecuta esa instrucción. 65 00:02:36,645 --> 00:02:39,701 Así, agrega los dos números o hace lo que dice la instrucción 66 00:02:39,712 --> 00:02:42,482 y cuando, se hace la instrucción uno, solo va hacia abajo en la lista 67 00:02:42,486 --> 00:02:44,183 Va a la instrucción dos, y la hace. 68 00:02:44,184 --> 00:02:45,615 va a la instrucción 3 y la hace, 69 00:02:45,991 --> 00:02:50,049 es tan sólo ejecutar la secuencia. Así, cuando decimos 70 00:02:50,049 --> 00:02:55,014 que una CPU opera en dos gigahercios, dos mil millones de operaciones por segundo, es estos 71 00:02:55,014 --> 00:03:00,010 instrucciones poco que se refiere a. Por lo que hay, obviamente, hay una, una gran 72 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 73 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. 74 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 75 00:03:15,026 --> 00:03:20,036 instrucción cuatro quizás dice, oh jump back y inicio ejecutar nuevamente en instrucción 76 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... 77 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 78 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 79 00:03:31,074 --> 00:03:35,000 sorta puede ver que es cómo se implementan los bucles. Sólo organizar el 80 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, 81 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 82 00:03:42,072 --> 00:03:47,040 y otra vez. Otro tipo de instrucción. Nuestra idea [inaudible] es una instrucción, 83 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 84 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 85 00:03:58,084 --> 00:04:02,031 ¿Cómo si se implementan las declaraciones. Tienes una instrucción que se va a mirar 86 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 87 00:04:05,065 --> 00:04:08,099 la CPU para pasar aquí. Y si es false, iré a otro lugar. 88 00:04:09,012 --> 00:04:12,085 Por lo tanto por organizar tan las instrucciones, puede obtener el efecto de algo 89 00:04:12,085 --> 00:04:18,090 nosotros, que, en nuestro código, parece un si declaración. [sonido]. Alrighty. Tan bien lo 90 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 91 00:04:24,005 --> 00:04:28,082 cosa. Así que me imagino que tienes, Firefox en su unidad flash, usted sabe, la 92 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 93 00:04:33,043 --> 00:04:37,081 plazo, ustedes saben, almacenamiento persistente aquí abajo. Y aquí es RAM y aquí está la CPU. 94 00:04:37,081 --> 00:04:42,018 Así que cuando tienes Firefox en tu disco duro. Tiene, básicamente, es un archivo, y 95 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 96 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é 97 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 98 00:04:55,048 --> 00:04:59,033 parte, esos bytes, son sólo las instrucciones que componen el programa, 99 00:04:59,033 --> 00:05:03,071 Además de algunos iconos. [inaudible] y otras cosas. Lo que quiero pensar en eso 100 00:05:03,071 --> 00:05:08,016 bien, ¿qué sucede cuando se hace doble clic en Firefox.exc? ¿Cómo iniciar ejecución? 101 00:05:08,016 --> 00:05:12,095 Y básicamente lo que pasa es hay dos pasos. Lo primero que ocurre es la 102 00:05:12,095 --> 00:05:17,051 bytes de estas instrucciones, por lo menos suficiente de las instrucciones para comenzar, 103 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 104 00:05:22,018 --> 00:05:26,011 puede llegar a ellos. Y solo paso dos, decirle a la CPU, ' bueno, bueno, aquí es 105 00:05:26,011 --> 00:05:30,062 instrucción uno. Inicio Ejecutar aquí. " Y así entonces la CPU sólo comienza a extraer 106 00:05:30,062 --> 00:05:35,025 la serie de instrucciones y ahora se está ejecutando Firefox. Así que creo que esto 107 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 108 00:05:40,019 --> 00:05:45,033 ¿doble clic? ¿Quién obtiene Firefox ejecutando? Y eso es lo que un operativo 109 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 110 00:05:50,073 --> 00:05:56,071 programas administrativos que ordenan de ustedes saben, organizan, organizan todo el sistema. 111 00:05:56,093 --> 00:06:01,027 Así, en particular, el sistema operativo administra varios programas e iniciar 112 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 113 00:06:06,005 --> 00:06:10,073 tiempo y para el sistema operativo sorta mantiene las cosas organizadas. Así, hace la 114 00:06:10,073 --> 00:06:15,006 Inicio de un programa, dándole algunos RAM a utilizar y quizás dándole un 115 00:06:15,006 --> 00:06:19,012 para dibujar en la ventana. También, sistemas operativos intentan mantener programas aislados de cada uno 116 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 117 00:06:22,086 --> 00:06:26,060 RAM de algún otro programa. Así ayuda si un programa tiene errores. Ojalá, te 118 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 119 00:06:30,047 --> 00:06:34,031 maliciosa, si programa intentaba hacer algo malo para algún otro programa que, 120 00:06:34,044 --> 00:06:38,007 el sistema operativo intenta mantenerlos separados. Por lo tanto, es el sistema operativo 121 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 122 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, 123 00:06:45,075 --> 00:06:49,045 desde luego, puede haga doble clic o hacer otras cosas y el sistema operativo 124 00:06:49,045 --> 00:06:52,074 comenzará a esos programas para usted. Por lo que es realmente, la cosa está 125 00:06:52,074 --> 00:06:56,029 ver, cuando arranca el portátil. Cámara digital, no piense en ello 126 00:06:56,029 --> 00:06:59,029 como un equipo, necesariamente, pero realmente es el mismo. Cuando la cámara digital 127 00:06:59,029 --> 00:07:02,058 inicia por primera vez, existe probablemente un par programas. Tal vez es el programa que 128 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 129 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 130 00:07:08,079 --> 00:07:11,091 obtener administrativo, sorta, obtener ejecutan programas, los tipo de mostrarle la 131 00:07:11,091 --> 00:07:17,046 interfaz y, a continuación, sólo permite ir. Estoy. Así como, una última cosa, hay 132 00:07:17,046 --> 00:07:21,034 tipo de, el, estos, esta terminología arranque y reinicio, siempre pensó que era 133 00:07:21,034 --> 00:07:25,007 divertido Kinda. ¿Como, de dónde viene? Y yo-, se refiere a la ordenación de 134 00:07:25,007 --> 00:07:28,090 problema de huevo de gallina, como, bueno, cuando el equipo primero enciende, cuando lo primero 135 00:07:28,090 --> 00:07:31,098 comienza arriba, cómo lo hace. ¿Cómo se organizó conseguir? Cómo empezar 136 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, 137 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 138 00:07:40,014 --> 00:07:44,013 tus elevarnos y tire hacia arriba y al igual que ascensor usted sobre la valla que 139 00:07:44,013 --> 00:07:48,033 forma. Y es, obviamente, especie de absurdo. Pero, tiene la misma calidad de como, 140 00:07:48,033 --> 00:07:52,027 bien esperar, qué programa funciona el equipo para activar el equipo para ejecutar 141 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 142 00:07:57,025 --> 00:08:02,041 hardware, CPU, el, tiene, cuando reconoce que tiene, fue desactivada, 143 00:08:02,041 --> 00:08:07,089 y que tiene, acaba de empezar. Y así hay un especial pequeño programa que 144 00:08:07,089 --> 00:08:13,020 está cableado en el equipo para ejecutar, en ese momento. Y ese programa puede quizás 145 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. 146 00:08:17,055 --> 00:08:22,023 Y entonces bastante mucho busca alrededor de un disco duro o una unidad flash o algo 147 00:08:22,023 --> 00:08:26,058 contiene un sistema operativo en él. Y, a continuación, puede iniciar ese operativo 148 00:08:26,058 --> 00:08:31,015 sistema y, a continuación, entonces el equipo puede iniciar de esa forma. Eso ha 149 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 150 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 151 00:08:40,047 --> 00:08:44,032 apagar y arrancar fresco. Muy bien. Así que ya sabes.