Download Conceptos básicos de sistemas operativos

Document related concepts

Núcleo (informática) wikipedia , lookup

Sistema operativo wikipedia , lookup

Arquitectura de Windows NT wikipedia , lookup

Windows NT wikipedia , lookup

Proceso de arranque en Linux wikipedia , lookup

Transcript
El tema de esta presentación es los conceptos básicos relacionados con
Sistemas Operativos.
1
Qué es un sistema operativo
Un sistema operativo es un programa que tiene encomendadas una serie de
funciones diferentes, cuyo objetivo es simplificar el manejo y la utilización del
computador. Las funciones básicas de un sistema operativo se pueden clasificar
en:
•Gestión de recursos
•Ejecución de servicios para los programas
•Ejecución de los mandatos de los usuarios
2
Gestión de recursos
En un computador pueden existir varios usuarios que ejecutan varios programas,
estos programas compiten por los recursos del computador (Memoria, tiempo de
CPU, periféricos). El sistema operativo debe garantizar la protección de los
programas frente a otros.
•Asignación y liberación de recursos: El S.O. debe monitorear para saber cuáles
recursos están libres y cuáles están asignados a cada programa. Si se tiene un
esquema de prioridades, se deben resolver los conflictos que se pueden
presentar.
•Protección: El S.O. debe garantizar la confidencialidad de la información, de
manera que los programas no interfieran entre sí.
3
Ejecución de servicios para los programas
El S.O. ofrece a los programas un conjunto de servicios (llamadas al sistema),
que garantiza que los programas se ejecuten en un ambiente protegido. De esta
forma se crea una máquina virtual extendida, que simplifica la labor de los
programas. Dentro de los servicios más importantes se pueden mencionar:
•Ejecución de programas: El sistema operativo proporciona servicios para
ejecutar un programa, parar o abortar su ejecución. También ofrece servicios que
permiten conocer y modificar las condiciones de ejecución de los programas,
además de servicios para la comunicación y sincronización de programas.
•Órdenes de E/S: Proporciona servicios de lectura, escritura y modificación del
estado de los periféricos.
•Operaciones sobre archivos: El S.O. ofrece servicios para la creación, apertura,
lectura, escritura, renombrado y borrado de archivos.
•Detección y tratamiento de errores: El S.O. es el encargado de detectar las
condiciones de error de hardware. Entre los errores se puede mencionar errores
de E/S, acceso a memoria, desbordamientos, violación de segmento de
memoria, o instrucciones prohibidas.
4
Gestión de usuarios y grupos
Todo sistema operativo multiusuario debe ofrecer los servicios básicos de
manejo de usuarios y grupos, tales como creación, modificación y eliminación.
Además se debe brindar los servicios de autenticación y autorización.
•Autenticación: Proceso en el cual un usuario ingresa un nombre y una
contraseña, creados previamente en el sistema. El S.O. debe validar que el
usuario exista.
•Autorización: Nivel de permisos de un usuario autenticado para tener acceso a
los servicios que ofrece el sistema operativo, y las restricciones de seguridad
frente a otros usuarios.
5
Ejecución de mandatos de usuarios
Otra de las funciones de un S.O es proporcionar los medios para que los
usuarios puedan ejecutar mandatos, representados en comandos de utilidad.
Para ello el S.O. proporciona el Shell, que puede ser definido como una interfaz
para ejecutar comandos. Esta interfaz puede ser textual, en forma de terminales
(Unix), o gráfica, en la cual se utiliza el teclado y el mouse para invocar los
comandos (Windows, MAC).
En su forma más simple, el shell es un bucle infinito que espera una orden del
usuario, la analiza y en el caso que sea correcta la ejecuta. Una vez que se ha
concluido la ejecución de la orden, el shell espera una nueva orden.
Los archivos de comandos son una agrupación de los comandos que el usuario
introduce en el shell, además de instrucciones de control de flujo para controlar
su ejecución. Los archivos de comandos más comunes son los .bat (windows) y
los .sh (Unix).
6
Arranque del computador
Luego del encendido del computador o de pulsar el botón RESET, se genera una señal que carga
en el PC la dirección de inicio del programa de arranque (Iniciador) que se encuentra almacenado
en una memoria ROM, que forma parte del mapa de memoria.
Iniciador ROM
El iniciador ROM tiene las siguientes funciones:
•Comprobación del sistema, por medio de un test de hardware
•Lectura y almacenamiento en memoria del programa cargador del sistema operativo (Loader).
Este programa se encuentra en un periférico, usualmente un disco duro o un diskette o un CDROM.
•Ceder el control al cargador del sistema operativo.
Cargador del sistema operativo
Este programa se encarga de traer a memoria algunos de los componentes del sistema
operativo. Luego se pasa a la fase de iniciación, en la que se realizan los siguientes pasos:
•Comprobación del sistema: Se completan las pruebas de hardware realizadas por el iniciador
ROM, además de realizar una prueba del sistema de archivos
•Se establecen las estructuras de información propias del S.O. (Tabla de procesos, tabla de
memora y tablas de E/S)
•Se carga en memoria el programa del S.O que estará residente.
Sistema operativo
•Se crean uno o varios procesos de inicio (Login) para permitir el trabajo interactivo por parte de
los usuarios, además de otros procesos auxiliares (Servicios, demonios, etc).
7
Componentes y estructura de un sistema operativo
Un sistema operativo consta de tres capas:
•Núcleo: Parte del sistema operativo que interactúa directamente con el
hardware de la máquina. Sus funciones consisten en gestionar los recursos de
hardware, tratar las interrupciones de hardware e implementar las funciones
básicas de gestión de memoria.
•Servicios: Estas facilidades se ofrecen para brindar una capa de abstracción
sobre el núcleo. Los principales servicios que ofrece un S.O. se pueden clasificar
en:
•Gestión de procesos: Creación, planificación y destrucción de procesos
•Gestión de memoria: Gestionar la memoria libre y ocupada, realizar la
asignación y liberación de memoria.
•Gestión de entrada/salida: Maneja los dispositivos periféricos
•Gestión de archivos y directorios: Manejo de archivos y directorios, y en
general de la administración del almacenamiento secundario.
•Seguridad y protección: Permite garantizar la identidad de los usuarios y
definir los permisos sobre los recursos del sistema.
•Comunicación y sincronización entre procesos: Brinda las primitivas
básicas para comunicar y sincronizar procesos.
•Intérprete de comandos (Shell): Permite que el usuario interactúe con el sistema
operativo, a través de comandos textuales (shell 1), o interfaces gráficas (shell
2).
8
Servicios del sistema operativos
Por encima de los servicios básicos del sistema operativo, se encuentran las
interfaces para los programas de usuario, representadas por WIN32 y POSIX,
para Windows y Unix, respectivamente. Estas interfaces proporcionan un API al
que se puede tener acceso a través de un lenguaje de programación de alto
nivel, como C.
Por ejemplo, la llamanda fopen en POSIX permite abrir un archivo que se
encuentre en un disco duro, un diskette, una memoria USB. Los servicios del
sistema operativo también se conocen como llamadas al sistema, y
proporcionan una interfaz estándar para acceder a cada uno de los servicios sin
tener que preocuparse por la complejidad del hardware.
9
Sistemas operativos monolíticos
Todos los componentes se integran en un solo programa que contiene
todas las rutinas necesarias para su funcionamiento. Una ventaja de este
tipo de sistemas es su rapidez, pero su mantenimiento es muy complejo.
Sistemas operativos estructurados
El S.O. se organiza en capas, donde cada una de ellas posee una interfaz bien
definida en la capa superior y sólo utilizan los servicios que les ofrece la capa
inferior. Esta aproximación ofrece modularidad y ocultación de la información.
Sistemas operativos cliente/servidor
Sólo una pequeña parte del S.O. se ejecuta en modo núcleo
(micronúcleo), yLa mayor parte de los servicios del sistema operativo se
implementa como “servidores”, a los cuales se les pueden realizar
solicitudes. Cada servidor puede hacer uso de otros servidores para
ejecutar una función.
10
Sistemas operativos monolíticos
Los sistemas operativos monolíticos se caracterizan porque todos sus
componentes se encuentran integrados en un único programa que se ejecuta en
un único espacio de direcciones. De esta forma, todas las funciones que ofrece
el sistema operativo se ejecutan en modo núcleo.
Los sistemas operativos monolíticos son difíciles de mantener, ya que un cambio
se puede propagar de manera impredecible. Por otro lado la adición de nuevas
funcionalidades y servicios se ve limitada al conocimiento de la totalidad del
sistema operativo.
11
Sistemas operativos estructurados
El S.O. se organiza en capas, donde cada una de ellas posee una interfaz bien
definida en la capa superior y sólo utilizan los servicios que les ofrece la capa
inferior. Esta aproximación ofrece modularidad y ocultación de la información.
Un ejemplo de sistemas operativos estructurados es OS/2.
12
Modelo cliente / servidor
La mayor parte de los servicios del sistema operativo se implementa como
“servidores”, a los cuales se les pueden realizar solicitudes. Cada servidor puede
hacer uso de otros servidores para ejecutar una función.
El núcleo del sistema sólo contiene las rutinas que interactúan directamente con
el Hardware, tales como gestión de interrupciones, gestión básica del
procesador, gestión de memoria, y servicios básicos de comunicación entre
procesos.
Algunos ejemplos de sistemas operativos cliente/servidor son MINIX, Mach,
Amoeba y Windows NT.
13
Prehistoria:
El hardware utilizaba tubos al vacío, lo cual hacía que no fuera enteramente
confiable. Además los primeros computadores ocupaban un espacio muy
grande. Algunos ejemplos de estos primeros computadores fueron el ENIAC
(Electronic Numerical Integrator Analyzer and Computer), y el EDVAC (Electronic
Discrete Variable Automatic Computer).
En esta generación no existía un sistema operativo como tal, el usuario debía
ingresar los programas por medio de tableros de conmutación y/o tarjetas
perforadas.
Primera generación:
Aparecen los transistores, lo que cambia radicalmente la construcción de los
computadores. Los trabajos (programas) se procesaban por lotes (uno detrás de
otro), y existía un programa que se encargaba de cargar y ejecutar los demás
programas (cargador). Algunos ejemplos de sistemas operativos son FMS
(Fortran Monitoring System) e IBYSS de IBM.
14
Segunda generación:
Con la aparición de los circuitos integrados se dio una revolución en los computadores y los
sistemas operativos. Aparece el concepto de multiprogramación como una alternativa al trabajo
por lotes. La multiprogramación permite aprovechar el tiempo muerto de las operaciones de
Entrada / Salida para ejecutar otros trabajos (programas). Aparece el concepto de planificador,
que es un programa encargado de repartir el uso del procesador entre los trabajos que lo
requieren. También aparece el concepto de tiempo compartido, que consiste en permitir que
varios usuarios trabajen en forma simultánea, al repartir el tiempo de CPU entre ellos.Borroughs
introduce en 1962 el MCP (Master Control Program), que además de permitir multiprogramación
utilizaba memoria virtual.
Por su parte, en el MIT se desarrollo CTSS, el primer sistema de tiempo compartido. Este
sistema se utilizó en el IBM7090 y permitía hasta 32 usuarios interactivos que se conectaban
mediante teletipos (terminales brutas). También apareció el OS/360, que operaba sobre los
computadores 360 de IBM.
El sistema operativo más reconocido de esta generación es MULTICS (desarrollado por el MIT y
Bell Labs), que permitía el soporte a cientos de usuarios.
Tercera generación:
Se caracteriza por la aparición de Sistemas Operativos de propósito general, entre ellos UNIX.
Estos sistemas permitían multiprogramación y tiempo compartido. Con UNIX nace el lenguaje C,
uno de los más utilizados hasta hoy en día.
Cuarta generación:
Con la difusión de los computadores personales también evolucionan los sistemas operativos, en
aspectos como velocidad de procesamiento, manejo de memoria, soporte para redes y
multimedia. Los primeros sistemas que dominaron en esta generación fueron UNIX, MS-DOS y
Windows.
15
16
17