lunes, 27 de marzo de 2017

ceunisal

sistemas operativos










SISTEMAS OPERATIVOS
INFORMÁTICA V
ALUMNA: YATZIN     N.L.  MELCHOR
CATEDRÁTICO: MARÍA  BARRIOS GALLEGOS
NOMBRE DE LA ASIGNATURA O UNIDAD DE APRENDIZAJE :SISTEMAS OPERATIVOS


LICENCIATURA EN INFORMÁTICA

PROGRAMAS DE ESTUDIO





OBJETIVO(S) GENERAL(ES) DE LA ASIGNATURA

Al finalizar el curso, el alumno aplicará las técnicas y lenguajes recomendados para el manejo de sistemas operativos y desarrollará mecanismos confiables para resguardar la confiabilidad e integridad de todo proceso.

TEMAS Y SUB-TEMAS
1. INTRODUCCIÓN
1.1 Definición de sistemas operativos
1.2 Historia de los sistemas operativos
1.3 Importancia de los sistemas operativos
1.4 Conceptos básicos y terminología
1.5 Tipos de sistemas operativos

2. FUNCIONES Y CARACTERÍSTICAS DE UN SISTEMA OPERATIVO
2.1 Funciones
2.2 Características
2.2.1 Concurrencia
2.2.2 Compartir
2.2.3 Almacenar
2.2.4 No determinancia

3. CARACTERÍSTICAS DESEABLES
3.1 Programas y procesos
3.2 Comunicación entre procesos
3.3 Semáforos
3.4 Monitores





4. NÚCLEO DEL SISTEMA OPERATIVO
4.1 Facilidades de Hardware
4.2 Relaciones con el núcleo
4.3 Representación de procesos
4.4 Manejador de interrupciones de primer nivel
4.5 Despachador
4.6 Implantación de Wait y Signal
5. MANEJO DE MEMORIA
5.1 Objetivos
5.2 Memoria virtual
5.3 Implementación de memoria virtual
5.4 Políticas de manejo de memoria

6. ENTRADAS Y SALIDAS
6.1 Objetivos y diseño e implicaciones
6.2 Procedimientos de E/S
6.3 Manejador de dispositivos
6.4 Transferencia por buffers
6.5 Dispositivos archivos
6.6 Spooling

7. EL SISTEMA DE ARCHIVOS
7.1 Objetivos
7.2 Archivos directorios
7.3 Seguridad y compartir
7.4 Organización de memoria secundaria
7.5 Integridad del sistema de archivos
7.6 Apertura y cierre de archivos

8. ADMINISTRACIÓN DE RECURSOS Y SCHEDULINGS
8.1 Observaciones generales
8.2 Mecanismos de administración
8.3 Scheduler
8.4 Algoritmos de Scheduling
8.5 Jerarquización de procesos
8.6 Control y contabilidad

9. PROTECCIÓN
9.1 Motivación
9.2 Desarrollo de mecanismos de protección
9.3 Protección jerárquica del sistema


10. CONFIABILIDAD
10.1 Objetivos y terminología
10.2 Fallas
10.3 Determinación de errores
10.4 Tratamiento de fallas
10.5 Recuperación de errores
10.6 Manejo multinivel de errores
11. CONTROL DE PROCESOS
11.1 Comentarios generales
11.2 Lenguaje de comandos
11.3 Lenguaje de control de procesos
11.4 El pool de procesos
11.5 Mensajes del sistema operativo
11.6 Paso de un proceso a través del sistema


  1.    INTRODUCCIÓN

1.1 Definición de sistemas operativos
Para que un ordenador pueda hacer funcionar un programa informático (también conocido como aplicación o software), debe contar con la capacidad necesaria para realizar cierta cantidad de operaciones preparatorias que puedan garantizar el intercambio entre el procesador, la memoria y los recursos físicos (periféricos).
El sistema operativo (a veces también citado mediante su forma abreviada OS en inglés) se encarga de crear el vínculo entre los recursos materiales, el usuario y las aplicaciones (procesador de texto, vídeo juegos, etcétera). Cuando un programa desea acceder a un recurso material, no necesita enviar información específica a los dispositivos periféricos; simplemente envía la información al sistema operativo, el cual la transmite a los periféricos correspondientes a través de su driver (controlador). Si no existe ningún driver, cada programa debe reconocer y tener presente la comunicación con cada tipo de periférico.
Sistema operativo
De esta forma, el sistema operativo permite la "disociación" de programas y hardware, principalmente para simplificar la gestión de recursos y proporcionar una interfaz de usuario (MMI por sus siglas en inglés) sencilla con el fin de reducir la complejidad del equipo. 


 Funciones del sistema operativo
El sistema operativo cumple varias funciones:

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. 






 Componentes del sistema operativo

El sistema operativo está compuesto por un conjunto de paquetes de software que pueden utilizarse para gestionar las interacciones con el hardware. Estos elementos se incluyen por lo general en el conjunto de software que se describe a continuación:

El núcleo, que representa las funciones básicas del sistema operativo, como por ejemplo, la gestión de la memoria, de los procesos, de los archivos, de las entradas/salidas principales y de las funciones de comunicación.

El intérprete de comandos, que posibilita la comunicación con el sistema operativo a través de un lenguaje de control, permitiendo al usuario controlar los periféricos sin conocer las características del hardware utilizado, la gestión de las direcciones físicas, etcétera.

El sistema de archivos, que permite que los archivos se registren en una estructura arbórea.


Sistemas de multiprocesos

Un sistema operativo se denomina de multiprocesos cuando muchas tareas (también conocidas como procesos) se pueden ejecutar al mismo tiempo.

Las aplicaciones consisten en una secuencia de instrucciones llamadas procesos. Estos procesos permanecen activos, en espera, suspendidos, o se eliminan en forma alternativa, según la prioridad que se les haya concedido, o se pueden ejecutar en forma simultánea.

Un sistema se considera preventivo cuando cuenta con un programador (también llamado planificador) el cual, según los criterios de prioridad, asigna el tiempo de los equipos entre varios procesos que lo solicitan.

Se denomina sistema de tiempo compartido a un sistema en el que el programador asigna una cantidad determinada de tiempo a cada proceso. Este es el caso de los sistemas de usuarios múltiples que permiten a varios usuarios utilizar aplicaciones diferentes o similares en el mismo equipo al mismo tiempo. De este modo, el sistema se denomina sistema transaccional. Para realizar esto, el sistema asigna un período de tiempo a cada usuario.
Sistemas de multiprocesadores

La técnica de multiprocesamiento consiste en hacer funcionar varios procesadores en forma paralela para obtener un poder de cálculo mayor que el obtenido al usar un procesador de alta tecnología o al aumentar la disponibilidad del sistema (en el caso de fallas del procesador).

Las siglas SMP (multiprocesamiento simétrico o multiprocesador simétrico) hacen referencia a la arquitectura en la que todos los procesadores acceden a la misma memoria compartida.

Un sistema de multiprocesadores debe tener capacidad para gestionar la repartición de memoria entre varios procesadores, pero también debe distribuir la carga de trabajo. 



 Sistemas fijos:Los sistemas fijos son sistemas operativos diseñados para funcionar en equipos pequeños, como los PDA (asistentes personales digitales) o los dispositivos electrónicos autónomos (sondas espaciales, robots, vehículos con ordenador de a bordo, etcétera) con autonomía reducida. En consecuencia, una característica esencial de los sistemas fijos es su avanzada administración de energía y su capacidad de funcionar con recursos limitados.
Los principales sistemas fijos de "uso general" para PDA son PalmOS, Windows CE/Windows Mobile.

Sistemas de tiempo realLos sistemas de tiempo real se utilizan principalmente en la industria y son sistemas diseñados para funcionar en entornos con limitaciones de tiempo. Un sistema de tiempo real debe tener capacidad para operar en forma fiable según limitaciones de tiempo específicas; en otras palabras, debe tener capacidad para procesar adecuadamente la información recibida a intervalos definidos claramente (regulares o de otro tipo).




1.2 Historia de los sistemas operativos
1940 Generación cero
La generación cero abarca la década de los años cuarenta y se caracteriza porque no existían los sistemas Operativos, el usuario debía codificar manualmente en lenguaje máquina las instrucciones que le permitían usarlos recursos de la computadora y controlar así la ejecución de sus programas.
1950 Primera generación
La primera generación abarca los años cincuenta. Surge el concepto de sistema operativo cuando los laboratorios de investigación de la General Motors desarrollaron el primer sistema operativo para su computadora IBM 701.
En 1955 General Motors y North American Aviation desarrollan el sistema operativo para la computadora IBM704, básicamente lo único que hacía era comenzar la ejecución de un programa cuando terminaba el anterior; Para 1957 ya se habían desarrollado, de manera particular, distintos sistemas operativos para ese modelo de Computadora. Los primeros sistemas operativos tenían como objetivo eliminar el tiempo perdido entre el término de un proceso. Y el inicio de otro, esto se logró desarrollando un sistema operativo que realizara procesos por lotes, en donde Los programas se ejecutaban uno después del otro hasta finalizar el lote completo, o si antes se producía un error, el programa en ejecución tenía control total de la máquina.

1960 Segunda Generación
La segunda generación abarca la primera mitad de los años sesenta. El elevado costo de operación de las computadoras de esos tiempos obligó a buscar formas de optimizar el tiempo de ejecución de los programas, mejorando el rendimiento de las computadoras y aumentando el número de procesos en ejecución por unidad de tiempo. Aparecen conceptos como multiprogramación y multiprocesamiento. Cuando un programa se ejecutaba y producía una operación de e/s, el programa se detenía hasta que esta operación culminara, estos tiempos de espera originaban tiempos muertos de uso del procesador; sin embargo, con la multiprogramación varios programas podían residir a la vez en memoria y el procesador podía conmutar entre ellos, de esta forma, al compartir el procesador (tiempo de procesamiento) y los demás recursos hardware, se pueden ejecutar varios procesos a la vez. El multiprocesamiento significó que se utilizaban varios procesadores en una misma computadora.
Durante esta generación aparecen también los primeros sistemas de tiempo real dedicados al control de procesos industriales y monitoreo de miles de puntos con fines militares, la prioridad en estos sistemas era obtener una velocidad de respuesta en tiempo real. Por ejemplo, el incremento de la temperatura en un reactor nuclear debía comunicarse rápidamente para tomar las acciones necesarias y evitar una catástrofe nuclear. También surge Master Control Program (MCP) y SABRE de IBM de Burroughs diseñado para su computadoraB5000. MCP fue desarrollado con lenguaje de alto nivel e incorporó muchas de las características de los sistemas actuales: multiprogramación, multiproceso, memoria virtual y capacidad de depurar el código fuente. Mientras que SABRE era un sistema de tiempo compartido con terminales remotas que podía interactuar directamente con el usuario. El primer sistema de tiempo compartido de propósito general fue el Compatible Time-Sharing System (CTSS), desarrollado para la IBM 709/7090, sus características más relevantes fueron: Empleo de numerosas terminales, cada terminal parecía tener disponible todos los recursos hardware y software de la computadora, alta velocidad de procesamiento y disponía de varios compiladores, utilidades y aplicaciones.


1970 Tercera Generación
La tercera generación abarca hasta mediados de los años setenta. Comienza con la familia de computadoras IBM/360 y el sistema operativo OS/360 que incorporaba una mayor gama de utilidades que facilitaban el uso dela computadora y se podían adquirir actualizaciones para el mismo SO. En esta generación surgen grandes y costosos sistemas operativos. Los sistemas operativos aumentan sus prestaciones y gestionan eficientemente los recursos del ordenador y el usuario experimenta mayor facilidad para su manejo. IBM separa los costos de hardware y software, por lo que el sistema operativo se puede adquirir en independencia del hardware.
                                                                                              
1980 Cuarta Generación
La cuarta generación comprende hasta mediados de los años ochenta. Los sistemas operativos aumentan sus prestaciones y gestionan eficientemente los recursos del ordenador. Es en esta época donde el usuario experimenta una mayor facilidad para su manejo. Surgen sistemas operativos tales como: Honeywell, VMS yVM/370 de IBM y el Scope de Control Data, todos ellos disponían de multiprogramación, tiempo compartido, memorial virtual, procesos secuenciales que operan por medio de semáforos, sistema jerárquico de archivos ye/s independiente del dispositivo.En esta generación surge el sistema operativo UNIX, desarrollado en lenguaje de alto nivel (lenguaje C) que le  otorga una alta portabilidad, desde grandes computadoras hasta computadoras personales. En los años 80 se desarrolla una gran cantidad de sistemas operativos para computadoras personales (de 8 y 16 bits) entre los que destacan: MS-DOS, Xenix, Apple-DOS y CP/M.
Los sistemas operativos incorporan programas de comunicaciones y evolucionan hasta adaptarse para gestionar redes de computadoras. Sun desarrolla el sistema de archivos distribuidos NFS (Network File System) que ofrecía un espacio único de nombres de archivos para los nodos de una red.

1990 Quinta Generación
La quinta generación abarca de los años noventa a la fecha. Cobran importancia los entornos gráficos o GUI’s(Interfaces Gráficas de Usuario - Graphical User Interface) colocándose como las más populares la de Windows, Linux y Mac, desplazando a los sistemas operativos con interfaz en modo consola originados en la segunda generación. En esta generación se explota al máximo el concepto de multitareas para mantener trabajando al procesador con más de un proceso a la vez, es decir, el procesador puede correr parte de un proceso A y mientras se realizan operaciones de e/s de este proceso, el procesador puede ejecutar un proceso B. También se desarrollan sistemas operativos que permiten realizar procesamientos en paralelo, permitiendo la comunicación y sincronización de procesos extremadamente rápidos.



 1.3  Importancia de los sistemas operativos

 
 Los dispositivos electrónicos como los ordenadores, teléfonos móviles, reproductores de música o reproductores de Blu-ray son una clase de productos que uno se habitúa a manejar con algo de tiempo, paciencia y ganas de querer sacarles provecho.



 En el pasado, manejar dispositivos como un reproductor de cintas VHS o una videocámara Super 8 era una cuestión más de hardware que de software: su propietario debía limitarse a simplemente interactuar con unos botones mecánicos distribuidos por el cuerpo del producto, accediendo a funciones básicas y únicas para cada tipología de dispositivo.
Un tiempo después fue necesario disponer de un sistema capaz de permitir operar con una máquina, de forma más o menos intuitiva, para dar respuesta a unas u otras necesidades de control de unos procesos y unas actividades. El nacimiento del primer sistema operativo tuvo lugar en la segunda mitad de pasada década de los 50, todavía en el siglo XX: en 1956, un equipo de General Motors diseñó el sistema operativo GM-NAA I/O, para instalarse en un ordenador IBM y así acometer una función muy concreta en una actividad determinada.
La creación, desarrollo y evolución de los sistemas operativos han sido básicos para el acercamiento al consumidor particular de productos especialmente sensibles para el gran consumo, como son los ordenadores y los teléfonos móviles. El sistema operativo ha hecho posible que cualquier individuo corriente pueda manejar un dispositivo electrónico sin la necesidad de tener conocimientos técnicos, siendo relativamente sencillo hacerse con el control de una interfaz de usuario visual.
La importancia del sistema operativo ha estado muy ligada a la presentación visual de comandos de datos primero, y a una interfaz gráfica después: el sistema operativo sería el nexo de unión entre la máquina y el hombre.


1.4 Conceptos básicos y terminología.

Interfaz de Línea de Comandos (CLI), por su acrónimo en inglés de Command Line Interface (CLI), es un método que permite a las personas dar instrucciones a algún programa informático por medio de una línea de texto simple. Debe notarse que los conceptos de CLI, Shell y Emulador de Terminal no son lo mismo, aunque suelen utilizarse como sinónimos.
Las CLI pueden emplearse interactivamente, escribiendo instrucciones en alguna especie de entrada de texto, o pueden utilizarse de una forma mucho más automatizada (archivo batch), leyendo comandos desde un archivo de scripts.
La interfaz gráfica de usuario, conocida también como GUI (del inglés graphical user interface) es un programa informático que actúa de interfaz de usuario, utilizando un conjunto de imágenes y objetos gráficos para representar la información y acciones disponibles en la interfaz. Su principal uso, consiste en proporcionar un entorno visual sencillo para permitir la comunicación con el sistema operativo de una máquina o computador.

Habitualmente las acciones se realizan mediante manipulación directa, para facilitar la interacción del usuario con la computadora. Surge como evolución de las interfaces de línea de comandos que se usaban para operar los primeros sistemas operativos y es pieza fundamental en un entorno gráfico. Como ejemplos de interfaz gráfica de usuario, cabe citar los entornos de escritorio Windows, el X-Window de GNU/Linux o el de Mac OS X, Aqua.

  En informática, el shell o intérprete de órdenes o intérprete de comandos es el programa informático que provee una interfaz de usuario para acceder a los servicios del sistema operativo.
Dependiendo del tipo de interfaz que empleen, los shells pueden ser:
  • De líneas texto (CLICommand-Line Interface, interfaz de línea de comandos),
  • Gráficos (GUIGraphical User Interface, interfaz gráfica de usuario),
  • De lenguaje natural (NUINatural User Interface, interfaz natural de usuario).
Los shell son necesarios para invocar o ejecutar los distintos programas disponibles en la computadora.


Archivo batch:Los archivos batch o .bat, son archivos que alojan una serie de órdenes que son dadas por el usuario en forma secuencial al sistema, en forma de un código del tipo script, que puede ser ejecutado e interpretado por el DOS o la línea de comandos de nuestro sistema operativo.
De esta manera, podemos crear diversas acciones a realizar por el ordenador, o simplemente, ejecutar tareas secuenciales, que nos permitirán automatizar tareas en Windows de la misma manera que los usuarios avanzados de Linux utilizan el Shell del sistema.
Este tipo de archivos, son creados comúnmente para automatizar una serie de actividades pequeñas, pero un poco tediosas y trabajosas, como por ejemplo, ordenar la compresión de varios archivos o renombramiento de correlativos, la ejecución completa de programas y la instalación de algunas aplicaciones.
La versatilidad de este tipo de archivos, consiste en la creación de tareas rápidas, siempre y cuando, el usuario conozca los comandos del DOS. Mientras más conocimientos tenga el usuario, más poderosos serán sus archivos .bat.



Los scripts 
Muchas veces hemos escuchado hablar sobre los scripts, sobre todo en artículos que tienen que ver con programación web e, incluso, hemos utilizado este tipo de recursos. En este artículo, describiremos qué son los scripts y cuál es su importancia y su uso.
Lo primero que vamos a hacer, es definir lo que es un script. Este término viene de una palabra inglesa que significa “Guión”, como el de cine o teatro y, literalmente, esto es lo que es. Tenemos entonces, que un script, es un conjunto de órdenes guardadas en un archivo de texto, generalmente muy ligero y, que es ejecutado por lotes o línea a línea, en tiempo real por un intérprete.

Los scripts son pequeños programas que no son compilados, es decir, por lo general necesitan de un programa lector o interprete que codifique la información del script y lo lleve a lenguaje de máquina, para que la información sea procesada y ejecutada por el ordenador.



Uso que se le da a los Scripts
Los scripts son muy utilizados para interactuar con el sistema operativo del ordenador, de manera automatizada.
Aunque, muchas veces, cuando creamos programas con lenguajes interpretados, como Perl o Python, estamos creando scripts más complejos, que pueden realizar cualquier tarea o manejo de datos, como un programa compilado, de allí la versatilidad enorme de este recurso de programación.
Los scripts son ampliamente utilizados dentro del diseño y desarrollo de páginas web y sitios en Internet, ya que permiten manipular la apariencia de estos y crear efectos especiales bastante atractivos. Cuando trabajamos con scripts en páginas web, podemos encontrar dos tipos específicos:

Script del lado del cliente: Estos se ejecutan en el navegador web del usuario que ingresa a una aplicación y, generalmente, cuentan con código JavaScript, VBScript y Ajax y son ampliamente utilizados para manipulación del DOM.
Script del lado del servidor: Como su nombre lo indica, son ejecutados directamente en el servidor y no suelen presentar inconveniente alguno de ejecución, sin importar el tipo de navegador web que estemos utilizando. Estos scripts, incluso pueden manipular por completo las cabeceras http y restringir el acceso a un sitio web específico. Por lo general, son hechos en PHP, JSP y ASP.

Un compilador:es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje diferente. Usualmente el segundo lenguaje es lenguaje de máquina, pero también puede ser un código intermedio (bytecode), o simplemente texto. Este proceso de traducción se conoce como compilación.


1.5 Tipos de sistemas operativos
Existen 4 tipos básicos de sistemas operativos. Están divididos en grupos relacionados con el tipo de computadora que controlan y el tipo de aplicaciones que soportan. Estas son las categorías más amplias:

- Sistema operativo en tiempo real (RTOS - Real-equipo operating system).

Es utilizado para controlar máquinas, instrumentos científicos y sistemas industriales. Generalmente un RTOS no tiene una interfaz para el usuario muy simple y no está destinado para el usuario final, ya que el sistema es entregado como una "caja sellada". La función del RTOS es controlar los recursos del equipo para que una operación específica sea ejecutada siempre, durante el mismo periodo de tiempo. En una máquina compleja, si una parte se mueve más rápidamente, porque existen recursos del sistema disponibles para hacerlo, puede llegar a ser catastrófico.

 - Monousuario, monotarea.

Este sistema operativo fue creado para que un único usuario pueda hacer una cosa a la vez. Algunos sistemas operativos utilizados por los teléfonos celulares son el mejor ejemplo de un moderno sistema operativo monousuario y monotarea.

- Monousuario, multitarea.

Este tipo de sistema operativo es el más utilizado en computadoras de escritorio y notebooks. Las plataformas Microsoft Windows y Apple MacOS son ejemplos de sistemas operativos que permiten que un único usuario utilice varios programas al mismo tiempo. Por ejemplo, es perfectamente posible que un usuario de Windows escriba una nota en un procesador de texto al mismo tiempo que realiza una descarga de un archivo de internet e imprima un e-mail.





- Multiusuario.

Un sistema operacional multiusuario permite que varios usuarios utilicen simultáneamente los recursos del equipo. El sistema operativo debe asegurarse que las solicitudes de varios usuarios se encuentren balanceadas. Cada uno de los programas utilizados debe disponer de recursos suficientes y separados, de forma que un problema de un usuario no afecte a toda la comunidad de usuarios. Unix, Windows Server, VMS y sistemas operativos mainframe como el MVS son ejemplos de sistemas operativos multiusuario.

¿Qué tiene que hacer un sistema operativo?

Un sistema operativo (SO) tiene que lograr que el equipo (y los periféricos) puedan ser utilizados sin problemas por alguien que no conozca los detalles del hardware. Tiene que posibilitar que el usuario cree y acceda a los archivos, use los programas, ingrese a internet, juegue y todas las cosas que pueden ser hechas con las computadoras y/o dispositivos móviles. Además de eso, el sistema operativo tiene que ejecutar los programas y ayudarlos a acceder a los recursos del sistema de una forma simple y organizada.

¿Cuál es el sistema operativo más utilizado?
Sin lugar a dudas, Windows, el sistema operativo de Microsoft, es el más utilizado. Está presente en más del 90% de las computadoras del mundo.
  








2.  
FUNCIONES Y CARACTERÍSTICAS DE UN SISTEMA OPERATIVO

2.1 Funciones
El sistema operativo cumple varias funciones:
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.





2.2 Características


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.


El software de aplicación son programas que se utilizan para diseñar, tal como el procesador de palabras, lenguajes de programación, hojas de cálculo, etc.
El software de base sirve para interactuar el usuario con la máquina, son un conjunto de programas que facilitan el ambiente plataforma, y permite el diseño del mismo.


El Software de base está compuesto por:
  • Cargadores.
  • Compiladores.
  • Ensambladores.
  • Macros.

Otros elementos de un sistema operativo


2.2.1 Concurrencia
La concurrencia es aquella en donde el manejo de los datos es grande y deben de dividirse esos datos por lotes para que haya una buena administración distributiva.
2.2.2 Compartir
Se le denomina compartir a el manejo de toda la información que se comparte Con los sistemas de almacenamiento como en el distribuir los datos a través de los buses.
2.2.3 Almacenar
Es la ubicación de los pulsos eléctricos en las celdas que conforman las memorias.
2.2.4 No determinancia
Se le denomina no determinancia a los problemas que no se les puede dar solución cuando algún dispositivo electrónico falla.



   3. CARACTERÍSTICAS DESEABLES





3.1 Programas y Procesos
Un proceso puede informalmente entenderse como un programa en ejecución. Formalmente un proceso es "Una unidad de actividad que se caracteriza por la ejecución de una secuencia de instrucciones, un estado actual, y un conjunto de recursos del sistema asociados".
Para entender lo que es un proceso y la diferencia entre un programa y un proceso, A. S. Tanenbaum propone la analogía "Un científico computacional con mente culinaria hornea un pastel de cumpleaños para su hija; tiene la receta para un pastel de cumpleaños y una cocina bien equipada con todos los ingredientes necesarios, harina, huevo, azúcar, leche, etcétera." Situando cada parte de la analogía se puede decir que la receta representa el programa (el algoritmo), el científico computacional es el procesador y los ingredientes son las entradas del programa. El proceso es la actividad que consiste en que el científico computacional vaya leyendo la receta, obteniendo los ingredientes y horneando el pastel.
Cada proceso tiene su contador de programa, registros y variables, aislados de otros procesos, incluso siendo el mismo programa en ejecución 2 veces. Cuando este último caso sucede, el sistema operativo usa la misma región de memoria de código, debido a que dicho código no cambiará, a menos que se ejecute una versión distinta del programa.


3.2 Comunicación entre procesos
La comunicación entre procesos, es aquella que va a ver entre 2 procesadores, es decir, cuando existe una arquitectura en paralelo (aplicado en las super computadoras.

3.3 Semáforos
Un semáforo es una variable especial protegida (o tipo abstracto de datos) que constituye el método clásico para restringir o permitir el acceso a recursos compartidos en un entorno de multiprocesamiento (en el que se ejecutarán varios procesos concurrentemente). Fueron inventados por Edsz Dijkstra y se usaron por primera vez en el sistema operativo THEOS.

3.4 Monitores
Son aquellos programas que se encuentran en el sistema operativo que vigilan o monitorean todos los procesos o las funciones en nuestro ordenador y cuando hay una falla estos programas tienen la capacidad e enviar la señal indicando las especificaciones de dichas fallas.




4.  NÚCLEO DEL SISTEMA OPERATIVO


4.1 Facilidades del Hardware
Partes de un sistema operativo y facilidades de hardware

Cada parte del sistema operativo está dividido de acuerdo al tipo de funcionalidad y objetivo que tiene, así también a las áreas del ordenador a las cuales están enfocadas. A continuación la descripción de cada una de estas.
Gestión de procesos:
Al momento de ejecutar un programa en nuestra computadora, deberá de utilizar procesos para reservar la utilización de los recursos necesarios para su funcionamiento. Si por ejemplo el usuario ejecuta dos programas consecutivamente, se crearan una determinada cantidad de procesos que se sumaran a los que ya se están ejecutando para mantener activo nuestro ordenador.
El orden en que se realizan los procesos es de acuerdo a su prioridad, esto es un ejemplo de planificación de procesos, lo cual consiste en decidir qué proceso se utilizara en cada instante de tiempo. Entre las funcionalidades propias de los procesos también se pueden mencionar a los mecanismos de comunicación, como su nombre lo indica gestiona la comunicación entre distintos procesos. También se tiene a los mecanismos de sincronización, los cuales permiten el acceso a un recurso por varios procesos de manera concurrente.
Gestión de la memoria:
La memoria es utilizada por los distintos programas, es decir por el CPU y por los dispositivos de entrada/salida con los cuales cuenta el ordenador. Acerca de la memoria se puede mencionar que es de fácil acceso, rápida o bien volátil, también se puede destacar que ante fallas o al apagar la computadora pierde su información en un tiempo de alrededor de tres minutos.
El sistema operativo se encarga de la correcta utilización de este recurso, pues debe de ser el encargado de saber que partes están siendo utilizadas y por quien, asignar espacios cuando se requiera, entre otros.
Gestión del almacenamiento secundario:
Es necesario para almacenar y manipular la información que necesita sobrevivir ante cualquier fallo en el sistema, por ejemplo un cortocircuito o bien un apagón. Es necesario también para alojar temporalmente los programas que son de un tamaño grande para ser alojados en la memoria volátil.

Sistema de entrada y salida: Esta es una de las principales funciones del sistema operativo pues es el medio por el cual el usuario va a interactuar con los componentes físicos de la máquina. También se encargara de gestionar la comunicación entre los dispositivos, controlar los posibles errores y detectar las interrupciones que se puedan dar. Esta área del sistema operativo hace para el usuario, una PC más simple de manipular.


Sistema de archivos: Se refiere a las distintas técnicas para almacenar la información dentro de los discos duros que aloja el ordenador, estas técnicas o formas de almacenamiento se llaman sistema de archivos. Por ejemplo algunas distribuciones de GNU/Linux utilizan EXT2 o bien EXT3, Windows utiliza FAT32 y NTFS. Seguramente el lector recuerda estos dos últimos cuando le damos formato a nuestras memorias USB.
El sistema operativo se encarga de la manipulación de los distintos tipos de archivos proporcionando las funciones necesarias, realiza copias de seguridad, maneja los medios de almacenamiento con operaciones escondidas para los usuarios, entre otros.

Sistemas de protección: Se refiere al control de acceso de los programas estableciendo límites de seguridad, establece quienes pueden tener acceso a determinados recursos estableciendo políticas. Entre otros detalles este sistema se encarga de que los procesos se ejecuten únicamente dentro de los espacios asignados a este.
Este sistema diferencia entre lo que es autorizado y lo que no es, forzando el uso de los mecanismos de protección estandarizados para evitar ejecuciones indebidas, por ejemplo un usuario que no forma parte del sistema o no es reconocido por el mismo quiera tener acceso a información privilegiada.

Sistema de comunicaciones: Esto se refiere al uso específico de interfaces de red, permitiendo la comunicación entre distintos sistemas. Las interfaces de red abarcan un gran campo dejando a un lado el sistema operativo, pues se refiere a la salida y entrada de la computadora hacia el exterior, hacia otras computadoras a través de distintos medios. También hace referencia a los medios que son proporcionados para hacer posible la comunicación entre aplicaciones que se ejecutan tanto localmente como remotamente a través de conexiones virtuales.

Programa de sistemaEs el software que es agregado al sistema operativo pero no forma parte de este, haciendo posible la ejecución de programas. Estos proporcionan funcionalidades extras al sistema, por ejemplo manipulación y modificación de archivos, manipula información del sistema, proporciona soporte a lenguajes de software entre otros, comunicaciones



                 4. 2 Relaciones con el núcleo

   
  EL Núcleo del Sistema Operativo.:   todas las operaciones en las que participan procesos son controladas por la parte del sistema operativo denominada núcleo (nucleus, core o kernel, en inglés). El núcleo normalmente representa sólo una pequeña parte de lo que por lo general se piensa que es todo el sistema operativo, pero es tal vez el código que más se utiliza. Por esta razón, el núcleo reside por lo regular en la memoria principal ,mientras que otras partes del sistema operativo son cargadas en la memoria principal sólo cuando se necesitan.

L Los núcleos se diseñan para realizar "el mínimo" posible de procesamiento en cada interrupción y dejar que el resto lo realice el proceso apropiado del sistema, que puede operar mientras el núcleo se habilita para atender otras interrupciones.



        El núcleo de un sistema operativo normalmente contiene el código necesario para realizar las siguientes funciones:
  •    Manejo de interrupciones.
  •       Creación y destrucción de procesos.
  •       Cambio de estado de los procesos.
  •      Despacho.
  •      Suspensión y reanudación de procesos.
  •       Sincronización de procesos.
  •       Comunicación entre procesos.
  •     Manipulación de los bloques de control de procesos.
  •     Apoyo para las actividades de entrada/salida.
  •     Apoyo para asignación y liberación de memoria.
  •     Apoyo para el sistema de archivos.
  •        Apoyo para el mecanismo de llamada y retorno de un procedimiento.
  •     Apoyo para ciertas funciones de contabilidad del sistema.
  •       Núcleo o Kernel y niveles de un Sistema Operativo.
  •         el Kernel consiste en la parte principal del código del sistema operativo, el cual se encargan de controlar y administrar los servicios y peticiones de recursos y de hardware conrespecto a uno o varios procesos.

  • 43 Representación de procesos

    Bloque de control de un proceso (P.C.B.)

    Estructura de datos que contiene información relativa a cada proceso:
    ·         Identificador del proceso.
    ·         Estado del proceso.
    ·         Valores de los registros de C.P.U. (contador de programa, etc.).
    ·         Datos para gestión de recursos:
    ·         memoria (tablas de páginas, etc.)
    ·         E/S (demandas, tablas de dispositivos asignados, etc.)
    ·         procesador (prioridades, punteros a colas, etc.).
    ·         Datos de contabilización (tiempo de uso de procesador, etc.)


    Estados de un proceso
    ·         No existente
    ·         Existente
    ·         Suspendido
    ·         Activado
    ·         Espera
    ·         Preparado
    ·         Ejecución
    ·         Ejecución
    ·         Preparado Espera


    4.4 Manejador de interrupciones de primer nivel

    · El GESTOR DE INTERRUPCIONES DE PRIMER NIVEL: FLIH
    (First Level Interruption Handler): `Algo' que gestione las interrupciones
    En principio, una señal es una indicación por la que se altera la secuencia de ejecución. Hay varios tipos de interrupción, que se clasifican en función de su origen

    :! EXTERNAS: Se producen fuera del procesador
    ! INTERNAS: Se producen dentro del procesador


    Si precisamos más:
    Las interrupciones EXTERNAS, las denominamos:
    ·         INTERRUPCIONES
    Las interrupciones INTERNAS, pueden ser:
    ·         EXTRACÓDIGOS: Operaciones que manipulan elementos internos del
    Procesador
    ·         TRAPS o EXCEPCIONES

    La misión del FLIH, está en el núcleo, para dar una respuesta a cualquier tipo de señal que se produce en el sistema.
    Al producirse una señal, la atrapa el Hardware de interrupciones, que como mínimo, salva el contenido del PC en el PCB del proceso. Además, puede que también salve el resto del entorno volátil (también en el PCB). También direcciona al FLIH, es decir, pone en el PC la dirección del FLIH.


    Formas de determinar el origen de una interrupción:
    MEDIANTE SOFTWARE:
    Mediante una cadena de saltos o IFs (o con una CASE)
    El FLIH, tiene un único punto de entrada:
    Ventaja: ! Es muy sencillo
    Desventaja: ! Rendimiento muy pobre (Cuantas más interrupciones, peor
    rendimiento)
    Posible solución:
    ·         Poner al principio de la cadena de saltos las comprobaciones de las interrupciones más frecuentes.
    MEDIANTE HARDWARE:
    Mediante el uso de un comparador simultáneo, incluido en el Hardware de interrupciones.
    El origen de la interrupción, no lo va a detectar el FLIH, lo va a detectar el Hardware de interrupciones.
    El FLIH, tiene N puntos de entrada, siendo N el número de interrupciones que reconoce el sistema.
    Ventaja: ! Es casi simultáneo, mucho más rápido que la secuencia de IFs
    Desventaja: ! Coste Elevado: Un comparador para muchas interrupciones es
    muy caro



    4.5 Despachador SCHEDULER

    DISPATCHER Y SCHEDULER
    Dispatcher: Módulo del núcleo encargado de asignar C.P.U. al proceso que está en cabecera de la cola de proceso en estado preparado.
    Objeto: Reponer V.E. y activar proceso.
    Scheduler: Encargado de la selección del siguiente proceso la hace el módulo de planificación (también llamado low level scheduler).

    Parámetros de planificación:
    ·         índice de ocupación de C.P.U. (a maximizar)
    I = tocup./ (tocup. + tdesocup)
    ·         throughput (a maximizar)
    T = nº jobs acabados / t
    ·         turnaround time. Para s. no interactiv. (a minimizar)
    tt = tfinal – tinicio
    ·         waiting time (a minimizar)
    wi
     = sumatorio tpreparadoi
    ·         reponse time. para s.interactivos (a minimizar)
    ri = t1ºrespuesta – tinicio



    4.6 Implantación de Wait y Signal.



    Semáforos:

    Definición de Semáforos e implementación con espera activa
    .
        Un mecanismo semáforo consta básicamente de dos operaciones primitivas señal (Signal) y espera (Wait) (Originalmente definidas como P y V por Disjkstra), que operan sobre un tipo especial de variable semáforo, “s”. La variable semáforo puede tomar valores enteros y, excepto posiblemente en su inicialización, solo puede ser accedida y manipulada por medio de las operaciones SIGNAL y WAIT. 

    SIGNAL (s) ”SEÑAL)...:

    Incrementa el valor de su argumento semáforo, s , en una operación indivisible.

    WAIT (s) ..:ESPERA)

    Decrementa el valor de su argumento semáforo, s , en tanto el resultado no sea negativo. La conclusión de la operación WAIT, una vez tomada la decisión de decrementar su argumento semáforo, debe ser individual.


    5. MANEJO DE MEMORIA


    5.1 Objetivos
    v  Conseguir que varios procesos puedan ejecutarse de forma concurrente,
    ·         evitando los conflictos de uso
    ·         protegiendo al sistema operativo
    ·         aprovechando eficazmente el espacio disponible:
    v  Minimizar la memoria desaprovechada
    ·         Evitar fragmentación
    ·         Memoria ocupada por varias copias de un mismo objeto
    ·         Memoria ocupada por las estructuras de datos necesarias para la operación del gestor de memoria
    v  Carga parcial de programas q sin perjudicar el rendimiento:
    ·         Complejidad temporal
    ·         Tiempo de acceso a memoria

    Nota: Un gestor de memoria ideal debería por tanto,
    v  minimizar la memoria desaprovechada
    v  tener una complejidad temporal mínima
    v  y presentar un recargo por acceso a memoria mínimo
    v  además de proporcionar una buena protección y una compartición flexible





    5.2 Memoria Virtual
        La memoria es uno de los principales recursos de la computadora, Actualmente la mayoría de los computadores cuentan con una gran capacidad de memoria, y las aplicaciones actuales requieren de alta capacidad de memoria, esto causa que se genere la escasez de memoria en los sistemas multitarea y multiusuario.

         Administrador de memoria: Su tarea consiste en llevar un registro de las partes de memoria que se estén utilizando y las que no, con el fin de asignar espacio en memoria a los procesos cuando éstos la necesiten y liberándola cuando terminen, así como administrar el intercambio entre la memoria principal y el disco.

        Los sistemas de administración de memoria se pueden clasificar en dos tipos: los que desplazan los procesos de la memoria principal al disco y viceversa durante la ejecución y los que no.

        El propósito principal de una computadora es el de ejecutar programas, estos programas, junto con la información que accedan deben de estar en la memoria principal (al menos parcialmente) durante la ejecución.
           Para optimizar el uso del cpu y de la memoria, el sistema operativo debe de tener varios procesos a la vez en la memoria principal, para lo cual dispone de varias opciones de administración tanto del procesador como de la memoria. La selección de uno de ellos depende principalmente del diseño del hardware para el sistema. A continuación se observarán los puntos correspondientes a la administración de la memoria. 
    Memoria real
    La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. Por lo general esta memoria es de mayor costo que la memoria secundaria, pero el acceso a la información contenida en ella es de más rápido acceso. Solo la memoria cache es más rápida que la principal, pero su costo es a su vez mayor.
    Memoria virtual
    El término memoria virtual se asocia a dos conceptos que normalmente a parecen unidos:
    1. el uso de almacenamiento secundario para ofrecer al conjunto de las aplicaciones la ilusión de tener más memoria RAM de la que realmente hay en el sistema.

    2. ofrecer a las aplicaciones la ilusión de que están solas en el sistema, y que por lo tanto, pueden usar el espacio de direcciones completo

    Unidad de manejo de memoria
    La unidad de manejo de memoria (mmu) es parte del procesador. Sus funciones son:
    • convertir las direcciones lógicas emitidas por los procesos en direcciones físicas.
    • comprobar que la conversión se puede realizar. La dirección lógica podría no tener una dirección física asociada. Por ejemplo, la página correspondiente a una dirección se puede haber trasladado a una zona de almacenamiento secundario temporalmente.
    • comprobar que el proceso que intenta acceder a una cierta dirección de memoria tiene permisos para ello.

    5.3 Implementación de memoria virtual

        Para implementar la memoria virtual, para el sistema es necesario tener un hardware especial de administración de memoria. Este hardware a menudo se conoce como un MMU (Memory Management Unit). Sin un MMU, cuando el CPU accede a la RAM, las ubicaciones reales de RAM nunca cambian — la dirección de memoria 123 siempre será la misma dirección física dentro de la RAM.
    Fallo de página
    La memoria cargada en memoria principal se le denomina memoria residente.
    El acceso a memoria residente por parte de un proceso es tomado como un acceso normal, pero el acceso a memoria no residente genera un fallo de página.
    El fallo de página genera un trap a nivel del sistema operativo, que activa una rutina de atención que carga la página en memoria principal.
     Acceso a Memoria
    El acceso a memoria genera la siguiente secuencia de pasos:
    • Verificar que el proceso referencia una página correcta dentro de su espacio virtual, ya que no todas las direcciones dentro de su espacio son válidas.

    Por ejemplo, el acceso fuera de un arreglo puede generar un acceso a una página virtual que no fue asignada al proceso.

    Si el proceso referencia a una página incorrecta, se genera un error y el proceso termina.
    • Si el acceso fue correcto, se busca en la tabla de páginas el frame correspondiente, verificando el bit de validez-invalidez.

    • Si el bit es de validez se accede al frame correspondiente y se termina el acceso.

    • Sino se genera el trap de page fault, que involucra los siguientes pasos:
    a. Se busca frame libre en memoria principal, si no hay se ejecuta el algoritmo de reemplazo.

    b. Se lee de disco la página a cargar, y se carga en el frame obtenido en el paso anterior.

    c. Se actualiza la tabla de páginas, indicando que la página está disponible en memoria principal.

    d. Se devuelve el control a la instrucción que fue interrumpida por el PF.

    Si se aplica este método se tendrá un sistema puro de paginación bajo demanda. Tener en cuenta que para poder llevarlo a cabo se precisa una tabla de páginas y espacio swap de disco.


    Algoritmos de remplazo
    La necesidad de traer a memoria principal una página en una memoria principal llena, genera la búsqueda de un frame a remplazar, mediante un algoritmo de remplazo. El mal algoritmo de remplazo puede generar un impacto significativo de degradación del sistema, y es por esto que los estudiaremos.
    Cuando se elige un frame a remplazar (la víctima), este será puesto en memoria swap, y ante un eventual uso en el futuro, volverá a memoria principal a través de un page fault.
    Los pasos a seguir cuando remplazamos frames son los siguientes:
    • Elegir la víctima mediante algún algoritmo de remplazo
    • Escribir la víctima en memoria swap (swap out) y ajustar la tabla de páginas
    • Cargar la página en el frame correspondiente (swap in)
    • Ajustar la tabla de página

    • FIFO (First in First out)
      El algoritmo reemplaza la página que lleva más tiempo en memoria principal. Es un algoritmo fácil de implementar ya que requiere únicamente de una estructura tipo cola, pero remplaza las páginas sin tener en cuenta las referencias que tuvo.

    • Segunda Chance
    Este algoritmo intenta disminuir la cantidad de fallos de páginas del algoritmo FIFO, teniendo en cuenta las referencias a las páginas.

    • Óptimo
    En este algoritmo se reemplaza la página que no va a ser usada por el mayor periodo de tiempo. Es imposible de implementar porque requiere conocer a que páginas accederá el proceso.
    • LRU (Least Recently Used – recientemente menos usada)
    Este algoritmo asocia a cada página el tiempo en que fue referenciada. La página elegida por el algoritmo de remplazo será la que fue accedida hace más tiempo.
    Este algoritmo es el que más se aproxima al óptimo y es bastante utilizado por los SO.

    • NRU (No Recientemente Usada)
    En este algoritmo a las páginas se les asigna un bit de referencia y otro de modificación.
    El bit de referencia se prende cada vez que se lee o escribe la página, mientras que el de modificación solo se prende cada vez que se escribe. Cada cierto tiempo el bit de referencia es apagado.
    Al ocurrir un fallo de página, los frames son divididos en 4 clases. Se remplazará un frame al azar de la clase más baja que no esté vacía:
    v  Clase 0: No referenciada, no modificada
    v  Clase 1: No referenciada, modificada
    v  Clase 2: Referenciada, no modificada
    v  Clase 3: Referenciada, modificada

    Al ejecutar el algoritmo de reemplazo, existen dos opciones de páginas a remplazar:
    • Reemplazo global: Un proceso puede remplazar un frame utilizado por otro. Aunque los PF de un proceso afectan a otros, es el método más usado.
    • Asignación local: Un proceso remplaza únicamente los frames que tiene asignado, es por eso que la cantidad de frames de un proceso no varía. La desventaja es que hay marcos que se pueden desperdiciar.

    Asignación de frames a procesos e hiperpaginación

    Si el SO no implementa una estrategia de asignación de memoria, un proceso que requiera mucha memoria puede hacer colapsar el sistema.
    Una forma de asignar frames a procesos podría ser dividir la cantidad de frames del sistema en partes iguales para cada proceso. Este método puede ser ineficiente ya que no todos los procesos consumen la misma cantidad de memoria.
    Si un proceso utiliza en forma activa una cantidad mayor de frames de los asignados por el sistema, tendrá un alto porcentaje de fallos de página, dando lugar a que el proceso esté continuamente realizando PF, pasando más tiempo paginando que ejecutando, lo que se conoce como hiperpaginación. Se degrada significativamente el rendimiento del sistema.

    5.4 Políticas de manejo de memoria 


    Políticas de gestión de la memoria virtual
    En un sistema con memoria virtual, hay que establecer las reglas para gestionar el intercambio de páginas o segmentos entre la memoria principal y la secundaria:

    Políticas de lectura
    El SO debe decidir cuando cargar las páginas en memoria principal. Hay dos alternativas:
    ·         Paginación por demanda: Carga una página en memoria sólo cuando se necesite, al iniciar la ejecución de un proceso o por fallos de página. Por el principio de localidad de referencias, al llevar un tiempo suficiente de ejecución, la tasa de fallos de página desciende hasta un nivel aceptable.

    ·         Paginación previa: Se traen a memoria más páginas que las solicitadas. Aprovecha las ventajas de lectura secuencial de los dispositivos de memoria secundaria (discos duros). Es una política eficaz si luego las páginas extra son referenciadas.
    Política de reemplazo
    Cuando la memoria está llena y hay que cargar otra página, el SO debe decidir que página mandar a memoria secundaria. El objetivo es seleccionar la página que más tarde en referenciarse.


    El reemplazo puede ser:
    ·         Global: Cualquier página de cualquier proceso puede ser candidata
    ·         Local: Sólo las páginas del proceso que provocó el fallo de página pueden ser candidatas.
    Una vez definido el conjunto de páginas candidatas, hay que elegir una. Hay tres políticas básicas:
    ·         LRU: Se selecciona la página usada hace más tiempo. Debido al principio de localidad de referencias, es la página que menos probabilidad tiene de volver a ser usada.
    ·         MRU: Se selecciona la página usada hace menos tiempo. Aunque es contrario al principio de localidad de referencias, suele comportarse bien en sistemas interactivos con tiempos de respuesta largos.
    ·         FIFO: Se selecciona la página que lleva más tiempo en memoria. Es una técnica muy simple.
    ·         La técnica del reloj: Cada vez que se accede a una página, se marca poniendo a uno un bit de control de acceso. Cuando se busca el candidato a ser desalojado de memoria, se recorre la tabla de páginas, si el bit de control de acceso está a 1 se pone a 0. La primera página localizada con el bit a 0 se selecciona para ser reemplazada.

    Las técnicas LRU y del reloj son las más eficientes y por ello más utilizadas.

    Gestión del conjunto residente
    El nº de procesos en memoria influye en el rendimiento del sistema. Si hay muchos procesos, se gana en el grado de multiprogramación. Pero si hay demasiados, cada proceso tendrá pocas páginas cargadas en memoria principal, por lo que la tasa de fallos de página será alta, dando lugar a una sobrecarga excesiva del SO.
    Existen dos políticas para decidir el nº de marcos para cada proceso
    ·         Asignación fija: Cuando se inicia el proceso se le asigna un número de marcos fijo. El número depende del tipo de proceso: por lotes, iterativo... o en función de directrices del administrador.
    ·         Asignación variable: El nº de marcos asignados varía. Si un proceso tiene una alta tasa de fallos de página, se le aumenta el número de marcos asignado.
    La asignación variables es más potente que la fija, pero tiene el inconveniente de aumentar la complejidad del SO y necesita soporte del procesador.

     6. .    ENTRADAS Y SALIDAS

    6.1 Objetivos y diseño e implicaciones
    Una de las funciones del sistema operativo es la de 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.

    Gestión de Entrada y Salida: esto representa los intercambios de información desde el procesador o incluso al acceso directo de la memoria. Esta actividad de entrada y salida se realiza gracias a la relación que hay entre el sistema operativo con los diversos periféricos, así administrar y controlar los estados y recursos que tienen cada uno de estos mediante los controladores de dispositivos.


    Dispositivos o periféricos: son aparatos solidos e  independientes que van conectados a la unidad central de la computadora. Existen diversos tipos de dispositivos con funciones  diferentes.

         Existen tres tipos de dispositivos según su función:

            
    Dispositivos de entrada: tienen la tarea de introducir información, órdenes, comandos e instrucciones para que la computadora lo procese con el sistema operativo.

    Entre los más conocidos se encuentran:

    El Teclado:Es el principal dispositivo para introducir órdenes e información al sistema.














    El Mouse.
    Dispositivo fundamental que sirve para señalar  y accionar los diversos elementos de la pantalla del computador. 



    ESCANER:Este dispositivo nos permite convertir en formato digital los textos, fotografías e imágenes impresas.






    Dispositivos de salida: son los que se encargan de procesar los resultados de salida  de los procesos de datos. Y mostrarlos al usuario.















    El Monitor.
    Es el principal dispositivos en procesar los datos y mostrárselos al usuario.






    La Impresora:Es el periférico encargado de hacer copias en papel de la información que nos muestra el computador.

    Dispositivos de Bloques: Estos periféricos almacenan información en bloques de tamaño fijo, estos van desde 128 bytes hasta 1024 bytes.


    UNIDAD de lectora  de CD –ROM.
         Permite leer datos, los cuales se graban en el disco duro o pueden ser leídos para obtener información.











    DISCO DURO:Proporcionan un acceso más rápido a los datos que los discos flexibles y pueden almacenar mucha más información.















6.2 Procedimientos de E/S.


       E l tratamiento automático de la información, también conocido como procesamiento de    datos, se divide en tres etapas: entrada, proceso y salida Entrada. En esta fase del   tratamiento automático de la información, los datos se introducen en la computadora. 



























  












                                                   6.3 Manejador de dispositivos


Controladores de Dispositivos


       Un controlador (instaladores) de dispositivos, normalmente llamado controlador en inglés (device driver) es un programa que informático que permite al sistema operativo interactuar con un periférico, haciendo una abstracción del hardware del dispositivo y proporcionando una interfaz - posiblemente estandarizada - para usarlo. Se puede esquematizar como un manual de instrucciones que se indica al sistema operativo, cómo debe controlar y comunicarse con un dispositivo en particular. Por lo tanto es una pieza esencial, sin el cual, no se podría usar el hardware. Los controladores de dispositivos son programas añadidos al núcleo del sistema para gestionar periféricos y dispositivos oficiales.
      Existen tantos tipos de controladores como tipos de periféricos y es común más de un tipo de controlador posible para el mismo dispositivo, cada uno ofreciendo un nivel distinto de funcionalidades. Por ejemplo, aparte de los oficiales (normalmente disponibles en la página web del fabricante se pueden encontrar también los proporcionados por el sistema operativo o también versiones no oficiales hechas por terceros.

    Las unidades de e / s generalmente constan de:

·         Un componente mecánico.
·         Un componente electrónico, el controlador del dispositivo o adaptador.  
    Muchos controladores pueden manejar más de un dispositivo. El S. O. generalmente trabaja con el controlador y no con el dispositivo.
    Los modelos más frecuentes de comunicación entre la cpu y los controladores son:
·         Para la mayoría de las micro y mini computadoras:


ü  Modelo de bus del sistema.

·         Para la mayoría de los mainframes:
ü  Modelo de varios buses y computadoras especializadas en e / s llamadas canales de e / s.

       La interfaz entre el controlador y el dispositivo es con frecuencia de muy bajo nivel:
·         La comunicación es mediante un
       flujo de bits en serie que:
ü  Comienza con un preámbulo.
ü  Sigue con una serie de bits (de un sector de disco, por ej.).
ü  Concluye con una suma para verificación o un código corrector de errores.


·             El preámbulo:
   ü  Se escribe al dar formato al disco.
   ü  Contiene el número de cilindro y sector, el tamaño de sector y otros datos similares.

     El controlador debe:
   ü  Convertir el flujo de bits en serie en un bloque de bytes.
   ü  Efectuar cualquier corrección de errores necesaria.
   ü  Copiar el bloque en la memoria principal.

    Cada controlador posee registros que utiliza para comunicarse con la cpu:
  ü  Pueden ser parte del espacio normal de direcciones de la memoria: e / s mapeada a memoria.

  ü  Pueden utilizar un espacio de direcciones especial para la e / s, asignando a cada controlador una parte de él.

    El S. O. realiza la e/s al escribir comandos en los registros de los controladores; los parámetros de los comandos también se cargan en los registros de los controladores.
     Al aceptar el comando, la cpu puede dejar al controlador y dedicarse a otro trabajo.
     Al terminar el comando, el controlador provoca una interrupción para permitir que el S. O.:

   ü  Obtenga el control de la cpu.
  ü  Verifique los resultados de la operación.

       La cpu obtiene los resultados y el estado del dispositivo al leer uno o más bytes de información de los registros del controlador.

  
       Manejadores de Dispositivos 

     Cada dispositivo de E/S, o cada clase de dispositivos, tiene un manejador asociado en el sistema operativo.


    Dicho manejador incluye: código independiente del dispositivo para proporcionar al nivel superior del sistema operativo una interfaz de alto nivel y el código dependiente del dispositivo necesario para programar el controlador del dispositivo a través de sus registros y datos. La tarea de un manejador de dispositivo es aceptar peticiones en formato abstracto, de la parte del código de E/S independiente del dispositivo, traducir dichas peticiones a términos que entienda el controlador, enviar al mismo las órdenes adecuadas en la secuencia correcta y esperar a que se cumplan. 





Cada controlador posee uno o más registros de dispositivos:



  • Se utilizan para darle los comandos.
  • Los manejadores de dispositivos proveen estos comandos y verifican su ejecución adecuada.
La labor de un manejador de dispositivos es la de:

  • Aceptar las solicitudes abstractas que le hace el software independiente del dispositivo.
  • Verificar la ejecución de dichas solicitudes.


6.4 Transferencia por Buffers



Estos son espacios de memoria principal que se mantienen solo para almacenar datos que envían de los dispositivos o destino a ellos.

   Los buffers se clasifican en: buffer simple, que su transferencia de entrada e hace desde el dispositivo hacia el buffer que el sistema operativo guarda en la memoria principal a dicho proceso.


    6.5 Dispositivos archivos
   Los archivos de dispositivo se refieren a dispositivos virtuales o físicos del sistema, tales como discos duros, tarjetas de video, pantalla o teclado. Un ejemplo de dispositivo virtual es la consola, representado por /dev/console.
      Existen dos tipos de dispositivos:  



  • dispositivos de carácter
    • Pueden accederse de un carácter por vez, es decir, la unidad de datos más pequeña que se puede escribir o leer desde el dispositivo es un carácter (un byte).


  • dispositivos de bloque
    • Pueden accederse en unidades más grandes denominadas bloques que contienen cierto número de caracteres. El disco duro es un dispositivo de bloque.
    Es posible leer archivos de dispositivos, aunque puede que contengan datos binarios que resulten incomprensibles a los humanos. A veces resulta útil escribir datos directamente en estos archivos para resolver problemas relacionadas con el hardware. Por ejemplo, se puede volcar un archivo de texto al dispositivo de impresión /dev/lp0 o enviar comandos al modem desde el puerto serie /dev/ttyS0 . Pero, salvo que se realice esta tarea con cuidado, puede que se produzca un desastre mayor.

         6.6 Spooling
      En informática, el spooling hace referencia al proceso de transferir datos poniéndolos en un área temporal de trabajo, donde otro programa puede acceder para su procesamiento en otro momento. Esta área de trabajo temporal suele estar en un archivo o en un dispositivo de almacenamiento.


   
        USO EL SPOOLING
       El spooling es útil en caso de dispositivos que acceden a los datos a distintas velocidades. O en aquellos casos en que no hay comunicación directa entre los programas que escriben los datos y aquellos que los leen. Los datos del área temporal solo pueden ser modificados agregando o eliminado al final del área (en general, no hay acceso aleatorio ni edición). También es muy usado en la impresión (print spooling), donde los documentos a imprimir son cargados al spool de impresión, y la impresora los va tomando en su debido tiempo para imprimirlos. El spooling permite poner documentos en una "cola de impresión", que irán imprimiéndose en ese orden, mientras el usuario hace otras tareas. Otro uso del spooling es email spool, un área temporal de almacenamiento de emails a ser enviados por el programa agente transmisor de emails. De todas maneras este tipo de spooling es diferente, dado que permite el acceso aleatorio a los mensajes de email del área de almacenamiento temporal


        7.    EL SISTEMA DE ARCHIVOS
    7.1 Objetivo
    Organizar y guardar la información en forma ordenada con la finalidad de poder ser encontrada fácil y rápidamente para su utilización.




El sistema de archivos o sistema de ficheros es el componente del sistema operativo encargado de administrar y facilitar el uso de las memorias periféricas, ya seansecundarias o terciarias.
Sus principales funciones son la asignación de espacio a los archivos, la administración del espacio libre y del acceso a los datos resguardados. Estructuran la información guardada en un dispositivo de almacenamiento de datos o unidad de almacenamiento (normalmente un disco duro de una computadora), que luego será representada ya sea textual o gráficamente utilizando un gestor de archivos.

La mayoría de los sistemas operativos manejan su propio sistema de archivos


    7.2 Archivos directorios   
   Muchos S. O. soportan varios tipos de archivos, por ej.: archivos regulares, directorios, archivos especiales de caracteres, archivos especiales de bloques, etc., donde:
   Los Archivos Regulares son aquellos que contienen información del usuario.
   Los Directorios son archivos de sistema para el mantenimiento de una estructura del sistema de archivos.
    Los Archivos Especiales de Caracteres:
ü  Tienen relación con la e / s.
ü  Se utilizan para modelar dispositivos seriales de e / s (terminales, impresoras, redes, etc.).
Los Archivos Especiales de Bloques se utilizan para modelar discos.

    7.3 Seguridad y compartir
Los sistemas de archivos generalmente contienen información muy valiosa para sus usuarios, razón por la que los sistemas de archivos deben protegerla
Un sistema de archivos distribuidos o sistema de archivos de red es un sistema de archivos de computadoras que sirve para compartir archivos, impresoras y otros recursos como un almacenamiento persistente en una red de computadoras. El primer sistema de este tipo fue desarrollado en la década de 1970, y en 1985 Sun Microsystems creó el sistema de archivos de red NFS el cual fue ampliamente utilizado como sistema de archivos distribuido. Otros sistemas notables utilizados fueron el sistema de archivos Andrew (AFS) y el sistema Server Message Block SMB, también conocido como CIFS.
    NFS
Artículo principal: Network File System
Primer sistema comercial de archivos en red (Sun Microsystems, 1984) estándar, multiplataforma que permite acceder y compartir archivos en una red C/S heterogénea como si estuvieran en un sólo disco, i.e. montar un directorio de una máquina remota en una máquina local.
AFS
Artículo principal: Andrew file system
El Andrew file system es un sistema de archivos distribuido comercial (CMU 1983, Transarc 1989, IBM 1998) para compartir archivos de manera transparente, escalable e independiente de la ubicación real.
Implementaciones de AFS:
OpenAFS: Versión open-source de AFS (IBM 2000).
XCoda: Sistema de archivos distribuido experimental open-source derivativo de AFS (CMU 1987). Se distingue por soportar dispositivos móviles.
DCE DFS
Artículo principal: DCE Distributed File System
DCE Distributed File System es un sistema de ficheros distribuido de DCE que permite agrupar archivos repartidos en diferentes máquinas, en un espacio de nombres único. Está basado casi por completo en el sistema de ficheros AFS pero con ligeras diferencias.
    7.4 Organización de memoria secundaria
Memoria secundaria. En términos básicos, es un método de almacenamiento de datos y la información en una base de más largo plazo que la memoria principal en un equipo. Mientras que la memoria RAM principal (por ejemplo) se ocupa principalmente de almacenamiento de programas actualmente en ejecución y los datos se tiene acceso en ese punto del tiempo, la memoria secundaria general, está pensado para almacenar todo lo que debe mantenerse y la recuperación posterior. Los datos almacenados permanece allí incluso si el ordenador está apagado.

Los ejemplos más conocidos de la memoria secundaria son los discos duros externos y unidades de medios (CD-ROM). Estos métodos de almacenamiento son los más comúnmente utilizados para almacenar el sistema operativo del ordenador (sistema operativo), la colección del usuario de software y cualquier otro dato que el usuario lo desea. Si bien la unidad de disco duro se utiliza para almacenar datos y software en una base semi-permanente y medios externos de unidades se utilizan para contener otros datos, este programa de instalación varía en función de las diferentes formas de almacenamiento y de la conveniencia de utilizar cada uno.

En la actualidad para almacenar información se usan principalmente tres tecnologías:
§  Magnética (ej. disco duro, disquete, cintas magnéticas);
§  Óptica (ej. CD, DVD, etc.)
§  Tecnología Flash (Tarjetas de Memorias Flash)


Características del almacenamiento secundario:
ü  Capacidad de almacenamiento grande.
ü  No se pierde información a falta de alimentación.
ü  Altas velocidades de transferencia de información.
ü  Mismo formato de almacenamiento que en memoria principal.
ü  Siempre es independiente del CPU y de la memoria primaria. Debido a esto, los dispositivos de almacenamiento secundario, también son conocidos como, Dispositivos de Almacenamiento Externo.




Tipos de almacenamiento:
Las dos principales categorías de tecnologías de almacenamiento que se utilizan en la actualidad son el almacenamiento magnético y el almacenamiento óptico. A pesar de que la mayoría de los dispositivos y medios de almacenamiento emplean una tecnología o la otra, algunos utilizan ambas.
Una tercera categoría de almacenamiento (almacenamiento de estado sólido) se utiliza con mayor frecuencia en los sistemas de computación, pero es más común en cámaras digitales y reproductores multimedia.
En función de la tecnología utilizada por los dispositivos y medios (soportes), el almacenamiento se clasifica en:
Ø  Almacenamiento magnético.
Ø  Almacenamiento óptico.
Ø  Almacenamiento magneto-óptico (híbrido, Disco magneto-ópticos)
Ø  Almacenamiento electrónico o de estado sólido (Memoria Flash).

Almacenamiento magnético:
Es una técnica que consiste en la aplicación de campos magnéticos a ciertos materiales capaces de reaccionar frente a esta influencia y orientarse en unas determinadas posiciones manteniéndolas hasta después de dejar de aplicar el campo magnético. ejemplo: disco duro, cinta magnética.



Almacenamiento óptico:
En los discos ópticos la información se guarda de una forma secuencial en una espira que comienza en el centro del disco. Además de la capacidad, estos discos presentan ventajas como la fiabilidad, resistencia a los arañazos, la suciedad y a los efectos de los campos magnéticos.

Ejemplos:
CD-ROM Discos de solo lectura.
CD-R Discos de escritura y múltiples lecturas.
CD-RW Discos de múltiples escrituras y lecturas.
DVD+/-R Discos de capacidad de 4.5GB, hasta 9.4GB, de escritura y múltiples lecturas.
DVD+/-RW Discos de capacidad de 4.5GB, hasta 9.4GB, de múltiples escritura y múltiples lecturas.
Blue Ray Nueva tecnología de disco de alta capacidad, desarrollada por Sony. Ganó la contienda, por ser el nuevo estándar contra su competidor el HD-DVD (DVD de Alta Definición). Su superioridad se debe a que hace uso de un laser "Azul", en vez de "Rojo", tecnología que ha demostrado ser mucho más rápida y eficiente que la implementada por el DVD de alta definición.

   7.5 Integridad de los sistemas de archivos
Los sistemas de archivos son criaturas complejas, y como tales, tienden a ser propensos a los errores. La corrección y validación de un sistema de archivos puede ser comprobada utilizando el comando fsck. Puede ser instruido para reparar cualquier problema menor que encuentre, y alertar al usuario si hay errores irreparables. Afortunadamente, el código implementado en los sistemas de archivos puede estudiarse de forma muy efectiva, así que escasamente hay problemas, y normalmente son causados por fallos de alimentación, hardware defectuoso, o errores de operación; por ejemplo, no apagar el sistema adecuadamente.
La mayoría de los sistemas se configuran para ejecutar fsck automáticamente durante el arranque, así que cualquier error se detecta (y esperemos que corregido) antes que el sistema se utilice. Utilizar un sistema de archivos corrupto tiende a empeorar las cosas: si las estructuras de datos se mezclan, utilizar el sistema de archivos probablemente las mezclará aún más, resultando en una mayor pérdida de datos. En cualquier caso, fsck puede tardar un tiempo en ejecutarse en sistemas de archivos grandes, y puesto que los errores casi nunca suceden si el sistema se ha apagado adecuadamente, pueden utilizarse un par de trucos para evitar realizar comprobaciones en esos casos. El primero es que si existe el archivo /etc/fastboot, no se realizan comprobaciones. El segundo es que el sistema de archivos ext2 tiene una marca especial en su superbloque que indica si el sistema de archivos se desmontó adecuadamente después del montaje previo. Esto permite a e2fsck (la versión de fsck para el sistema de archivos ext2) evitar la comprobación del sistema de archivos si la bandera indica que se realizó el desmontaje (la suposición es que un desmontaje adecuado indica que no hay problemas). Que el truco de /etc/fastboot funcione en su sistema depende de sus guiones (scripts) de inicio, pero el truco de ext2 funciona cada vez que utilice e2fsck. Debe ser sobrepasado explícitamente con una opción de e2fsck para ser evitado. (Vea la página de manual de e2fsck para los detalles sobre cómo.).

La comprobación automática sólo funciona para los sistemas de archivos que se montan automáticamente en el arranque. Utilice fsck de forma manual para comprobar otros sistemas de archivos, por ejemplo, disquetes.

Si fsck encuentra problemas irreparables, necesita conocimientos profundos de cómo funciona en general un sistema de archivos, y en particular el tipo del sistema de archivos corrupto, o buenas copias de seguridad. Lo último es fácil (aunque algunas veces tedioso) de arreglar, el precedente puede solucionarse a través de un amigo, los grupos de noticias y listas de correo de Linux, o alguna otra fuente de soporte, si no sabe cómo hacerlo usted mismo. Me gustaría contarle más sobre el tema, pero mi falta de formación y experiencia en este asunto me lo impiden. El programa de Theodore Ts'o debugfs puede ser de ayuda.

fsck debe ser utilizado únicamente en sistemas de archivos desmontados, nunca en sistemas de archivos montados (a excepción del raíz en sólo-lectura en el arranque). Esto es así porque accede al disco directamente, y puede por lo tanto modificar el sistema de archivos sin que el sistema operativo se percate de ello. Habrá problemas, si el sistema operativo se confunde.






   7.6 Apertura y cierre de archivos
Operaciones sobre archivos completos
Las operaciones sobre archivos completos con el archivo como unidad, sin tener en cuenta sus registros. Sin embargo, la organización del archivo y la estructura lógica de sus registros sí debe ser tenida en cuenta al operar con él.

Creación de un archivo
El objetivo de esta operación es permitir a los usuarios la creación de nuevos archivos. Mediante esta operación se indican las propiedades y las características del archivo para que el sistema de archivos pueda reconocerlo y procesarlo. En el proceso de creación del archivo debe registrarse la información necesaria para que el sistema pueda localizar el archivo y manipular sus registros lógicos. Para ello, el método de acceso debe obtener información sobre el formato y el tamaño de los registros lógicos y físicos, la identificación del archivo, la fecha de creación, su posible tamaño, su organización, aspectos de seguridad, etc.


Apertura de un archivo
En esta operación el método de acceso localiza e identifica un archivo existente para que los usuarios o el propio sistema operativo puedan operar con él. En algunos sistemas la operación de creación no existe como tal, y es la operación de archivo de un fichero no existente, la que implícitamente, crea un nuevo archivo. Los errores que pueden producirse en la apertura de un archivo son los siguientes:

El archivo no se encuentra en el lugar indicado (dispositivo, directorio, nombre).
El archivo se ha localizado pero el usuario no tiene permiso para acceder al mismo.
El archivo no se puede leer por errores en el hardware del dispositivo de almacenamiento.

Cierre de un archivo
Esta operación se utiliza para indicar que se va a dejar de utilizar un archivo determinado. Mediante esta operación el método de acceso se encarga de "romper" la conexión entre el programa de usuario y el archivo, garantizando la integridad de los registros. Al ejecutar esta operación, el sistema se encarga de escribir en el dispositivo de almacenamiento aquella información que contienen los búfer asociados al archivo y se llevan a cabo las operaciones de limpieza necesarias. Tras cerrar el archivo, sus atributos dejan de ser accesibles para el método de acceso. El único parámetro necesario para realizar esta operación es el identificador del archivo devuelto por el método de acceso al crear o abrir el archivo. Los errores que se pueden producir al cerrar un archivo son los siguientes:

El archivo no está abierto.
No se ha podido escribir en el dispositivo toda la información del archivo, debido a fallos en el hardware.
No se ha podido escribir en el dispositivo toda la información del archivo por falta de espacio en el dispositivo de almacenamiento.
Extensión del archivo
Esta operación permite a los programas de usuario aumentar el tamaño de un archivo asignándole más espacio en el dispositivo de almacenamiento. Para realizar esta operación el método de acceso necesita conocer el identificador del archivo y el tamaño del espacio adicional que se debe asignar al archivo. En función de la organización del archivo, el método de acceso determinará si el espacio adicional que debe asignar debe ser contiguo al archivo o no. Mediante esta operación el atributo que indica el tamaño del archivo será modificado y se devolverá al programa de usuario con un código de estado. El único motivo para que esta operación no se lleve a cabo con éxito es que no haya suficiente espacio disponible en el lugar adecuado (no contiguo).
    
     Protección de archivos
   Muchos sistemas informáticos modernos proporcionan métodos para proteger los archivos frente a daños accidentales o intencionados. Las computadoras que permiten varios usuarios implementan permisos sobre archivos para controlar quién puede o no leer, modificar, borrar o crear archivos y carpetas. A un usuario dado se le puede conceder solamente permiso para modificar un archivo o carpeta, pero no para borrarlo; o a un usuario se le puede conceder permiso para crear archivos o carpetas, pero no para borrarlos. Los permisos también se pueden usar para permitir que solamente ciertos usuarios vean el contenido de un archivo o carpeta. Los permisos protegen de la manipulación no autorizada o destrucción de la información de los archivos, y mantienen la información privada confidencial impidiendo que los usuarios no autorizados vean ciertos archivos.

    Otro mecanismo de protección implementado en muchas computadoras es una marca de sólo lectura. Cuando esta marca está activada en un archivo (lo que puede ser realizado por un programa de computadora o por un usuario humano), el archivo puede ser examinado, pero no puede ser modificado. Esta marca es útil para información crítica que no debe ser modificada o borrada, como archivos especiales que son usados solamente por partes internas del sistema informático. Algunos sistemas incluyen también una marca oculta para hacer que ciertos archivos sean invisibles; esta marca la usa el sistema informático para ocultar archivos de sistema esenciales que los usuarios nunca deben modificar.

     Protección legal de datos de archivos
   La protección de datos personales y velar por la privacidad de la información es un tema de suma importancia a nivel de empresas y de países. El mal uso de información personal puede constituir un delito.

    Algunos países han creado organismos que se encargan del tema y de legislar respecto del acceso, uso y confidencialidad de los datos establecidos.


      Almacenamiento de archivos
     En términos físicos, la mayoría de los archivos informáticos se almacenan en discos duros —discos magnéticos que giran dentro de una computadora que pueden registrar información indefinidamente—. Los discos duros permiten acceso casi instantáneo a los archivos informáticos.

     Hace unos años solían usarse cintas magnéticas para realizar copias de seguridad. También se usaban otros medios de almacenamiento como discos compactos grabables, unidades Zip, etcétera.

    No obstante en la actualidad han cobrado mucho auge las memorias flash, dispositivos con mucha capacidad de almacenamiento que tienen la ventaja de ser pequeños y portátiles; suelen usarse para guardar archivos en dispositivos pequeños como Telefonos móviles o reproductores de audio portátiles


         Respaldo de archivos
     Cuando los archivos informáticos contienen información que es extremadamente importante, se usa un proceso de respaldo (back-up) para protegerse contra desastres que podrían destruir los archivos. Hacer copias de respaldo de archivos significa simplemente hacer copias de los archivos en una ubicación separada de modo que se puedan restaurar si le pasara algo a la computadora, o si fueran borrados accidentalmente.

     Hay muchas maneras de hacer copias de respaldo de archivos. La mayoría de los sistemas informáticos proporcionan utilidades para ayudar en el proceso de respaldo, que puede llegar a consumir mucho tiempo si hay muchos archivos a salvaguardar. Copiar los archivos a otro disco duro en la misma computadora protege contra el fallo de un disco, pero si es necesario protegerse contra el fallo o destrucción de la computadora entera, entonces de deben hacer copias de los archivos en otro medio que puede sacarse de la computadora y almacenarse en una ubicación distante y segura.
   
       Sistemas de archivos y gestores de archivos
       Artículo principal: Sistema de archivos
    La manera en que un sistema operativo organiza, da nombre, almacena y manipula los archivos se denomina globalmente como su sistema de archivos. Todos los sistemas operativos tienen al menos un sistema de archivos; algunos sistemas operativos permiten usar varios sistemas de archivos diferentes. Por ejemplo, en Microsoft Windows 7, se reconocen los antiguos sistemas de archivos FAT y FAT32 de las versiones antiguas de Windows, además del sistema de archivos NTFS que es el sistema de archivos normal en las versiones recientes de Windows. NTFS no es más moderno que FAT32; ha existido desde que Windows NT se publicó en 1993.

    Cada sistema de archivos tiene sus propias ventajas y desventajas. La FAT estándar solamente permite nombres de archivo de ocho bytes (u ocho caracteres de sólo 1 byte) sin espacios (más una extensión de tres bytes/caracteres), por ejemplo, mientras que NTFS permite nombres mucho más largos que pueden contener espacios, y tener varias letras Unicode. Se puede llamar a un archivo "Registros de nóminas" en NTFS, mientras que en FAT estaría limitado a algo como "nominas.dat" (salvo que estuviera usando VFAT, una extensión de FAT que permite nombres de archivo largos).
    
   Los programas gestores o administradores de archivos son utilidades que le permiten manipular archivos directamente. Le permiten mover, crear, borrar y renombrar archivos y carpetas, aunque no le permiten realmente leer el contenido de un archivo o almacenar información en él. Cada sistema informático proporciona al menos un programa gestor de archivos para su sistema de archivos nativo. En Windows, el gestor de archivos usado más comúnmente es Windows Explorer.

         ADMINISTRACIÓN DE RECUSOS Y SCHEDULINGS
     8.1 Observaciones generales
La administración de recursos es una de las funciones básicas del sistema operativo.
Mediante esta función el sistema operativo está en capacidad de distribuir en forma adecuada y en el momento oportuno los diferentes recursos (memoria, dispositivos, etc.,...) entre los diversos programas que se encuentran en proceso, para esto, lleva un registro que le permite conocer que recursos están disponibles y cuales están siendo utilizados, por cuanto tiempo y por quien, etc.
    8.2 Mecanismos de administración
La función de administración de recursos es un componente del entorno de contenedores de Solaris. La administración de recursos permite controlar el modo en que las aplicaciones utilizan los recursos del sistema. Se puede:
·         Asignar recursos informáticos, como tiempo del procesador
·         Supervisar el modo en que se utilizan las asignaciones y luego ajustarlas según sea preciso
·         Generar información de contabilidad ampliada para análisis, facturación y planificación de capacidades
En este capítulo se tratan los temas siguientes.
·         Información general sobre la gestión de recursos
·         Cuándo utilizar la administración de recursos
·         Configuración de la administración de recursos (mapa de tareas)

    Clasificación de los recursos
Un recurso es cualquier aspecto del sistema informático que pueda manipularse con la finalidad de cambiar el comportamiento de la aplicación. En consecuencia, un recurso es una capacidad que solicita una aplicación implícita o explícitamente. Si se deniega o limita la capacidad, la ejecución de una aplicación potente es más lenta.

La clasificación de recursos, a diferencia de la identificación de recursos, puede realizarse para una serie de ejes. Los ejes se pueden solicitar de forma implícita (en contraposición a su solicitud explícita), pueden basarse en el tiempo, como el tiempo de la CPU (en contraposición a las solicitudes independientes del tiempo, como los recursos compartidos de la CPU), etc.

Generalmente, la administración de recursos basada en el planificador se aplica a los recursos que puede solicitar la aplicación de forma implícita. Por ejemplo, para continuar la ejecución, una aplicación solicita de forma implícita tiempo de CPU adicional. Para grabar datos en un socket de red, una aplicación solicita ancho de banda implícitamente. Pueden colocarse limitaciones en el uso total de un recurso solicitado de forma implícita.

Pueden presentarse interfaces adicionales para que los niveles de servicio de CPU o el ancho de banda se negocien de forma explícita. Los recursos que se solicitan de forma explícita, como una solicitud de subproceso adicional, se pueden administrar por limitación.

Mecanismos de control de administración de recursos
Los tres tipos de mecanismos de control disponibles en el sistema operativo Solaris son las limitaciones, la planificación y las particiones.

Mecanismos de limitación
Las limitaciones permiten al administrador o al desarrollador de aplicaciones definir los límites de consumo de recursos específicos para una carga de trabajo. Con unos límites establecidos, el consumo de recursos de modelación pasa a ser un proceso más sencillo. Asimismo, pueden utilizarse los límites para controlar las aplicaciones cuyo comportamiento incorrecto podría afectar al rendimiento o la disponibilidad del sistema a través de solicitudes de recursos no reguladas.

Las limitaciones suponen complicaciones para la aplicación. La relación entre la aplicación y el sistema puede modificarse hasta que la aplicación deje de funcionar. Para atenuar este riesgo, puede reducir gradualmente las limitaciones en las aplicaciones cuyos recursos tienen un comportamiento desconocido. La función de controles de recursos que se describe en el Capítulo 6Controles de recursos (descripción general) ofrece un mecanismo de limitación. Las aplicaciones más nuevas pueden programarse para que tengan en cuenta sus limitaciones de recursos, pero no todos los programadores deciden hacerlo.

Mecanismos de planificación
La planificación hace referencia a la toma de una serie de decisiones de asignación a intervalos específicos. La decisión que se toma se basa en un algoritmo predecible. Una aplicación que no necesita su asignación actual deja el recurso disponible para el uso de otra aplicación. La administración de recursos basada en la planificación permite el uso completo de una configuración no asignada, a la vez que proporciona asignaciones controladas en una situación de asignaciones excesivas. El algoritmo subyacente define el modo en que se interpreta el término "controlado". En algunas instancias, es posible que el algoritmo de planificación, garantice que todas las aplicaciones tengan algún tipo de acceso al recurso. El planificador de reparto justo (FSS) descrito en el Capítulo 8Programador de reparto justo (descripción general) administra el acceso de la aplicación a los recursos de la CPU de un modo controlado.
  
        Mecanismos de partición
    La partición se utiliza para vincular una carga de trabajo con un subconjunto de los recursos disponibles del sistema. Este vínculo garantiza que siempre haya disponible una cantidad determinada de recursos para la carga de trabajo. Las funciones de agrupaciones de recursos que se describen en el Capítulo 12Agrupaciones de recursos (descripción general) permiten limitar las cargas de trabajo de subconjuntos específicos del equipo.

     En las configuraciones que utilizan la partición se puede evitar la asignación excesiva en el sistema. Sin embargo, al evitar esta asignación excesiva, la capacidad de obtener usos elevados puede verse reducida. Un grupo reservado de recursos, como procesadores, no está disponible para ser utilizado por otra carga de trabajo cuando la carga vinculada a ellos está inactiva.

     8.3 Scheduler
    El planificador (en inglés scheduler) es un componente funcional muy importante de los sistemas operativos multitarea y multiproceso, y es esencial en los sistemas operativos de tiempo real. Su función consiste en repartir el tiempo disponible de un microprocesador entre todos los procesos que están disponibles para su ejecución.    
       Cómo funciona
    Supóngase un ordenador que contiene un único microprocesador. Dicho microprocesador solamente puede ejecutar un programa en cada instante de tiempo. Además, cuando un programa está ejecutándose, nunca dejará de hacerlo por sí mismo. De manera que, en principio, cualquier programa monopoliza el microprocesador impidiendo que otros programas se ejecuten.
   Por ello, la primera misión de un planificador es expulsar el programa en ejecución cuando decida que es pertinente. Esto se consigue de dos maneras, siempre con ayuda del propio hardware:
     Cuando expira un temporizador, que se activa a intervalos regulares de tiempo. En intervalos muy cortos, generalmente cada 250 milisegundos.  
   Cuando el programa solicita una operación de entrada/salida. Dado que el programa no puede continuar hasta que termine dicha operación, es un buen momento para ejecutar otro programa.
      En ambos casos, el control del microprocesador pasa a manos del planificador gracias a que el hardware genera una interrupción. En este proceso de expulsión, se guarda el estado de ejecución del programa (programa y su estado se denomina contexto).

   a continuación, el planificador decide cuál será el siguiente proceso en ejecutarse. Naturalmente, solamente se escogen procesos que estén listos para hacerlo. Si un proceso sigue esperando por una operación de entrada/salida no será candidato a ejecutarse hasta que finalice tal operación.

La selección del proceso sigue alguna política de planificación (ver más adelante) preestablecida. Una vez seleccionado un proceso, se procede a ejecutarlo. Para ello, el planificador restaura su estado de ejecución (previamente salvado) y abandona el uso del microprocesador cediéndoselo a dicho proceso.
     Nota: se dice que el planificador procede a ejecutarlo a modo ilustrativo, entrando un poco más en detalle el planificador envía su lista de procesos al 'dispatcher' (despachador) para que este adecue al proceso y su PCB para la inmediata ejecución Todo esto apenas dura unos pocos milisegundos.
     
      Tiempo real  

    Un sistema operativo en tiempo real se caracteriza por garantizar que todo programa se ejecutará en un límite máximo de tiempo. El planificador debe comportarse de manera que esto sea cierto para cualquier proceso.

       Niveles de planificación
     Los niveles de planificación están basados en la frecuencia con la que se realiza cada uno.
    En los sistemas operativos de propósito general, existen tres tipos de planificadores. El planificador a corto plazo es el que se ha descrito aquí, siendo también el más importante. En inglés, se denomina dispatcher o short term scheduler, también existe un planificador a mediano plazo (en inglés, mid term scheduler) relacionado con aquellos procesos que no se encuentran en memoria principal (véase memoria virtual). Su misión es mover procesos entre memoria principal y disco (lo que se conoce como swapping) y por último existe el planificador a largo plazo (en inglés long term scheduler) es el encargado de ingresar nuevos procesos al sistema y de finalizarlos.



    8.4 Algoritmos de Scheduling
    Existen dos tipos de algoritmos de calendarización (políticas de planificación), expropiativos y no expropiativos. Los expropiativos asignan un tiempo de ejecución a cada proceso después del cual se calendariza otro proceso, hasta que cada proceso acabe su trabajo. También pueden expulsar a un proceso en ejecución si llega otro de mayor prioridad que necesita ejecutarse. Los no expropiativos permiten que se ejecute el proceso hasta que acabe su trabajo. Es decir, una vez les llega el turno de ejecutarse, no dejarán libre la CPU hasta que terminen o se bloqueen.  
    8.5 Jerarquización de procesos

Normalmente los sistemas operativos implementan una jerarquía de scheduling de procesos. Esto se debe a que, primero, la CPU no es el único recurso que hay que administrar, la memoria también es escasa y hay que administrarla; y segundo, no todos los procesos tienen la misma urgencia, por lo que es conveniente que los procesos no urgentes se pospongan hasta que el computador se encuentre más desocupado.

Es así como el scheduling se podría organizar en 3 niveles:

Scheduling de corto plazo.
En este nivel se administra sólo la CPU usando las estrategias vistas en la sección anterior. Esta administración la realiza el núcleo.

Scheduling de mediano plazo.
En este nivel se administra la memoria. Cuando la memoria disponible no es suficiente se llevan procesos a disco. Esta transferencia a disco toma mucho más tiempo que un traspaso de la CPU (0.1 a 1 segundo vs. menos de un milisegundo). Por lo tanto las transferencias a disco deben ser mucho menos frecuentes que los cambios de contexto. Por esta razón se habla de mediano plazo. Este nivel de scheduling también se realiza en el núcleo.

Scheduling de largo plazo.
Este nivel está orientado al procesamiento batch. Los procesos batch o jobs no son urgentes, por lo que su lanzamiento puede ser postergado si el computador está sobrecargado. No todos los sistemas operativos implementan este nivel de scheduling y si lo hacen, lo realizan fuera del núcleo a través de procesos ``demonios''



       8.6 Control y contabilidad    
     Sistema operativo, software básico que controla una computadora. El sistema operativo tiene tres grandes funciones: coordina y manipula el hardware de la computadora, como la memoria, las impresoras, las unidades de disco, el teclado o el mouse; organiza los archivos en diversos dispositivos de almacenamiento, como discos flexibles, discos duros, discos compactos o cintas magnéticas, y gestiona los errores de hardware y la pérdida de datos.


      Funciones y características de los sistemas operativos.
Funciones de los sistemas operativos.
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.



.  PROTECCIÓN
Una de las funciones básicas del sistema operativo es la de 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. 



OBJETIVOS DE LA SEGURIDAD INFORMÁTICA
La seguridad informática está concebida para proteger los activos informáticos, entre los que se encuentran:

  •    La información contenida: La seguridad informática debe ser administrada según los criterios establecidos por los administradores y supervisores, evitando que usuarios externos y no autorizados puedan acceder a ella sin autorización. Otra función de la seguridad informática en esta área es la de asegurar el acceso a la información en el momento oportuno, incluyendo respaldos de la misma en caso de que esta sufra daños o pérdida producto de accidentes, atentados o desastres.

  •    La infraestructura computacional: Una parte fundamental para el almacenamiento y gestión de la información, así como para el funcionamiento mismo de la organización. La función de la seguridad informática en esta área es velar que los equipos funcionen adecuadamente y prever en caso de falla planes de robos, incendios, boicot, desastres naturales, fallas en el suministro eléctrico y cualquier otro factor que atente contra la infraestructura informática.

  •   Los usuarios: Son las personas que utilizan la estructura tecnológica, zona de comunicaciones y que gestionan la información. La seguridad informática debe establecer normas que minimicen los riesgos a la información o infraestructura informática.  
    9.1 Motivación
• La protección consiste en controlar y, en su caso, impedir el acceso de los programas, procesos o usuarios a los recursos del sistema (archivos, memoria, CPU,..)
     Se necesitan mecanismos y políticas que determinen qué acceso se permite a quién.
     Los recursos sólo pueden ser usados por los procesos que tienen autorización del SO.
• La seguridad estudia como proteger la información almacenada en el sistema (datos o código) contra accesos indebidos o no autorizados (intrusos, fallos de la privacidad, etc.).
Objetivos de la protección
• La protección consiste en controlar y, en su caso, impedir el acceso de los programas, procesos o usuarios a los recursos del sistema (archivos, memoria, CPU,..)
     Se necesitan mecanismos y políticas que determinen qué acceso se permite a quién.
     Los recursos sólo pueden ser usados por los procesos que tienen autorización del SO.
• La seguridad estudia como proteger la información almacenada en el sistema (datos o código) contra accesos indebidos o no autorizados (intrusos, fallos de la privacidad, etc.).

9.2 Desarrollo de mecanismos de protección
Protección y seguridad
Introducción.
Los mecanismos de protección controlan el acceso a un sistema limitado los tipos de acceso a archivos permitidos a los usuarios. Además, los mecanismos de protección deben garantizar que sólo los procesos que hayan obtenido la adecuada autorización del sistema operativo puedan operar sobre los segmentos de memoria, CPU y otros recursos.
La protección se proporciona mediante un mecanismo que controla el acceso de los programas, de los procesos o de los usuarios a los recursos definidos por un sistema informático. Este mecanismo debe proporcionar un medio para especificar los controles que hay que imponer, junto con algún modo de imponerlos.
La seguridad garantiza la autenticación de los usuarios del sistema, con el fin de proteger la integridad de la información almacenada en el mismo (tanto datos como código), así como la de los recursos físicos del sistema informático. El sistema de seguridad impide los accesos no autorizados, la destrucción o manipulación maliciosas de los datos y la introducción accidental de incoherencias.

Concepto y Objetivos de Protección
Los procesos en un sistema operativo deben protegerse de las actividades realizadas por otros procesos. Para proporcionar dicha protección, podemos utilizar diversos mecanismos para garantizar que sólo los procesos que hayan obtenido la adecuada autorización del sistema operativo puedan operar sobre los archivos, los segmentos de memoria, sobre la CPU y sobre otros recursos del sistema.
El concepto de protección hace referencia a un mecanismo para controlar el acceso de los programas, de los procesos o de los usuarios a los recursos definidos por el sistema informático. Este mecanismo debe proporcionar un medio de especificar los controles que hay que imponer, junto con un modo de imponerlos. Podemos distinguir entre los conceptos de protección y seguridad; este último es una medida de la confianza en que se puedan preservar la integridad de un sistema de sus datos.
 .
Objetivos de la protección.  .
A medida que los sistemas informáticos se han hecho más sofisticados y a medida que su rango de aplicaciones se ha ido incrementando, también ha crecido la necesidad de proteger la integridad de esos sistemas. La protección se concebía originalmente como algo asociado a los sistemas operativos multiprogramados, de modo que a los usuarios que no fueran de confianza pudieran compartir de manera segura un espacio lógico de nombres común, como por ejemplo un directorio de archivos, o compartir un espacio físico de nombres común, como por ejemplo la memoria. Los conceptos modernos de protección han evolucionado para incrementar la fiabilidad de cualquier sistema complejo que haga uso de recursos compartidos
Intrusos:
Piratas o hackers: individuos que acceden al sistema sin autorización.
Los sistemas presentan agujeros por donde los hackers consiguen colarse.

Técnicas de intrusión:
Averiguar contraseñas (más del 80% de las contraseñas son simples).
Probar exhaustivamente.
Descifrar archivo de contraseñas.
Intervenir líneas.
Usar caballos de Troya.

Técnicas de prevención de intrusos:

Establecer una buena estrategia de elección de contraseñas:
Contraseñas generadas por ordenador (difícil memorización).
Inspección activa (proceso periódico de averiguación).
Inspección proactiva (decidir si es buena en su creación)
Técnicas de detección de intrusos:

Investigar actividades inusuales:
Detección de anomalías estadísticas.
Uso de registros de auditoría que recogen información del comportamiento de cada usuario.
Detección basada en reglas.
Conjunto de reglas empleadas para decidir si una actividad es inusual.
Tipos de amenazas:
Amenazas pasivas:
Revelación del contenido del mensaje.
Amenazas activas:
Alteración del flujo de mensajes.
Privación del servicio:
 Impide el uso normal de los servicios de comunicaciones.
 
Suplantación:
  Cuando una entidad finge ser otra diferente.
  Análisis del tráfico:
En caso de que los mensajes vayan encriptados.
Determinar las máquinas que se comunican y la frecuencia y longitud de los mensajes.
Alteración del flujo de mensajes.

Clasificación de programas malignos:
Programas malignos que necesitan anfitrión:
Forman parte de un programa.
Trampillas:
Punto de entrada secreto a un programa.
Se usan para depuración y prueba.
Pueden usarse para acceso no autorizado.
Bomba lógica:
Se ejecutan cuando se cumplen ciertas condiciones.
Ej: se borra el disco duro si programador no está en nómina.
Caballo de Troya:
Código dañino incrustado en programa que se ejecuta cuando se ejecuta el programa.

Programas malignos que no necesitan anfitrión:
Gusanos:
Programas independientes.
Se reproducen a través de la red.
Además de propagarse pueden causar daños.
Bacterias:
No dañan explícitamente.
Su único objetivo es reproducirse.
Se reproducen exponencialmente agotando la capacidad del procesador.
Virus:
Código incrustado en un programa.
Se reproducen e insertan en otros programas.
Pueden causar daños.

Algoritmo de virus muy simple (tan sólo se reproduce):
Encontrar 1ª instrucción de un ejecutable del disco.
Sustituirla por salto a posición siguiente a la última instrucción.
Insertar copia del código de virus (este algoritmo) en dicha posición.
Hacer que el virus simule la instrucción sustituida por el salto.
Saltar a la segunda posición.

Cifrado.
Concepto de Cifrado.
El cifrado es un método que permite aumentar la seguridad de un mensaje o de un archivo mediante la codificación del contenido, de manera que sólo pueda leerlo la persona que cuente con la clave de cifrado adecuada para descodificarlo. Por ejemplo, si realiza una compra a través de Internet, la información de la transacción (como su dirección, número de teléfono y número de tarjeta de crédito) suele cifrarse a fin de mantenerla a salvo. Use el cifrado cuando desee un alto nivel de protección de la información.

Métodos y Técnicas de Cifrado:

Cifrado de sustitución
El cifrado de sustitución consiste en reemplazar una o más entidades (generalmente letras) de un mensaje por una o más entidades diferentes.

Existen varios tipos de criptosistemas de sustitución:

La sustitución monoalfabética consiste en reemplazar cada una de las letras del mensaje por otra letra del alfabeto.
La sustitución polialfabética consiste en utilizar una serie de cifrados monoalfabéticos que son re-utilizados periódicamente.
La sustitución homófona hace posible que cada una de las letras del mensaje del texto plano se corresponda con un posible grupo de caracteres distintos.
La sustitución poligráfica consiste en reemplazar un grupo de caracteres en un mensaje por otro grupo de caracteres.

Cifrado César
Este código de cifrado es uno de los más antiguos ya que su uso se remonta a Julio César. El principio de cifrado se basa en la adición de un valor constante a todos los caracteres de un mensaje o, más precisamente, a su código ASCII.

Cifrado ROT 13

El caso específico del cifrado César donde la clave de cifrado es N (la 13º letra del alfabeto) se denomina ROT 13? (se eligió el número 13, la mitad de 26, para que sea posible cifrar y descifrar fácilmente mensajes textuales).
Cifrado de Transposición

El método de cifrado por transposición consiste en reordenar datos para cifrarlos a fin de hacerlos ininteligibles. Esto puede significar, por ejemplo, reordenar los datos geométricamente para hacerlos visualmente inutilizables.

El Cifrado Simétrico.
El cifrado simétrico (también conocido como cifrado de clave privada o cifrado de clave secreta) consiste en utilizar la misma clave para el cifrado y el descifrado.

El cifrado consiste en aplicar una operación (un algoritmo) a los datos que se desea cifrar utilizando la clave privada para hacerlos ininteligibles. El algoritmo más simple (como un OR exclusivo) puede lograr que un sistema prácticamente a prueba de falsificaciones (asumiendo que la seguridad absoluta no existe).

El Cifrado Asimétrico.
El cifrado asimétrico (también conocido como cifrado con clave pública). En un criptosistema asimétrico (o criptosistema de clave pública), las claves se dan en pares:

Una clave pública para el cifrado.

Una clave secreta para el descifrado.
En un sistema de cifrado con clave pública, los usuarios eligen una clave aleatoria que sólo ellos conocen (ésta es la clave privada). A partir de esta clave, automáticamente se deduce un algoritmo (la clave pública). Los usuarios intercambian esta clave pública mediante un canal no seguro.


9.3 Protección jerárquica del sistema
Anillo (seguridad informática)
Anillos de privilegio para el x86 disponibles en el modo protegido
En ciencias de la computación, los dominios de protección jerárquica,1 2 con frecuencia llamados anillos de protección, son mecanismos para proteger datos y funcionalidad de los fallos (tolerancia a fallos) y comportamiento malicioso (seguridad de computadores). Este enfoque es diametralmente opuesto a la de la seguridad basada en capacidad.


10.1 Objetivos y terminología
Una de las funciones básicas de un sistema operativo es la de Gestión de la información: el sistema operativo proporciona cierta cantidad de indicadores que pueden utilizarse para diagnosticar el funcionamiento correcto del equipo.
CONFIABILIDAD EN UN SISTEMA

      La confiabilidad de un sistema y sus componentes es de suma importancia si queremos conocer la confiabilidad de los activos. Los datos suministrados por los indicadores de confiabilidad debe darnos la distribución de fallos para una o más combinaciones de esfuerzos y ambientes.

      Uno de los factores a considerar para predecir la confiabilidad de componentes es la tasa de fallo, nivel operativo del equipo, número de ciclos conectados - desconectados, número de horas de funcionamiento, naturaleza y distribución del fallo.
      Otros aspectos a tomar en cuenta en la configuración de los sistemas es el tipio y grado de redundancia, naturaleza y frecuencia de las acciones de mantenimiento, modos de fallos de componentes sobre sistemas.

      Existen diferentes procedimientos para obtener una predicción del sistema y componentes, como modelos matemáticos, técnicas de simulación y determinación de valores límites. La tecnología de monitoreo por condiciones realiza un análisis lógico que relaciona los fallos de los componentes con los fallos del sistema. Se utilizan modelos de un conjunto de bloques en el que cada bloque representa un componente o combinación de componentes que realiza una función, cada bloque solo tiene posibles estados mutuamente excluyentes (Satisfactorio y Fallado)


.10.2 Fallas
Bugs (error de software): Se refiere a una debilidad o defecto o error en un sistemas informático, el cual lo hace vulnerable a ataques informáticos (virus, ciberdelicuentes, etc.). También se le conoce como agujeros de seguridad.

1
10.4 Tratamiento de fallas
1.-Falla
Windows tarda mucho en iniciar y cerrar.
Solución
Optimización de programas de inicio.
Limpieza de software (virus, spyware, pop ups, etc.)
2.-Falla
La computadora se ha vuelto lenta.
Solución
Limpieza de software virus, spyware, etc.
Reparación o cambio de disco duro.
Recuperación de los sectores dañados.

10.6. Manejo multinivel de errores
La programación por capas es una arquitectura cliente-servidor en el que el objetivo primordial es la separación de la lógica de negocios de la lógica de diseño; un ejemplo básico de esto consiste en separar la capa de datos de la capa de presentación al usuario.
La ventaja principal de este estilo es que el desarrollo se puede llevar a cabo en varios niveles y, en caso de que sobrevenga algún cambio, solo se ataca al nivel requerido sin tener que revisar entre código mezclado. Un buen ejemplo de este método de programación sería el modelo de interconexión de sistemas abiertos.
Además, permite distribuir el trabajo de creación de una aplicación por niveles; de este modo, cada grupo de trabajo está totalmente abstraído del resto de niveles, de forma que basta con conocer la API que existe entre niveles.

       11.    CONTROL DE PROCESOS
111.1 Comentarios generales
Definición y Control de Procesos
Los sistemas operativos multiprogramados necesitan del concepto de proceso. El sistema operativo debe entremezclar la ejecución de un número de procesos para maximizar la utilización de los recursos del ordenador. Al mismo tiempo, los sistemas de tiempo compartido deben proporcionar un tiempo de respuesta razonable. El sistema operativo debe asignar recursos a los procesos de acuerdo a una política específica (ciertas funciones o aplicaciones son de mayor prioridad), mientras impide los interbloqueos. Por último, el sistema operativo debe ofrecer un soporte para llevar a cabo la comunicación entre procesos.

El concepto de proceso es clave en los sistemas operativos modernos. La gestión del procesador mediante multiprogramación, revolucionó la concepción de los sistemas operativos, e introdujo el término proceso como elemento necesario para realizar dicha gestión. Por lo demás, este tema trata sobre la definición de proceso, el estudio de sus propiedades, y la gestión que realiza el sistema operativo para crear la abstracción de proceso, aunque esto último se completará en el tema de planificación. Por último, descubriremos que el concepto de proceso encierra, en realidad, dos características potencialmente independientes: por un lado, es una unidad a la que se le asigna y posee recursos y, por otro, es una unidad panificable. Basándonos en esta distinción emprenderemos el estudio de los threads (hebra o hilo), o también llamados procesos ligeros.

¿Qué es un proceso?
Hasta ahora hemos utilizado siempre el término programa. A partir de ahora distinguiremos entre programa y proceso. Un programa es una secuencia de instrucciones escrita en un lenguaje dado. Un proceso es una instancia de ejecución de un programa, caracterizado por su contador de programa, su palabra de estado, sus registros del procesador, su segmento de texto, pila y datos, etc. Un programa es un concepto estático, mientras que un proceso es un concepto dinámico. Es posible que un programa sea ejecutado por varios usuarios en un sistema multiusuario, por cada una de estas ejecuciones existirá un proceso, con su contador de programa, registros, etc. El sistema operativo necesita el concepto de proceso para poder gestionar el procesador mediante la técnica de multiprogramación o de tiempo compartido, de hecho, el proceso es la unidad panificable, o de asignación de la CPU.

Modelo de tres estados
Para poder manejar convenientemente una administración de procesador es necesario contar con un cierto juego de datos. Ese juego de datos será una tabla (BCP o en inglés PCB) en la cual se reflejará en qué estado se encuentra el proceso, por ejemplo, si está ejecutando o no. Los procesos, básicamente, se van a encontrar en este caso, en tres estados:

- Ejecutando.
- Listos para la ejecución.
- Bloqueados por alguna razón.

Sobre la base de estos estados se construye lo que se denomina Diagrama de Transición de Estado (DTE). Estar en la cola de Listos significa que el único recurso que a ese proceso le está haciendo falta es el recurso procesador. O sea, una vez seleccionado de esta cola pasa al estado de Ejecución. Se tiene una transición al estado de Bloqueados cada vez que el proceso pida algún recurso. Una vez que ese requerimiento ha sido satisfecho, el proceso pasará al estado de Listo porque ya no necesita otra cosa más que el recurso procesador.


111.2 Lenguaje de comandos
LENGUAJE DE COMANDOS - SCRIPTS .CMD. BAT


¿Qué es un script en lenguaje de comandos?: No es nada mas que un fichero de texto, que puede generarse con el simple cuaderno de notas, y cuya extensión es .bat o .cmd. Su contenido son los comandos que ejecutaríamos en una consola de comandos (cmd) y cuyo fin es evitar las tareas repetitivas que podríamos realizar en una consola de comandos.

Aunque esta es la definición clásica, no debemos perder de vista que desde una consola de comandos podemos realizar, mediante comandos, prácticamente todo lo que la imaginación nos permita. Todo lo que se configura, o las tareas de mantenimiento que realizamos en Windows se pueden hacer desde una consola de comandos. Igualmente existen muchos comandos que son solo de consola.

Revisemos un poco la tipología de los comandos: un comando es "algo" que o bien entiende directamente el Shell (el intérprete de comandos, en este caso el cmd.exe) o bien es un programa con extensión .com o .exe -o incluso un visual Basic- que no use la interfaz gráfica y que por tanto esté orientado a la consola. Un ejemplo clásico es el programa ipconfig. Este programa (de consola) nos da la configuración TCP/IP de la máquina. O bien el programa ping.

ENTORNO DE UN PROGRAMA.
Todos los sistemas operativos, y Windows no es una excepción, tienen un área de datos llamada "entorno". No es nada más que un área donde se guardan ciertas variables con su contenido.

Es importante entender que cada programa de Windows tiene su entorno (igual o diferente u otro programa). Los entornos se heredan. Cada programa (y el propio intérprete de comandos, cmd.exe, es un programa más) cuando se lanza, "hereda" dicho entorno. Por heredar, no quiere decir que "use" el mismo que el programa padre, sino que al lanzarse, el "loader" -cargador- del sistema operativo lo que realiza es una copia del entorno padre en una nueva área de datos y al lanzar el programa le da como dirección del área de entorno esa nueva copia del entorno del "padre".

En otras palabras, cualquier modificación en las variables de entorno dentro de un programa no afecta al sistema ni al resto de programas, ya que lo que haría es modificar su propio entorno: la copia del entorno original del programa padre.

     El sistema operativo al cargarse predefine ya una serie de variables de entorno. Podemos verlas, bien con botón derecho en Mi PC, propiedades, pestaña de opciones avanzadas y botón de variables de entorno, o bien de una manera mas simple, lanzando el intérprete de comandos (cmd.exe) y tecleando el comando "set" (sin comillas).

    11.3 Lenguaje de control de procesos
Lenguaje de programación
Un lenguaje de programación es un lenguaje diseñado para describir el conjunto de acciones consecutivas que un equipo debe ejecutar. Por lo tanto, un lenguaje de programación es un modo práctico para que los seres humanos puedan dar instrucciones a un equipo. 

Por otro lado, el término "lenguaje natural" define un medio de comunicación compartido por un grupo de personas (por ejemplo: inglés o francés). 

Los lenguajes que los equipos usan para comunicarse entre ellos no tienen nada que ver con los lenguajes de programación; se los conoce como 
protocolos de comunicación. Se trata de dos conceptos totalmente diferentes. Un lenguaje de programación es muy estricto:

El lenguaje utilizado por el 
procesador se denomina lenguaje máquina. Se trata de instrucciones que llegan al procesador consistentes en una serie de datos binarios (ceros y unos). 

El lenguaje máquina, por lo tanto, no es comprensible para los seres humanos, razón por la cual se han desarrollado lenguajes intermediarios comprensibles para el hombre. El código escrito en este tipo de lenguaje se transforma en código máquina para que el procesador pueda interpretarlo. 



Presentación de procesos de pool
5 Mensajes del sistema operativo   
     Mensajes
Paso de mensajes
    El paso de mensajes es una técnica empleada en programación concurrente para aportar sincronización entre procesos y permitir la exclusión mutua, de manera similar a como se hace con los semáforos, monitores, etc. Su principal característica es que no precisa de memoria compartida, por lo que es muy importante en la programación para sistemas distribuidos. Los elementos principales que intervienen en el paso de mensajes son el proceso que envía, el que recibe y el mensaje. 

1. Permite el intercambio de información entre procesos.
2. La comunicación entre mensajes necesita de un proceso emisor, de un proceso receptor y la información que debe intercambiarse.
3. Las operaciones básicas son: enviar (destino, mensaje) recibir (origen, mensaje)
4. La comunicación por mensajes requiere que se establezca un enlace entre el receptor y el emisor.
5. Fuerza la exclusión mutua.
Direccionamiento

1. Direccionamiento directo.

Se especifican emisor y receptor de forma explícita.
P envía a Q:
- P: send (Q, mensaje)
- Q: receive (Q, mensaje)



1.1. La operación enviar () incluye una identificación del proceso destino
1.2. La operación recibir () puede incluir la identificación del proceso origen del mensaje. (Procesos cooperantes)



1.3. La operación recibir () también puede no saber cuál es el proceso origen del mensaje (Como un servicio de impresoras, recibirá solicitudes de impresión de cualquier proceso). El parámetro origen se utilizara como respuesta de que el mensaje ha sido recibido.

2. Direccionamiento indirecto.

2.1. Los mensajes no se envían directamente al receptor, sino a una cola para su posterior procesamiento.


2.2. Las colas son llamadas buzones (mail box).
2.3. Los procesos envían mensajes a un buzón y es un proceso quien toma los mensajes del buzón para su procesamiento.





3. Desacoplamiento del direccionamiento indirecto.
Permite flexibilidad en el manejo de mensajes. En este tercer caso la relación puede ser (1-1) (un proceso envía a un solo buzón). También puede haber (n-1) donde varios procesos envían mensajes a un solo buzón o (1-n) donde un proceso envía mensajes a muchos buzones.

3.1. Un emisor y un receptor. Es un enlace privado de comunicación entre dos procesos.
3.2. Muchos emisores y un receptor. Un proceso ofrece un servicio a muchos procesos. En este caso el buzón se llama puerto. (Programas cliente / servidor)
3.3. Un emisor y muchos receptores. Un mensaje se difunde a un conjunto de procesos receptores. (Upgrade de programas por internet).
3.4. Muchos emisores y muchos receptores. (Envío de e-mails).

Sincronización

1. Emisor con bloqueo y Receptor con bloqueo. Emisor Síncrono

1.1. Ambos, tanto receptor como emisor son bloqueados hasta que el mensaje sea entregado.
1.2. Se llama rendezvous.
1.3. Permite una sincronización fuerte de procesos.
1.4. Ejemplo: Procesos cooperantes.

2. Emisor sin bloqueo y Receptor con bloqueo. Emisor Asíncrono
2.1. El emisor continúa su procesamiento, enviando mensajes tan rápido como sea posible.
2.2. El receptor se bloqueó hasta que llegue el mensaje solicitado.
2.3. Es la combinación más útil de sincronización.
2.4. Ejemplo: Connect desde un programa Oracle (cliente) hacia un Listener Oracle (servidor).

3. Emisor sin bloqueo y Receptor sin bloqueo.
3.1. Nadie debe esperar.
3.2. Ejemplo: El MS-Word continúa su proceso mientras el servicio de impresión de diversos procesos continúan.

Partes de un mensaje
1. Cabecera
1.1. Tipo de mensaje
1.2. Proceso Destino (buzón, puerto)
1.3. Proceso Origen (cliente)
1.4. Longitud del mensaje
1.5. Información de control (prioridad, siguiente mensaje, contador de secuencia)
2. Cuerpo

Exclusión Mutua
1. Envío sin bloqueo, Recepción con bloqueo
2. Un conjunto de procesos comparten un buzón llamado mutex.
3. El buzón al inicio contiene un mensaje de contenido arbitrario.
4. Un proceso que desea usar la sección crítica, recibe ese mensaje (quitándose del buzón)
5. Puesto que la recepción es con bloqueo, ningún otro proceso podrá ingresar a la sección crítica (Ya que no existen mensajes en el buzón).
6. Una vez que ha usado la sección crítica, devuelve el mensaje al buzón.
7. Así el mensaje sirve como posta entre un mensaje y otro para usar la sección crítica.





Conclusión
       Luego de haber investigado y analizado se puede ver que se han desarrollado varios tipos de sistemas operativos con diferentes interfaces y categorías. Pero hemos podido observar que todos los sistemas operativos han sufrido cambios por parte de los programadores, y siguen evolucionando    Los sistemas operativos empleados normalmente son UNIX, Macintosh OS, MS-DOS, OS/2, Windows 95 y Windows NT. El UNIX y sus clones permiten múltiples tareas y múltiples usuarios. Otros SO multiusuario y multitarea son OS/2, desarrollado inicialmente por Microsoft e IBM, Windows NT y Win95 desarrollados por Microsoft. El SO multitarea de Apple se denomina Macintosh OS. El MS-DOS es un SO popular





















































ceunisal

sistemas operativos SISTEMAS OPERATIVOS INFORMÁTICA V ALUMNA: YATZIN     N.L.  MELCHOR CATEDRÁTICO: MARÍA  BARRIOS GALLEGO...