Download Conceptos de sistemas operativos

Document related concepts

Gestión de memoria wikipedia , lookup

Sistema operativo wikipedia , lookup

Núcleo (informática) wikipedia , lookup

Hilo de ejecución wikipedia , lookup

Proceso (informática) wikipedia , lookup

Transcript
 IF0015_M2AA1_Conceptos
Versión: Septiembre 2012
Revisor: José Miguel Campos García
Conceptos de sistemas operativos por Roberto Rangel Ibarra
Cuando nos referimos a los Sistemas Operativos existen muchos conceptos que debes tener presente
para su estudio, debido a la cantidad de funciones y tareas que realiza el mismo, y que forman parte de la
gestión de procesos, memoria, dispositivos de entrada y salida, así como a la constante evolución en la
que se encuentra. Muchos de estos conceptos pertenecen de manera peculiar a las primeras generaciones
de sistemas operativos pero siguen utilizándose y, algunos más han aparecido recientemente. Estos
conceptos son los siguientes:
Sistema operativo.- Es un programa que actúa como una interfaz del hardware de una computadora y el
usuario para poder efectuar diversas aplicaciones, encargándose de toda la gestión de los diferentes
recursos de hardware y software del equipo.
De acuerdo a Molina (2007, p. 8) se define como “un programa destinado a permitir la comunicación del
usuario con un computador y gestionar sus recursos de una forma eficaz”.
Procesos en serie.- Se considera así al tipo de procesamiento que se realizaba con las primeras
computadoras, en donde la principal característica era que el programador interactuaba directamente con
el hardware, y programaba instrucciones en lenguaje de bajo nivel, no habiendo sistema operativo.
Sistema sencillo de procesos por lotes.- Consiste en el tipo de procesamiento que llevaban a cabo los
primeros sistemas operativos y su principal aportación fue el uso de monitores, que fueron programas que
permitían a los programadores entregar sus trabajos en tarjetas o en cinta al operador del computador.
Éste a su vez agrupaba de forma secuencial los trabajos por lotes y ubicaba los lotes enteros en un
dispositivo de entrada para su empleo por parte del monitor, el cual se encargaba de la gestión de los
lotes, por lo que el programador ya no tenía que interactuar de forma directa con la máquina.
Sistema por lotes con multiprogramación.- Consiste en una nueva forma de procesamiento por parte
del sistema operativo, ya que aún con el procesamiento por lotes existía mucho tiempo de inactividad de la
computadora, por lo que se asignan diferentes tareas que son programadas para efectuarse de forma casi
simultánea.
Sistema de tiempo compartido.- Se deriva del procesamiento de multiprogramación y consiste en la
programación de varios usuarios ejecutando diferentes tareas o procesos, aunque no necesariamente
deben efectuar varias, ya que diferentes usuarios pueden trabajar sobre una misma computadora para
realizar un único proceso por medio de terminales.
Al respecto Martínez, Cabello y Díaz (1997, p. 17) mencionan de forma muy clara este concepto, al decir
que “…son aquéllos que pueden ser utilizados de forma simultáneamente por diversos usuarios. Debemos
tener en cuenta que un sistema multiusuario no implica necesariamente la operación de multiproceso”.
©UVEG. Derechos reservados. Esta obra no puede ser reproducida, modificada, distribuida, ni transmitida, parcial o totalmente, mediante cualquier medio, método o
sistema impreso, electrónico, magnético, incluyendo el fotocopiado, la fotografía, la grabación o un sistema de recuperación de la información, sin la autorización por
escrito de la Universidad Virtual del Estado de Guanajuato.
1
IF0015_M2AA1_Conceptos
Versión: Septiembre 2012
Revisor: José Miguel Campos García
Actualmente, los requisitos de un servicio de computación interactiva pueden y suelen llevarse a cabo con
el empleo de una computadora dedicada. Esta opción no estaba disponible en los años 60, cuando la
mayoría de las computadoras eran grandes y muy caras. En su lugar, se desarrollaron las técnicas de
tiempo compartido.
Compilador.- Es un programa que traduce lenguaje de alto nivel al lenguaje máquina.
Intérprete.- Cumple la misma función de traducir de lenguaje de alto nivel al lenguaje máquina pero sin
producir un programa objeto.
Relojes.-“Todos los computadores disponen de un reloj (timer) que se utiliza para tareas de planificación,
para obtener la fecha y hora del sistema, para producir interrupciones periódicas y otras tareas dentro del
sistema” (Martínez et al., 1997, p. 187).
Firmware.- Son programas almacenados en una unidad de control de alta velocidad. Vera (2007, p. 2)
menciona que es “un conjunto de instrucciones almacenadas en un circuito hardware”.
Emulación.- Es cuando una máquina se comporta como otra.
Buffer.- Es una memoria temporal de datos, Martínez et al. (1997, p. 11), lo definen como una “área de
memoria principal que puede guardar datos temporalmente durante transferencias de entrada-salida
(E/S)”.
Encapsulamiento.- Es la propiedad de ocultar la información contenida en forma de paquetes, dicha
información no puede ser vista de forma interior, sino que sólo es percibida por los usuarios como un
paquete y sólo se puede conocer la parte exterior en conjunto.
Spool.- Es un directorio asociado a un dispositivo de alta velocidad que se interpone entre el programa en
ejecución y un dispositivo de baja velocidad relacionado con la entrada y salida de datos, con la finalidad
de administrar procesos, y trabaja como una especie de cola de procesos.
Candela, García, Quesada, Santana y Santos (2007) mencionan el siguiente ejemplo de un spool:
Un ejemplo típico es el directorio spool para impresora: cuando un programa de usuario manda imprimir
en una impresora, en realidad su trabajo se envía a este directorio y se engancha en esta cola de
impresión, liberando al usuario para que pueda continuar su trabajo; posteriormente es el programa
denominado “demonio de impresión” el que se encarga de enviar el fichero a la impresora cuando le
corresponda (p. 261).
Multiprogramación.- Varios procesos corriendo al mismo tiempo con memoria compartida.
IOCS (Input Output Control System).-Programa que controla las entradas y salidas del sistema.
Cargador.- Programa que coloca las instrucciones de un programa en localidades de memoria.
Canalización.- Es el proceso de organización para que un procesador pueda ejecutar varias instrucciones.
Tanenbaum (2003, p. 22) comenta que “muchas CPUs modernas cuentan con recursos para ejecutar más
©UVEG. Derechos reservados. Esta obra no puede ser reproducida, modificada, distribuida, ni transmitida, parcial o totalmente, mediante cualquier medio, método o
sistema impreso, electrónico, magnético, incluyendo el fotocopiado, la fotografía, la grabación o un sistema de recuperación de la información, sin la autorización por
escrito de la Universidad Virtual del Estado de Guanajuato.
2
IF0015_M2AA1_Conceptos
Versión: Septiembre 2012
Revisor: José Miguel Campos García
de una instrucción al mismo tiempo. Por ejemplo, una CPU podría tener unidades individuales para tomar,
decodificar y ejecutar. Tal organización se llama canalización”.
Poolling.- Técnica mediante la cual un proceso puede ver el estado de otro proceso (listo, suspendido,
etc.).
Sistema Interactivo.- Sistema para atender al mismo tiempo a varios usuarios.
Sistema a tiempo real.- Es un sistema cuya principal característica es dar respuestas inmediatas, con una
gran velocidad de procesamiento.
Registro de ubicación.- Sirve para localizar o ubicar un programa en memoria.
Shell.- Es la interfaz primaria entre un usuario y el sistema operativo. Una de sus principales funciones es
trabajar como un intérprete de comandos, que la Shell recibe y que se encarga de procesar, generando los
resultados y presentando esta información al usuario.
Llamadas al sistema.- La interfaz entre el sistema operativo y los programas de usuario está definida por
el conjunto de operaciones extendidas que el sistema operativo ofrece. Estas instrucciones se han
nombrado tradicionalmente llamadas al sistema.
Quantum.- Tiempo asignado por el procesador para ejecutar una tarea.
Interrupción.- “No es más que un mecanismo mediante el cual otros módulos (entrada/salida/memoria)
pueden interrumpir la ejecución normal de un procesador” (Ortiz, 2005, p. 16).
Kernel.- “Es frecuente encontrar el término inglés Kernel para referirse al núcleo de un sistema operativo
que siempre está residente en memoria” (Márquez, 2004, p. 1).
Proceso.- Es un programa en ejecución. Silberschatz y Galvin (1999) destacan que:
Un programa por sí solo no es un proceso; un programa es una entidad pasiva, como el contenido de un
archivo guardado en disco, mientras que un proceso es una entidad activa, con el contador de programa
especificando la siguiente instrucción que se ejecutará, y un conjunto de recursos asociados (p. 90).
Process spawning.- Cuando un proceso es creado por el S.O., tras la solicitud explícita de otro proceso,
la acción se conoce como generación de procesos.
Swapping.- Cuando la memoria principal se satura, el S.O. efectúa un swapping, un proceso del estado
bloqueado pasa a suspend blocked, se libera memoria principal y se puede crear un nuevo proceso. El
swapping es un intercambio de los procesos de la memoria principal al disco.
Programa.- Colección de instrucciones y de datos que se encuentran almacenados en un fichero ordinario.
©UVEG. Derechos reservados. Esta obra no puede ser reproducida, modificada, distribuida, ni transmitida, parcial o totalmente, mediante cualquier medio, método o
sistema impreso, electrónico, magnético, incluyendo el fotocopiado, la fotografía, la grabación o un sistema de recuperación de la información, sin la autorización por
escrito de la Universidad Virtual del Estado de Guanajuato.
3
IF0015_M2AA1_Conceptos
Versión: Septiembre 2012
Revisor: José Miguel Campos García
Lenguaje de bajo nivel.- “Lenguaje de programación que requiere que el programador piense a nivel de la
máquina. Incluye una enorme cantidad de detalles en cada programa. Un ejemplo de este tipo de lenguaje
es el ensamblador” (Beekman, 2005, p. 606).
Lenguaje de alto nivel.- “Es un lenguaje de programación que cae en algún lugar entre los lenguajes
humanos naturales y los lenguajes máquina precisos. Están desarrollados para simplificar el proceso de
programación” (Beekman, 2005, p. 606). Un ejemplo de lenguaje de alto nivel es Java.
Imagen de proceso.- Es la representación de los elementos típicos de un proceso, los cuales son “el
bloque de control del proceso, los datos del usuario, el programa del usuario y la pila del sistema” (Ortiz,
2005, p. 42).
Multiprogramación con un único procesador.- Es la ejecución de varios procesos dentro de un sistema
con un solo procesador. En este modelo todos los procesos concurrentes se ejecutan sobre un único
procesador.
Multiprocesador.- Es la gestión de varios procesos dentro de un sistema con dos o más procesadores. En
este tipo de arquitecturas, los procesos concurrentes no sólo pueden intercalar su ejecución sino también
superponerla. En este caso sí existe una verdadera ejecución simultánea de procesos, al coincidir las
fases de procesamiento de distintos procesos.
Proceso distribuido.- Es la gestión de varios procesos que se ejecutan en sistemas de computadoras
múltiples y remotas.
Concurrencia.- “Se da cuando varios procesos se ejecutan simultáneamente, y precisan utilizar los
mismos recursos, debiendo sincronizarse para que se ejecuten sin interferencias y puedan realizar su
trabajo correctamente, cooperando para alcanzar el fin para el que se diseñaron” (Pérez-Campanero y
Morera, 2002, p. 131).
Exclusión mutua.- “Consiste en que solo un proceso puede usar un recurso crítico simultáneamente”
(Ortiz, 2005, p. 91).
Interbloqueo.- Es el bloqueo permanente de un conjunto de procesos que compiten por los recursos del
sistema o bien se comunican unos con otros. Candela et al., (2007, p. 275) lo definen como “el estado no
deseable en el que existe un conjunto de unidades de ejecución bloqueadas esperando por recursos que
no se les pueden conceder debido a que están asignados a otras unidades que están en ese mismo
estado”.
Inanición.- Es la negación indefinida de un recurso a un proceso, que no necesariamente se encuentra
con interbloqueo, este caso puede darse en situaciones donde dos procesos pueden estarse asignando
entre ellos un recurso, y negándoselo a un tercer proceso que está en espera.
Cooperación por compartición.- De acuerdo a Ortiz (2005, p. 62) “es cuando los procesos conocen
indirectamente a los demás, debido a que comparten objetos”.
Cooperación por comunicación.- De acuerdo a Ortiz (2005, p. 62) “es cuando los procesos conocen
directamente a los demás, debido a la existencia de primitivas comunicaciones”.
©UVEG. Derechos reservados. Esta obra no puede ser reproducida, modificada, distribuida, ni transmitida, parcial o totalmente, mediante cualquier medio, método o
sistema impreso, electrónico, magnético, incluyendo el fotocopiado, la fotografía, la grabación o un sistema de recuperación de la información, sin la autorización por
escrito de la Universidad Virtual del Estado de Guanajuato.
4
IF0015_M2AA1_Conceptos
Versión: Septiembre 2012
Revisor: José Miguel Campos García
Mecanismos de comunicación.- Son los mecanismos que permiten a los procesos comunicarse. Los
mecanismos de comunicación hacen posible que los procesos intercambien datos entre ellos. Los
principales mecanismos que ofrecen los sistemas operativos son los siguientes:
•
•
•
•
Archivos
Tuberías
Variables en memoria compartida
Paso de mensajes
Mecanismos de sincronización.- En los problemas de sincronización un proceso debe esperar la
ocurrencia de un determinado evento. Para que los procesos puedan sincronizarse es necesario disponer
de servicios que permitan bloquear o suspender bajo determinadas circunstancias la ejecución de un
proceso, para que de esa manera sepan qué proceso va a disponer de un servicio y cuál debe esperar su
turno. Los principales mecanismos de sincronización que ofrecen los sistemas operativos son:
•
•
•
•
•
Señales
Tuberías
Semáforos
Monitores
Paso de mensajes
Archivos.- Es una secuencia de datos almacenados y agrupados bajo un identificador que distingue de
forma única a cada archivo.
Paso de mensajes.- Consiste en un mecanismo de comunicación y sincronización cuya principal
característica es el envío de mensajes entre dos o más procesos.
Señales.- Es una interrupción por software para un proceso informándole de la ocurrencia de cierto
evento. Martínez et al. (1997, p. 232) indican que “es un número entero positivo que un proceso envía a
otro proceso mediante la llamada Kill ( ). Para cada uno de estos números de señal, el proceso que lo
recibe especifica la acción asociada mediante la llamada signal ( )”.
Tuberías.- Es una forma de comunicación en la que la salida o el resultado de un programa se convierten
en la entrada de otro.
Memoria compartida.- Consiste en crear una zona de memoria que puedan compartir dos o más
procesos, y funciona por medio de la escritura en memoria de un proceso al querer enviar datos a otro, el
segundo proceso entonces puede ver en la memoria lo que escribió el primero y darle respuesta
escribiendo también en la memoria, estableciendo así un mecanismo de comunicación.
Cola de mensajes.- Su filosofía es parecida a la de las tuberías pero con una mayor versatilidad. Una cola
es una estructura de datos gestionada por el núcleo y donde podrán escribir varios procesos.
Semáforo.- “Un semáforo es un mecanismo para prevenir la colisión que se produce cuando dos o más
procesos solicitan simultáneamente el uso de un recurso que deben compartir” (Márquez, 2004, p. 372).
©UVEG. Derechos reservados. Esta obra no puede ser reproducida, modificada, distribuida, ni transmitida, parcial o totalmente, mediante cualquier medio, método o
sistema impreso, electrónico, magnético, incluyendo el fotocopiado, la fotografía, la grabación o un sistema de recuperación de la información, sin la autorización por
escrito de la Universidad Virtual del Estado de Guanajuato.
5
IF0015_M2AA1_Conceptos
Versión: Septiembre 2012
Revisor: José Miguel Campos García
Monitor.- “Es una colección de datos administrativos y sus procedimientos asociados, diseñados para
controlar el acceso a un recurso compartido” (Hoare, 1974, citado por Márquez, 2004, p. 405).
Overlaying.- Es una práctica que se conoce como superposición, en la cual el programa y los datos se
organizan de tal forma que puede haber varios módulos asignados a la misma región de memoria, con un
programa administrador del intercambio de los módulos.
Dirección lógica.- Es una referencia a una posición de memoria, que funciona de manera independiente a
la asignación de datos que se encuentren en ella, es necesaria una traducción a dirección física antes de
poder realizar un acceso a memoria.
Dirección relativa.- Es una dirección lógica pero de forma particular, debe existir una referencia a una
posición relativa a algún punto establecido, generalmente es al inicio del programa.
Dirección física o absoluta.- Es una posición real en memoria principal.
Estado seguro.- Es un estado en el cual existe al menos un orden en el que todos los procesos pueden
ejecutar hasta el final sin generar un interbloqueo.
Memoria Virtual.- De acuerdo a (Tanenbaum, 2003), es lo siguiente:
La idea básica de este esquema es que el tamaño combinado del programa, sus datos y su pila podrían
exceder la cantidad de memoria física que se le puede asignar. El sistema mantiene en memoria principal
la partes del programa que se estén usando en ese momento, y el resto en el disco (p. 202).
Esta técnica evita a los programadores tener que preocuparse por las limitaciones de la memoria.
Sistema de archivos.- Es un mecanismo de abstracción de los dispositivos físicos de almacenamiento
que nos permite manejarlos a un nivel lógico sin la necesidad de conocer su arquitectura hardware de
forma particular, la mayoría de los sistemas de archivos siguen una estructura jerárquica.
Modelo Cliente Servidor.- Forouzan (2003, p. 370) lo define como “el modelo de interacción entre dos
programas de aplicación en los cuales un programa en un extremo (cliente) solicita un servicio de un
programa en el otro extremo (servidor)”.
©UVEG. Derechos reservados. Esta obra no puede ser reproducida, modificada, distribuida, ni transmitida, parcial o totalmente, mediante cualquier medio, método o
sistema impreso, electrónico, magnético, incluyendo el fotocopiado, la fotografía, la grabación o un sistema de recuperación de la información, sin la autorización por
escrito de la Universidad Virtual del Estado de Guanajuato.
6
IF0015_M2AA1_Conceptos
Versión: Septiembre 2012
Revisor: José Miguel Campos García
Referencias Candela, S., García, C. R., Quesada, A., Santana, F. J. y Santos, J. M. (2007). Fundamentos de
sistemas operativos. Madrid, España: Thomson y Paraninfo. [Versión electrónica]. Recuperado el 28
de febrero de 2011, de
http://books.google.com.mx/books?id=fRK3lbTrNy4C&pg=PA261&dq=spool+es&hl=es&ei=8NBrTcD
AGI7WtQPrw7SmBA&sa=X&oi=book_result&ct=result&resnum=6&ved=0CDoQ6AEwBQ#v=onepag
e&q=spool%20es&f=false
Forouzan, B. A. (2003). Introducción a la ciencia de la computación. México, D. F.: International
Thomson Editores.
Márquez, F. M. (2004). Unix Programación avanzada. (3ª ed.). Madrid, España: RA-MA Editorial.
Martínez, P., Cabello, M. y Díaz, J.C. (1997). Sistemas Operativos Teoría y Práctica. Madrid,
España: Ediciones Díaz de Santos. [Versión electrónica]. Recuperado el 25 de febrero de 2011, de
http://books.google.com.mx/books?id=wXzwFPaVku0C&pg=PA17&dq=sistemas+de+tiempo+compa
rtido&hl=es&ei=0AdoTeaSNYiasAPXkd2mBA&sa=X&oi=book_result&ct=result&resnum=5&ved=0C
EgQ6AEwBA#v=onepage&q=sistemas%20de%20tiempo%20compartido&f=false
Molina, J. (2007). Sistemas Operativos en entornos monousuario y multiusario. Madrid, España:
Editorial Visión Net. [Versión electrónica]. Recuperado el 25 de febrero de 2011, de
http://books.google.com.mx/books?id=yECVWwb4kL0C&pg=PA1&dq=molina+%2B+sistemas+oper
ativos&hl=es&ei=DAx5TasCyLi3B863wP8G&sa=X&oi=book_result&ct=result&resnum=2&ved=0CCs
Q6AEwAQ#v=onepage&q&f=false
Ortiz, H. J. (2005). Sistemas Operativos Modernos. Medellín, Colombia: Universidad de Medellín.
[Versión electrónica]. Recuperado el 28 de febrero de 2011, de
http://books.google.com.mx/books?id=3Hb6f3gyCxUC&pg=PA16&dq=interrupciones+%2B+sistema
+operativo&hl=es&ei=n95rTbGtJYSisQPit9CmBA&sa=X&oi=book_result&ct=result&resnum=3&ved=
0CDMQ6AEwAg#v=onepage&q=interrupciones%20%2B%20sistema%20operativo&f=false
Pérez-Campanero, J. A. y Morera, J. M. (2002). Conceptos de Sistemas Operativos. Madrid,
España: Universidad Pontificia Comillas. [Versión electrónica]. Recuperado el 1 de marzo de 2011,
de
http://books.google.com.mx/books?id=LY2P_VSuZ3cC&pg=PA131&dq=concurrencia+%2B+sistema
+operativo&hl=es&ei=1uZrTenDEpOWsgOvjdGmBA&sa=X&oi=book_result&ct=result&resnum=2&v
ed=0CC0Q6AEwAQ#v=onepage&q=concurrencia%20%2B%20sistema%20operativo&f=false
Silberschatz, A. y Galvin, P. B. (1999). Sistemas Operativos. (5ª ed.). México: Addison Wesley
Longman.
Tanenbaum, A. S. (2003) Sistemas Operativos Modernos. (2ª ed.). Estado de México, México:
Pearson Educación. [Versión electrónica]. Recuperado el 28 de febrero de 2011, de
http://books.google.com.mx/books?id=g88A4rxPH3wC&printsec=frontcover&dq=sistemas+operativos
+modernos&hl=es&ei=Dwt5Td_OBoS5tgeHw4mHBw&sa=X&oi=book_result&ct=result&resnum=1&v
ed=0CCUQ6AEwAA#v=onepage&q&f=false
Vera, M. (2007). Implantación y Mantenimiento de Aplicaciones Ofimáticas y Corporativas. Madrid,
España: Ediciones Paraninfo. [Versión electrónica]. Recuperado el 28 de febrero de 2011, de
http://books.google.com.mx/books?id=sFqXAU67susC&pg=PA2&dq=firmware+es&hl=es&ei=VsRrTf
uDCIygsQOusMGmBA&sa=X&oi=book_result&ct=result&resnum=8&ved=0CEgQ6AEwBw#v=onepa
ge&q=firmware%20es&f=false
©UVEG. Derechos reservados. Esta obra no puede ser reproducida, modificada, distribuida, ni transmitida, parcial o totalmente, mediante cualquier medio, método o
sistema impreso, electrónico, magnético, incluyendo el fotocopiado, la fotografía, la grabación o un sistema de recuperación de la información, sin la autorización por
escrito de la Universidad Virtual del Estado de Guanajuato.
7