domingo, 3 de septiembre de 2017

1.6 Núcleo.

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.  En el siguiente gráfico se muestra el esquema de relaciones por capas del computador


En informática, el núcleo de un sistema operativo, es el programa informático que se asegura de:
 • La comunicación entre los programas informáticos y el hardware.
  • Gestión de los distintos programas informáticos (tareas) de una máquina.
  • Gestión del hardware (memoria, procesador, periférico, forma de almacenamiento, etc.)  La mayoría de los sistemas operativos se construyen en torno al concepto de núcleo. La existencia de un núcleo, es decir, de un único programa responsable de la comunicación entre el hardware y el programa   informático,   resulta   de   compromisos   complejos   referentes   a   cuestiones   de   resultados, seguridad y arquitectura de los procesadores. El núcleo tiene grandes poderes sobre la utilización de los recursos materiales (hardware), en particular, de la memoria. En la siguiente figura se observa más detalladamente las capas operativas de un sistema de computación.

1.5 Estructura.

ESTRUCTURA MONOLÍTICA

Es la estructura de los primeros sistemas operativos. Fundamentalmente por un solo programa compuesto de un conjunto de rutinas entrelazadas de tal forma que cada una puede llamar a cualquier otra.

CARACTERÍSTICAS


Ø Construcción de programa final a base de módulos compilados separadamente que se une a través del editor de enlaces.
Ø Buena definición de parámetros de enlace entre la rutinas existentes.
Ø Carecen de protección y privilegios al entrar y manejan diferentes aspectos de la computadora.
Ø Generalmente están hechos a la medida
Ø Por ejemplo los cajeros automáticos donde sólo tienen que cumplir una determinada función siguiendo una serie de procesos ya determinados.



EJEMPLOS

Entre los sistemas operativos que cuentan con núcleos monolíticos se encuentran:

Núcleos tipo Unix
§ Linux
§ Syllable
§ Unix
§ BSD (FreeBSD,NetBSD,OpenBSD)
§ Solaris
§ Núcleos tipo DOS
§ DR-DOS
§ MS-DOS
§ Familia Microsoft Windows 9x (95, 98, 98SE, Me)
§ Núcleos del Mac OS hasta Mac OS 8.6
§ OpenVMS
§ XTS-400

ESTRUCTURA JERÁRQUICA

Consiste en organizar el sistema operativo con una jerarquía de capas cada una construida sobre la que esta bajo ella.


CARACTERÍSTICAS

Ø Las zonas mas intensas o nucleo están mas protegidas de posibles accesos indeseados desde las capas mas externas.
Ø Tienes un contacto mas próximo con el hardware
Ø Núcleo mínimo, mas seguro y ágil.
En esta estructura se basan prácticamente la mayoría de los SO actuales. Otra forma de ver este tipo de sistema es la denominación de anillos concéntricos o “RINGS”




EJEMPLOS





ESTRUCTURA MAQUINA VIRTUAL

Se trata de un SO que presenta una interfaces cada proceso, mostrando una máquina que parece idéntica a la máquina real subyacente. Estos SO separan dos conceptos: Multiprogramación y La Máquina Extendida Su objetivo es distinguir distintos SO dando la sensación de ser varias máquinas. Tiene capacidad de utilizar varios SO simultáneamente.




CARACTERÍSTICAS

Ø Se puede hacer varios sistemas operativos sin necesidad de crear particiones.
Ø Se puede simular el hardware
Ø Gran capacidad de disco duro-memoria ram
Ø Protección cada maquina virtual esta aislada de las otras y no puede inferir.




EJEMPLOS

Ø Nachos: sistema operativo se ejecuta en una virtual mips, cuyo emulador corre sobre Linux.
Ø IBM IV: ofrecía a cada usuario su propia maquina virtual no multiprogramado.



ESTRUCTURA CLIENTE-SERVIDOR

Es el tipo más reciente de los SO, que puedenser ejecutados en la mayoría de lascomputadoras, ya sean grandes o pequeñas. Este sistema sirve para todo, por lo tanto esde propósito general y se basa en lo mismoque el resto de los SO convencionales: núcleoy procesos, presentando grandes diferenciasen cuanto a la forma de distribuir los trabajosentre sus diferentes partes.



CARACTERÍSTICAS


Ø Coordina, permite el trabajo entre iguales.
Ø Cliente; inicia las solicitudes o peticiones (maestro)
Ø Espera y recibe respuesta del servidor
Ø Se puede conectar a varios servidores a la vez .
Ø Servidor:
Ø Esclavo, espera las solicitudes del cliente
Ø Aceptan conexiones desde un gran numero de clientes.






EJEMPLOS


Ø Sistema operativo Novell NetWare 1983, plataforma mas fiable para ofrecer acceso seguro.
Ø Windows 2000
Ø Cualquiera de este puede compartir sus recursos con otro Windows 2000
Ø Windows xp

1.4 Clasificación.

 Clasificación de los sistemas operativos
Existen diversas clasificaciones de los sistemas operativos, la más común es por lo servicios que ofrecen al usuario final:


Clasificacion de los Sistemas Operativos 

Sistemas operativos monousuarios

Los sistemas operativos monousuarios son aquellos que soportan a un usuario a la vez, sin importar el número de procesadores que tenga la computadora o el número de procesos o tareas que el usuario pueda ejecutar en un mismo instante de tiempo. Las computadoras personales típicamente se han clasificado en este renglón.


Sistemas operativos multiusuarios

Los sistemas operativos multiusuarios son capaces de dar servicio a más de un usuario a la vez, ya sea por medio de varias terminales conectadas a la computadora o por medio de sesiones remotas en una red de comunicaciones. No importa el número de procesadores en la máquina ni el número de procesos que cada usuario puede ejecutar simultáneamente.


Sistemas operativos monotareas

Los sistemas monotarea son aquellos que sólo permiten una tarea a la vez por usuario. Puede darse el caso de un sistema multiusuario y monotarea, en el cual se admiten varios usuarios al mismo tiempo pero cada uno de ellos puede estar haciendo solo una tarea a la vez.


Sistemas operativos multitareas

Un sistema operativo multitarea es aquél que le permite al usuario estar realizando varias labores al mismo tiempo. Por ejemplo, puede estar editando el código fuente de un programa durante su depuración mientras compila otro programa, a la vez que está recibiendo correo electrónico. Es común encontrar en ellos interfaces gráficas orientadas al uso de menús y el ratón, lo cual permite un rápido intercambio entre las tareas para el usuario, mejorando su productividad.


Sistemas operativos uniproceso

Un sistema operativo uniproceso es aquél capaz de manejar solamente un procesador de la computadora, de manera que si la computadora tuviese más de uno le sería inútil. El ejemplo más típico de este tipo de sistemas es el DOS y MacOS.


Sistemas operativos multiproceso

Un sistema operativo multiproceso se refiere al número de procesadores del sistema, que es más de uno y éste es capaz de usarlos todos para distribuir su carga de trabajo. Generalmente estos sistemas trabajan de dos formas: simétrica o asimétricamente. Cuando se trabaja de manera asimétrica, el sistema operativo selecciona a uno de los procesadores el cual jugará el papel de procesador maestro y servirá como pivote para distribuir la carga a los demás procesadores, que reciben el nombre de esclavos. Cuando se trabaja de manera simétrica, los procesos o partes de ellos son enviados indistintamente a cualquiera de los procesadores disponibles, teniendo, teóricamente, una mejor distribución y equilibrio en la carga de trabajo bajo este esquema.

1.3 Evolución histórica.



No se puede comenzar a abordar el tema de los sistemas operativos sin revisar brevemente su desarrollo histórico. Esto no sólo permitirá comprender por qué fueron apareciendo determinadas características y patrones de diseño que se siguen empleando décadas más tarde, sino (como resulta particularmente bien ejemplificado en el discurso de recepción del premio Turing de Fernando Corbató, Acerca de la construcción de sistemas que fallarán, (Corbató 2007)), adecuar un sistema a un entorno cambiante, por mejor diseñado que éste estuviera, lleva casi inevitablemente a abrir espacios de comportamiento no previsto —el espacio más propicio para que florezcan los fallos. Conocer los factores que motivaron a los distintos desarrollos puede ayudar a prever y prevenir problemas.




1.3.1. Proceso por lotes (batch processing) 

Los antecedentes a lo que hoy se conoce como sistema operativo pueden encontrarse en la automatización inicial del procesamiento de diferentes programas, surgida en los primeros centros de cómputo: cuando en los años cincuenta aparecieron los dispositivos perforadores/lectores de tarjetas de papel, el tiempo que una computadora estaba improductiva esperando a que estuviera lista una tarea (como se designaba a una ejecución de cada determinado programa) para poder ejecutarla disminuyó fuertemente ya que los programadores entregaban su lote de tarjetas perforadas (en inglés, batches) a los operadores, quienes las alimentaban a los dispositivos lectores, que lo cargaban en memoria en un tiempo razonable, iniciaban y monitoreaban la ejecución, y producían los resultados.

En esta primer época en que las computadoras se especializaban en tareas de cálculo intensivo y los dispositivos que interactuaban con medios externos eran prácticamente desconocidos, el papel del sistema monitor o de control era básicamente asistir al operador en la carga de los programas y las bibliotecas requeridas, la notificación de resultados y la contabilidad de recursos empleados para su cobro.

Los sistemas monitores se fueron sofisticando al implementar protecciones que evitaran la corrupción de otros trabajos (por ejemplo, lanzar erróneamente la instrucción leer siguiente tarjeta causaría que el siguiente trabajo encolado perdiera sus primeros caracteres, corrompiéndolo e impidiendo su ejecución), o que entraran en un ciclo infinito, estableciendo alarmas (timers) que interrumpirían la ejecución de un proceso si éste duraba más allá del tiempo estipulado. Estos monitores implicaban la modificación del hardware para considerar dichas características de seguridad —y ahí se puede hablar ya de la característica básica de gestión de recursos que identifica a los sistemas operativos.

Cabe añadir que el tiempo de carga y puesta a punto de una tarea seguía representando una parte importante del tiempo que la computadora dedicaba al procesamiento: un lector de cintas rápido procesaba del orden de cientos de caracteres por minuto, y a pesar de la lentitud relativa de las computadoras de los años cincuenta ante los estándares de hoy (se medirían por miles de instrucciones por segundo, KHz, en vez de miles de millones como se hace hoy, GHz), esperar cinco o diez minutos con el sistema completamente detenido por la carga de u

1.3.2. Sistemas en lotes con dispositivos de carga (spool)

ismo de entrada/salida que permitía que una computadora de propósito específico, mucho más económica y limitada, leyera las tarjetas y las fuera convirtiendo a cinta magnética, un medio mucho más rápido, teniéndola lista para que la computadora central la cargara cuando terminara con el trabajo anterior. Del mismo modo, la computadora central guardarba sus resultados en cinta para que equipos especializados la leyeran e imprimieran para el usuario solicitante. La palabra spool (bobina) se tomó como acrónimo inverso hacia Simultaneous Peripherial Operations On-Line, operación simultánea de periféricos en línea.

1.3.3. Sistemas multiprogramados

A lo largo de su ejecución, un programa normalmente pasa por etapas con muy distintas características: durante un ciclo fuertemente dedicado al cálculo numérico, el sistema opera limitado por el CPU (CPU-bound), mientras que al leer o escribir resultados a medios externos (incluso mediante spools) el límite es impuesto por los dispositivos, esto es, opera limitado por entrada-salida (I-O bound). La programación multitareas o los sistemas multiprogramados buscaban maximizar el tiempo de uso efectivo del procesador ejecutando varios procesos al mismo tiempo.

El hardware requerido cambió fuertemente. Si bien se esperaba que cada usuario fuera responsable con el uso de recursos, resultó necesario que apareciera la infraestructura de protección de recursos: un proceso no debe sobreescribir el espacio de memoria de otro (ni el código, ni los datos), mucho menos el espacio del monitor. Esta protección se encuentra en la Unidad de Manejo de Memoria (MMU), presente en todas las computadoras de uso genérico desde los años noventa.

El hardware requerido cambió fuertemente. Si bien se esperaba que cada usuario fuera responsable con el uso de recursos, resultó necesario que apareciera la infraestructura de protección de recursos: un proceso no debe sobreescribir el espacio de memoria de otro (ni el código, ni los datos), mucho menos el espacio del monitor. Esta protección se encuentra en la Unidad de Manejo de Memoria (MMU), presente en todas las computadoras de uso genérico desde los años noventa.

Ciertos dispositivos requieren bloqueo para ofrecer acceso exclusivo/único: cintas e impresoras, por ejemplo, son de acceso estrictamente secuencial, y si dos usuarios intentaran usarlas al mismo tiempo, el resultado para ambos se corrompería. Para estos dispositivos, el sistema debe implementar otros spools y mecanismos de bloqueo.

1.3.4. Sistemas de tiempo compartido

El modo de interactuar con las computadoras se modificó drásticamente durante los años sesenta, al extenderse la multitarea para convertirse en sistemas interactivos y multiusuarios, en buena medida diferenciados de los anteriores por la aparición de las terminales (primero teletipos seriales, posteriormente equipos con una pantalla completa como se conocen hasta hoy).

En primer término, la tarea de programación y depuración del código se simplificó fuertemente al poder hacer el programador directamente cambios y someter el programa a la ejecución inmediata. En segundo término, la computadora nunca más estaría simplemente esperando a que esté listo un progama: mientras un programador editaba o compilaba su programa, la computadora seguía calculando lo que otros procesos requirieran.

Multitarea cooperativa o no apropiativa (Cooperative multitasking).

La implementaron los sistemas multiprogramados: cada proceso tenía control del CPU hasta que éste hacía una llamada al sistema (o indicara su disposición a cooperar por medio de la llamada yield: ceder el paso). Un cálculo largo no era interrumpido por el sistema operativo, en consecuencia un error de programador podía congelar la computadora completa.

Multitarea preventiva o apropiativa (Preemptive multitasking).
En los sistemas de tiempo compartido, el reloj del sistema interrumpe periódicamente a los diversos procesos, transfiriendo forzosamente el control nuevamente al sistema operativo. Éste puede entonces elegir otro proceso para continuar la ejecución.

Además, fueron naciendo de forma natural y paulatina las abstracciones que se conocen hoy en día, como los conceptos de archivos y directorios, y el có- digo necesario para emplearlos iba siendo enviado a las bibliotecas de sistema y, cada vez más (por su centralidad) hacia el núcleo mismo del, ahora sí, sistema operativo.

Un cambio importante entre los sistemas multiprogramados y de tiempo compartido es que la velocidad del cambio entre una tarea y otra es mucho más rápido: si bien en un sistema multiprogramado un cambio de contexto podía producirse sólo cuando la tarea cambiaba de un modo de ejecución a otro, en un sistema interactivo, para dar la ilusión de uso exclusivo de la computadora, el hardware emitía periódicamente al sistema operativo interrupciones (señales) que le indicaban que cambie el proceso activo (como ahora se le denomina a una instancia de un programa en ejecución).

Diferentes tipos de proceso pueden tener distinto nivel de importancia —ya sea porque son más relevantes para el funcionamiento de la computadora misma (procesos de sistema), porque tienen mayor carga de interactividad (por la experiencia del usuario) o por diversas categorías de usuarios (sistemas con contabilidad por tipo de atención). Esto requiere la implementación de diversas prioridades para cada uno de éstos.


1.2 Funciones y características de los sistemas operativos.

Funciones de los sistemas operativos 

Una primera aproximación a las tareas de un sistema operativo desde dos vertientes: asistencia a la programación y gestión del sistema. Desde el punto de vista de la primera función, las tareas de un sistema operativo se pueden resumir en: 
- Asistencia en la compilación, depuración y linkado de programas 
- Manejo y ejecución de programas, su carga en memoria, su ejecución y la finalización 
- Gestión de la información, manejo de ficheros, modificación, lectura, grabación,... 
- Controlar las operaciones de entrada y salida 
- Detección de errores físicos o lógicos Para la gestión eficiente del sistema informático el sistema operativo debe: - Informar sobre el estado de uso del mismo, usuarios, tareas, tiempos, recursos,... 
- Dar inicio a los procesos y mantenerlos hasta que acaben 
- Interpretar los lenguajes de control 
- Protección de la estructura de la información ante usos inadecuados: detectar y corregir errores, protección de datos, de programas 
- Asignación y separación de recursos: CPU, memoria, dispositivos de entrada y salida,... 
- Gestionar las interrupciones 
- Interactuar con el usuario 

1.- Aceptar todos los trabajos y conservarlos hasta su finalización. 
2.- Interpretación de comandos: Interpreta los comandos que permiten al usuario comunicarse con el ordenador. 
3.- Control de recursos: Coordina y manipula el hardware de la computadora, como la memoria, las impresoras, las unidades de disco, el teclado o el Mouse. 
4.- Manejo de dispositivos de E/S: Organiza los archivos en diversos dispositivos de almacenamiento, como discos flexibles, discos duros, discos compactos o cintas magnéticas. 
5.- Manejo de errores: Gestiona los errores de hardware y la pérdida de datos. 
6.- Secuencia de tareas: El sistema operativo debe administrar la manera en que se reparten los procesos. Definir el orden. (Quien va primero y quien después). 
7.- Protección: Evitar que las acciones de un usuario afecten el trabajo que esta realizando otro usuario. 
8.- Multiacceso: Un usuario se puede conectar a otra máquina sin tener que estar cerca de ella. 
9.- Contabilidad de recursos: establece el costo que se le cobra a un usuario por utilizar determinados recursos. 


Características de los sistemas operativos. 


En general, se puede decir que un Sistema Operativo tiene las siguientes características:

Conveniencia: Un Sistema Operativo hace más conveniente el uso de una computadora. 

Eficiencia: 
Un Sistema Operativo permite que los recursos de la computadora se usen de la manera más eficiente posible. 
Habilidad para evolucionar. Un Sistema Operativo deberá construirse de manera que permita el desarrollo, prueba o introducción efectiva de nuevas funciones del sistema sin interferir con el servicio. Encargado de administrar el hardware. 
El Sistema Operativo se encarga de manejar de una mejor manera los recursos de la computadora en cuanto a hardware se refiere, esto es, asignar a cada proceso una parte del procesador para poder compartir los recursos. Relacionar dispositivos (gestionar a través del kernel). 
El Sistema Operativo se debe encargar de comunicar a los dispositivos periféricos, cuando el usuario así lo requiera. Organizar datos para acceso rápido y seguro. Manejar las comunicaciones en red. El Sistema Operativo permite al usuario manejar con alta facilidad todo lo referente a la instalación y uso de las redes de computadoras. 
Procesamiento por bytes de flujo a través del bus de datos. Facilitar las entradas y salidas. Un Sistema Operativo debe hacerle fácil al usuario el acceso y manejo de los dispositivos de Entrada/Salida de la computadora.

1.1 Definición y concepto de sistema operativo.

El sistema operativo administra los recursos de la computadora y supervisa las funciones de entrada, proceso, almacenamiento y salida; marca las pautas según las cuales se intercambia información entre la memoria central y la externa; determina las operaciones elementales que puede realizar el procesador; provee de una plataforma de software por encima de la cual otros programas, llamados aplicaciones, pueden ejecutarse; regula el acceso al sistema y proporciona al usuario una interfaz para comunicarse con la computadora.
El sistema operativo debe ser cargado en la memoria central antes que ninguna otra información.
Desde el sistema operativo se ejecutan las tareas básicas, como reconocer entradas desde el teclado, enviar mensajes a pantalla manteniendo rastro de los archivos y directorios en el disco y controlar los dispositivos periféricos como las impresoras.
Para realizar sus funciones, se compone a su vez de dos elementos:
  • El kernel (núcleo), que controla las funciones centrales del sistema
  • El shell (entorno), que controla la interfaz del usuario

Hoy en día la mayor parte de los sistemas operativos son multiusuario, es decir, permiten el acceso a una computadora a más de un usuario mediante el uso de módems, conexión de terminales a través de puertos seriales y redes; en general son también multitarea, lo que significa que tienen la capacidad para correr más de un programa al mismo tiempo.
Las computadoras que tienen más de un CPU son llamadas multiproceso. Un sistema operativo multiproceso coordina las operaciones de las computadoras multiprocesadoras. Mientras una computadora de multiproceso ejecuta una instrucción a través de un procesador, el otro procesador queda liberado para procesar otras instrucciones simultáneamente. Al usar una computadora con capacidades de multiproceso incrementamos su velocidad de respuesta y procesos.
Existen diferentes sistemas operativos, entre los que podemos encontrar: MS-DOS, Linux, Macintosh y Windows.
MS-DOS. (Microsoft Disk Operating System). Consiste en un conjunto de instrucciones que controlan el funcionamiento de la computadora. Estas tareas incluyen el control de archivos y su almacenamiento, la grabación y recuperación de archivos, asignación de espacio en disco y control de la entrada y salida de los diferentes dispositivos. Contiene tres partes: el manejador o controlador de entrada/salida, el procesador de comandos y los programas de utilería. El primero dirige la entrada/salida de datos, codificando y decodificando la información que se transmite entre los programas de aplicación y los periféricos. El segundo tiene subprogramas que manejan las tareas del DOS incluyendo el copiado de archivos y el examen de la tabla de contenido de un disco con objeto de averiguar que está almacenado ahí. El archivo COMMAND.COM contiene el procesador de comandos. El último contiene los programas de utilería que realizan tareas como dar formato a discos, comparación entre discos y/o archivos y reporte del espacio disponible en disco.
  
 
Durante mucho tiempo fue el más común y popular de todos los sistemas operativos para PC debido al elevadísimo volumen de software disponible bajo esta plataforma y a la base instalada de computadoras con procesador Intel, compatible con MS-DOS.
  
Linux. Implementación de libre distribución Unix para computadoras personales (PC), servidores, y estaciones de trabajo. Fue desarrollado para el i386 y ahora soporta los procesadores i486, Pentium, Pentium Pro y Pentium II, III y IV, así como los clones AMD y Cyrix y otros tipos de procesador.
  
 
Como sistema operativo, Linux es muy eficiente y tiene un excelente diseño. Es multitarea, multiusuario, multiplataforma y multiprocesador; en las plataformas Intel corre en modo protegido; protege la memoria para que un programa no pueda hacer caer al resto del sistema; carga sólo las partes de un programa que se usan; comparte la memoria entre programas aumentando la velocidad y disminuyendo el uso de memoria; usa un sistema de memoria virtual por páginas; utiliza toda la memoria libre para caché; permite usar bibliotecas enlazadas tanto estática como dinámicamente; se distribuye con código fuente; usa hasta 64 consolas virtuales; tiene un sistema de archivos avanzado pero puede usar los de los otros sistemas; y soporta redes tanto en TCP/IP como en otros protocolos.
  
Macintosh. Este sistema operativo opera exclusivamente en las computadoras de Apple Macintosh. Esta familia de computadoras y su sistema operativo definen otra plataforma importante. Las PC de Macintosh usan la arquitectura de Bus de 32 bits. La plataforma para Macintosh incluye muchas capacidades sofisticadas que comprende la multitarea, una GUI, la memoria virtual y la capacidad para emular la plataforma MS-DOS. Las PC de Macintosh también tienen la capacidad integrada de compartir archivos y comunicarse con otras PC de Macintosh en una red. Sus capacidades gráficas hicieron de esa máquina la primera precursora en los campos gráficos computarizados como la autoedición por computadora.
  
Windows. Es un entorno multitarea dotado de una interfaz gráfica de usuario, que en sus últimas versiones (a partir de Windows 95) no necesita del MS-DOS para ser ejecutado, ya que es en sí mismo un sistema operativo completo. Está basado en menús desplegables, ventanas en pantalla y un dispositivo señalador llamado mouse. Posee Plug and Play, una tecnología conjuntamente desarrollada por los fabricantes de PCs, con la cual un usuario puede fácilmente instalar o conectar dispositivos permitiendo al sistema automáticamente alojar los recursos del hardware sin la intervención del usuario.
  
 
Windows es hoy en día el sistema operativo de mayor uso debido a la compatibilidad con el software de mayor distribución en el mercado.