1) DIFERENCIAS ENTRE SISTEMA MAQUUINA SUBDYACENTE OPERATIVO MAQUINA DIFERENCIAS ENTRE SISTEMA OPERATIVO ¿QUE ES UNA MAWINA VIRTUAL? MAQUUINA SUBDYACENTE Una máquina virtual es un contenedor de El sistema operativo (a veces también software perfectamente aislado que citado mediante su forma abreviada OS puede ejecutar sus propios sistemas en inglés) se encarga de crear el vínculo operativos y aplicaciones como si fuera entre los recursos materiales, el usuario y un ordenador físico. Una máquina virtual las aplicaciones (procesador de texto, se comporta exactamente igual que lo videojuegos, etcétera). Cuando un hace un ordenador físico y contiene sus programa desea acceder a un recurso propios CPU, RAM, disco duro y tarjetas material, no necesita enviar información específica a los dispositivos periféricos; de interfaz de red (NIC) virtuales. simplemente envía la información al El sistema operativo no puede establecer sistema operativo, el cual la transmite a una diferencia entre una máquina virtual los periféricos correspondientes a través y una máquina física, ni tampoco lo de su driver (controlador). Si no existe pueden hacer las aplicaciones u otros ningún driver, cada programa debe ordenadores de una red. Incluso la propia reconocer y tener presente la máquina virtual considera que es un comunicación con cada tipo de ordenador “real”. Sin embargo, una periférico. Así pues cuenta con cuatro máquina virtual se compone elementos estructurales exclusivamente de software y no contiene 2) MEMORIA PRINCIPAL ninguna clase de componente de hardware. El resultado de ello es que las 3) UNIDAD LOGICO máquinas virtuales ofrecen una serie de ARITMETICA ventajas con respecto al hardware físico. 4) CONTROL DE PROCESOS 5) DISPOCITIVOS DE ENTRADA Y SALIDA VIRTUAL Y 2) ESQUEMATIZAS EL SUCESO DE UNA INTERUPCION 3) ESQUEMATIZAR LAS FUNCIONES Y/O OBJETIVOS DE UN SISTEMA OPERATIVO 4) COMO CONTROLA Y/O PROCESA LAS TAREAS EL SISTEMA OPERATIVO · Administración del procesador: el sistema operativo administra la distribución del procesador entre los distintos programas por medio de un algoritmo de programación. El tipo de programador depende completamente del sistema operativo, según el objetivo deseado. · Gestión de la memoria de acceso aleatorio: el sistema operativo se encarga de gestionar el espacio de memoria asignado para cada aplicación y para cada usuario, si resulta pertinente. Cuando la memoria física es insuficiente, el sistema operativo puede crear una zona de memoria en el disco duro, denominada "memoria virtual". La memoria virtual permite ejecutar aplicaciones que requieren una memoria superior a la memoria RAM disponible en el sistema. Sin embargo, esta memoria es mucho más lenta. · Gestión de entradas/salidas: el sistema operativo permite unificar y controlar el acceso de los programas a los recursos materiales a través de los drivers (también conocidos como administradores periféricos o de entrada/salida). · Gestión de ejecución de aplicaciones: el sistema operativo se encarga de que las aplicaciones se ejecuten sin problemas asignándoles los recursos que éstas necesitan para funcionar. Esto significa que si una aplicación no responde correctamente puede "sucumbir". · Administración de autorizaciones: el sistema operativo se encarga de la seguridad en relación con la ejecución de programas garantizando que los recursos sean utilizados sólo por programas y usuarios que posean las autorizaciones correspondientes. · Gestión de archivos: el sistema operativo gestiona la lectura y escritura en el sistema de archivos, y las autorizaciones de acceso a archivos de aplicaciones y usuarios. · Gestión de la información: el sistema operativo proporciona cierta cantidad de indicadores que pueden utilizarse para diagnosticar el funcionamiento correcto del equipo. Gestión de procesos Procesos y tareas Proceso una dentición tradicional de proceso es la de instancia de un programa en ejecución. La ejecución de tal programa es indicada al SO mediante una acción u orden especializada. El SO responde en ese punto creando un nuevo proceso. En general, esta actividad consiste en la creación e inicialización de estructuras de datos en el SO para monitorizar y controlar el progreso de proceso en cuestión. Una vez creado, el proceso pasará a estar activó y competirá por la utilización de recursos del sistema como el procesador y los dispositivos I/O. Un proceso evoluciona cýclicamente entre perýodos de ejecución activa y de espera por la terminación de actividades de I/O. Cuando un proceso queda inactivo por especi?car una operación de I/O y quedar a la espera de que ´esta se complete, el SO puede plani?car la ejecución de otro proceso. Desde este punto de vista, un proceso es una entidad individualmente plani?cable, que puede ser asignada al procesador y ejecutada por ´este. El SO controla, pues, dina- micamente la evoluciono de los procesos registrando la información correspondiente a sus cambios cuando ´estos se produzcan. Esta información es utilizada por el SO para sus labores de plani?cacion y gestión sobre el conjunto de procesos que en un determinado momento pueden coexistir en el sistema informático. De esta forma además de la plantilla estática constituida por el programa ejecutable en que se basa, un proceso posee ciertos atributos que ayudan al SO en su gestión. Los atributos de un proceso incluyen su estado actual, unidad de plani?cacion, derechos de acceso, nivel de prioridad entre otros datos. Desde el punto de vista del usuario, un proceso no es más que la ejecución de un conjunto de instrucciones que llevan a cabo una determinada tarea, mientras que para el SO es una entidad que atraviesa dinámicamente Un conjunto de estados y que solicita los recursos del sistema que le son necesarios. De esta forma, el acceso a tales recursos debe ser platicado de forma que se consiga un rendimiento en la utilización de los mismos lo más ´optimo posible. 5) ESQUEMATIZAR LOS ESTADOS DE UN PROCESO Modelo de dos estados No ejecución y en ejecución EXPEDIR SALIR ENTRAR EJECUCION NO EJECUCION PAUSAR Modelo de cinco estados NUEVO, LISTO, EJECUCION, ESPERA Y TEREMINADO NUEVO TERMINADO LISTO ESPERA EJECUCION Transiciones de los estados de los procesos 6) CUANDO ABLAMOS DE UN PLANIFICADOR DE LARGO PLAZO, CORTO PLAZO Y MEDIANO PLAZO PLANIFICACION AALRGO PLAZO (PLP) Su misión consiste en controlar la admisión de procesos nuevos al sistema. Cuando Esta presente este tipo de plani?cador, su objetivo principal es proporcionar una mezcla Equilibrada de trabajos. El PLP decide cuando se da entrada al sistema a un nuevo Proceso para que ´este sea ejecutado. Este proceso puede proceder de la respuesta al Envío de un trabajo por lotes o bien a la orden de ejecución realizada por el usuario. En Cierto modo, el PLP actúa como una válvula de admisión de primer nivel para mantener PLANIFICADOR A CORTO PLAZO (PCP) Este plani?cador decide qué procesos toman el control de la CPU. El PCP asigna el Procesador entre el conjunto de procesos preparados residentes en memoria. Su principal objetivo es maximizar el rendimiento del sistema de acuerdo a con el conjunto de criterio elegidos. Al estar a cargo de la transición de estado preparado a ejecución, el PCP deber ser invocado cuando se realice una operación de conmutación de procesos para seleccionar En una unidad de tiempo se utilizara menos veces y ello hará posible que su estructura sea mas compleja. PALNIFICADOR A MECIO PLAZO (PMP) El PMP tiene por misión traer procesos suspendidos a la memoria principal. Este Plani?cador controla la transición de procesos en situación de suspendidos a situación de preparados. El PMP permanecerá inactivo mientras se mantenga la condición que dio lugar a la suspensión del proceso, sin embargo, una vez desaparecida dicha condición el PMP intenta asignar al proceso la cantidad de memoria principal que requiera y volver a dejarlo en situación de preparado. Para funcionar adecuadamente, el PMP debe disponer de información respecto a las necesidades de memoria de los procesos suspendidos, lo cual no es complicado de llevar a la práctica ya que el tamaño real del proceso puede ser calculado en el momento de suspenderlo almacenándose en el BCP. Este plani?cador será invocado cuando quede espacio libre en memoria por la terminación de un proceso o cuando el suministro de procesos preparados quede por debajo De un limite especi?cado 7) QUE ES LA PROGRAMACION CONCURRENTE 4.1. Multitarea, multiprogramación y multiproceso Un sistema multitarea es aquel que permite la ejecución de varios procesos sobre un procesador mediante la multiplexaci´on de este entre los procesos. La multitarea se implementa generalmente manteniendo el código y los datos de varios procesos simultáneamente en memoria y multiplexado el procesador y los dispositivos E/S entre ellos. La multitarea suele asociarse con soporte software y hardware para la protección de memoria con el en de evitar que los procesos corrompan el espacio de direcciones y el comportamiento de otros procesos residentes en memoria, un sistema multitarea, sin embargo, no tiene necesariamente que soportar formas elaboradas de gestión de memoria y archivos. En este sentido multita tarea es sencillamente sinónimo de concurrencia. El termino multiprogramación designa a un SO que además de soportar multitarea proporciona formas bosticadas de protección de memoria y fuerza el control de la con- correncia cuando los procesos acceden a dispositivos E/S y a archivos compartidos, en general la multiprogramación implica multitarea pero no viceversa. Los SSOO operativos de multiprogramación soportan generalmente varios usuarios en cuyo caso también se les denomina sistemas multiusuario o mulatices. Los SSOO para multiproceso gestionan la operación de sistemas informáticos que incorporan varios procesadores conocidos habitualmente como sistemas multiprocesadores. Los SSOO para multiprocesadores son multitarea por dentición ya que soportan la ejecución simultánea de varias tareas o procesos sobre diferentes procesadores y serán multiprogramados si disponen de los mecanismos de control de concurrencia y protección de memoria adecua- dos. En general todos los SSOO de multiprogramación se caracterizan por mantener un conjunto de procesos activos simultáneamente que compiten por los recursos del sistema, incluidos el procesador, la memoria y los dipositivos E/S. Un SO de multiprogramación vigila el estado de todos los procesos activos y de todos los recursos del sistema, cuando se producen cambios importantes de estado, ocupando es invocado explícitamente el SO se activa para asignar recursos y proporcionar ciertos servicios de su repertorio. 8) QUE SON LOS INTERBLOQUES 1. Principios de interbloqueo Una situación de interbloqueo tiene lugar cuando ninguno de los procesos que compiten por los recursos del sistema o interactúan entre si puede avanzar por carecer de algún recurso o esperar a que se produzca algún tipo de evento. 1.1. Recursos reutilizables Un recurso reutilizable es aquel que puede ser utilizado por un proceso y no se agota por hacer uso del mismo, los procesos obtienen unidades de estos recursos y tras utilizarlas las liberan para que puedan ser reutilizadas por otros procesos. Como ejemplos de recursos reutilizables tenemos el procesador, la memoria principal y los dispositivos E/S. 1.2. Recursos consumibles Un recurso consumible es aquel que puede ser producido y consumido. Normalmente no hay liýmite en el número de recursos consumibles de un tipo particular. Ası un proceso productor podrá liberar cualquier número de recursos consumibles. Las ´únicas restricciones en este sentido vendrán impuestas por la capacidad de almacenamiento temporal del sistema. Cuando un proceso consume un recurso de este tipo la parte consumida queda excluida del sistema. Ejemplos týpicos son: interrupciones, señales y mensajes. 9) CUALES SON LAS FUNCIONES BASICAS QUE NUCLEO PROPORCIONA Núcleo Esquema básico de la interacción entre un Núcleo, el resto del Software (los programas de aplicación, las bases de datos, etc.) y el Hardware. Que es el NUCLEO En informática, el núcleo (también conocido en español con el anglicismo kernel, de raíces germánicas como kern) es la parte fundamental de un sistema operativo. Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma más básica, es el encargado de gestionar recursos, a través de servicios de llamada al sistema. Como hay muchos programas y el acceso al hardware es limitado, el núcleo también se encarga de decidir qué programa podrá hacer uso de un dispositivo de hardware y durante cuánto tiempo, lo que se conoce como multiplexado. Acceder al hardware directamente puede ser realmente complejo, por lo que los núcleos suelen implementar una serie de abstracciones del hardware. Esto permite esconder la complejidad, y proporciona una interfaz limpia y uniforme al hardware subyacente, lo que facilita su uso para el programador. Funciones generalmente ejercidas por un núcleo Los núcleos tienen como funciones básicas garantizar la carga y la ejecución de los procesos, las entradas/salidas y proponer un interfaz entre el espacio núcleo y los programas del espacio del usuario. Aparte de las funcionalidades básicas, el conjunto de las funciones de los puntos siguientes (incluidos los pilotos materiales, las funciones redes y sistemas de ficheros o los servicios) necesariamente no son proporcionados por un núcleo de sistema de explotación. Pueden establecerse estas funciones del sistema de explotación tanto en el espacio usuario como en el propio núcleo. Su implantación en el núcleo se hace en el único objetivo de aumentar los resultados. En efecto, según la concepción del núcleo, la misma función llamada desde el espacio usuario o el espacio núcleo tiene un coste temporal obviamente diferente. Si esta llamada de función es frecuente, puede resultar útil integrar estas funciones al núcleo para aumentar los resultados. Hay que señalar que estas técnicas son utilizadas para atenuar defectos de los núcleos como los elevados estados. En la medida de lo posible, es preferible escribir un programa informático fuera del núcleo, en el espacio usuario. En efecto, el espacio del núcleo, supone la ausencia de mecanismos como la protección de la memoria. Es pues más complejo escribir un programa informático que funciona en el espacio del núcleo, que en el espacio usuario; los errores y faltas de seguridad pueden ser elevados. 10) DIFERENCIAS ENTRE LENGUAJES MODO DE USUARIO DE ALTO NIVEL Lenguaje de alto nivel Los lenguajes de programación de alto nivel se caracterizan por expresar los algoritmos de una manera adecuada a la capacidad cognitiva humana, en lugar de a la capacidad ejecutora de las máquinas. En los primeros lenguajes de alto nivel la limitación era que se orientaban a un área específica y sus instrucciones requerían de una sintaxis predefinida. Se clasifican como lenguajes procedí mentales. Otra limitación de los lenguajes de alto nivel es que se requiere de ciertos conocimientos de programación para realizar las secuencias de instrucciones lógicas. Los lenguajes de muy alto nivel se crearon para que el usuario común pudiese solucionar tal problema de procesamiento de datos de una manera más fácil y rápida. La programación en un lenguaje de bajo nivel como el lenguaje de la máquina o el lenguaje simbólico tiene ciertas ventajas: · Mayor adaptación al equipo. · Posibilidad de obtener la máxima velocidad con mínimo uso de memoria. Pero también tiene importantes inconvenientes: · Imposibilidad de escribir código independiente de la máquina. · Mayor dificultad en la programación y en la comprensión de los programas. Por esta razón, a finales de los años 1950 surgió un nuevo tipo de lenguajes de programación que evitaba estos inconvenientes, a costa de ceder un poco en las ventajas. Estos lenguajes se llaman "de tercera generación" o "de alto nivel", en contraposición a los "de bajo nivel" o "de nivel próximo a la máquina". Principales lenguajes de alto nivel [editar] · Ada · ALGOL · Basic · C# · Clipper · COBOL · Fortran · FoxPro o Visual Foxpro · Java · Lexico · Logo · PL/SQL · RPG · MATLAB · SISTEMA BERNAL ITM · Modula-2 · Lenguajes funcionales o Haskell o Lisp BAJO NIVEL Saltar a navegación, búsqueda Un lenguaje de programación de bajo nivel es el que proporciona poca o ninguna abstracción del microprocesador de un ordenador. Consecuentemente es fácilmente trasladado a lenguaje de máquina. La palabra "bajo" no implica que el lenguaje sea inferior a un lenguaje de alto nivel; se refiere a la reducida abstracción entre el lenguaje y el hardware. Uso: ventajas e inconvenientes. [editar] En general se utiliza este tipo de lenguaje para programar controladores (drivers). La programación en un lenguaje de bajo nivel como el lenguaje de la máquina o el lenguaje simbólico tiene ciertas ventajas: · Mayor adaptación al equipo. · Posibilidad de obtener la máxima velocidad con mínimo uso de memoria. Pero también tiene importantes inconvenientes: · Imposibilidad de escribir código independiente de la máquina. · Mayor dificultad en la programación y en la comprensión de los programas. · El programador debe conocer más de un centenar de instrucciones. · Es necesario conocer en detalle la arquitectura de la máquina. Características · Se trabaja a nivel de instrucciones, es decir, su programación es al más fino detalle. · Está orientado a la máquina. Primera generación [editar] El lenguaje de programación de primera generación (por sus siglas en inglés, 1GL), es el lenguaje de código máquina. Es el único lenguaje que un microprocesador entiende de forma nativa. El lenguaje máquina no puede ser escrito o leído usando un editor de texto, y por lo tanto es raro que una persona lo use directamente. Segunda generación [editar] El lenguaje de programación de segunda generación (por sus siglas en inglés, 2GL), es el lenguaje ensamblador. Se considera de segunda generación porque, aunque no es lenguaje nativo del microprocesador, un programador de lenguaje ensamblador debe conocer la arquitectura del microprocesador (como por ejemplo las particularidades de sus registros o su conjunto de instrucciones). ENSAMBLADOR Y EJEMPLOS Ejemplo Lenguaje ensamblador Lenguaje de máquina del Intel 8088. El código de máquina se resalta en rojo, el equivalente en lenguaje as sembler en magenta, y las direcciones de memoria donde se encuentra el código, en azul. El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas informáticos, y constituye la representación más directa del código máquina específico para cada arquitectura de computadoras legible por un programador. Fue usado ampliamente en el pasado para el desarrollo de software, pero actualmente sólo se utiliza en contadas ocasiones, especialmente cuando se requiere la manipulación directa del hardware o se pretenden rendimientos inusuales de los equipos.