Está en la página 1de 10

1.

INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS


1.1 INTRODUCCIÓN

Los sistemas informáticos actuales están basados en una arquitectura común


compuesta de un hardware, un sistema operativo que ofrece una serie de servicios
y un conjunto de aplicaciones de usuario final que hacen uso de dichos servicios.
Un sistema operativo es un programa o conjunto de programas que actúa como
intermediario entre el usuario y el hardware del ordenador, gestionando los
recursos del sistema y optimizando su uso. El sistema operativo presenta al usuario
una máquina virtual que es más fácil de manejar y programar que el hardware que
está por debajo.
El sistema operativo es el primer programa que se carga en el ordenador y es el
responsable de la forma en que se utilice éste. El mismo equipo hardware trabajará
de una forma u otra según el sistema operativo que se instale en él.
No todos los sistemas operativos se pueden instalar en cualquier sistema
informático, ni todos los equipos hardware pueden soportar cualquier sistema
operativo. A la hora de montar un sistema informático se debe planificar la forma
en la que van a trabajar los usuarios para elegir el sistema operativo que soporte
dicha forma de trabajo. A partir de esto se elegirá un hardware en la que se pueda
instalar dicho sistema operativo.

1.2 FUNCIONES DEL SISTEMA OPERATIVO


Las principales funciones que realiza todo sistema operativo son:
Control de la ejecución de programas. Acepta los trabajos, administra cómo se
realizan y les asigna recursos.
Administración de periféricos. Coordina y maneja los distintos dispositivos
conectados a la máquina.
Gestión de permisos y de usuarios. Adjudica permisos a los usuarios a fin de
evitar conflictos entre los distintos trabajos.
Control de concurrencia. Establece prioridades entre los distintos procesos que
desean utilizar un mismo recurso.
Control de errores. Controla la posible pérdida de información así como los
problemas que pueda producir el hardware.
Administración de memoria. Asigna y gestiona la memoria del sistema a los
distintos procesos.
Control de seguridad. Proporciona seguridad para la información almacenada y
los usuarios del sistema.
A partir de estas funciones, podemos analizar la estructura de un sistema
operativo en cinco niveles.
Cada uno de estos niveles se comunica con el inmediatamente superior e
inferior coordinando sus funciones.
Nivel 1: Gestión del Procesador. En este nivel se encuentra la parte del sistema
operativo encargada de la gestión de la CPU.
Nivel 2: Gestión de Memoria. Este nivel es el encargado de repartir la memoria
disponible entre los distintos procesos.
Nivel 3: Gestión de Procesos. Este nivel es el encargado de la creación y
destrucción de procesos, intercambio, detección y arranque de mensajes.
Nivel 4: Gestión de Dispositivos. En este nivel se realiza la gestión de las
entradas/salidas en función de los dispositivos existentes.
Nivel 5: Gestión de la Información. Este nivel se encarga de la gestión de los
nombres lógicos y la protección de la información realizando funciones de creación
y destrucción de ficheros, lectura y escritura y protección de accesos.

1.3.1 INTRODUCCIÓN

Históricamente los sistemas operativos han sido muy dependientes de la


arquitectura de los ordenadores en que se ejecutaban. Por lo tanto analizaremos la
evolución de los mismos en función de las diferentes generaciones de ordenadores.

1.3.2 GENERACIÓN CERO


Sobre la década de 1940 no existían aun los sistemas operativos. Los primeros
ordenadores trabajaban siempre sobre lenguaje máquina (código binario) y todas
las instrucciones se codificaban a mano, realizando cableados particulares para
controlar cada una de las funciones básicas de la máquina.

1.3.3 PRIMERA GENERACIÓN


En la década de los cincuenta, cuando un trabajo estaba en ejecución tenía el
control total sobre la máquina y al finalizar el trabajo el control era devuelto al
sistema operativo que era el encargado de mostrar los resultados y de cargar el
siguiente trabajo.
Con la introducción de las tarjetas perforadas se podían escribir programas en
las tarjetas y leerlos sin necesidad de realizar ningún tipo de cableado.
Se implementó el primer sistema operativo para los ordenadores IBM 701. Se
basaba en el sistema de procesamiento por lotes. Esto es, los programas y los
datos se trataban en grupos para lograr la máxima utilización del sistema.

1.3.4 SEGUNDA GENERACIÓN


La introducción del transistor a mediados de los cincuenta cambió el panorama
de la construcción de ordenadores. Los ordenadores de esta generación se
utilizaban en problemas de ingeniería y cálculo científico. Se programaban en
FORTRAN o en lenguaje ensamblador.
Aparecen los sistemas operativos multiprogramados y los principios de
multiprocesamiento.
El sistema operativo se encargaba de seleccionar uno de los trabajos
preparados y lo ejecutaba; en algún momento ese trabajo tendría que esperar
porque la CPU tendría que procesar otro trabajo, y así sucesivamente. En los
sistemas de multiprogramación varios programas se encuentran a la vez en
memoria y el procesador cambia de un trabajo a otro. En los sistemas de
multiprocesamiento se utilizan varios procesadores en un único sistema para
aumentar la potencia de procesamiento de la máquina.

1.3.5 TERCERA GENERACIÓN

Esta generación comienza con la introducción de los ordenadores de la familia


S/360 de IBM. Con este nombre se designaba a una serie de máquinas compatibles
en software que se diferenciaban en precio y prestaciones. Fue la primera gran
serie de ordenadores que utilizó circuitos integrados. Tuvo tanto éxito que la idea
de familia compatible fue adoptada por el resto de grandes fabricantes.
Continúan las técnicas de multiprogramación. La memoria se reparte en
porciones asignando trabajos distintos en cada una de ellas. Se aprovechan los
tiempos de espera de operaciones de entrada/salida para ser utilizados por la CPU
en otros procesos.
Aparecen técnicas como el spooling que permite almacenar trabajos de entrada
y de salida en dispositivos rápidos (discos) para disminuir el impacto de dispositivos
más lentos y el tiempo compartido, variante de la multiprogramación en la que
cada usuario tiene un terminal conectado al ordenador, permitiendo operaciones en
modo interactivo o conversacional.
Se crea el sistema operativo MULTICS que sirvió de germen para sistemas
posteriores. A partir de él se creo UNICS para sistemas monousuario, cambiando
posteriormente su tipografía a UNIX.
Los laboratorios Bell rescribieron este sistema en un lenguaje de alto nivel
llamado C y cedieron licencias de UNIX a las universidades casi gratuitamente con
lo que el sistema en pocos años se instaló en cientos de máquinas.

1.3.6 CUARTA GENERACIÓN

Los sistemas de la cuarta generación utilizan un mayor nivel de integración en


sus componentes. A partir de de los años 80 los ordenadores son cada vez más
pequeños y más baratos. El ordenador llega a todas las áreas de trabajo, incluso a
nivel doméstico. Surgen sistemas operativos como el MS-DOS escrito por Microsoft
para el IBM PC y otras máquinas que utilizan microprocesadores Intel.
El desarrollo de las redes de ordenadores introduce los sistemas operativos de
red y sistemas operativos distribuidos. Estos sistemas se basan en la utilización de
diversos ordenadores, conectados entre sí, que pueden compartir sus recursos. En
un sistema operativo de red el usuario puede conectarse a máquinas remotas pero
cada máquina tiene su propio sistema operativo local y sus propios usuarios. Por el
contrario, en los sistemas distribuidos, el usuario no sabe dónde ejecutan sus
programas y es el sistema el que controla la ejecución eficiente de los recursos.
El sistema operativo crea un ambiente de trabajo según el concepto de máquina
virtual que lo aísla del funcionamiento interno de la máquina. Las interfaces son
más sencillas, basados en entornos gráficos, como Windows, más fáciles de usar y
con mayores prestaciones. Son sistemas más productivos para el usuario que para
el ordenador.
Actualmente los sistemas operativos van orientados a crear sistemas
distribuidos inteligentes que subdividan los procesos en subprocesos dirigidos a las
máquinas que tengan menos trabajo, presentando los resultados de todos esos
procesos en el ordenador.

1.4.1 POR SU ESTRUCTURA INTERNA

Mediante esta clasificación dividimos los sistemas operativos en función de


cómo se diseñan los sistemas a la hora de ser creados. Normalmente estas
características no son aisladas sino que se pueden utilizar conceptos de unas en
otras.
Monolítico. El sistema está constituido por un único programa compuesto de
múltiples rutinas que pueden ser llamadas unas a otras. Es la estructura típica de
los primeros sistemas operativos.
Por capas. El sistema está diseñado en una estructura jerárquica que se divide
en distintos niveles, tal y como se indica en el apartado 1.2.
Máquina virtual. El sistema operativo presenta una copia exacta del hardware
real que gestiona el propio sistema operativo para cada uno de los procesos. Está
asociado a los conceptos de multiusuario y multitarea.
Cliente-Servidor. Los procesos pueden ser tanto servidores como clientes. El
sistema operativo mantiene la comunicación entre procesos. Ofrece una gran
flexibilidad en cuanto a los servicios del sistema final.

1.4.2 POR LOS MODOS DE EXPLOTACIÓN

Esta clasificación se basa en las distintas formas en las que un sistema


operativo utiliza los recursos.
Procesamiento por lotes. Los trabajos se agrupan en bloques semejantes sin
que exista interacción entre el usuario y los procesos mientras estos se ejecutan.
Los resultados no se obtienen de forma inmediata sino una vez acabado todo el
lote.
Tiempo compartido. El sistema se encarga de distribuir los procesos en función
de un tiempo asignado de utilización del procesador (o procesadores) hasta la
finalización del mismo. Es transparente para el usuario.
Tiempo real. El tiempo de respuesta es inmediato para la solicitud de ejecución
de un proceso. Son sistemas muy complejos diseñados para aplicaciones muy
específicas.
1.4.3 POR LOS SERVICIOS OFRECIDOS

En esta clasificación se tiene en cuenta la visión del usuario final.


Por el número de usuarios.
· Monousuario. Soportan a un usuario a la vez, sin importar el número de
procesadores, procesos o tareas que el usuario pueda ejecutar en un mismo
instante de tiempo.
· Multiusuario. Dan servicio a varios usuarios a la vez, mediante varias
terminales o por medio de sesiones remotas en una red. No importa el número de
procesadores de la máquina ni el número de procesos que cada usuario puede
ejecutar simultáneamente.
Por el número de tareas.
· Monotarea. El sistema sólo puede ejecutar una tarea a la vez por usuario.
Si el sistema es multiusuario sólo uno de ellos puede estar haciendo una tarea a la
vez.
· Multitarea. El sistema puede ejecutar varias tareas de manera
concurrente compartiendo el tiempo de uso del procesador entre las diferentes
tareas.
Por el número de procesadores.
· Monoproceso. El sistema operativo sólo es capaz de manejar un
procesador.
· Multiproceso. El sistema operativo es capaz de usar varios procesadores de
manera simultánea distribuyendo su carga de trabajo. Puede trabajar de forma
simétrica enviando un proceso indistintamente a cualquier procesador o de forma
asimétrica seleccionando el sistema un procesador como maestro que servirá para
distribuir la carga entre los demás procesadores esclavos.

1.4.4 POR LA FORMA DE OFRECER LOS SERVICIOS

Sistema centralizado. Se trata de un gran ordenador que realiza todo el


procesamiento y los usuarios se conectan a él mediante terminales tontos (sin
capacidad de procesamiento).
Sistema en red. Estos sistemas comunican varios ordenadores entre sí a fin de
compartir los recursos y la información del sistema. Cada ordenador posee su
propio sistema operativo y su sistema de ficheros local.
Sistema distribuido. Es una variante del sistema en red pero integrando los
recursos en una máquina virtual de manera que el usuario accede de forma
transparente sin saber donde se encuentran los recursos.

PRÁCTICAS
Práctica 1.
¿Se puede explotar un sistema monoproceso por varios usuarios?. Razona tu
respuesta.

Práctica 2.
¿Todos los sistemas operativos multiproceso son multitarea? Razona tu
respuesta.

Práctica 3.
¿Qué se pretende conseguir con los sistemas operativos distribuidos? Explícalo
brevemente.

Práctica 4.
¿De qué forma se puede explotar un sistema informático desde el punto de vista
del número de usuarios?

1.5.1 KERNEL

El Kernel es el núcleo del sistema operativo que interactúa de forma directa con
el hardware de la máquina. Entre las funciones principales se encuentra:
Gestión de memoria.
Comunicación entre procesos.
Control de interrupciones.
Manejo de errores.
Control de procesos.
Control de periféricos.

1.5.2 PROCESOS

Un proceso es un programa en ejecución. No debemos confundir programa con


proceso. Un programa es un objeto pasivo, sin embargo un proceso es un objeto
activo al cual el sistema operativo asignará recursos y controlará su ejecución.
Cada proceso se compone de un código que se ejecuta y una estructura de
datos, ambos cargados en memoria. La estructura de datos sirve para identificar
cada proceso y permite controlar los aspectos de su ejecución. Contiene la
siguiente información:
Estado del proceso.
En ejecución. El procesador está ejecutando instrucciones de ese proceso en un
momento dado.
Preparado. El proceso está preparado para ser ejecutado y está esperando su
turno.
Bloqueado. El proceso está detenido en espera de un suceso para continuar su
ejecución.
Identificación. A cada proceso se le asigna un código identificador que se
utilizará para identificarlo en el sistema operativo.
Prioridad. A cada proceso se le asigna una prioridad para obtener los recursos
del sistema.
Zona de memoria asignada. Cada proceso posee una zona de memoria asignada
que no puede ser interferida por otro proceso.
La transición entre los distintos estados en los que se encuentra un proceso
puede representarse de la siguiente forma:

Transición 1. Ocurre cuando el proceso en ejecución necesita algún elemento o


señal para continuar ejecutándose
Transición 2. Ocurre cuando el proceso ha agotado su tiempo de ejecución y
debe dejar paso al siguiente proceso.
Transición 3. Ocurre cuando al proceso se le asigna un nuevo intervalo de
tiempo y toma posesión del procesador.
Transición 4. Ocurre cuando el proceso bloqueado recibe el elemento o señal
que esperaba y puede continuar ejecutándose, pasando a preparado para competir
por el procesador.

1.5.3 PLANIFICACIÓN DEL PROCESADOR

El sistema operativo se encarga de compartir el procesador entre los distintos


procesos. Mediante los algoritmos de planificación, el sistema decide qué proceso
ha de ejecutarse y los estados por los que debe pasar. Estos algoritmos buscan de
la manera más eficiente los siguientes objetivos.
Equidad. El planificador debe asignar el tiempo de utilización del procesador de
la forma más justa posible.
Eficiencia. Debe mantener al procesador ocupado el mayor tiempo posible.
Tiempo de respuesta bajo. Debe minimizar el tiempo de respuesta para los
usuarios.
Alto rendimiento. Debe maximizar el número de procesos que se ejecutan en un
periodo de tiempo.
Existen multitud de algoritmos que sería imposible de enumerar. De ellos
destacaremos los siguientes:
FIFO (First In Fist Out). Los procesos se ejecutan según su orden de llegada. El
primero en entrar no libera los recursos hasta que no termina. Es el más sencillo
pero el más ineficaz.
Algoritmo de rueda (Round-Robin). Asigna rotativamente el mismo tiempo de
ejecución (quantum) a los diferentes procesos en forma rotatoria. Es de los más
sencillo, justo y de uso más amplio.
Algoritmo por prioridades. Asigna los tiempos de ejecución según una lista de
prioridades. El tiempo de ejecución se destinará a los procesos de mayor nivel. Es
uno de los más complejos y eficaces.

Ejercicio 1.
Gestión del procesador I
Supongamos que un procesador tiene que ejecutar tres procesos. Cada uno de
ellos utiliza unos determinados tiempos de procesador, 6 para el proceso A, 4 para
el proceso B y 10 para el proceso C. Si el primer proceso que se lanza es A, el
segundo es B y el tercero es C. ¿Cómo se irían ejecutando los procesos mediante el
algoritmo FIFO? ¿Y mediante Round-Robin?
Solucion

Veamos los resultados mediante un gráfico temporal:


Ejercicio 2.
Gestión del procesador II
Si asignamos la mayor prioridad al proceso C, luego el B y por último el proceso
A. ¿Cuál sería el resultado?
Solucion

Igualmente, veamos los resultados mediante un gráfico temporal:

1.5.4 BLOQUEOS

En los sistemas de tiempo compartido se pueden presentar problemas a la hora


de competir por los recursos del sistema. El sistema operativo debe ofrecer
mecanismos para sincronizar la ejecución de los procesos. Para ello una solución
son los semáforos, rutinas de software que logran la exclusión mutua en el uso de
los recursos.
No obstante, la apropiación de un recurso puede producir problemas como el
bloqueo que se produce cuando un proceso determinado espera un evento que sólo
puede ser provocado por otro proceso. Este segundo también permanece
esperando y ninguno ellos realiza ninguna acción hasta que el otro libere algún
recurso, entrando en un bucle de espera sin fin (deadlock).
Alguna de las técnicas para evitar bloqueos son:
Asignación de recursos en orden lineal. Los recursos tienen asignado un valor y
los procesos sólo hacen uso de recursos con valores mayores que al que se le
asigna al proceso.
Asignación todo-nada. El proceso pide todos los recursos que va a utilizar de
una vez y el sistema se los asigna si puede dárselos todos.
Algoritmo del banquero. Utiliza una tabla de recursos. Cuando un proceso pide
un recurso mira en la tabla si está disponible, si no, hace esperar al proceso.
1.5.5 GESTIÓN DE MEMORIA

La memoria principal es un recurso que debe ser gestionado con sumo cuidado.
El administrador de memoria es la parte del sistema operativo encargada reservar
espacio en memoria para los procesos y liberarla cuando han finalizado. También se
encarga del intercambio de datos entre la memoria y el los dispositivos de entrada
/salida así como de la protección y uso compartida.
Existen diferentes métodos de administración de memoria entre los que
destacamos.
Memoria Virtual. Método que consiste en permitir que el tamaño conjunto del
programa y sus datos sea mayor que la cantidad de memoria física disponible. El
sistema operativo deja en memoria principal las partes del programa que se están
utilizando y el resto lo almacena en disco mediante una zona de intercambio
(swap).
Paginación. Método que consiste en dividir la memoria en zonas de tamaño fijo
llamadas frames y los programas en partes del mismo tamaño llamadas páginas.
Segmentación. Técnica similar a la paginación pero definiendo los bloque de
memoria de tamaño variable.

1.5.6 GESTIÓN DE PERIFÉRICOS

Una de las funciones principales de un sistema operativo es la gestión de los


periféricos de entrada/salida. Los periféricos los podemos dividir en:
Periféricos tipo bloque. Trabajan con información dividida en bloques de tamaño
fijo. Entre ellos se encuentran los discos duros y la memoria.
Periféricos tipo carácter. Trabajan con grupos de bytes sin importar su longitud.
Entre ellos se encuentran el teclado, el ratón y las impresoras.
Los dispositivos de entrada/salida poseen una parte mecánica y una parte
electrónica. La parte mecánica es el dispositivo en sí mismo. Cuando se realiza el
acceso a un dispositivo se hace a través de su parte electrónica llamada
controladora de dispositivo.

La mayoría de las controladoras de bloque permiten la técnica de DMA (Direct


Memory Access) o acceso directo a memoria. Mediante esta técnica se pretende
descargar trabajo del procesador en las operaciones de entrada/salida.

El driver es la parte software que comunica el periférico y el procesador. Es el


encargado de indicar los comandos que tiene que ejecutar y verificar que se
ejecuten de forma adecuada.
1.5.7 GESTIÓN DE DATOS

Para poder manejar la información que después debe ser procesada esta debe
almacenarse en soportes externos mediante ficheros. Un fichero es un conjunto de
datos estructurados que se usan mediante un determinado programa.
El sistema operativo gestiona cada fichero almacenado indicando su nombre,
tamaño, tipo, lugar donde se encuentra, etc. A esto se le denomina sistema de
ficheros.
Los sistemas de ficheros manejan dos tipos fundamentales de objetos. Los
ficheros regulares que contienen la información y los directorios que son ficheros
que contienen referencias a otros ficheros regulares o a otros directorios. La
utilización de directorios permite una mayor organización de los ficheros dentro del
disco.
En casi todos los sistemas de fichero existe un directorio principal llamado raíz
(root) que es el directoria que contiene todos los demás ficheros y directorios. A
partir de él se crea una estructura jerárquica en forma de árbol invertido invertido
de ficheros y directorios.

Las características de los nombres de los ficheros dependen de los sistemas


operativos. En general utilizan nombres de archivos con dos partes, separadas por
un punto. La primera parte es el nombre es sí y la segunda se denomina extensión
de fichero que normalmente indica el tipo de fichero que es.
Existe una información adicional al fichero denominada atributo que caracteriza
a cada fichero indicando que tipo de operaciones o usuarios pueden interactuar con
él. Estos atributos varían de un sistema operativo a otro.
Cada sistema operativo utiliza su propio sistema de ficheros. Entre los más
extendidos tenemos:
FAT (File Allocation Table). Propio de los primeros sistemas de Microsoft.
Actualmente ha evolucionado a FAT 32.
NTFS (New Tecnologie File Sytem). Utilizado por Windows NT, Windows XP y
Windows Servers. Pose mayor capacidad, seguridad y aprovecha mejor el espacio
que el sistema FAT.
EXT2. Utilizado por Linux. Es de los más eficientes y flexibles.

También podría gustarte