0:01 Buenas tardes estudiantes en esta semana estaremos hablando sobre los principios del diseño de un sistema operativo conoceremos parte de la historia Cómo evolucionando Qué es el sistema operativo e igual como les comentaba en la lección número uno esta será un overview o una visión general de todo lo que se ha hecho en los sistemas operativos y que estaremos usando a lo largo del curso es muy importante entender que vamos a ver conceptos más no profundizar en ellos porque para eso vendrán las clases siguientes Pero entonces Qué es un sistema operativo bueno el sistema operativo es un programa de hecho es el programa encargado de la administración de los recursos y es el programa sobre
0:47 el que corren otros programas vamos a ver en el curso que tiene una serie de mecanismos para por ejemplo administrar los recursos como los dispositivos de entrada y salida la memoria a Quién usa el procesador Entonces el sistema operativo lo que viene siendo ese administrador de los recursos que nos va a ayudar a que varios programas puedan coexistir o que puedan tener una interfaz sencilla eh con la que pueden interactuar con el Hardware entonces veamos el sistema operativo como una Capa intermedia entre el procesador y los programas el sistema operativo de esta forma tiene eh o es donde se van a ejecutar los programas y va a prever un montón de capas realmente una que se
1:34 llama la application binary interface que ahorita hablamos de ella y el Api application program interface que permite ejecutar al las aplicaciones de un lenguaje más común y interactuar con lo difícil del Hardware que tienen un montón de de proveedores o de empresas que construyen su propia tarjeta de sonido su propia tarjeta de video y que querem que un programa no tenga que tener esa lógica sino abstraer y utilizar un elemento abstracto como visualizar en pantalla o escuchar Sonido además de permitir la administración de los recursos de forma tal que en caso de que el sistema operativo soporte el multitasking o la multitarea puedan
2:20 haber varias aplicaciones corriendo simultáneamente y gestionando quién es el que va a utilizar este recurso en cuestión que se está solicitando Así que en los sistemas operativos tenemos diferentes servicios que tienen que estar expuestos para que pueda funcionar por supuesto el más importante o el que más vemos es correr aplicaciones que es el que tengo aquí en el numerito dos verdad Y es Entonces el que dice Okay esta aplicación usted está corriendo vas a usar este pedacito de memoria vas a tener acceso a la tarjeta de red vas a tener acceso a la pantalla vas a tener acceso al micrófono o a los antes y para hacer que un programa ejecute lo primero que tenemos que tener Es la forma entonces de Cómo programar
3:06 en ese programa hoy en día existe un término que es Cross compiling pero eh normalmente si yo quería compilar en Mac Pues el sistema operativo de Mac tiene la forma de eh poder correr para un maos si yo quiero un Windows para Windows hoy existe Cross compiling como les digo y yo puedo compilar en una plataforma para otras plataformas pero por lo general Pro estos eh programas o herramientas para hacer de bugin para saber en dónde está fallando y los servicios y herramientas y sobre todo el application program interface que les voy a contar Ahora más adelante para que se pueda desarrollar un sistema operativo también muy asociado al sistema operativo es la gestión de archivos esta gestión de archivos eh donde guardamos las carpetas donde guardamos los documentos de Word
3:52 donde guardamos nuestros programas este gestión de archivos el sistema operativo prevé un mecanismo que se llama el F System y por ejemplo en el caso de Windows se usa ntfs eh casi que todas las sistemas operativos soportan el fat eh Apple tiene su propio sistema operativo Linux tiene eh exts xt4 razer fs que son sistemas de archivos de cómo se va a almacenar la información en el disc subro Y cómo yo voy a poder localizarla cómo yo voy a poder por ejemplo en el fat que es file Access transfer eh se accede por tablas Entonces cómo digo yo buo en este clúster de información viene acá Y defino como un archivo gigantesco va a
4:38 estar distribuido digamos en un disco duro y cómo se accede en el caso de Linux Normalmente se utiliza un journal que es un diario o sea cómo van ejecutando es un poco diferente a como se hace en Windows eso también lo veremos más adelante con más detalle y por supuesto eh el sistema operativo tiene que contener con todos los mecanismos de protección queda de usuarios alguien no puede entrar Cuál es la parte del kernel que está ocurriendo en el modo usuario en el modo kernel puedo no ejecutar esa acción puedo no instalar programas pues obviamente en el sistema operativo es donde están los virus hay gente que mal erradamente dice que en Apple no hay virus no en el sistema operativo de Apple hay menos virus porque menos gente lo usa pero los mecanismos de control de Windows y los sistemas de seguridad de Windows son muy buenos y justamente por esta razón es
5:25 que cuando un sistema operativo deja de tener soporte ya no debemos de usarlo porque se dejan de liberar sobre todo lo que son los parches de seguridad en Microsoft de hecho Windows eh se llamaban los Security service pack los paquetes de seguridad que se implementaban de deficiencias de seguridad que se encontraban en un futuro y en un inicio no estaban obviamente al ser el sistema operativo más utilizado pues es también el principal objeto de atacantes y justamente aquí llegamos a la parte que les comentaba Ahorita tenemos tres partes en las que un sistema operativo interactúa lo primero es que tenemos la aplicación supongamos que la aplicación es la parte más alta eh donde ya está corriendo el Word por poner un ejemplo el Word tiene que eh
6:11 hablarse con una serie de librerías eh por poner un ejemplo cuando corramos la interrupción 21h o la 10h para abrir archivos o imprimir en pantalla Word habla y dice Bueno yo quiero imprimir esto en pantalla a través de un application program interface esta application program interface tiene entonces una serie de funciones o de interrupciones digamos en el caso de del x86 del ensamblador que veíamos que eh pueden entonces servirle a los programas para tener esa capa de abstracción y no preocuparse por cómo un proveedor de un Hardware se dedicó a hacer esto sino que lo extraen y no importa si yo estoy usando una tarjeta envidia o una tarjeta de bebí en Intel
6:58 pues lo que está en el Api del sistema operativo pues va a funcionar este Api que es el que entonces con lo que hablan las programas eh pasa después por el application binary interface o el Abi y esto permite a los programas compilados correr en los sistemas compatibles un poquito más rápido un poquito más eficientes y con ciertas instrucciones propias del sistema operativo de aquí que a pesar de que Linux y Windows corren en la misma compo hay programas que corren en Windows y program que corren en Linux y uno dirá pero tienen el mismo procesador están corriendo en la misma compu el lenguaje ensamblador es el mismo Sí el lenguaje ensamblador es el mismo lo que es diferente es el acceso a la librería de
7:44 application PR interface y el application binary interface lo que tienen igual era Lisa que si recuerdan el Lisa era parte de la de la arquitectura del procesador es el conjunto de instrucciones o instrucción architector que me Define cuáles son para mover Cuáles son los registros que existen dentro del procesador pero las aplicaciones no corren directamente al procesador sino que pasan a través de las capas del sistema operativo y aquí es porque Mac en Intel seguía corriendo solo programas que solo eran compatibles en Mac hoy en día gracias a Dios ya utiliza Arm y bueno tiene una mejor eficiencia Sigue siendo un poco complicado nota parte e durante el sistema operativo él tiene
8:29 como de sus propiedades o En referencia a los recursos que va a administrar tiene eh cuatro responsabilidades bastante importantes la primera es que cuando un proceso se crea o se modifica o el proceso entra ejecutar o sea usted hace doble clic en la ventanita ahí del Word y abre el Word en ese momento el procesador tiene que decir Bueno yo voy a crear una eh Como un contexto donde dice Bueno si se abrió una instancia del Word que va a tener esos archivos y la voy entonces a Ubicar en memoria Entonces no solo la ubico en memoria sino que también creo ese contexto que también va a estar en memoria y le asigno un tiempo y una prioridad usted se va a estar ejecutando cada un minuto
9:17 cada bueno cada uno dos tres ciclos de Blog si hay 100 Entonces le voy a poner una prioridad más alta los temas de cómo se calendariza y demás una vez que tenemos la administración del proceso Cómo se va a calendarizar Y cómo está la administración de la memoria en dónde está el programa si está en la memoria RAM si no me ocupa la memoria RAM tengo que tener también la administración de los sistemas de archivos como les comentaba ahorita con el fat el rfs y luego tenemos lo que son la administración de cualquier otro recurso de entrada y salida d la llave malla o la USB stick que se conectó háblese de un joystick que yo acá pegar o el mismo micrófono o la pantalla que están en
10:02 este momento siendo utilizadas los sistemas operativos han tenido una evolución en el tiempo para empezar al inicio las computadoras eran De hecho hay una tarea que les pongo ir a Matilda normalmente y van a la ucr Ahí está Matilda es una computadora que funciona con tarjetas perforadas entonces eh No tenían un sistema operativo sino que básicamente se ejecutaba un un sistema si administraba el Hardware en eso cumplía con el propósito de sistema operativo porque está administrando el Hardware pero no servía para corrir doos programas sino que el sistema operativo solo corró un programa El que se ponía a ejecutar de hecho en estas computadoras normalmente Tenían un operador una persona que
10:47 recibía el programa metía lo cargaba el programa terminaba hacía las instrucciones que tenía que correr administraba el recurso o no administraba sino que tenía exposición todo el recurso no tenía que administrarlo porque era é mismo una una empresa digamos de una sola persona no ocupó un administrador verad y Eh pues esto eran los inicios obviamente esto complicaba traía situaciones que hacían que eh el sistema operativo de tipo serial o lo que llamamos que no es un sistema operativo porque no tiene el paso de que otras aplicaciones van a estar Aquí van a ser administradas sino que simplemente Usa los recursos del
11:33 sistema entonces que comen esa línea ambigua eh dijeren Cómo tener un operador y demás se crean los sistemas operativos en un batch o en un simple batch en procesos o en archivos por lotes Entonces ya se dejaban todos los programas acomodados uno tras otro Cuál es el que se va a ejecutar y el sistema operativo podía llegar y decir con algo que se llama el Job control Language luego lo vamos a hablar Ah bueno termino este programa dejo que corra cuando termine yo vuelvo a tomar el programa Tengo algo que se llama el dispater o el que despacha Qué proceso se va a estar ejecutando y termina ejecutar el programa a y pongo ejecutar el programa B termina el b y pongo el c sin depender de que hay un ser humano Entonces ya tenemos la ejecución por lotes y en los inicios de la computación esto era
12:19 excelente porque los procesos no eran de Cara a los seres humanos como hoy que estamos frente a la computadora los procesos eran más de Cara a digamos a procesos complejos de cálculos de nóminas cálculos de cuentas bancarias eran más cosas empresariales que ocupaban ejecutar sobre set de datos y que realmente eran procesos que se pueden ejecutar en lote o en Bach después alguien se dio cuenta que muchas veces Mientras que el proceso estaba por ejemplo imprimiendo o Mientras que el proceso por ejemplo estaba pasando la memoria o la cinta magnética o las tarjeticas o mientras que estuviera haciendo x operación el cpu estaba ocioso entonces se les
13:05 ocurrió y Qué pasa si hacemos multibat o multiprogramming o multitask y cómo funciona este sistema operativo sigue siendo en batch Yo sigo poniendo los procesos y digo Bueno quiero que se ejecute este quiero que se ejecute este y quiero que se ejecute este proceso ahora qué hago ejecuto este y se quedó pegado ejecuto un poquito de este Ah este se quedó pegado ejecuta un poquito de este es quedó pegado ejecuta un poquito de este se quedó pegado y ejecuta un poquito este se quedan pegados porque tal vez está esperando que el disco duro lea la información y mientras eso hace tengo una infinidad de tiempo milisegundos o segundos para el tiempo computacional es casi infinito en el que el sistema
13:52 operativo no está haciendo nada porque el proceso no lo necesita Entonces por qué no aprovecho ese recurso y voy haciendo chc uno de otro de otro de otro de alguna u otra forma y esto ya me permite que en vez de que yo ejecutara hasta que termine este programa ejecutó este poder hacer que se ejecutaran de manera concurrente esto siempre enfocado en la eficiencia y en mejorar el porcentaje de utilización del cpu tener todos esos espacios muertos de Cara a que las tareas que yo tuviera previamente en un Note programadas terminaran de una manera más rápida Por supuesto que hoy en día nosotros ya no usamos este tipo de sistemas operativos como personas Todavía existen para ciertas tareas
14:38 específicas Pero más bien tenemos más control de usuario o más enfocado en lo que viene siendo el uso de un usuario Entonces más o menos siguiendo la misma lógica del multibat o del multiprogramming el Time shing como el nombre lo dice en español compartir tiempo lo que hace es tratar de enfocarse en que el múltiples usuarios puedan interactuar simultáneamente ente con el proceso Y tratar de que más bien optimizar En vez de la utilización del cpu el Cómo el usuario va a sentir que este sistema operativo está entonces puede ser que dure un poco más pero yo necesito que la persona sienta más fluido que tiene más aplicaciones abiertas etcétera Y eso es lo que tenemos hoy en día con eh los Time shavings entonces aquí un poquito más
15:24 entrando verdad estas maquinitas viejas verdad eh tenen una interacción directa la calendarización las hacía probablemente un ser humano reservando como dice ahí eh una reserva física y pues mientras que ese programa ineficiente corría nadie más usaba y tenía muchos tiempos de Cómo configurar ir a poner las tarjetas o ir a poner a la computadora a la a la máquina que pudiera ejecutar ese proceso pues se hacía de una manera mucho más extensa y duraba tiempo entonces el batch al introducir el Job Language que es el Job Bat un monitor que pudiera ver cuándo terminaba cuando empezaba un programa y poder tener procesos que se ejecutaran secuencialmente Pues yo tal vez hacía solo un Setup y podía ejecutar un montón de procesos y tenía 100 procesos los
16:10 ponía de una vez y no tenía que estar en cada uno de esos 100 haciendo como en el serie un un reselling sino que ya los ponía los dejaba y ahí se iban ejecutando uno a la vez sin eh si se quedaba pegado y uno duraba una hora pues tenía que esperar una hora para que empezara el siguiente porque era el turno del proceso cco el proceso tiene que esperarse pero el proceso 6 decía pero y ocupo el cpu usted no lo está usando nada que hacer toda la computadora como un recurso completo lo tiene asignado el proceso 5 Entonces les mencionaba que introducimos el Job control Language que básicamente es un tipo de lenguaje de programación que nos sirve para decir que qué proceso tiene que correr Cuál es el proceso que sigue ya no es el ser
16:56 humano el que está poniendo sino como que hay una instrucciones relativamente básicas que me pueden decir cómo es ese Setup de ejecución Y cómo es que pasa en PR al otro sin tener que tener la intervención de un ser humano para que se realice sino que lo puedo dejar programado y ya eso me funciona en el entre los modos de operación esto lo hablamos desde el curso de AC los progamas pueden operar en el modo de usuario que es una capa un poco más alta más elevada y con menos seguridad eh Porque no están entrando a memorias que realmente tienen que ver con la parte estructural del sistema operativo entonces un programa normal corre en el modo de usuario Por qué Porque en el
17:42 user Mode o en el user Level que vamos a ver también en los hilos cuando hablamos de esta parte los programas eh tienen acceso Prácticamente solo a su memoria y a cosas que no pueden dañar el resto del del computador que está corriendo mientras que algunas cuestiones corren en kernel empezando el kernel de los sistemas operativos Pero eso se llama así el núcleo y esos corren en el modo privilegiado Qué quiere decir esto que pueden acceder a todas las áreas de la memoria a las instrucciones a dispositivos de entradas y salidas administrarlos y demás o sea con sistema operativo las partes básicas están ocurriendo en el kernel Mode y Esto hace que al tener acceso a todos esos apes Pues si algo falla ahí pues va a fallar en la computadora de forma general no tan aislado
18:31 e los sistemas multiprogram en batch Entonces nos van a permitir tener varios programas que estén cargados de manera simultánea en la memoria ya no solo uno sino yo puedo tener varios programas cargado de memoria simultánea Esto va a ha ser que yo tenga que estar haciendo switching entre usted ejecute usted ejecute usted ejecute usted ejecute usted y eso va a hacer que vaya a parecer que hay una mayor eficiencia al como les decía en el proceso cco que duraba una hora y el proceso 6 duraba 10 minutos probablemente Mientras que el proceso 5 estuvo pegado 5 minutos el proceso 6 se ejecutó Entonces el proceso 6 sintió que fue rapidísimo pero el proceso c duró una hora entonces el proceso se en uno serial hubiera durado una hora más 5 minutos y lo hace ineficiente Entonces lo hace un poco más
19:17 eficiente y tenemos que tener eh precaución y monitorear que las dispositivos de entradas y salidas eh Y realmente cualquier recurso del sistema no esté siendo utilizado ahora por dos procesos antes era muy simple yo sabía que la pantalla solo la usaba un proceso ahora pueden ser varios Cuál es el que tiene que estar en la pantalla o tengo un archivo Cuál es el que está escribiendo en el archivo y vamos a ver a través del curso un montón de problemas de técnicas de situaciones que pasan justamente porque eh A veces se traslapan eh lo que llamamos en una zona crítica Y tenemos algún conflicto de queos tratan de usar el mismo y eso nos provoca un montón de problemas de la concurrencia de tener estes temas de varias aplicaciones corriendo de manera
20:05 simultánea Entonces el Time sharing está hecho para múltiples usuarios y lo más importante es que el procesador aunque se está haciendo eh a nivel de varios usuarios para que atienda varias eh personas conectadas a sesiones y todo lo que lo hace más importante es que es la rápida respuesta queremos minimizar el tiempo que un usuario tiene que esperar Yo no tengo esperar 5 minutos sino que voy a tratar de que todos los usuarios sientan que el sistema está fluido y está haciendo algo aquí tenemos esta comparativa verdad entre un sistema multibat y un Time sharing y repito ambos son multi programa o ambos son multitasking la diferencia es el enfoque Por qué Porque
20:50 en el batch que eran procesos donde el ser humano no entraba sino que se jalaba se iba a tomar un café o regresaba al día siguiente lo importante era maximizar el uso del proces procesador y el recurso que la máquina estuviera al 100% ocupada con todos sus componentes tratar de llegar a que tuviera la máxima utilización mientras que en el Time sharing es tratar de reducir el tiempo de respuesta tratar de que la gente sienta que respondió más rápido el sistema porque el usuario sí está al frente eh Y eso es la principal diferencia ahí tenemos otra pero la principal diferencia que quiero que se lleven en el Time sharing nos enfocamos en minimizar el tiempo de respuesta para que el usuario se sienta O sea cara al usuario mientras que en el multibat nos enfocamos en maximizar el uso del procesador O sea que nuestro equipo esté
21:37 Eh no esté subutilizado que esté utilizado lo mejor posible así los principales avances en los sistemas de operativos van sobre todo en Cómo pueden optimizar la ejecución de los procesos Cómo pueden mejorar las formas en que se almacena en la memoria y se administra la memoria tanto a nivel de disc duro sino a también a nivel de memoria RAM y sobre todo a nivel de memoria RAM que es lo que va a hacer que la computadora sea más rápida al final si tiene mejores velocidades pu esto que es la memoria principal temas de información es temas de todos los días porque es como les comentaba donde vienen los ataques incluso Las mayores actualizaciones y Buscar mecanismos de calendarización de los procesos que vayan a ver más
22:25 eficientes tenemos la definición de Qué es un proceso y lo importante acá es esto un proceso es un programa en ejecución Yo tengo un programa escrito ustedes lo hicieron en python lo hicieron en cs interpretado compilado pero eso es algo inerte un virus por poner un ejemplo si no se está corriendo es inerte en el momento en que ese virus se ejecuta se crea una instancia de este programa corriendo en ese momento se define un espacio en memoria se le define un la cantidad de recursos que puedo usar un tiempo de calendarización cuándo se va a ejecutar en ese momento el proceso perdón el programa se convierte en proceso y ahí es donde sí hace algo en el computador mientras que
23:11 solo está escrito aunque esté ahí el punto exe eso no hace nada si no puede ser compatible con la arquitectura donde va a correr no se va a hacer un proceso y si no es un proceso Entonces no va a afectar o no va a realizar las operaciones que debería realizar así el proceso tiene tres componentes importantes la Data digamos Eh bueno la Data las instrucciones y el contexto las instrucciones me dicen que debe de hacer el programa sumar el registro uno más el registro dos la Data el valor que en el registro uno con el valor que en el registro dos y que lo quiero guardar en el registro tres Entonces ahora sí ya no sería sumar el registro uno con el registro dos y guárdelo en el registro
23:57 tres instrucción sino que sería sumar 22 + 26 y guardo ese resultado de 48 en el registro 3es eso es la Data y el contexto es toda esa información adicional que me dice si el proceso está corriendo que Quién creó el proceso e tenemos algo que se llama el process ID o el Pit que es eh el identificador del proceso con el que yo puedo darle seguimiento trazabilidad a través de toda su ejecución etcétera de esta manera la principal responsabilidad de un sistema operativo va ha ser administrar estos procesos sus calendarizacion y sus accesos a
24:57 memoria al
30:26 al al como he comentado anteriormente usamos el concepto de memoria virtual es una de las cosas que nos prevee el sistema operativo Qué hace la memoria virtual
31:13 bueno como su nombre lo indica es una memoria que está simulando una memoria real y por supuesto Siempre que hablamos de virtualizar Tenemos que tener algo que le dé soporte si yo uso una consola de videojuegos virtual un emulador de Nintendo 64 de PlayStation tiene que corer sobre una computadora real esto transforma el Hardware y permite ejecutar programas de Eh pues del Playstation o el Nintendo Lo mismo sucede con la memoria virtual la memoria virtual tiene que tener entonces una memoria o algún tema de almacenamiento que permita virtualizar otra memoria o simular ser otra memoria en este caso la memoria virtual por lo general eh tiene un comportamiento que incluso pudiera estar en la memoria física o sea
31:59 la memoria virtual puede estar en la memoria principal en la memoria RAM y también puede estar en la memoria del disco duro entonces para que tengan una idea la memoria virtual hace que si yo tengo 2 gb de memoria RAM mi computadora pueda sentir o mis programas que tienen más porque estoy utilizando la memoria secundaria el disco duro como parte de la memoria eh principal virtualiza eso es básicamente lo que hace vuelvo explicar la memoria virtual Entonces es la que van a decirle a los programas o es la memoria lógica y los programas lo que conocen es la memoria virtual ya los programas no interactúan con la memoria física o la memoria principal en vez de eso le piden la memoria al sistema
32:44 operativo le dicen requiero de la memoria principal entre comillas requiero eh la posición 500 el sistema operativo sabe dónde está esa posición 500 que puede estar en la memoria RAM o puede estar en la memoria secundaria el sistema operativo lo sabe Y dice Uy la tengo en la memoria secundaria Qué tengo que hacer traerle la memoria principal ubicarla y decirles mira aquí está la memoria que usted ocupa usted me está pidiendo la posición 10 Ah mira la posición 10 es esta pero da igual la posición 10 sigue siendo esta o esta o esta sin importar En qué punto de la memoria física Realmente está como digo incluso pudiendo estar en la memoria secundaria y si en este caso está la memoria secundaria entonces quiere decir que además puedo hacer que se se vea más grande o sea si yo tengo 4 gbas Ahora
33:30 puedo tener ocho etcétera para hacer esto utilizamos dos técnicas paginación y segmentación básicamente la gran diferencia entre segmentación Y paginación es que si yo agarro una página disculp un momento las páginas tienen una cantidad de renglones estándar estas páginas que tienen un arregl estándar si yo llevo y digo que un programa Solo un programa puede estar en esta página y yo ahora escribo Aquí tengo este montón de información y yo solo utilizo el primer renglón ahí puse nada toda esta página ya está utilizada y nadie más la puede usar solo yo puedo escribir Acá tengo un montón de espacio desperdiciado Mientras que el segmento viene siendo más como un rollo un papiro donde yo puedo seguir escribiendo y escribiendo y escribiendo y escribiendo
34:15 y donde ya no neist más corto y crece diferentes tamaños sin embargo eh aquí Lo importante es que las páginas pueden estar ubicadas donde sea en la memoria física tanto en la memoria principal como en la memoria secundaria pero normalmente nos referimos más cuando están en la memoria secundaria porque cuando están en la memoria principal que también son de tamaño fijos les llamamos fragmentos o frames de memoria y aquí una diferencia importante vemos que las páginas entonces son o y después tenemos la técnica paginación las páginas son de tamaño fijo y están en cualquier parte de la memoria incluyendo la memoria secundaria ybre todo muchas veces en la memoria secundaria mientras que los
35:00 segmentos también están en la memoria secundaria pero son de tamaño variable se van a ajustar mejor al dato si el dato ocupaba cuatro líneas pues va a usar un bloque de cuatro líneas si ocupaba 100 va a ocupar 100 y entonces tenemos eh un mecanismo con mtb stables vamos a ver durante toda una clase lo que es la memoria virtual a más detalle pero tenemos un mecanismo en que los programas entonces solicitan la memoria lógica o memoria virtual la dirección dien Quiero la posición 500 y el programa se encarga de este programa el sistema operativo se encarga de hacer esa traducción para poder ubicarla e incluso en algunos casos u localizarla location eh posicionarla en la memoria física y
35:45 decir bueno ahora sí lo que Ed anda buscando está aquí mire y el programa no se da cuenta el programa cree que tiene mucha memoria casi que infinita bueno obviamente depende de la memoria secundaria o de los límites que el sistema operativo tenga y lo que sintió fue que fue más lento dijo mm tengo mucha memoria pero fue lentito y Bueno ahí vemos todo Ya el principio de jerarquía de memoria eh Verdad que entre más arriba es más rápido eh Y más costoso también verdad todo eso sigue aplicando acá y el principio de localidad que es traerme justamente un bloque completo como en este caso la página porque probablemente yo ocupe las instrucciones que vengan a continuación así para hacer este tipo de cuestiones de traducciones lo que tenemos es como les comentaba la la
36:32 dirección virtual que es diferente a la dirección física la dirección física Es en la posición exacta en la memoria en que está o en el clúster digamos Esa está en la posición un de la memoria RAM la do la TR la cuatro la cinco dependiendo del bloque en cuál blo estoy utilizando la memoria virtual simplemente es la memoria que el programa escribe y ojo una importancia en esto si yo tengo estas dos presentaciones tarjetas de presentación que estoy usando hoy que son exactamente iguales pero vea que esta dice mi nombre en la primera línea y esta también y yo tengo dos instancias del programa para ambos están en la primera línea para el proceso que lee esto en la primera línea tiene que leer y para el proceso que lee esto en la primera línea tiene que leer esto permite que yo pueda crear un notepad por poner un ejemplo un editor de texto un Word y tienen el mismo
37:19 instrucción y las instrucciones dicen váyase a la posición uno a la posición uno de dónde de mi memoria el espacio que a mí yo tengo asignado porque para a mí en mi proceso de insolación yo como proceso digo Ah no Yo estoy insolado y a mí solo existe las memorias que a mí me asignaron Entonces yo pido la uno la memoria virtual gracias a la tabla de traducciones dice ay para el proceso de Word el primer Word que abrió la tabla o la página donde está la información es esta y para el otro es esta Y entonces el programa lo ubica y dice Ah okay van en páginas diferentes el sistema artigo le hace la traducción pero cuando usted le dice sí la en la primera renglón está mi nombre en el segundo renglón está el texto que escribí etcétera etcétera de todo lo que
38:07 puedo ir poniendo en esos datos y están en diferentes posiciones pero desde la perspectiva del programa están en la misma posición y así puedo tener múltiples instancias del mismo programa porque no todas están viendo la misma página ven páginas diferentes pero en la mism dirección de páginas diferentes después veremos esos conceptos como calcularla la dirección nativas etcétera En en la profundidad de la clase completa de memorias virtuales sobre la seguridad de la información que habíamos hablado ya anteriormente eh el sistema operativo tiene que proveerme mecanismos de privacidad de que la Data no se afecte ustedes no quieren tener guardados un archivo y que de repente Uy abrí el archivo y está corrupto pasa pero hay mecanismos que el sistema operativo
38:53 intenta para que esa Data no se corrompa y también la Data que está la memoria RAM porque si no usted está escribiendo algo no ha guardado no está en el disco duro y de repente todo lo que tiene arriba son caracteres raros porque hubo corrupción así hay una serie de amenazas también que se han ido encontrando y el sistema operativo tiene que ir viendo Cuáles son las estrategias que puede implementar por ejemplo agregar firewalls vamos a hablar de eso en varios cursos eh pero agregar mecanismos o capas de seguridad que eviten ataques y que permitan que el sistema sea resiliente estable que sea menos propenso a virus menos propenso a ataques pored eh cualquier tema de seguridad incluyendo también la privacidad que los datos no puedan ser extraídos fácilmente por ejemplo Windows incorpora algo que se llama el bitlocker que si ustedes sacan el disco duro y lo
39:38 ponen en otra computadora no les va a funcionar si no activan porque viene con unos algoritmos criptográficos y me ayuden entonces en esta manera a proteger información sensible o si yo tengo varios usuarios en mi computadora muchas veces yo no puedo entrar a un usuario del otro esa carpeta está privada pueden intentarlo crear los que tienen a Wi crear dos usuarios Y tratar de entrar a otro desde un usuario que no sea administrador a otro usuario no administrador y verán que probablemente no puedan acceder a la carpeta de mis documentos eh con respecto a la calendarización y a la administración de los recursos hay varias técnicas que pueden ser utilizadas o varios enfoques por ejemplo el fairness o el más justo diríamos que es más justo que yo tienda El que entró
40:24 primero pero normalmente El que entró primero no qui quiere decir que sea el que sea más rápido y por lo ende probablemente no sea el más eficiente vamos a ver si yo estoy en la fila de un supermercado y de repente eh tengo la persona que está enfrente mío va apenas entrar a pagar en la fila y él tiene dos carritos de compra repletos y yo solo vengo con una lata de coca-cola lo más justo es que lo atiendan al primero porque é llegó primero a la caja Pero quizás lo más eficiente es que me atiendan a mí primero yo ya me voy feliz no tengo que esperar las 2 horas más el ratito de mi copa coca y el otro tampoco le efecte tanto esperarse a que yo compre mi coca-cola light fue más eficiente pero menos justo porque lo justo era el que llegó primero sea el primero que atiendo también podemos tener esta administración por diferentes
41:12 de responsabilidades o por diferencial de responsabilidades esto nos puede dar eh basado en una tabla de prioridades en el caso igual del supermercado llegó una persona con la ley 7600 aquí en Costa Rica que es la gente con cierto grado de discapacidad embarazadas o adultos mayores y bueno se cola pasa al frente tiene más prioridad en un sistema operativo puede ser que que este es el menos justo si lo ven que de repente hay un proceso que tiene mayor severidad porque si no la computadora se va a quemar o tiene mayor importancia para ejecutar porque es más de de un criterio de muchísimo más desempeño ocupa eh más atención del usuario que es nuestro enfoque Y entonces un proceso que tal vez podía ser como una actualización dice y no yo me puedo esperar lo mío no urge tanto tanto entonces Lo justo es
41:58 que yo vaya primero yo primero pero lo mío no urge tanto entonces que vaya él porque tiene esta diferenciación de responsabilidades y también el sistema operativo tiene que evitar a toda Costa los deadlocks los procesos no pueden caer en que si caen en un de es un círculo vicioso y ahí van a quedar de manera indefinida Hasta que el sistema operativo tome veremos técnicas para prevenir que eso pase para evitar que eso pase y para detectar que pasen y que hacer cuando se detecte los sistemas operativos pueden tener diferentes enfoques de cómo lidiar con el deadlock aquí hicimos aines Pero también es prevenir eh No solo es evitar es prevenir es detectar dependiendo del enfoque Lo importante es que tenemos que tener la forma de cómo lidiar con estos deadlocks que era cuando varios recursos
42:45 recuerden eh o dos o más recursos necesitan están bloqueados y para desbloquearse necesitan el recurso del otro eh de otro proceso que a la vez necesita en en este círculo Digamos si fueran dos a tiene el recurso uno y necesita el recurso dos pero B tiene el recurso 2s y necesita el recurso uno entonces a se bloquea esperando que B Se libere y b se bloquea esperando que a se libere y como los dos están esperando que el otro se libere para poder continuar y liberar los recursos que tienen que ocuparía el otro de Pues yo se lo doy cuando usted me lo de yo se lo doy cuando usted me lo dé yo se lo doy cuando usted me lo de yo se lo doy cuando usted me lo de nadie lo dio y ahí queda en un círculo eh vicioso verdad por la eternidad Hasta que el sistema operativo alguien apague la comput o haya una forma de solucionar
43:31 eso Entonces como les digo hay formas para evitar que esto nunca suceda hay formas para prevenir que esto nunca suceda formas para evitar antes de que suceda hacer algo para que no no pase y formas para detectarlas cuando ya pasan de pasó hagamos algo al respecto lo veremos con más profundidad durante el curso algunos elementos esenciales de los sistemas operativos modernos es que tenemos el kernel hablábamos de micro kernel verdad que eran muy chiquiticos y tenían solo lo básico el kernel monolítico pero vemos que es la parte más importante porque corre además en la memoria privilegiada es la que puede acceder a todos los espacios de memoria todos tienen que tener administración de memoria administración de procesos de hecho el les dejo de tareas Se los voy a dejar ahí bajar el process Explorer Y explorar cómo está su computadora que es
44:17 como un administrador de tareas donde pueden ver cuáles son los procesos que están corriendo eh y cuáles son los que más consumen tiempo las prioridades es tiene más prioridad o afinidades que hacen Qué procesador va a correr el proceso ahí les voy a dejar también el link en la sección de la semana y por supuesto Cómo se administran los archivos ya en lo que es el long term o ya un archivo en el disco duro Cómo se guarda Cómo se accede el tema de carpetas etcétera el enfoque de los sistemas operativos actuales tratan de ser multitrading antes en el en el dos usted escribía en la consolita negra recuerdan del dosbox cuando lo utilizábamos se nos bloqueaba y tenemos que salar todo porque solo haba un hilo solo podemos
45:03 ejecutar una cosa a la vez ahora Tratamos de que sean multitrading varias cosas ejecutándose de manera simultánea Tratamos de ser más orientado a objetos eh Ahora muchos el tema de la computación distribuida que por ejemplo las grandes supercomputadoras habíamos visto en el curso de B bas que incluso eran varias computadoras conectadas que actuaban como una sola en sistema distribu verdad e el famoso procesadores multisim étrico lo hemos hablado desde bas el repaso de la semana pasada y hay Algunos enfoques que intentan ser un enfoque minimalista con micro kernels para evitar que no se caiga sin embargo Ya nadie casi usa un monolítico lo que se está usando más son los kernels híbridos que tienen bastante
45:50 en el microcel pero también bastante en separado Linux sigue siendo monolítico y Windows es más hbo alg un enfoque modernos sobre todo por temas de eficiencias es hacer los microcel y como comentábamos el micro kernel solo tenemos Lo esencial en el espacio del kernel y todos los demás servicios que en un monolítico correrían también en el kernel los tenemos como que fueran aplicaciones satélites que van a correr en el espacio de usuario Esto hace que el sistema operativo sea más fácil agregarle cosas porque se agregan como aplicaciones adicionales y hacemos que que sea bastante eficiente para lo que viene siendo la parte esencial con el concepto de multihilo y después veremos que es un hilo eh pero
46:38 el concepto multihilo nos permite tener una unidad de trabajo todavía más pequeñita que a diferencia de un proceso que requiere crearse un espacio de memoria tener un tiempo de calendarización y demás el el hilo que también es llamado el proceso ligero o a light process nos da el hilo de ejecución se corre en un proceso dependiendo de cómo sea veremos si los ults y los klts y una técnica que se llama jacketing dependiendo de cómo sea el hilo si el hilo es vlt si el hilo se bloquea bloquea el proceso porque corren el user Level pero si corren el kernal Level o sea un kt y se bloquea se bloquea solo el hilo si quedan hilos restantes en el proceso el hilo de ejecución Entonces nos permite que un solo proceso tenga dos o varias ramas en
47:25 las que se puede ejecutar y así una llamada que sea bloqueante o sea espero a que descargue el archivo no impide que el programa se vaya a quedar pegado hay programas multiprocesos hay programas multihilos y hay programas multiprocesos multihilos por supuesto los hilos son mucho más eficientes que un proceso en el orden de que ellos no tienen que buscar espacio para calendarizar ni espacio para ubicarse en memoria porque ya están corriendo dentro del proceso