TEMA:
PROFESOR(a):
EQUIPO 1:
Características
Administración de tareas
Administración de usuarios
Manejo de recursos
La gestión de procesos podría ser similar al trabajo de oficina. Se puede tener una lista
de tareas a realizar y a estas fijarles prioridades alta, media, baja por ejemplo. Debemos
comenzar haciendo las tareas de prioridad alta primero y cuando se terminen seguir con
las de prioridad media y después las de baja. Una vez realizada la tarea se tacha. Esto
puede traer un problema que las tareas de baja prioridad pueden que nunca lleguen a
ejecutarse. Y permanezcan en la lista para siempre. Para solucionar esto, se puede
asignar alta prioridad a las tareas más antiguas.
La memoria es una gran tabla de palabras o bytes que se referencian cada una mediante
una dirección única. Este almacén de datos de rápido accesos es compartido por la CPU
y los dispositivos de E/S, son volátil y pierde su contenido en los fallos del sistema. El
SO es el responsable de:
El sistema de E/S
Sistema de archivos
Los archivos son colecciones de información relacionada, definidas por sus creadores.
Éstos almacenan programas (en código fuente y objeto) y datos tales como imágenes,
textos, información de bases de datos, etc... El SO es responsable de:
Desde el punto de vista del usuario estas diferencias pueden parecer insignificantes a
primera vista, sin embargo, existen diferencias muy importantes. Por ejemplo, los
sistemas de ficheros FAT32 y NTFS , que se utilizan fundamentalmente en sistemas
operativos de Microsoft, tienen una gran diferencia para un usuario que utilice una base
de datos con bastante información ya que el tamaño máximo de un fichero con un
Sistema de Archivos FAT32 está limitado a 4 gigabytes sin embargo en un sistema
NTFS el tamaño es considerablemente mayor.
PERMISOS EN LINUX
El sistema de permisos en Linux se basa en un esquema de usuarios/grupos que lo
convierte en la base principal de la seguridad en Linux, a estos usuarios y grupos se les
asignan distintos derechos sobre los archivos y directorios.
Todos los archivos y directorios en Linux tienen permisos que verifican quien puede
hacer o no alguna acción con él.
Permisos
Para ver los permisos de los archivos y directorios es necesario ejecutar el siguiente
comando:
$ ls –l
Interpretación
Los permisos están asignados en grupos de 3 (rwx) y corresponde al: owner: dueño del
archivo o directorio, group: grupo del archivo o directorio y others: otro usuario
diferente del propietario.
• Comando chmod : se utiliza para cambiar los permisos del archivo o directorio
$ chmod [permisos] [archivo/directorio] [opciones]
Símbolo Descripción
u Es el usuario propietario del archivo o directorio
g Es el grupo al que pertenece el archivo o directorio
Identidades
o Otros usuarios, el resto del mundo, ni el propietario ni su grupo
a Todo el mundo – propietario, grupo y otros
r Acceso de lectura
Permisos w Acceso de escritura
x Acceso de ejecución
+ Añade los permisos
Acciones - Elimina los permisos
= el único permiso
Si cambiamos los permisos a un directorio y deseamos que estos permisos tengan efecto
sobre todos sus subdirectorios y archivos sólo deberemos añadir la opción –R. Ejemplo:
Cada permiso tienen asignado un valor, incluso cuando el permiso no está activo. Para
poder utilizar los números tendremos que tener en cuenta la siguiente tabla con sus
respectivos valores:
r = 4 (lectura)
w = 2 (escritura)
x = 1 (ejecucion)
- = 0 (sin permisos)
Cuando asignamos los permisos utilizando números debemos tener en cuenta que
primero se sumarán los valores y dicho resultado será el que se coloque, aquí una tabla
que muestra dichos valores:
Ejemplos:
Cambiando el propietario
# chown raul foto2.png # el usuario raul será el propietario del archivo foto2.png
Cambiando el grupo
# chgrp clases datos/ –R # todos los archivos y sub directorios del directorio datos/
serán del grupo clases
Atributos en MS-DOS
Attrib
attrib A:
Aquí mostrar todos los archivos y propiedades de un diskette. Podemos hacer que nos
muestre solo los archivos que cumplen con ciertas propiedades:
o si queremos ver los de solo lectura (que suelen ser los mismos que los ocultos):
C:\>attrib +R
Código que Ejecuta las llamadas al Sistema. Interfaz primaria entre el usuario y el
Sistema Operativo. mediante una ventana que espera ordenes escritas por el usuario en
el teclado (por ej. PRINT CARTA.TXT), los interpreta y los entrega al sistema
operativo para su ejecución. La respuesta del sistema operativo es mostrada al usuario
en la misma ventana. A continuación, El programa shell queda esperando más
instrucciones. Se interactúa con la información de la manera más sencilla posible, sin
gráficas, solo el texto crudo.
Captura de Bash
MS-DOS
Sistemas de protección
Mecanismo que controla el acceso de los programas o los usuarios a los recursos del
sistema. El SO se encarga de:
Para mantener las comunicaciones con otros sistemas es necesario poder controlar el
envío y recepción de información a través de las interfaces de red. También hay que
crear y mantener puntos de comunicación que sirvan a las aplicaciones para enviar y
recibir información, y crear y mantener conexiones virtuales entre aplicaciones que
están ejecutándose localmente y otras que lo hacen remotamente.
Años 40
A finales de los años 40, con lo que podríamos llamar la aparición de la primera generación
de computadoras, se accedía directamente a la consola de la computadora desde la cual se
actuaba sobre una serie de micro interruptores que permitían introducir directamente el
programa en la memoria de la computadora (en realidad al existir tan pocas computadoras
todos podrían considerarse prototipos y cada constructor lo hacía sin seguir ningún criterio
predeterminado). Por aquel entonces no existían los sistemas operativos, y los programadores
debían interactuar con el hardware del computador sin ayuda externa. Esto hacía que el
tiempo de preparación para realizar una tarea fuera considerable. Además para poder utilizar
la computadora debía hacerse por turnos. Para ello, en muchas instalaciones, se rellenaba un
formulario de reserva en el que se indicaba el tiempo que el programador necesitaba para
realizar su trabajo. En aquel entonces las computadoras eran máquinas muy costosas lo que
hacía que estuvieran muy solicitadas y que sólo pudieran utilizarse en periodos breves de
tiempo. Todo se hacia en lenguaje de máquina.
Años 50
A principios de los años 50 con el objeto de facilitar la interacción entre persona y
computador, los sistemas operativos hacen una aparición discreta y bastante simple, con
conceptos tales como el monitor residente, el proceso por lotes y el almacenamiento
temporal.
Monitor residente
Como solución para optimizar , en una misma cinta o conjunto de tarjetas, de forma que se
ejecutaran uno a continuación de otro sin perder apenas tiempo en la transición.
Almacenamiento temporal
Su objetivo era disminuir el tiempo de carga de los programas, haciendo simultánea la carga
del programa o la salida de datos con la ejecución de la siguiente tarea. Para ello se utilizaban
dos técnicas, el buffering y el spooling.
Años 60
En los años 60 se produjeron cambios notorios en varios campos de la informática, con la
aparición del circuito cerrado la mayoría orientados a seguir incrementando el potencial de
los computadores. Para ello se utilizaban técnicas de lo más diversas:
Multiprogramación
Tiempo compartido
En este punto tenemos un sistema que hace buen uso de la electrónica disponible, pero
adolece de falta de interactividad; para conseguirla debe convertirse en un sistema
multiusuario, en el cual existen varios usuarios con un terminal en línea, utilizando el modo
de operación de tiempo compartido. En estos sistemas los programas de los distintos usuarios
residen en memoria. Al realizar una operación de E/S los programas ceden la CPU a otro
programa, al igual que en la multiprogramación. Pero, a diferencia de ésta, cuando un
programa lleva cierto tiempo ejecutándose el sistema operativo lo detiene para que se ejecute
otro aplicación. Con esto se consigue repartir la CPU por igual entre los programas de los
distintos usuarios, y los programas de los usuarios no se sienten demasiado lentos por el
hecho de que los recursos sean compartidos y aparentemente se ejecutan de manera
concurrente.
Tiempo real
Estos sistemas se usan en entornos donde se deben aceptar y procesar en tiempos muy breves
un gran número de sucesos, en su mayoría externos al ordenador. Si el sistema no respeta las
restricciones de tiempo en las que las operaciones deben entregar su resultado se dice que ha
fallado. El tiempo de respuesta a su vez debe servir para resolver el problema o hecho
planteado. El procesamiento de archivos se hace de una forma continua, pues se procesa el
archivo antes de que entre el siguiente, sus primeros usos fueron y siguen siendo en
telecomunicaciones.
Multiprocesador
Permite trabajar con máquinas que poseen más de un microprocesador. En un
multiprocesador
La arquitectura NUMA, donde cada procesador tiene acceso y control exclusivo a una parte
de la memoria. La arquitectura SMP, donde todos los procesadores comparten toda la
memoria. Esta última debe lidiar con el problema de la coherencia de caché. Cada
microprocesador cuenta con su propia memoria cache local. De manera que cuando un
microprocesador escribe en una dirección de memoria, lo hace únicamente sobre su copia
local en caché. Si otro microprocesador tiene almacenada la misma dirección de memoria en
su caché, resultará que trabaja con una copia obsoleta del dato almacenado.
Además del Atlas Supervisor y el OS/360, los sesenta marcaron el inicio de UNIX, a
mediados de los 60 aparece Multics, sistema operativo multiusuario - multitarea desarrollado
por los laboratorios Bell de AT&T y programado en PL/1 uno de los pocos SO desarrollados
en un lenguaje de alto nivel en aquel tiempo, luego del fracaso del proyecto, UNIX comienza
a desarrollarse a partir de este a finales de la década.
Años 70
Debido al avance de la electrónica, pudo empezar a crearse circuitos con miles de transistores
en un centímetro cuadrado de silicio, lo que llevaría, pocos años después, a producir los
primeros sistemas integrados. Ésta década se podría definir como la de los sistemas de
propósito general y en ella se desarrollan tecnologías que se siguen utilizando en la
actualidad. Es en los años 70 cuando se produce el boom de los miniordenadores y la
informática se acerca al nivel de usuario. En lo relativo a lenguajes de programación, es de
señalar la aparición de Pascal y C, el último de los cuales se creó específicamente para
reescribir por completo el código del sistema operativo Unix, convirtiéndolo en uno de los
pocos SO escritos en un lenguaje de alto nivel. En el campo de la programación lógica se dio
a luz la primera implementación de Prolog, y en la revolucionaria orientación a objetos,
Smalltalk.
Inconvenientes de los sistemas existentes
Se trataba de sistemas grandes y costosos, pues antes no se había construido nada similar y
muchos de los proyectos desarrollados terminaron con costos muy por encima del
presupuesto y mucho después de lo que se marcaba como fecha de finalización. Además,
aunque formaban una capa entre el hardware y el usuario, éste debía conocer un complejo
lenguaje de control para realizar sus trabajos. Otro de los inconvenientes es el gran consumo
de recursos que ocasionaban, debido a los grandes espacios de memoria principal y
secundaria ocupados, así como el tiempo de procesador consumido. Es por esto que se
intentó hacer hincapié en mejorar las técnicas ya existentes de multiprogramación y tiempo
compartido.
Para solventar los problemas antes comentados, se realizó un costosísimo trabajo para
interponer una amplia capa de software entre el usuario y la máquina, de forma que el
primero no tuviese que conocer ningún detalle de la circuitería.
Fue uno de los primeros sistemas operativos de tiempo compartido, que implementó un solo
nivel de almacenamiento para el acceso a los datos, desechando la clara distinción entre los
ficheros y los procesos en memoria, y uno de los primeros sistemas multiprocesador.
• MVS (Multiple Virtual Storage): Fue el sistema operativo más usado en los modelos
de mainframes -ordenadores grandes, potentes y caros usados principalmente por
grandes compañías para el procesamiento de grandes cantidades de datos-
System/370 y System/390 de IBM, desarrollado también por IBM y lanzado al
mercado por primera vez en 1974. Como características destacables, permitía la
ejecución de múltiples tareas, además de que introdujo el concepto de memoria
virtual y finalmente añadió la capacidad de que cada programa tuviera su propio
espacio de direccionamiento de memoria, de ahí su nombre.
• CP/M (Control Program/Monitor): Desarrollado por Gary Kildall para el
microprocesador 8080/85 de Intel y el Zilog Z80, salió al mercado en 1976,
distribuyéndose en disquetes de ocho pulgadas. Fue el SO más usado en las
computadoras personales de esta década. Su éxito se debió a que era portátil,
permitiendo que diferentes programas interactuasen con el hardware de una manera
estandarizada. Estaba compuesto de dos subsistemas:
o CCP (Comand Control Processor): Intérprete de comandos que permitía
introducir los mandatos con sus parámetros separados por espacios. Además,
los traducía a instrucciones de alto nivel destinadas a BDOS.
o BDOS (Basic Disk Operating System): Traductor de las instrucciones en
llamadas a la BIOS.
El hecho de que, años después, IBM eligiera para sus PCs a MS-DOS supuso su mayor
fracaso, por lo que acabó desapareciendo.
Años 80
Con la creación de los circuitos LSI -integración a gran escala-, chips que contenían miles de
transistores en un centímetro cuadrado de silicio, empezó el auge de los ordenadores
personales. En éstos se dejó un poco de lado el rendimiento y se buscó más que el sistema
operativo fuera amigable, surgiendo menús, e interfaces gráficas. Esto reducía la rapidez de
las aplicaciones, pero se volvían más prácticos y simples para los usuarios. En esta época,
siguieron utilizándose lenguajes ya existentes, como Smalltalk o C, y nacieron otros nuevos,
de los cuales se podrían destacar: C++ y Eiffel dentro del paradigma de la orientación a
objetos, y Haskell y Miranda en el campo de la programación declarativa. Un avance
importante que se estableció a mediados de la década de 1980 fue el desarrollo de redes de
computadoras personales que corrían sistemas operativos en red y sistemas operativos
distribuidos. En esta escena, dos sistemas operativos eran los mayoritarios: MS-DOS, escrito
por Microsoft para IBM PC y otras computadoras que utilizaban la CPU Intel 8088 y sus
sucesores, y UNIX, que dominaba en los ordenadores personales que hacían uso del
Motorola 68000.
Apple Macintosh
MS-DOS
En 1981 Microsoft compró un sistema operativo llamado QDOS que, tras realizar unas pocas
modificaciones, se convirtió en la primera versión de MS-DOS (MicroSoft Disk Operating
System). A partir de aquí se sucedieron una serie de cambios hasta llegar a la versión 7.1, a
partir de la cual MS-DOS dejó de existir como tal y se convirtió en una parte integrada del
sistema operativo Windows.
Años 90
GNU/Linux
En 1991 aparece la primer versión del núcleo de Linux. Creado por Linus Torvalds y un
sinfín de colaboradores a través de Internet. Este sistema se basa en Unix, un sistema que en
principio trabajaba en modo comandos, estilo MS-DOS. Hoy en día dispone de Ventanas,
gracias a un servidor grafico y a gestores de ventanas como KDE, GNOME entre muchos.
Recientemente GNU/Linux dispone de un aplicativo que convierte las ventanas en un
entorno 3D como por ejemplo Beryl. Lo que permite utilizar linux de una forma visual
atractiva.
Funciones básicas
Los sistemas operativos, en su condición de capa software que posibilitan y simplifica
el manejo de la computadora, desempeñan una serie de funciones básicas esenciales
para la gestión del equipo. Entre las más destacables, cada una ejercida por un
componente interno (módulo en núcleos monolíticos y servidor en micronúcleos),
podemos reseñar las siguientes:
Es la parte del sistema operativo que permite comunicarse con él de tal manera que se
puedan cargar programas, acceder archivos y realizar otras tareas. Existen tres tipos
básicos de interfaces: las que se basan en comandos, las que utilizan menús y las
interfaces gráficas de usuario.
Administración de recursos
Administración de archivos
Administración de tareas
Servicio de soporte
Los servicios de soporte de cada sistema operativo dependerán de la implementación
particular de éste con la que estemos trabajando. Entre las más conocidas se pueden
destacar las implementaciones de Unix, desarrolladas por diferentes empresas de
software, los sistemas operativos de Apple Inc., como Mac OS X para las computadoras
de Apple, los sistemas operativos de Microsoft, y las implementaciones de software
libre, como Linux o BSD producidas por empresas, universidades, administraciones
públicas, organizaciones sin fines de lucro y/o comunidades de desarrollo.
• Actualización de versiones.
• Mejoras de seguridad.
• Inclusión de alguna nueva utilidad (un nuevo entorno gráfico, un asistente para
administrar alguna determinada función, ...).
• Controladores para manejar nuevos periféricos (este servicio debe coordinarse a
veces con el fabricante del hardware).
• Corrección de errores de software.
• Otros.
No todas las utilidades de administración o servicios forman parte del sistema operativo,
además de éste, hay otros tipos importantes de software de administración de sistemas,
como los sistemas de administración de base de datos o los programas de
administración de redes. El soporte de estos productos deberá proporcionarlo el
fabricante correspondiente (que no tiene porque ser el mismo que el del sistema
operativo).
Monitores residentes
Fichas en lenguaje de procesamiento por lotes, con programa y datos, para ejecución
secuencial
Los problemas surgen si hay muchas más operaciones de cálculo que de E/S (limitado
por la CPU) o si por el contrario hay muchas más operaciones de E/S que cálculo
(limitado por la E/S).
Spoolers
Hace aparición el disco magnético con lo que surgen nuevas soluciones a los problemas
de rendimiento. Se eliminan las cintas magnéticas para el volcado previo de los datos de
dispositivos lentos y se sustituyen por discos (un disco puede simular varias cintas).
Debido al solapamiento del cálculo de un trabajo con la E/S de otro trabajo se crean
tablas en el disco para diferentes tareas, lo que se conoce como Spool (Simultaneous
Peripherial Operation On-Line).
• Administrar la memoria.
• Gestionar el uso de la CPU (planificación).
• Administrar el uso de los dispositivos de E/S.
Las aplicaciones no deben poder usar todas las instrucciones de la CPU. No obstante el
SO, tiene que poder utilizar todo el juego de instrucciones del CPU. Por ello, una CPU
debe tener (al menos) dos modos de operación diferentes:
• Modo usuario: el CPU podrá ejecutar sólo las instrucciones del juego restringido
de las aplicaciones.
• Modo supervisor: la CPU debe poder ejecutar el juego completo de
instrucciones.
Llamadas al Sistema
Pero lo más importante es que una llamada de función no cambia el modo de ejecución
de la CPU. Con lo que hay que conseguir llamar a la rutina de servicio, sin tener que
conocer su ubicación, y hacer que se fuerce un cambio de modo de operación de la CPU
en la llamada (y la recuperación del modo anterior en el retorno).
Las llamadas al sistema no siempre tienen una expresión sencilla en los lenguajes de
alto nivel, por ello se crean las bibliotecas de interfaz, que son bibliotecas de funciones
que pueden usarse para efectuar llamadas al sistema. Las hay para distintos lenguajes de
programación.
Interrupciones y excepciones
El SO ocupa una posición intermedia entre los programas de aplicación y el hardware.
No se limita a utilizar el hardware a petición de las aplicaciones ya que hay situaciones
en las que es el hardware el que necesita que se ejecute código del SO. En tales
situaciones el hardware debe poder llamar al sistema, pudiendo deberse estas llamadas a
dos condiciones:
• Interrupción: señal que envía un dispositivo de E/S a la CPU para indicar que la
operación de la que se estaba ocupando, ya ha terminado.
• Excepción: una situación de error detectada por la CPU mientras ejecutaba una
instrucción, que requiere tratamiento por parte del SO.
Excepciones
Clases de excepciones
Las instrucciones de un programa pueden estar mal construidas por diversas razones:
EQUIPO
DEFINICION Y CARACTERISTICAS
ARCGIVOS Y SHELL
RESUMEN Y PRESENTACION
3ª Y 4ª GENERACION DE COMPUTADORAS
Evaluación de la línea del tiempo