BENEMERITA UNIVERSIDAD AUTONOMA DE PUEBLA

TEMA: INTRODUCCION A LOS SISTEMAS OPERATIVOS

PROFESOR(a): CERON GARNICA MARIA DEL CARMEN

EQUIPO 1: ABSALON CRUZ NALLELY CRUZ PEREZ RICARDO FLORES BRAVO MARIA CRISTINA JUAREZ BLANCO ADRIANA GABRIELA MARTINEZ MARTINEZ JONATHAN PABLO CUAHUIZO ANDRES ROJAS CONTRERAS DAVID URCID HERNANDEZ OSCAR

SISTEMAS OPERATIVOS Un sistema operativo es un software de sistema, es decir, un conjunto de programas de computadora destinado a permitir una administración eficaz de sus recursos. Comienza a trabajar cuando se enciende el computador, y gestiona el hardware de la máquina desde los niveles más básicos, permitiendo también la interacción con el usuario. Un sistema operativo se puede encontrar normalmente en la mayoría de los aparatos electrónicos que utilicen microprocesadores para funcionar, ya que gracias a éstos podemos entender la máquina y que ésta cumpla con sus funciones (teléfonos móviles, reproductores de DVD, autoradios, computadoras, etc.). Actualmente el concepto de computadora esta intrínsecamente relacionado al de sistema operativo, aunque éste existe en otros aparatos electrónicos y no sólo en las computadoras.

Características
Administración de tareas

Monotarea: Solamente puede ejecutar un proceso (aparte de los procesos del propio S.O.) en un momento dado. Una vez que empieza a ejecutar un proceso, continuará haciéndolo hasta su finalización y/o interrupción. Multitarea: Es capaz de ejecutar varios procesos al mismo tiempo. Este tipo de S.O. normalmente asigna los recursos disponibles (CPU, memoria, periféricos) de forma alternada a los procesos que los solicitan, de manera que el usuario percibe que todos funcionan a la vez, de forma concurrente.

Administración de usuarios
• •

Monousuario: Si sólo permite ejecutar los programas de un usuario al mismo tiempo. Multiusuario: Si permite que varios usuarios ejecuten simultáneamente sus programas, accediendo a la vez a los recursos de la computadora. Normalmente estos sistemas operativos utilizan métodos de protección de datos, de manera que un programa no pueda usar o cambiar los datos de otro usuario.

Manejo de recursos
• •

Centralizado: Si permite utilizar los recursos de una sola computadora. Distribuido: Si permite utilizar los recursos (memoria, CPU, disco, periféricos... ) de más de una computadora al mismo tiempo.

Componentes de un sistema operativo

Gestión de procesos
Un proceso es simplemente, un programa en ejecución que necesita recursos para realizar su tarea: tiempo de CPU, memoria, archivos y dispositivos de E/S. El SO es el responsable de:
• • •

Crear y destruir los procesos. Parar y reanudar los procesos. Ofrecer mecanismos para que se comuniquen y sincronicen.

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.

Gestión de la memoria principal
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:
• • •

Conocer qué partes de la memoria están utilizadas y por quién. Decidir qué procesos se cargarán en memoria cuando haya espacio disponible. Asignar y reclamar espacio de memoria cuando sea necesario.

Gestión del almacenamiento secundario
Un sistema de almacenamiento secundario es necesario, ya que la memoria principal (almacenamiento primario) es volátil y además muy pequeña para almacenar todos los programas y datos. También es necesario mantener los datos que no convenga mantener en la memoria principal. El SO se encarga de:
• • •

Planificar los discos. Gestionar el espacio libre. Asignar el almacenamiento.

El sistema de E/S
Consiste en un sistema de almacenamiento temporal (caché), una interfaz de manejadores de dispositivos y otra para dispositivos concretos. El sistema operativo debe gestionar el almacenamiento temporal de E/S y servir las interrupciones de los dispositivos 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:
• • • •

Construir y eliminar archivos y directorios. Ofrecer funciones para manipular archivos y directorios. Establecer la correspondencia entre archivos y unidades de almacenamiento. Realizar copias de seguridad de archivos.

Existen diferentes Sistemas de Archivos, es decir, existen diferentes formas de organizar la información que se almacena en las memorias (normalmente discos) de los ordenadores. Por ejemplo, existen los sistemas de archivos FAT, FAT32, EXT2, NTFS... 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 Los permisos son tres:

r: read (lectura): Cuando el permiso de lectura está activo sobre un directorio significa que se podrá listar los recursos almacenados en él, si está asignado a un archivo se podrá leer su contenido. w: write (escritura): Cuando el permiso de escritura está activo sobre un directorio significa que se podrá crear y borrar archivos en su interior, si esta activado para un archivo significa que se podrá modificar su contenido. x: execute (ejecución): Si el permiso de ejecución está activo sobre un directorio significa que el usuario podrá realizar otras funciones dentro de él mediante los otros permisos de lectura y escritura, y si está activo sobre un archivo se podrá ejecutarlo desde la línea de comandos.

Para ver los permisos de los archivos y directorios es necesario ejecutar el siguiente comando:

$ ls –l

Interpretación - rw- r-- r-- 1 raul raul 246417 ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ 12 3 4 56 7 8 9 10 11 2005-03-03 ↑ 13:13 ↑ foto1.png ↑

1 : Tipo de archivo = es un archivo regular 2 : Permisos = los permisos para el propietario son de lectura y escritura 3 : Permisos = el grupo tiene permiso de sólo lectura 4 : Permisos = los otros usuarios tienen el permiso de sólo lectura 5 : Enlace Físico = tiene un enlace físico 6 : Propietario = el usuario raul es el propietario de este archivo 7 : Grupo = este archivo pertenece al grupo raul 8 : Tamaño = su tamaño es de 246417 bytes 9 : Fecha = fue creado el 03 de marzo de 2005 10 : Hora = a 13:13 horas 11 : Nombre = el archivo se llama foto1.png 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. En la siguiente imagen se observa la ubicación de los permisos:

COMANDOS Linux dispone de 3 comandos que permite cambiar los permisos, el propietario y el grupo de un archivo y/o directorio respectivamente:

Comando chmod : se utiliza para cambiar los permisos del archivo o directorio $ chmod [permisos] [archivo/directorio] [opciones] Comando chown : se utiliza para cambiar el propietario del archivo o directorio # chown [nuevo usuario propietario] [archivo/directorio] [opciones] Comando chgrp : utilizado para cambiar el grupo del archivo o directorio # chgrp [nuevo grupo] [archivo/directorio] [opciones]

Para cambiar los permisos se puede hacer de 2 maneras: 1. Utilizando taquigrafía basada en caracteres, o 2. Utilizando números. CAMBIO DE PERMISOS UTILIZANDO TAQUIGRAFÍA DE CARACTERES Para poder utilizar la taquigrafía basada en caracteres tomemos en cuenta la siguiente lista con su respectiva correspondencia: Símbolo Descripción u Identidades g o a r Permisos w x Es el usuario propietario del archivo o directorio Es el grupo al que pertenece el archivo o directorio Otros usuarios, el resto del mundo, ni el propietario ni su grupo Todo el mundo – propietario, grupo y otros Acceso de lectura Acceso de escritura Acceso de ejecución

+ Acciones =

Añade los permisos Elimina los permisos el único permiso

Ejemplo con el comando chmod, el archivo afectado será foto1.png: Ejemplo $ chmod a-rwx foto1.png $ chmod u+rwx foto1.png $ chmod g+x foto1.png $ chmod o+r foto1.png $ chmod u-rw foto1.png $ chmod a=r foto1.png $ chmod a=rx foto1.png $ chmod a=- foto1.png $ chmod u+rx,o+x foto1.png $ chmod g+rx,o-x foto1.png Descripción Resultado

quitamos todos los permisos al archivo --------foto1.png añadimos todos los permisos para el rwx-----propietario añadimos el permiso de ejecución para el rwx—x--grupo añadimos el permiso de lectura para los rwx—xr-otros usuarios eliminamos los permisos de lectura y --x—xr-escritura para el propietario establecemos como unico permiso de lectura r—r—r-para los 3 grupos establecemos los permisos de lectura y r-xr-xr-x ejecución para los 3 grupos quitamos todos los permisos ---------añadimos los permisos de lectura y r-x-----x ejecución al propietario y ejecución a otros añadimos permiso de lectura y ejecución al grupo y eliminamos permiso de ejecución a r-xr-x--otros añadimos permiso de escritura y ejecución al propietario y grupo, y eliminamos permiso rwxrwx--de ejecución a otros permite a cualquiera modificar el contenido rw-rw-rwe incluso eliminar el archivo

$ chmod ug+wx,o-x foto1.png $ chmod a=rw foto1.png

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: $ chmod a=rw DIRECTORIO –R

UTILIZANDO NÚMEROS 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 w x - = 0 (sin permisos) = = = 4 2 1 (lectura) (escritura) (ejecucion)

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: Valor Permisos Descripción 0 1 2 3 4 5 6 7 ----x -w-wx r-r-x rwrwx El valor cero significa que no se han asignado permisos sólo se ha asignado el de ejecución sólo permiso de escritura permisos de escritura y ejecución sólo permiso de lectura permisos de lectura y ejecución permisos de lectura y escritura permisos: lectura, escritura y ejecución

Los permisos por números se asignan en grupos de 3, es decir, para el propietariogrupo-otros, no es factible asignar solo para uno o dos de ellos. Ejemplos:
• • • • • • •

rw------- (600) — Sólo el propietario tiene el derecho de leer y escribir. rw-r--r-- (644) — Sólo el propietario tiene los permisos de leer y escribir; el grupo y los demás sólo pueden leer. rwx------ (700) — Sólo el propietario tiene los derechos de leer, escribir y ejecutar el archivo. rwxr-xr-x (755) — El propietario tiene los derechos de leer, escribir y ejecutar; el grupo y los demás sólo pueden leer y ejecutar. rwx--x--x (711) — El propietario tiene los derechos de lectura, escritura y ejecución; el grupo y los demás sólo pueden ejecutar. rw-rw-rw- (666) — Todo el mundo puede leer y escribir en el archivo. ¡No es una buena elección! rwxrwxrwx (777) — Todo el mundo puede leer, escribir y ejecutar. ¡Tampoco es buena elección!

Utilizaremos el mismo ejercicio anterior para poder practicar con los permisos utilizando números, el único cambio que haremos será utilizar otro archivo llamado foto2.png: Ejemplo $ chmod 000 foto2.png $ chmod 700 foto2.png $ chmod 710 foto2.png $ chmod 714 foto2.png $ chmod 114 foto2.png $ chmod 444 foto2.png $ chmod 555 foto2.png $ chmod 000 foto2.png $ chmod 501 foto2.png $ chmod 550 foto2.png Descripción Resultado

quitamos todos los permisos al archivo ---------foto2.png añadimos todos propietario los permisos para el -rwx------

añadimos el permiso de ejecución para el -rwx—x--grupo añadimos el permiso de lectura para los otros -rwx—xr-usuarios eliminamos los permisos de lectura y escritura ---x—xr-para el propietario establecemos como unico permiso de lectura -r—r—r-para los 3 grupos establecemos los permisos de lectura y -r-xr-xr-x ejecución para los 3 grupos quitamos todos los permisos ----------añadimos los permisos de lectura y ejecución -r-x-----x al propietario y ejecución a otros añadimos permiso de lectura y ejecución al grupo y eliminamos permiso de ejecución a -r-xr-x--otros añadimos permiso de escritura y ejecución al propietario y grupo, y eliminamos permiso de -rwxrwx--ejecución a otros permite a cualquiera modificar el contenido e -rw-rw-rwincluso eliminar el archivo

$ chmod 770 foto2.png $ chmod 666 foto2.png

Cambiando el propietario Utilizamos el comando chown explicado líneas arriba: # chown clases foto1.png # estamos cambiando el propietario del archivo, ahora el usuario clases será el propietario del archivo foto1.png # chown raul foto2.png # el usuario raul será el propietario del archivo foto2.png

Si vamos a cambiar el propietario de un directorio y con todos sus subdirectorios y archivos en forma recursiva utilizaremos la opción –R:

# chown clases datos/ –R # el usuario clases sera el nuevo propietario de todos los archivos y subdirectorios que estén dentro del directorio datos/ Cambiando el grupo Utilizamos el comando chgrp explicado líneas arriba: # chgrp clases foto1.png # estamos cambiando el propietario del archivo, ahora el archivo foto1.png será del grupo clases # chgrp raul foto2.png # el archivo foto2.png será del grupo raul

Si vamos a cambiar el grupo de un directorio y con todos sus subdirectorios y archivos en forma recursiva utilizaremos la opción –R: # chgrp clases datos/ –R serán del grupo clases # todos los archivos y sub directorios del directorio datos/

Atributos en MS-DOS
Attrib

Este comando nos permite ver y modificar las propiedades de un archivo. Hay varias maneras de usarlo: Si se teclea attrib sin ningún parámetro ni modificador, mostrará todos los archivos y sus propiedades en la unidad del prompt. Podemos especificar una unidad: 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: +R Este parámetro indica Solo lectura. -R Este parámetro desactiva el parámetro anterior e indica que el archivo es editable. +A Este parámetro indica que el archivo es de almacenamiento (un respaldo). -A Este parámetro desactiva el anterior e indica que el archivo no es de almacenamiento. +H Este parámetro indica que el archivo esta oculto. -H Este parámetro desactiva el anterior e indica que el archivo es visible. Por ejemplo si queremos ver todos los archivos ocultos dentro de C: C:###BOT_TEXT###gt;attrib +H o si queremos ver los de solo lectura (que suelen ser los mismos que los ocultos): C:###BOT_TEXT###gt;attrib +R De la misma manera podemos cambiar las propiedades de un archivo: por ejemplo, si queremos proteger un archivo, ocultándolo, digamos el archivo, example.log que está dentro de C: C:###BOT_TEXT###gt;attrib example.log +H o si queremos que C:###BOT_TEXT###gt;attrib example.txt -R un archivo de solo lectura sea editable:

Existen así mismo modificadores: /s permite que la propiedad se aplique a la carpeta actual y sus subcarpetas. /d (no siempre esta disponible), procesa una carpeta.

Shell (Intérprete de comandos)
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:
• • •

Distinguir entre uso autorizado y no autorizado. Especificar los controles de seguridad a realizar. Forzar el uso de estos mecanismos de protección.

Sistema de comunicaciones
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
Su funcionamiento era bastante simple, se limitaba a cargar los programas a memoria, leyéndolos de una cinta o de tarjetas perforadas, y ejecutarlos. El problema era encontrar una forma de optimizar el tiempo entre la retirada de un trabajo y el montaje del siguiente.

Procesamiento por lotes
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
En un sistema multiprogramado la memoria principal alberga a más de un programa usuario. La CPU ejecuta instrucciones de un programa, cuando el que se encuentra ejecución realiza una operación de E/S; en lugar de esperar a que termine la operación E/S, se pasa a ejecutar otro programa. Si éste realiza, a su vez, otra operación de E/S, mandan las órdenes oportunas al controlador, y pasa a ejecutarse otro. De esta forma posible, teniendo almacenado un conjunto adecuado de tareas en cada momento, utilizar manera óptima los recursos disponibles. de en de se es de

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 Se denomina multiprocesador a un ordenador que cuenta con dos o más microprocesadores (CPUs). Gracias a esto, el multiprocesador puede ejecutar simultáneamente varios hilos pertenecientes a un mismo proceso o bien a procesos diferentes. Los ordenadores multiprocesador presentan problemas de diseño que no se encuentran en ordenadores monoprocesador. Estos problemas derivan del hecho de que dos programas pueden ejecutarse simultáneamente y, potencialmente, pueden interferirse entre sí. Concretamente, en lo que se refiere a las lecturas y escrituras en memoria. Existen dos arquitecturas que resuelven estos problemas: 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. Para que un multiprocesador opere correctamente necesita un sistema operativo especialmente diseñado para ello. La mayoría de los sistemas operativos actuales poseen esta capacidad.

Sistemas operativos desarrollados
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.

Características de los nuevos sistemas
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.

Sistemas operativos desarrollados

MULTICS (Multiplexed Information and Computing Service): Originalmente era un proyecto cooperativo liderado por Fernando Corbató del MIT, con General Electric y los laboratorios Bell, que comenzó en los 60, pero los laboratorios Bell abandonaron en 1969 para comenzar a crear el sistema UNIX. Se desarrolló inicialmente para el mainframe GE-645, un sistema de 36 bits; después fue soportado por la serie de máquinas Honeywell 6180.

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 datosSystem/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
El lanzamiento oficial se produjo en enero de 1984, al precio de 2495 dólares. Muchos usuarios, al ver que estaba completamente diseñado para funcionar a través de una GUI (Graphic User Interface), acostumbrados a la línea de comandos, lo tacharon de juguete. A pesar de todo, el Mac se situó a la cabeza en el mundo de la edición a nivel gráfico.

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:
• • • •

Proporcionar comodidad en el uso de un computador. Gestionar de manera eficiente los recursos del equipo, ejecutando servicios para los procesos (programas) Brindar una interfaz al usuario, ejecutando instrucciones (comandos). Permitir que los cambios debidos al desarrollo del propio SO se puedan realizar sin interferir con los servicios que ya se prestaban (evolutividad).

Un sistema operativo desempeña 5 funciones básicas en la operación de un sistema informático: suministro de interfaz al usuario, administración de recursos, administración de archivos, administración de tareas y servicio de soporte y utilidades.

Interfaces del usuario
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
Sirven para administrar los recursos de hardware y de redes de un sistema informativo, como el CPU, memoria, dispositivos de almacenamiento secundario y periféricos de entrada y de salida.

Administración de archivos
Un sistema de información contiene programas de administración de archivos que controlan la creación, borrado y acceso de archivos de datos y de programas. También implica mantener el registro de la ubicación física de los archivos en los discos magnéticos y en otros dispositivos de almacenamiento secundarios.

Administración de tareas
Los programas de administración de tareas de un sistema operativo administran la realización de las tareas informáticas de los usuarios finales. Los programas controlan que áreas tiene acceso al CPU y por cuánto tiempo. Las funciones de administración de tareas pueden distribuir una parte específica del tiempo del CPU para una tarea en particular, e interrumpir al CPU en cualquier momento para sustituirla con una tarea de mayor prioridad.

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. Estos servicios de soporte suelen consistir en:
• • • • • •

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 Según fue avanzando la complejidad de los programas, fue necesario implementar soluciones que automatizaran la organización de tareas sin necesidad de un operador. Debido a ello se crearon los monitores residentes: programas que residían en memoria y que gestionaban la ejecución de una cola de trabajos. Un monitor residente estaba compuesto por un cargador, un Intérprete de comandos y un Controlador (drivers) para el manejo de entrada/salida.

Sistemas con almacenamiento temporal de E/S

Se avanza en el hardware, creando el soporte de interrupciones. Luego se lleva a cabo un intento de solución más avanzado: solapar la E/S de un trabajo con sus propios cálculos. Por ello se crea el sistema de buffers con el siguiente funcionamiento:
• • • • •

Un programa escribe su salida en un área de memoria (buffer 1). El monitor residente inicia la salida desde el buffer y el programa de aplicación calcula depositando la salida en el buffer 2. La salida desde el buffer 1 termina y el nuevo cálculo también. Se inicia la salida desde el buffer 2 y otro nuevo cálculo dirige su salida al buffer 1. El proceso se puede repetir de nuevo.

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).

Sistemas Operativos Multiprogramados
Surge un nuevo avance en el hardware: el hardware con protección de memoria. Lo que ofrece nuevas soluciones a los problemas de rendimiento:
• • •

Se solapa el cálculo de unos trabajos con la entrada/salida de otros trabajos. Se pueden mantener en memoria varios programas. Se asigna el uso de la CPU a los diferentes programas en memoria.

Debido a los cambios anteriores, se producen cambios en el monitor residente, con lo que éste debe abordar nuevas tareas, naciendo lo que se denomina como Sistemas Operativos multiprogramados, los cuales cumplen con las siguientes funciones:
• • •

Administrar la memoria. Gestionar el uso de la CPU (planificación). Administrar el uso de los dispositivos de E/S.

Cuando desempeña esas tareas, el monitor residente se transforma en un sistema operativo multiprogramado.

Llamadas al Sistema Operativo
Definición breve: llamadas que ejecutan los programas de aplicación para pedir algún servicio al SO.

Cada SO implementa un conjunto propio de llamadas al sistema. Ese conjunto de llamadas es el interfaz del SO frente a las aplicaciones. Constituyen el lenguaje que deben usar las aplicaciones para comunicarse con el SO. Por ello si cambiamos de SO, y abrimos un programa diseñado para trabajar sobre el anterior, en general el programa no funcionará, a no ser que el nuevo SO tenga el mismo interfaz. Para ello:
• •

Las llamadas correspondientes deben tener el mismo formato. Cada llamada al nuevo SO tiene que dar los mismos resultados que la correspondiente del anterior.

Modos de ejecución en un CPU
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
Una aplicación, normalmente no sabe dónde está situada la rutina de servicio de la llamada. Por lo que si ésta se codifica como una llamada de función, cualquier cambio en el SO haría que hubiera que reconstruir la aplicación. 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). Esto se hace utilizando instrucciones máquina diseñadas específicamente para este cometido, distintas de las que se usan para las llamadas de función.

Bibliotecas de interfaz de llamadas al sistema
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. La aplicación llama a una función de la biblioteca de interfaz (mediante una llamada normal) y esa función es la que realmente hace la llamada al sistema.

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:
• •

Algún dispositivo de E/S necesita atención. Se ha producido una situación de error al intentar ejecutar una instrucción del programa (normalmente de la aplicación).

En ambos casos, la acción realizada no está ordenada por el programa de aplicación, es decir, no figura en el programa. Según los dos casos anteriores tenemos las interrupciones y la excepciones:
• •

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
Cuando la CPU intenta ejecutar una instrucción incorrectamente construida, la unidad de control lanza una excepción para permitir al SO ejecutar el tratamiento adecuado. Al contrario que en una interrupción, la instrucción en curso es abortada. Las excepciones al igual que las interrupciones deben estar identificadas.

Clases de excepciones
Las instrucciones de un programa pueden estar mal construidas por diversas razones:
• • • •

El código de operación puede ser incorrecto. Se intenta realizar alguna operación no definida, como dividir por cero. La instrucción puede no estar permitida en el modo de ejecución actual. La dirección de algún operando puede ser incorrecta o se intenta violar alguno de sus permisos de uso.

REPORTE EQUIPO ABSALON CRUZ NALLELY: PROCESOS, YAMADAS AL SISTEMA

CRUZ PEREZ RICARDO: 1ª Y 2ª GENERACION DE LAS COMPUTADORAS

FLORES BRAVO MARIA CRISTINA: DEFINICION Y CARACTERISTICAS

JUAREZ BLANCO ADRIANA GABRIELA: VISTAS DE UN S.O. Y TAREAS

MARTINEZ MARTINEZ JONATHAN: ACTIVIDAD CUESTIONARIO Y CRUCIGRAMA

PABLO CUAHUIZA ANDRES: ARCGIVOS Y SHELL

ROJAS CONTRERAS DAVID: RESUMEN Y PRESENTACION

URCID HERNANDEZ OSCAR: 3ª Y 4ª GENERACION DE COMPUTADORAS

Evaluación de la línea del tiempo

Nombre Alumno Jesus Aviles Antonio Morales Cid Victor Rogelio Vargas Montes Ahiezer Hernandez Gonzales Flores Bravo Maria Cristina Jesus Castro Montealegre Angel Armas Valdivia Leticia Aragon Saldivar Carlos Molina Ronquillo Estrada Bautista Jose Guadalupe Oscar Zarate Villegas Heriberto Hernadez Moreno Tonatiuh Tewanhuey Tewatl Tlachi Cuanenemi Juventino Alberto Ramon Flores Marin Monter Cristian Omar Marisol Aragon Saldivar Andres Pablo Cuahuizo Anita D.C Nancy Ortiz Gomez Jonatan Matinez Martinez Lizzet Huerta Herrero Ricardo Cruz Perez Oscar Urcid Hernandez Roberto Carlos Fuentes David Rojas Contreras Amilcar De Rosas Rodriguez Pedro de Jesus Lobato Alvarado Juarez Blanca Adriana Aguilar Mendoza Ulices Jorge Adrian Flores Valencia Rodolfo Daniel Flores Luna Jose Ricardo Cisneros Cabrera Perez Ayala Raul Marco Antonio Martinez Cortes Reyes Davila Gerardo

Matricula Calificacion 200409989 10 200422364 10 200332363 10 200417024 10 200417442 10 200311332 10 200409184 10 200308136 10 200320998 10 200208146 200435140 200417912 200431117 200432625 200326241 200421643 200308135 200324315 200330764 200322996 200219600 200431421 200524662 200313552 200501626 200414653 200420631 200417284 200313103 200213197 200310510 200423386 200319989 200429052 7 10 10 10 10 10 10 10 10 6 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10

Evaluación de Crucigrama

Nombre Alumno Jesus Aviles Antonio Morales Cid Victor Rogelio Vargas Montes Ahiezer Hernandez Gonzales Flores Bravo Maria Cristina Jesus Castro Montealegre Angel Armas Valdivia Leticia Aragon Saldivar Carlos Molina Ronquillo Estrada Bautista Jose Guadalupe Oscar Zarate Villegas Heriberto Hernadez Moreno Tonatiuh Tewanhuey Tewatl Tlachi Cuanenemi Juventino Alberto Ramon Flores Marin Monter Cristian Omar Marisol Aragon Saldivar Andres Pablo Cuahuizo Anita D.C Nancy Ortiz Gomez Jonatan Matinez Martinez Lizzet Huerta Herrero Ricardo Cruz Perez Oscar Urcid Hernandez Roberto Carlos Fuentes Amilcar De Rosas Rodriguez Pedro de Jesus Lobato Alvarado Juarez Blanca Adriana Aguilar Mendoza Ulices Jorge Adrian Flores Valencia Rodolfo Daniel Flores Luna Jose Ricardo Cisneros Cabrera Perez Ayala Raul Marco Antonio Martinez Cortes Reyes Davila Gerardo David Rojas Contreras Chistian Marin adrian adriana grabriela Juarez B.

Matricula 200409989 200422364 200332363 200417024 200417442 200311332 200409184 200308136 200320998 200208146 200435140 200417912 200431117 200432625 200326241 200421643 200308135 200324315 200330764 200322996 200219600 200431421 200524662 200313552 200414653 200420631 200417284 200313103 200213197 200310510 200423386 200319989 200429052 200501626

Calificacion 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 9.3 10 10 10 10 8 9 10

Evaliacion de cuestionario
Nombre Alumno Calificacion Juan Jose Corona 10 Victor Rogelio Vargas Montes 10 Ricardo Cruz Perez 10 Maria Cristina Flores Bravo 10 Carlos Alberto Vazquez N. 9 Jesus Aviles Trinidad 10 Jonatan Matinez Martinez 10 Raul Perez Ayala 10 Antonio Morales Cid 10 Adeiana Gabriela Juarez B, 10 Nallely Absalon Cruz 10 Oscar Urcid Hernandez 10 Jose Alfredo Salazar Romero 3 Pedro de Jesus Lobato Alvarado 6 Cuitlahuac Parra Mendivil 6 Ulises Aguilar Mendoza 6 Alberto Ramos Flores 3 Jose G. Estrada Bautista 6 Marco Antonio Martinez Cortes 10 Marisol Aragon Saldivar 10 Oscar Zarate V. 10 Ahiezer Hernandez 10 Tonatiuh Tecanhuey 10 Nancy Ortiz Gomez 10 Alonso Reyes Varela 10 Jose Ricardo Cisneros Cabrera 10 Chistian Marin 10 Jorge Adrian Flores Valencia 10 Juventino Tlachi Cuanenemi 10 Leticia Aragon Saldivar 10 Lizzette Huerta Herrera 7 Andres Pablo 10 Amilcar de Rosas 10 Marco Antonio Martinez Cortes 10 Reyes Davila Gerardo 10 David Rojas Contreras 10 adrian 10