miércoles, 30 de diciembre de 2015

COMUNICACIÓN ENTRE PROCESOS Y MS - DOS



RESUMEN DE LA CLASE DEL 9 AL 16 DE DICIEMBRE DEL 2015



1. INTRODUCCIÓN

En los sistemas operativos actuales (multiprogramación) surge el concepto de procesos, que está relacionado con la ejecución de un programa. Por lo tanto, la comunicación entre procesos es una función básica e importante en los sistemas operativos, que proporcionan un mecanismo que permite a los procesos comunicarse entre sí, lo cual admite que un proceso conozca lo que otro realiza, para evitar que se repita una misma acción durante un mismo tiempo, permitiendo realizar de manera adecuada cada una de las diferentes acciones que se presenten en un sistema.

El MS-DOS es un Sistema Operativo perteneciente a la familia DOS y comercializado por Microsoft. Fue el producto clave en la transformación de Microsoft desde sus orígenes en los años 70 como proveedor especializado en lenguajes de programación a su actual estado como gigante en la industria informática.


2. OBJETIVO

Analizar la comunicación entre procesos de un Sistema Operativo e instruirse de conceptos a MS-DOS y sus comandos básicos.

3. MARCO TEÓRICO


3.1. COMUNICACIÓN ENTRE PROCESOS

A menudo, existe una necesidad de comunicación entre procesos, existen tres razones principales:
  • La primera se alude a cómo un proceso puede pasar información a otro.
  • La segunda está relacionada con hacer que dos o más procesos no se interpongan entre sí.
  • La tercera trata acerca de obtener la secuencia apropiada cuando hay dependencias presentes: si el proceso A produce datos y el proceso B los imprime, B tiene que esperar hasta que A haya producido algunos datos antes de empezar a imprimir.


3.1.1. CONDICIONES DE CARRERA

Los procesos que trabajan en conjunto pueden compartir cierto espacio de almacenamiento en el que pueden leer y escribir datos. El almacenamiento compartido puede estar en la memoria principal o puede ser un archivo compartido; la ubicación de la memoria compartida no cambia la naturaleza de la comunicación o los problemas que surgen.


3.1.2. REGIONES CRÍTICAS

La clave para evitar problemas en situaciones que involucran la memoria compartida, los archivos compartidos y todo lo demás compartido es buscar alguna manera de prohibir que más de un proceso lea y escriba los datos compartidos al mismo tiempo, o sea lo que se necesita es exclusión mutua.

El problema de evitar las condiciones de carrera también se puede formular de una manera abstracta. Parte del tiempo, un proceso está ocupado realizando cálculos internos y otras cosas que no producen condiciones de carrera. Sin embargo, algunas veces un proceso tiene que acceder a la memoria compartida, a archivos compartidos, o hacer otras cosas críticas que pueden producir carreras. Esa parte del programa en la que se accede a la memoria compartida se conoce como región crítica o sección crítica.


Si se pudiesen ordenar las cosas de manera que dos procesos nunca estuvieran en sus regiones críticas al mismo tiempo, se podría evitar las carreras. Aunque este requerimiento evita las condiciones de carrera, no es suficiente para que los procesos en paralelo cooperen de la manera correcta y eficiente al utilizar datos compartidos. Se necesitan cumplir con cuatro condiciones para tener una buena solución:

  1. No puede haber dos procesos de manera simultánea dentro de sus regiones críticas.
  2. No pueden hacerse suposiciones acerca de las velocidades o el número de CPUs.
  3. Ningún proceso que se ejecute fuera de su región crítica puede bloquear otros procesos.
  4. Ningún proceso tiene que esperar para siempre para entrar a su región crítica. 

3.2. INTRODUCCIÓN A MS-DOS

De las siglas Microsoft Disk Operating System (Sistema Operativo de Disco), es un sistema operativo monousuario y monoprogramación (monotarea); es decir, que dedica los recursos del ordenador a un sólo usuario y no puede procesar simultáneamente (en segundo plano) más de una aplicación. Otra de sus características fundamentales es que hace funcionar un ordenador con pocos comandos u órdenes concretas.


3.2.1. ESTRUCTURA DEL MS-DOS

Las unidades son los discos del ordenador, los ficheros son los datos que se almacenan en los discos y los directorios son como pequeños compartimentos que se crean en el disco para almacenar ficheros y poder organizarlos cómodamente. 

Hay dos tipos de unidades:

  1. Las unidades físicas: Son las unidades hardware, por ejemplo, si un ordenador posee una unidad de disquetes y un disco duro, tiene dos unidades físicas. 
  2. Las unidades lógicas: Son la representación que el SO hace de cada unidad física. Las unidades lógicas se nombran mediante una letra del alfabeto de la A a la Z seguida del carácter dos puntos “:”, por ejemplo, A:, B:, C:, etc. En realidad, no se asocia una unidad lógica para cada unidad física de disco duro, sino una unidad lógica por cada partición de un disco duro. Una unidad física de disco duro puede dividirse en varias particiones. Por tanto, un disco duro (una unidad física) puede tener una o más particiones (una o más unidades lógicas). 

3.2.2. PRINCIPALES COMANDOS Y SUS FUNCIONES

  • rd: Borra directorios y subdirectorios
  • format: Le da formato a la unidades de almacenamiento
  • chkdsk: Revisa el estado de las unidades de almacenamiento
  • edit: Crea archivos
  • tree: Muestra la jerarquía de directorios, subdirectorios y archivos
  • diskcopy: Realiza una copia fiel de disco a disco
  • sys: Contiene los controladores de configuración
  • prompt: Muestra la unidad en la que estamos trabajando
  • type: Lee el contenido de un archivo siguiente
  • date: Muestra la fecha actual
  • time: Muestra el contenido de un archivo
  • vol: Muestra el volumen de la unidad de almacenamiento
  • ver: Muestra la versión del sistema operativo que estamos utilizando
  • label: Muestra la etiqueta del disco
  • help: Muestra la ayuda de algún comando
  • fdisk: Permite particionar un disco y tener 2 sistemas operativos en un ordenador 


3.2.3. COMODINES

Es un carácter que representa cualquier otro carácter o cadena de caracteres; comúnmente para sustituir palabras no recordadas por el usuario. Algunos de estos son:


*   %   _   ?   .


3.2.4. NOMBRE DE ARCHIVOS


El nombre del archivo es más restringido, sólo puede tener una longitud máxima de 8 caracteres y una extensión de 3 caracteres.

Además, los archivos sólo pueden contener los siguientes caracteres: letras de la A a la Z números del 0 al 9 los siguientes caracteres especiales: $~! # % & - { } ( ) @ _ ^ 


Por lo tanto, los nombres de los archivos no deben contener: 

  • Espacios 
  • Comas 
  • Barra inversa 
  • Punto


3.2.5. RUTAS DE ARCHIVOS

Es la forma de referenciar un archivo informático o directorio en un sistema de archivos. Una ruta señala la localización exacta de un archivo o directorio mediante una cadena de caracteres concreta. 

En líneas generales se compondrá de los nombres de los directorios que conforman el camino hasta nuestro archivo o directorio a lo largo del árbol de directorios, y finalmente estará el nombre del archivo o directorio que se quiere referenciar. Estos nombres estarán separados por un carácter delimitador que usualmente será "\" en sistemas MS-DOS/Windows(Microsoft).


3.2.6. REFERENCIAS ABSOLUTAS Y RELATIVAS

Las rutas absolutas, señalan la ubicación de un archivo o directorio desde el directorio raíz del sistema de archivos. Por ejemplo es una ruta absoluta /home/dir1/arc1.fil que señala la ubicación de arc1.fil desde la raíz del sistema de archivos.

Las rutas relativas, señalan la ubicación de un archivo o directorio a partir de la posición actual del sistema operativo en el sistema de archivos. Por ejemplo es una ruta relativa dir1/arc1.fil que señala al archivo arc1.fil dentro del directorio dir1 en la ubicación actual.


4. CONCLUSIÓN

La comunicación entre procesos en un Sistema Operativo se trata de dejar que otro proceso sepa que ha ocurrido algún evento, es también la transferencia de datos de un proceso a otro.

MS-DOS es un sistema operativo antiguo que permite hacer cualquier cosa con determinados comandos como por ejemplo crear, acceder, borrar y modificar archivos y directorios, etc. El MS-DOS, debido a sus características de Monotarea y Monousuario solamente puede ejecutar un proceso y ocupar un usuario a la vez.


5. BIBLIOGRAFÍA

Harrison, A. 2012. Sistema Operativo MS-DOS. (En línea). Disponible en: http://www.slideshare.net/AlbertoHarrison1964/sistema-operativo-ms-dos-15227855?related=1

Moreno, J. 2007. Sistema Operativo MS-DOS. (En línea). Disponible en: http://www.slideshare.net/jcmoreno/tema-6-sistema-operativo-msdos

Tanenbaum, A. 2009. Sistemas Operativos Modernos. 3 ed. México. DF. PEARSON EDUCACIÓN.




domingo, 6 de diciembre de 2015

CONCEPTO Y ESTRUCTURA DE LOS SISTEMAS OPERATIVOS, PROCESOS E HILOS



RESUMEN DE LA CLASE DEL 11 AL 18 DE NOVIEMBRE Y DEL 2 DE DICIEMBRE DEL 2015


1. INTRODUCCIÓN

Los conceptos básicos en los que se basan todos los sistemas operativos son los procesos, la administración de memoria, la administración de E/S, el sistema de archivos y la seguridad.

El corazón de cualquier sistema operativo es el conjunto de llamadas al sistema que puede manejar, estas llamadas indican lo que realmente hace el sistema operativo. Para UNIX, tenemos cuatro grupos de llamadas al sistema: el primer grupo se relaciona con la creación y terminación de procesos, el segundo grupo es para leer y escribir en archivos, el tercer grupo es para administrar directorios, y el cuarto grupo contiene una miscelánea de llamadas.

Los sistemas operativos se pueden estructurar en varias formas, las más comunes son: como un sistema monolítico, una jerarquía de capas, microkernel, cliente-servidor, máquina virtual o exokernel.

2. OBJETIVO

Comprender conceptos y estructura sobre los sistemas operativos, y conocer acerca de los procesos e hilos de éstos.

3. MARCO TEÓRICO

3.1. CONCEPTOS DE LOS SISTEMAS OPERATIVOS

La mayoría de los sistemas operativos proporcionan ciertos conceptos básicos y abstracciones tales como procesos, espacios de direcciones y archivos, que son la base para comprender su funcionamiento.

3.1.1. PROCESOS

Es un programa en ejecución. Cada proceso tiene asociado un espacio de direcciones que contiene el programa ejecutable, los datos del programa y su pila. También hay asociado a cada proceso un conjunto de recursos, que incluye información necesaria para ejecutar el programa. En muchos sistemas operativos, la información acerca de cada proceso se almacena en una tabla de procesos. Las llamadas al sistema de administración de procesos clave son las que se encargan de la creación y la terminación de los procesos. Un proceso puede crear uno o más procesos aparte y estos procesos a su vez pueden crear procesos hijos.

Figura 1. Un árbol de proceso. El proceso A creó dos procesos hijos, B y C. El proceso B creó tres procesos hijos, D, E y F
Cada persona autorizada para utilizar un sistema recibe una UID (User Identification) que el administrador del sistema le asigna. Cada proceso iniciado tiene el UID de la persona que lo inició. Un proceso hijo tiene el mismo UID que su padre. Los usuarios pueden ser miembros de grupos, cada uno de los cuales tiene una GID (Group Identification).

3.1.2. ESPACIOS DE DIRECCIONES

Cada computadora tiene cierta memoria principal que utiliza para mantener los programas en ejecución. En un sistema operativo muy simple sólo hay un programa a la vez en la memoria. Para ejecutar un segundo programa se tiene que quitar el primero y colocar el segundo en la memoria. Los sistemas operativos más sofisticados permiten colocar varios programas en memoria al mismo tiempo. Hoy en día existe una técnica llamada memoria virtual, en la cual el sistema operativo mantiene una parte del espacio de direcciones en memoria principal y otra parte en el disco, moviendo pedazos de un lugar a otro según sea necesario.

3.1.3. ARCHIVOS

Un sistema de archivos es un conjunto de tipo de datos abstractos que son implementados para el almacenamiento, la organización jerárquica, la manipulación, el acceso, el direccionamiento y la recuperación de datos. Los sistemas de archivos comparten mucho en común con la tecnología de las bases de datos. Los sistemas de archivos pueden ser representados de forma textual (ej.: el shell de DOS) o gráficamente (ej.: Explorador de archivos en Windows) utilizando un gestor de archivos.


Figura 2. Administración de archivos por el sistema operativo
Los archivos son administrados por el sistema operativo como se muestra en la Fig. 2. Su estructura, nombre, forma de acceso, uso, protección e implantación son temas fundamentales en el diseño de un sistema operativo.

3.1.4. ENTRADA/SALIDA

Todas las computadoras tienen dispositivos físicos para adquirir entrada y producir salida. Existen muchos tipos de dispositivos de entrada y de salida, incluyendo teclados, monitores, impresoras, etc. Es responsabilidad del sistema operativo administrar estos dispositivos. En consecuencia, cada sistema operativo tiene un subsistema de E/S para administrar sus dispositivos de E/S.

3.1.5. PROTECCIÓN

Las computadoras contienen grandes cantidades de información que los usuarios comúnmente desean proteger y mantener de manera confidencial. Es responsabilidad del sistema operativo administrar la seguridad del sistema de manera que los archivos, por ejemplo, sólo sean accesibles para los usuarios autorizados. Además de la protección de archivos, existen muchas otras cuestiones de seguridad. Una de ellas es proteger el sistema de los intrusos no deseados, tanto humanos como no humanos (por ejemplo, virus).

3.1.6. EL SHELL

El intérprete de comandos es la interfaz entre el usuario y el sistema operativo, por este motivo se le da el nombre "shell", que en castellano significa "caparazón".

Figura 3. Shell

Por lo tanto, el shell es un archivo ejecutable que actúa como un intermediario entre el sistema operativo y el usuario utilizando líneas de comando introducidas por dicho usuario. Su función consiste en la lectura de la línea de comandos, la interpretación de su significado, la ejecución del comando y luego la devolución del resultado a través de las salidas. Existen muchos tipos de shell: Los más comunes son: sh (llamado "Bourne shell"), bash ("Bourne again shell"), csh ("C Shell"), Tcsh ("Tenex C shell"), ksh ("Korn shell"), y zsh ("Zero shell"). Generalmente, sus nombres coinciden con el nombre del ejecutable. Cada usuario tiene un shell predeterminado, que se activará al abrirse el aviso del comando.

3.1.7. LLAMADAS AL SISTEMA

Cada SO implementa un conjunto propio de llamadas al sistema. Ese conjunto de llamadas es la interfaz del SO frente a las aplicaciones. Constituyen el lenguaje que deben usar las aplicaciones para comunicarse con el SO. Todo procesador moderno posee al menos dos modos de funcionamiento distintos modo kernel y modo usuario. A grandes rasgos las diferencias entre estos dos modos son las siguientes:
  • En modo kernel se encuentran disponibles todas las instrucciones y funcionalidades que la arquitectura del procesador es capaz de brindar. Es en este modo en el cual corre el kernel (núcleo) del sistema operativo.
  • En modo usuario tan sólo un subconjunto de las instrucciones y funcionalidades que la arquitectura del procesador ofrece se encuentran disponibles. En este modo se ejecutan los procesos de los usuarios del sistema.

La interface entre los programas de usuario y el sistema operativo se define mediante un conjunto de llamadas al sistema, Linux proporciona unas llamadas definidas en el sistema por un nombre “open”, “read”, “mmap”,… y tiene alrededor de 200 llamadas al sistema, idénticas a UNIX V7 (estándar POSIX). En nombre, función y parámetros. Existe unas librerías de procedimientos en /usr/lib/ para poder realizar llamadas desde un programa escrito en C.
Ejemplo de llamada: count = read(file, buffer, nbyte);
  • read.- Nombre de la llamada al sistema.
  • file.- Fichero de donde leer.
  • buffer.- Zona de memoria donde colocar los datos.
  • nbytes.- Nº de bytes a leer.
  • count.- Nº de bytes leídos, si count es - 1, hay error, que se coloca en la variable global errno.

3.1.7.1. LLAMADAS AL SISTEMA LLAMADAS AL SISTEMA PARA LA ADMINISTRACIÓN DE PROCESOS, ARCHIVOS Y DIRECTORIOS.

El primer grupo de llamadas en la figura se encarga de la administración de los procesos. fork es la única manera de crear un nuevo proceso en POSIX. Crea un duplicado exacto del proceso original, incluyendo todos los descriptores de archivos, registros y todo lo demás. Después de fork, el proceso original y la copia (el padre y el hijo) se van por caminos separados.

Figura 4. Algunas de las principales llamadas al sistema POSIX.

3.1.7.2. MISCELÁNEA DE LLAMADAS AL SISTEMA

También existe una variedad de otras llamadas al sistema. Sólo analizaremos cuatro de ellas aquí. La llamada a chdir, chmod, kill, y time.

Figura 5. Llamadas varias al sistema POSIX

3.1.7.3. LA API WIN32 DE WINDOWS

Un programa de UNIX consiste en código que realiza una cosa u otra, haciendo llamadas al sistema para realizar ciertos servicios. En contraste, un programa de Windows es por lo general manejado por eventos. El programa principal espera a que ocurra cierto evento y después llama a un procedimiento para manejarlo. Los eventos comunes son las teclas que se oprimen, el ratón que se desplaza, un botón de ratón que se oprime o un CD-ROM que se inserta. Desde luego que Windows también tiene llamadas al sistema. Microsoft ha definido un conjunto de procedimientos conocidos como API Win32 (Application Program Interface, Interfaz de programación de aplicaciones) que los programadores deben utilizar para obtener los servicios del sistema operativo. Esta interfaz se proporciona (parcialmente) en todas las versiones de Windows. Win32 significa la interfaz que soportan todas las versiones de Windows. La API Win32 tiene un gran número de llamadas para administrar ventanas, figuras geométricas, texto, tipos de letras, barras de desplazamiento, cuadros de diálogo, menús y otras características de la GUI.

3.2. ESTRUCTURA DE UN SISTEMA OPERATIVO

Analizamos seis estructuras las cuales son: sistemas monolíticos, sistemas de capas, microkernels, sistemas cliente-servidor, máquinas virtuales y exokernels.

3.2.1. SISTEMAS MONOLÍTICOS

Se considera como la organización más común, todo el sistema se escribe como una colección de procedimientos, enlazados entre sí en un solo programa binario ejecutable extenso en modo kernel. Esta organización sugiere una estructura básica para el sistema operativo:
  • Un programa principal que invoca el procedimiento de servicio solicitado.
  • Un conjunto de procedimientos de servicio que llevan a cabo las llamadas al sistema.
  • Un conjunto de procedimientos utilitarios que ayudan a los procedimientos de servicio.

3.2.2. SISTEMAS DE CAPAS

Organiza el sistema operativo como una jerarquía de capas, cada una construida encima de la que tiene abajo. El primer sistema construido de esta forma fue el sistema THE, construido en Technische Hogeschool Eindhoven en Holanda por E. W. Dijkstra (1968) y sus estudiantes. El sistema THE era un sistema simple de procesamiento por lotes para una computadora holandesa, la Electrologica X8, que tenía 32K de palabras de 27 bits (los bits eran costosos en aquel entonces). El sistema tenía seis capas.

Figura 6. Estructura del sistema operativo THE.

3.2.3. MICROKERNELS

La idea básica detrás del diseño de microkernel es lograr una alta confiabilidad al dividir el sistema operativo en módulos pequeños y bien definidos, de los cuales solo el microkernel se ejecuta en modo kernel y el resto se ejecuta como procesos de usuario ordinarios. Son en especial comunes en las aplicaciones en tiempo real, industriales, aeronáuticas y militares que son de misión crítica y tienen requerimientos de confiabilidad muy altos. Algunos de los microkernels mejor conocidos son Integrity, K42, L4, PikeOS, QNX, Symbian y MINIX 3.

3.2.4. MODELO CLIENTE-SERVIDOR

Una ligera variación de la idea del microkernel es diferenciar dos clases de procesos: los servidores, cada uno de los cuales proporciona cierto servicio, y los clientes, que utilizan estos servicios. Este modelo se conoce como cliente-servidor. La comunicación entre clientes y servidores se lleva a cabo comúnmente mediante el paso de mensajes. Para obtener un servicio, un proceso cliente construye un mensaje indicando lo que desea y lo envía al servicio apropiado. Después el servicio hace el trabajo y envía de vuelta la respuesta.

3.2.5. MÁQUINAS VIRTUALES

Una máquina virtual (VM) es una implementación de software de un ambiente de computación en el que se puede instalar y ejecutar un sistema operativo o programa. Se crean dentro de una capa de virtualización que funciona sobre un sistema operativo servidor o cliente. La VM normalmente emula un ambiente de computación físico pero las demandas de CPU, memoria, disco duro, red y otros recursos de hardware son gestionadas por una capa de virtualización que traduce estas solicitudes a la infraestructura de hardware físico subyacente.

Normalmente, los sistemas operativos huéspedes y los programas, no son conscientes de que operan en una plataforma virtual y, siempre que la plataforma virtual de la VM esté respaldada, se puede instalar este software de igual forma que si fuera un servidor físico.

3.2.6. EXOKERNELS

En vez de clonar la máquina actual, como se hace con las máquinas virtuales, otra estrategia es particionarla; es decir, a cada usuario se le proporciona un subconjunto de los recursos. En la capa inferior, que se ejecuta en el modo kernel, hay un programa llamado exokernel, su trabajo es asignar recursos a las máquinas virtuales y después comprobar los intentos de utilizarlos, para asegurar que ninguna máquina trate de usar los recursos de otra. La ventaja del esquema del exokernel es que ahorra una capa de asignación, ya que todo lo que tiene que hacer el exokernel es mantener las máquinas virtuales separadas unas de las otras.

3.3. PROCESOS

Un proceso es cualquier programa en ejecución. Este necesita ciertos recursos para realizar satisfactoriamente su tarea:
  • Tiempo de CPU.
  • Memoria.
  • Archivos.
  • Dispositivos de E/S.

Necesitamos mecanismos para crear y terminar procesos.

3.3.1. CREACIÓN DE UN PROCESO

Existen 4 eventos principales que permiten la creación de un proceso:
  • Inicio del sistema.- Procesos interactivos (primer plano) VS demonios (segundo plano)
  • Llamada al sistema para crear eventos.- Unix fork() +exec(), Win32.
  • El usuario inicia un proceso.- Ya sea mediante modo gráfico o alfanumérico.
  • Inicio de un trabajo por lotes.- Sistema mainframe.

3.3.2. TERMINACIÓN DE UN PROCESO

Una vez que se crea un proceso empieza a ejecutarse y realiza el trabajo al que está destinado. Sin embargo tarde o temprano termina ese proceso. Por lo general se debe:
  • Salida normal
  • Salida por error
  • Error fatal
  • Eliminado por otro proceso

3.3.3. JERARQUÍA DE PROCESOS

Un proceso (padre) crea a otro (hijo). El proceso hijo puede crear más procesos creando una jerarquía. Un proceso solo tiene un padre y 0 o más hijos. En Windows no hay jerarquía: todos son iguales.

3.3.4. ESTADOS DE UN PROCESO

Un proceso puede encontrarse en estado “en ejecución”, “bloqueado” o “listo”. A medida que un proceso se ejecuta cambia de estado.

Figura 7. Transiciones entre los estados un proceso

3.4. HILOS

Los hilos son un concepto relativamente nuevo de los SO. En este contexto, un proceso recibe el nombre de proceso pesado, mientras que un hilo recibe el nombre de proceso ligero. El término hilo se refiere sintáctica y semánticamente a hilos de ejecución. El término multi-hilo hace referencia a la capacidad de un SO para mantener varios hilos de ejecución dentro del mismo proceso.

Figura 8. Hilos.

3.4.1. ESTADOS DE UN HILO

Los principales estados de un hilo son: ejecución, preparado y bloqueado; y hay cuatro operaciones básicas relacionadas con el cambio de estado de los hilos:
  • Creación
  • Bloqueo
  • Desbloqueo
  • Terminación

3.4.2. RECURSOS COMPARTIDOS Y NO COMPARTIDOS

Los hilos permiten la ejecución concurrente de varias secuencias de instrucciones asociadas a diferentes funciones dentro de un mismo proceso, comparten un mismo espacio de direcciones y las mismas estructuras de datos del núcleo.

3.4.2.1. RECURSOS COMPARTIDOS ENTRE LOS HILOS

  • Código (instrucciones).
  • Variables globales.
  • Ficheros y dispositivos abiertos.

3.4.2.2. RECURSOS NO COMPARTIDOS ENTRE LOS HILOS

  • Contador del programa: cada hilo puede ejecutar una sección distinta de código.
  • Registros de CPU.
  • Pila para las variables locales de los procedimientos a las que se invoca después de crear un hilo.
  • Estado: distintos hilos pueden estar en ejecución, listos o bloqueados esperando un evento.

4. CONCLUSIÓN

El estudio de la estructura de los sistemas operativos nos permite saber cómo trabajan los sistemas operativos, y a pesar que su estudio es complejo es muy interesante e importante conocer sus funcionalidades, por ejemplo el de los procesos, los cuales son programas ejecutables que guardan información requerida por un usuario para que realice cierta acción.


5. BIBLIOGRAFÍA

Ayala, I.; Francois, J.; Ortega, A.; Villagómez, C. 2015. Introducción al Shell. (En línea). Consultado, 5 de diciembre de 2015. Disponible en: http://es.ccm.net/contents/692-sistema-unix-el-shell

Bravo, D. 2009. Llamadas al Sistema en Linux. (En línea). Formato PDF. Consultado, 5 de diciembre de 2015. Disponible en: http://www.fceia.unr.edu.ar/~diegob/so/material/Llamadas_al_Sistema.pdf

Desai, A. 2011. Máquina Virtual VM - Definición. (En línea). Consultado, 5 de diciembre de 2015. Disponible en: http://searchdatacenter.techtarget.com/es/definicion/Copy-of-virtual-machine-VM

Martínez, M. s/f. Concepto de Sistema de archivos. (En línea). Consultado, 5 de diciembre de 2015. Disponible en: http://sistemasoperativos.angelfire.com/html/5.1.html

Tanenbaum, A. 2009. Sistemas Operativos Modernos. 3 ed. México. DF. PEARSON EDUCACIÓN. p. 37-71, 83-114

ULPGC, s/f. Universidad de Las Palmas de Gran Canaria - Llamadas al Sistema. (En línea). Formato PDF. Consultado, 5 de diciembre de 2015. Disponible en: http://sopa.dis.ulpgc.es/ii-dso/leclinux/miscelaneos/llamadas/LEC_llamadas.pdf

Velásquez, S. 2011. Llamadas al Sistema Operativo. (En línea). Consultado, 5 de diciembre de 2015. Disponible en: http://soribel-velasquez.blogspot.com/p/llamadas-al-sistema-operativo_25.html


martes, 10 de noviembre de 2015

REVISIÓN DEL HARDWARE DE COMPUTADORA Y TIPOS DE SISTEMAS OPERATIVOS


RESUMEN DE LA CLASE DEL 28 DE OCTUBRE AL 4 DE NOVIEMBRE DEL 2015



1. INTRODUCCIÓN

El almacenamiento de un computador está compuesto por varios dispositivos que actúan de manera jerarquizada, como: el disco duro, la memoria RAM, la cache interna del procesador y los registros.

El hardware y el software trabajan unidos para dar vida a un computador, ya que de la unión de esto depende el buen funcionamiento de la computadora.

El software se refiere a los programas y datos almacenados en un ordenador. Los programas dan instrucciones para realizar tareas al hardware o sirven de conexión con otro software. El hardware abarca todas las piezas físicas de un ordenador.

Un sistema Operativo es en sí mismo un programa de computadora, quizá el más complejo e importante, ya que hace que despierte y reconozca al hardware de una máquina. Además, proporciona la facilidad para que los usuarios se comuniquen con la computadora y sirve de plataforma a partir de la cual se corran programas de aplicación.

2. OBJETIVO

Conocer acerca del hardware de una computadora y algunos tipos de sistemas operativos que existen.

3. MARCO TEÓRICO


3.1. REVISIÓN DEL HARDWARE DE COMPUTADORA

Un sistema operativo está íntimamente relacionado con el hardware de la computadora sobre la que se ejecuta. Extiende el conjunto de instrucciones de la computadora y administra sus recursos. Para trabajar debe conocer muy bien el hardware, por lo menos en lo que respecta a cómo aparece para el programador.

3.1.1. PROCESADOR

Es el "cerebro" de la computadora, lógicamente es llamado CPU o micro. Sus funciones principales incluyen el manejo del sistema operativo, la ejecución de las aplicaciones y la coordinación de los diferentes dispositivos que componen el equipo.

Figura 1. Procesador Pentium

En su aspecto físico, el procesador es una pequeña pastilla de silicio recubierta de lo que se conoce como encapsulado. En su interior se encuentran varios niveles de memoria, denominados cache, que aceleran el acceso a los datos de la memoria RAM. Aparte se encuentran registros del micro que es donde finalmente se ejecutan operaciones. La mayoría de las computadoras, además de los registros generales utilizados para contener variables y resultados temporales, tienen varios registros especiales que están visibles para el programador. Uno de ellos es el contador de programa (program counter), otro registro es el apuntador de pila (stack pointer), y otro es PSW (Program Status Word: Palabra de estado del programa).

3.1.2. MEMORIA

La memoria es uno de los elementos más importantes de un PC, suelen ser de rápido acceso. Las memorias suelen ser volátiles o no volátiles, la clasificación principal de memorias son RAM (Random Access Memory, Memoria de acceso aleatorio) y ROM (Read Only Memory, Memoria de sólo lectura), estas memorias son utilizadas para almacenamiento primario. Existen memorias de almacenamiento secundario como los discos duros. Por lo general a la memoria principal se le conoce como RAM, su escasez puede hacer que incluso el equipo más rápido se vuelva lento, ya que entre sus funciones se encuentra la de servir de almacén para los programas y datos con los que se trabaja en cada momento.

Figura 2. Memoria RAM

3.1.3. DISCO

Un disco es un dispositivo que permite almacenar datos de un ordenador como programas (software), y consiste en uno o más platos que giran a 5400, 7200 o 10,800 rpm. Cada plato del disco tiene 2 caras sobre las que se escriben y se leen datos. Cada cara se divide en varias pistas concéntricas y al conjunto formado por todas estas pistas se conoce como cilindro con la misma numeración que pertenece a cada uno de los platos del disco. A su vez cada pista se divide en varios sectores, los cuales contienen la unidad mínima de información que puede leer o escribir un disco duro. Un disco está dividido en miles de clústeres de igual tamaño y los archivos son repartidos y almacenados en distintos clústeres.

Figura 3. Estructura de un disco duro

3.1.4. CINTA MAGNÉTICA

Es un tipo de medio o soporte de almacenamiento de información que se graba en pistas sobre una banda plástica con un material magnetizado, generalmente óxido de hierro. El tipo de información que se puede almacenar en las cintas magnéticas es variado, como vídeo, audio y datos. Para acceder a una cinta, primero debe colocarse en un lector de cinta, después la cinta tal vez tenga que embobinarse hacia delante para llegar al bloque solicitado. La gran ventaja de la cinta es que es en extremo económica por bit y removible, lo cual es importante para las cintas de respaldo que se deben almacenar fuera del sitio de trabajo para que puedan sobrevivir a los incendios, inundaciones, terremotos y otros desastres.

Figura 4. Cinta

3.1.5. DISPOSITIVOS DE E/S

La CPU y la memoria no son los únicos recursos que el sistema operativo debe administrar. Los dispositivos de E/S también interactúan mucho con el sistema operativo, y generalmente constan de dos partes: un dispositivo controlador y el dispositivo en sí. El dispositivo controlador es un chip o conjunto de chips que controla físicamente el dispositivo. La otra pieza es el dispositivo en sí. Los dispositivos tienen interfaces bastante simples.

Como la interfaz real del dispositivo está oculta detrás del dispositivo controlador, todo lo que el sistema operativo ve es la interfaz para el dispositivo controlador, que puede ser bastante distinta de la interfaz para el dispositivo. Como cada tipo de dispositivo controlador es distinto, se requiere software diferente para controlar cada uno de ellos. El software que se comunica con un dispositivo controlador, que le proporciona comandos y acepta respuestas, se conoce como driver (controlador).

3.1.6. BUSES

El sistema tiene ocho buses (caché, local, memoria, PCI, SCSI, USB, IDE e ISA), cada uno con una velocidad de transferencia y función distintas. El sistema operativo debe estar al tanto de todos estos buses para su configuración y administración. Los dos buses principales son el bus ISA (Industry Standard Architecture, Arquitectura estándar de la industria) de la IBM PC original y su sucesor, el bus PCI (Peripheral Component Interconnect, Interconexión de componentes periféricos). El sistema operativo tiene que saber qué dispositivos periféricos están conectados a la computadora y cómo configurarlos.

3.1.7. ARRANQUE DE LA COMPUTADORA

En la tarjeta madre o padre hay un programa conocido como BIOS (Basic Input Output System, Sistema básico de entrada y salida) del sistema, que contiene software de E/S de bajo nivel.

Cuando se arranca la computadora, el BIOS inicia su ejecución. Primero hace pruebas para ver cuánta RAM hay instalada y si los dispositivos básicos están instalados y responden en forma correcta. Empieza explorando los buses ISA y PCI para detectar todos los dispositivos conectados a ellos. Estos dispositivos se registran. Si los dispositivos presentes son distintos de los que había cuando el sistema se inició por última vez, se configuran los nuevos dispositivos.

Después, el BIOS determina el dispositivo de arranque, para lo cual prueba una lista de dispositivos almacenada en la memoria CMOS. El primer sector del dispositivo de arranque se lee y se coloca en la memoria, para luego ejecutarse. Luego, el sistema operativo consulta al BIOS para obtener la información de configuración. Para cada dispositivo, comprueba si tiene el driver correspondiente. Una vez que tiene los drivers de todos los dispositivos, el sistema operativo los carga en el kernel. Después inicializa sus tablas, crea los procesos de segundo plano que se requieran, y arranca un programa de inicio de sesión o GUI.

3.2. TIPOS DE SISTEMAS OPERATIVOS

Los sistemas operativos han estado en funcionamiento durante más de medio siglo. Durante este tiempo se ha desarrollado una variedad bastante extensa de ellos, aunque no todos se conocen amplia-mente. En esta sección se describirán de manera breve nueve.

3.2.1. DE MAINFRAME

Los sistemas operativos para las mainframes (computadoras del tamaño de un cuarto completo) están profundamente orientados hacia el procesamiento de muchos trabajos a la vez, de los cuales la mayor parte requiere muchas operaciones de E/S. Aunque, los sistemas operativos de mainframes están siendo reemplazados gradualmente por variantes de UNIX, como Linux.


Figura 5. Mainframe

3.2.2. DE SERVIDORES

Se ejecutan en servidores, que son computadoras personales muy grandes, estaciones de trabajo o incluso mainframes. Dan servicio a varios usuarios a la vez, a través de una red y les permiten compartir los recursos de hardware y de software. Los servidores pueden proporcionar servicio de impresión, de archivos o Web. Algunos sistemas operativos de servidores comunes son: FreeBSD, Linux y Windows Server 200x.

3.2.3. DE MULTIPROCESADORES

Estos sistemas se conocen como computadoras en paralelo, multicomputadoras o multiprocesadores, debido a que la técnica de multiprocesamiento consiste en conectar varias CPU en un solo sistema. Necesitan sistemas operativos especiales, pero a menudo son variaciones de los sistemas operativos de servidores con características especiales para la comunicación, conectividad y consistencia.

3.2.4. DE COMPUTADORAS PERSONALES

Soportan la multiprogramación, con frecuencia se inician docenas de programas al momento de arrancar el sistema. Su trabajo es proporcionar buen soporte para un solo usuario. Se utilizan ampliamente para el procesamiento de texto, las hojas de cálculo y el acceso a Internet. Algunos ejemplos comunes son Linux, FreeBSD, Windows Vista y el sistema operativo Macintosh.

3.2.5. DE COMPUTADORAS DE BOLSILLO

Una computadora de bolsillo (handheld) o PDA (Personal Digital Assitant, Asistente personal digital) es una computadora que cabe en los bolsillos y realiza una pequeña variedad de funciones, como libreta de direcciones electrónica y bloc de notas. Hay celulares muy similares a los PDAs, con excepción de ciertas diferencias como el tamaño, el peso, la interfaz de usuario, teclado y pantalla. Casi todos ellos se basan en CPUs de 32 bits y ejecutan un sofisticado sistema operativo.

3.2.6. INTEGRADOS

Los sistemas integrados, conocidos también como incrustados o embebidos, operan en las computadoras que controlan dispositivos que no se consideran generalmente como computadoras, ya que no aceptan software instalado por el usuario; debido a que todo el software se encuentra en ROM. Algunos ejemplos comunes son los hornos de microondas, las televisiones, los autos, los grabadores de DVDs, los teléfonos celulares y los reproductores de MP3.

3.2.7. DE NODOS SENSORES

Son pequeñas computadoras con radios integrados y alimentadas con baterías. Se comunican entre sí con una estación base, mediante el uso de comunicación inalámbrica. Tienen energía limitada y deben trabajar durante largos periodos al exterior y desatendidas, con frecuencia en condiciones ambientales rudas. El sistema operativo tiene que ser pequeño y simple debido a que los nodos tienen poca RAM. Al igual que con los sistemas integrados y los de tiempo real, sólo se ejecuta software que colocan los diseñadores del sistema, es decir, los usuarios no pueden agregar su propio software.

3.2.8. EN 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 y deben proveer garantías absolutas de que cierta acción ocurrirá en un instante determinado.

3.2.9. DE TARJETAS INTELIGENTES

Son dispositivos del tamaño de una tarjeta de crédito que contienen un chip de CPU. Tienen severas restricciones de poder de procesamiento y memoria. Algunos sistemas de este tipo pueden realizar una sola función, como pagos electrónicos; otros pueden llevar a cabo varias funciones en la misma tarjeta inteligente. Algunas tarjetas inteligentes funcionan con varias applets de Java al mismo tiempo, lo cual conlleva a la multiprogramación.

4. CONCLUSIÓN

El funcionamiento de una computadora no sólo depende de su parte física sino también de su parte lógica como son los programas de la misma, los cuales dan instrucciones al hardware para que ejecute determinada acción, requerida por un usuario. Es por esto que es muy importante tanto el software como el hardware en una computadora.

Los sistemas operativos no sólo son parte de una computadora, sino también de un sin número de aparatos que requieren la utilización de software, para realizar una tarea específica, por lo cual existen diversos tipos de sistemas operativos que se ajustan a cada necesidad requerida.

5. BIBLIOGRAFÍA

ALEGSA, s/f. Hardware de una computadora. (En línea). Consultado, 7 de noviembre de 2015. Disponible en: http://www.alegsa.com.ar/Dic/cluster.php

Bayoc, C. 2011. Cintas magnéticas. (En línea). Consultado, 7 de noviembre de 2015. Disponible en: http://es.slideshare.net/Bayod/cintas-magnticas

KIOSKEA, s/f. Sistema Operativo. (En línea). Consultado, 9 de noviembre de 2015. Disponible en: http://computadoras.about.com/od/conoce-procesadores/a/Que-Es-Un-Procesador.htm

Sanchez, A. 2015. Procesador. (En línea). Consultado, 7 de noviembre de 2015. Disponible en: http://computadoras.about.com/od/conoce-procesadores/a/Que-Es-Un-Procesador.htm

Tanenbaum, A. 2009. Sistemas Operativos Modernos. 3 ed. México. DF. PEARSON EDUCACIÓN. p. 19-37