sistemas operativos

35
Instituto Tecnológico de Cd. Victoria, Tamaulipas, México. Departamento de Sistemas Computacionales Sistemas Operativos I 7.- TEMARIO 1.- Introducción a los sistemas operativos. 1.1 Definición y concepto. Un sistema operativo (SO) es el programa o conjunto de programas que efectúan la gestión de los procesos básicos de un sistema informático, y permite la normal ejecución del resto de las operaciones. 1.2 Funciones y características. Uno de los propósitos del sistema operativo que gestiona el núcleo intermediario consiste en gestionar los recursos de localización y protección de acceso del hardware, hecho que alivia a los programadores de aplicaciones de tener que tratar con estos detalles. La mayoría de aparatos electrónicos que utilizan microprocesadores para funcionar, llevan incorporado un sistema operativo. (teléfonos móviles, reproductores de DVD, computadoras, radios, enrutadores, etc). 1.3 Evolución histórica. 1960 IBSYS 1961 CTSS 1965 OS/360 1970 BATCH-11 (PDP-11) 1971 OS/8 1972 MFT (sistema operativo) MVT RDOS SVS VM/CMS 1973 Alto OS

Upload: edgar-alfredo-gutierrez-gallardo

Post on 24-Dec-2015

1 views

Category:

Documents


0 download

DESCRIPTION

Sistemas Operativos

TRANSCRIPT

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

7.- TEMARIO

1.- Introducción a los sistemas operativos.1.1 Definición y concepto.

Un sistema operativo (SO) es el programa o conjunto de programas que efectúan la gestión de los procesos básicos de un sistema informático, y permite la normal ejecución del resto de las operaciones.

1.2 Funciones y características.Uno de los propósitos del sistema operativo que gestiona el núcleo intermediario consiste en gestionar los recursos de

localización y protección de acceso del hardware, hecho que alivia a los programadores de aplicaciones de tener que tratar con estos detalles. La mayoría de aparatos electrónicos que utilizan microprocesadores para funcionar, llevan incorporado un sistema operativo. (teléfonos móviles, reproductores de DVD, computadoras, radios, enrutadores, etc).

1.3 Evolución histórica.

• 1960 • IBSYS

• 1961 • CTSS

• 1965 • OS/360

• 1970 • BATCH-11 (PDP-11)

• 1971 • OS/8

• 1972 • MFT (sistema operativo) • MVT • RDOS • SVS • VM/CMS

• 1973 • Alto OS

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

• BS2000 • 1976

• CP/M • TOPS-20

• 1978 • Apple DOS 3.1 (Primer SO Apple)• TripOS • VMS • Lisp Machine (CADR)

• 1979 • POS • NLTSS

• 1980 • OS-9 • QDOS • SOS • XDE (Tajo) (Xerox Development Environment)• Xenix

• 1981 • MS-DOS

• 1982 • Commodore DOS • SunOS (1.0)• Ultrix

• 1983 • Lisa OS • Coherent • Novell NetWare • ProDOS

• 1984 • Macintosh OS (System 1.0)• MSX-DOS • QNX • UniCOS

• 1985 • AmigaOS • Atari TOS • MIPS OS

• 1986 • AIX • GS-OS • HP-UX

• 1987

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

• Arthur • IRIX (3.0 es la primera versión de SGI)• Minix • OS/2 (1.0)

• 1988 • A/UX (Apple Computer)• LynxOS • MVS/ESA • OS/400

• 1989 • NeXTSTEP (1.0)• RISC OS • SCO Unix (release 3)

• 1990 • Amiga OS 2.0• BeOS (v1)• OSF/1 ( karla duran OX )

• 1991 • Linux

• 1992 • 386BSD 0.1• Amiga OS 3.0• Solaris 2.0 (Sucesor de SunOS 4.x; basado en SVR4)

• 1993 • Linux Debian y Linux Slackware • Plan 9 (Primera Version)• FreeBSD • NetBSD

• 1994 • Linux RedHat

• 1995 • Digital UNIX (aka Tru64 )• OpenBSD • OS/390 • Windows 95 • Plan 9 (Segunda Version)

• 1996 • Windows NT 4.0

• 1997 • Inferno • Mac OS 7.6 (El primer Mac OS llamado oficialmente así)• SkyOS

• 1998

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

• Mandrake Linux(hoy Conocido como Mandriva Linux )• Solaris 7 (El primer 64-bit de Solaris.)• Windows 98 • ReactOS 0.0.13

• 1999 • AROS • Mac OS 8 • ReactOS 0.0.14

• 2000 • AtheOS • Mac OS 9 • MorphOS • Windows 2000 • Windows Me • ReactOS 0.0.16• Plan 9 (Tercera Version)

• 2001 • Amiga OS 4.0 (May 2001)• Mac OS X 10.1 • Windows XP • z/OS • ReactOS 0.0.18

• 2002 • Syllable • Mac OS X 10.2 • ReactOS 0.0.21• Plan 9 (Cuarta Version)• gnulinex

• 2003 • Windows Server 2003 • Mac OS X 10.3 • ReactOS 0.1.5

• 2004 • Ubuntu Linux• ReactOS 0.2.4

• 2005 • Mac OS X 10.4 • ReactOS 0.2.9

• 2006 • Windows Vista • ReactOS 0.3.0

• 2007 • Mac OS X v10.5

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

• ReactOS 0.3.2 (Versión nunca lanzada)• iPhone OS 1.0]

• 2008 • ReactOS 0.3.7• Windows Server 2008 • iPhone OS 2.0

• 2009 • JNode 0.2.8• Mac OS X v10.6 • Windows 7 • ReactOS 0.3.10• iPhone OS 3.0• Palm webOS • Android

• 2010 • Windows Home 7 • Android 2.1• iOS 4 (la ultima actualización es el iOS 4.1)• Ubuntu 10.04• Windows Mobile 7.1iOS (sistema operativo)

1.4 Clasificación.

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 usar los recursos de una sola computadora.• Distribuido: Si permite utilizar los recursos (memoria, CPU, disco, periféricos... ) de más de una

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

computadora al mismo tiempo.

Ejemplos de Sistemas Operativos ( ordenadores )• Windows • Mac OS • Linux • Solaris• AmigaOS • Unix

Ejemplos de Sistemas Operativos ( Dispositivos Moviles )• Symbian • Android • iOS • Windows Mobile • BlackBerry OS • Palm OS

1.5 Estructura: niveles o estratos de diseño.

Tipos de núcleoNo necesariamente se necesita un núcleo para usar una computadora. Los programas pueden cargarse y ejecutarse directamente en una computadora «vacía», siempre que sus autores quieran desarrollarlos sin usar ninguna abstracción del hardware ni ninguna ayuda del sistema operativo. Ésta era la forma normal de usar muchas de las primeras computadoras: para usar distintos programas se tenía que reiniciar y reconfigurar la computadora cada vez. Con el tiempo, se empezó a dejar en memoria (aún entre distintas ejecuciones) pequeños programas auxiliares, como el cargador y el depurador, o se cargaban desde memoria de sólo lectura. A medida que se fueron desarrollando, se convirtieron en los fundamentos de lo que llegarían a ser los primeros núcleos de sistema operativo.

Hay cuatro grandes tipos de núcleos:

• Los núcleos monolíticos facilitan abstracciones del hardware subyacente realmente potentes y variadas.• Los micronúcleos (en inglés microkernel) proporcionan un pequeño conjunto de abstracciones simples del

hardware, y usan las aplicaciones llamadas servidores para ofrecer mayor funcionalidad.• Los núcleos híbridos (micronúcleos modificados) son muy parecidos a los micronúcleos puros, excepto

porque incluyen código adicional en el espacio de núcleo para que se ejecute más rápidamente.• Los exonúcleos no facilitan ninguna abstracción, pero permiten el uso de bibliotecas que proporcionan

mayor funcionalidad gracias al acceso directo o casi directo al hardware.

Micronúcleos

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

Esquema del funcionamiento de un micronúcleo.Artículo principal: MicronúcleoEl enfoque micronúcleo consiste en definir una abstracción muy simple sobre el hardware, con un conjunto de primitivas o llamadas al sistema que implementan servicios del sistema operativo mínimos, como la gestión de hilos, el espacio de direccionamiento y la comunicación entre procesos.

El objetivo principal es la separación de la implementación de los servicios básicos y de la política de funcionamiento del sistema. Por ejemplo, el proceso de bloqueo de E/S se puede implementar con un servidor en espacio de usuario ejecutándose encima del micronúcleo. Estos servidores de usuario, utilizados para gestionar las partes de alto nivel del sistema, son muy modulares y simplifican la estructura y diseño del núcleo. Si falla uno de estos servidores, no se colgará el sistema entero, y se podrá reiniciar este módulo independientemente del resto. Sin embargo, la existencia de diferentes módulos independientes origina retardos en la comunicación debido a la copia de variables que se realiza en la comunicación entre módulos.

Algunos ejemplos de micronúcleos:

• AIX• La familia de micronúcleos L4• El micronúcleo Mach, usado en GNU Hurd y en Mac OS X• BeOS• Minix• MorphOS• QNX• RadiOS• VSTa• Hurd

Núcleos monolíticos en contraposición a micronúcleosArtículos principales: Núcleo monolítico y MicronúcleoFrecuentemente se prefieren los núcleos monolíticos frente a los micronúcleos debido al menor nivel de complejidad que comporta el tratar con todo el código de control del sistema en un solo espacio de direccionamiento. Por ejemplo, XNU, el núcleo de Mac OS X, está basado en el núcleo Mach 3.0 y en FreeBSD, en el mismo espacio de direccionamiento para disminuir la latencia que comporta el diseño de micronúcleo convencional.

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

A principios de los años 90, los núcleos monolíticos se consideraban obsoletos. El diseño de Linux como un núcleo monolítico en lugar de como un micronúcleo fue el tema de una famosa disputa[5] entre Linus Torvalds y Andrew Tanenbaum. Los argumentos de ambas partes en esta discusión presentan algunas motivaciones interesantes.

Los núcleos monolíticos suelen ser más fáciles de diseñar correctamente, y por lo tanto pueden crecer más rápidamente que un sistema basado en micronúcleo, pero hay casos de éxito en ambos bandos. Los micronúcleos suelen usarse en robótica embebida o computadoras médicas, ya que la mayoría de los componentes del sistema operativo residen en su propio espacio de memoria privado y protegido. Esto no sería posible con los núcleos monolíticos, ni siquiera con los modernos que permiten cargar módulos del núcleo.

Aunque Mach es el micronúcleo generalista más conocido, se han desarrollado otros micronúcleos con propósitos más específicos. L3 fue creado para demostrar que los micronúcleos no son necesariamente lentos. La familia de micronúcleos L4 es la descendiente de L3, y una de sus últimas implementaciones, llamada Pistachio, permite ejecutar Linux simultáneamente con otros procesos, en espacios de direccionamiento separados.

QNX es un sistema operativo que ha estado disponible desde principios de los años 80, y tiene un diseño de micronúcleo muy minimalista. Este sistema ha conseguido llegar a las metas del paradigma del micronúcleo con mucho más éxito que Mach. Se usa en situaciones en que no se puede permitir que haya fallos de software, lo que incluye desde brazos robóticos en naves espaciales, hasta máquinas que pulen cristal donde un pequeño error podría costar mucho dinero.

Mucha gente cree que como Mach básicamente falló en el intento de resolver el conjunto de problemas que los micronúcleos intentaban subsanar, toda la tecnología de micronúcleos es inútil. Los partidarios de Mach afirman que ésta es una actitud estrecha de miras que ha llegado a ser lo suficientemente popular para que mucha gente la acepte como verdad.

Núcleos híbridos (micronúcleos modificados)Artículo principal: Núcleo híbridoLos núcleos híbridos fundamentalmente son micronúcleos que tienen algo de código «no esencial» en espacio de núcleo para que éste se ejecute más rápido de lo que lo haría si estuviera en espacio de usuario. Éste fue un compromiso que muchos desarrolladores de los primeros sistemas operativos con arquitectura basada en micronúcleo adoptaron antes que se demostrara que los micronúcleos pueden tener muy buen rendimiento. La mayoría de sistemas operativos modernos pertenecen a esta categoría, siendo el más popular Microsoft Windows. XNU, el núcleo de Mac OS X, también es un micronúcleo modificado, debido a la inclusión de código del núcleo de FreeBSD en el núcleo basado en Mach. DragonFlyBSD es el primer sistema BSD que adopta una arquitectura de núcleo híbrido sin basarse en Mach.

Algunos ejemplos de núcleos híbridos:

• Microsoft Windows NT, usado en todos los sistemas que usan el código base de Windows NT• XNU (usado en Mac OS X)• DragonFlyBSD• ReactOS

Hay gente que confunde el término «núcleo híbrido» con los núcleos monolíticos que pueden cargar módulos después del arranque, lo que es un error. «Híbrido» implica que el núcleo en cuestión usa conceptos de arquitectura o mecanismos tanto del diseño monolítico como del micronúcleo, específicamente el paso de mensajes y la migración de código «no esencial» hacia el espacio de usuario, pero manteniendo cierto código «no esencial» en el propio núcleo por razones de rendimiento.

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

ExonúcleosArtículo principal: Exonúcleo

Esquema básico de la interacción entre un Exonúcleo (Exokernel) con el Software a través de bibliotecas.

Los exonúcleos, también conocidos como sistemas operativos verticalmente estructurados, representan una aproximación radicalmente nueva al diseño de sistemas operativos.

La idea subyacente es permitir que el desarrollador tome todas las decisiones relativas al rendimiento del hardware. Los exonúcleos son extremadamente pequeños, ya que limitan expresamente su funcionalidad a la protección y el multiplexado de los recursos. Se llaman así porque toda la funcionalidad deja de estar residente en memoria y pasa a estar fuera, en bibliotecas dinámicas.

Los diseños de núcleos clásicos (tanto el monolítico como el micronúcleo) abstraen el hardware, escondiendo los recursos bajo una capa de abstracción del hardware, o detrás de los controladores de dispositivo. En los sistemas clásicos, si se asigna memoria física, nadie puede estar seguro de cuál es su localización real, por ejemplo.

La finalidad de un exonúcleo es permitir a una aplicación que solicite una región específica de la memoria, un bloque de disco concreto, etc., y simplemente asegurarse que los recursos pedidos están disponibles, y que el programa tiene derecho a acceder a ellos.

Debido a que el exonúcleo sólo proporciona una interfaz al hardware de muy bajo nivel, careciendo de todas las funcionalidades de alto nivel de otros sistemas operativos, éste es complementado por una «biblioteca de sistema operativo». Esta biblioteca se comunica con el exonúcleo subyacente, y facilita a los programadores de aplicaciones las funcionalidades que son comunes en otros sistemas operativos.

Algunas de las implicaciones teóricas de un sistema exonúcleo son que es posible tener distintos tipos de sistemas operativos (p.e. Windows, Unix) ejecutándose en un solo exonúcleo, y que los desarrolladores pueden elegir prescindir ó incrementar funcionalidades por motivos de rendimiento.

Actualmente, los diseños exonúcleo están fundamentalmente en fase de estudio y no se usan en ningún sistema popular. Un concepto de sistema operativo es Nemesis, creado por la Universidad de Cambridge, la Universidad de Glasgow, Citrix Systems y el Instituto Sueco de Informática. El MIT también ha diseñado algunos sistemas basados en exonúcleos. Los exonúcleos se manejan en diferente estructura dado que también cumplen funciones distintas.

1.6 Núcleo.

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

En informática, un núcleo o kernel (de la raíz germánica Kern) es un software que constituye la parte más importante del sistema operativo.[1] Es el principal responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma más básica, es el encargado de gestionar recursos, a través de servicios de llamada al sistema. Como hay muchos programas y el acceso al hardware es limitado, también se encarga de decidir qué programa podrá hacer uso de un dispositivo de hardware y durante cuánto tiempo, lo que se conoce como multiplexado. Acceder al hardware directamente puede ser realmente complejo, por lo que los núcleos suelen implementar una serie de abstracciones del hardware. Esto permite esconder la complejidad, y proporciona una interfaz limpia y uniforme al hardware subyacente, lo que facilita su uso al programador.

En informática, el núcleo es el programa informático que se asegura de:

• La comunicación entre los programas que solicitan recursos y el hardware.• Gestión de los distintos programas informáticos (tareas) de una máquina.• Gestión del hardware (memoria, procesador, periférico, forma de almacenamiento, etc.)

La mayoría de las interfases de usuario se construyen en torno al concepto de núcleo. La existencia de un núcleo, es decir, de un único programa responsable de la comunicación entre el hardware y el programa informático, resulta de compromisos complejos referentes a cuestiones de resultados, seguridad y arquitectura de los procesadores. El núcleo tiene grandes poderes sobre la utilización de los recursos materiales (hardware), en particular, de la memoria.

Funciones generalmente ejercidas por un núcleoLos núcleos tienen como funciones básicas garantizar la carga y la ejecución de los procesos, las entradas/salidas y proponer una interfaz entre el espacio núcleo y los programas del espacio del usuario.

Aparte de las funcionalidades básicas, el conjunto de las funciones de los puntos siguientes (incluidos los pilotos materiales, las funciones de redes y sistemas de ficheros o los servicios) necesariamente no son proporcionados por un núcleo de sistema de explotación. Pueden establecerse estas funciones del sistema de explotación tanto en el espacio usuario como en el propio núcleo. Su implantación en el núcleo se hace en el único objetivo de mejorar los

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

resultados. En efecto, según la concepción del núcleo, la misma función llamada desde el espacio usuario o el espacio núcleo tiene un coste temporal obviamente diferente. Si esta llamada de función es frecuente, puede resultar útil integrar estas funciones al núcleo para mejorar los resultados.

GeneralidadesUna visión típica de la arquitectura de computadores como una serie de capas de abstracción: hardware, firmware, lenguaje de máquina, núcleo, software de sistema y aplicaciones [3]

En informática, el núcleo es el programa informático que se asegura de:

• La comunicación entre los programas que solicitan recursos y el hardware.• Gestión de los distintos programas informáticos (tareas) de una máquina.• Gestión del hardware (memoria, procesador, periférico, forma de almacenamiento, etc.)

La mayoría de las interfases de usuario se construyen en torno al concepto de núcleo. La existencia de un núcleo, es decir, de un único programa responsable de la comunicación entre el hardware y el programa informático, resulta de compromisos complejos referentes a cuestiones de resultados, seguridad y arquitectura de los procesadores. El núcleo tiene grandes poderes sobre la utilización de los recursos materiales (hardware), en particular, de la memoria.

Funciones generalmente ejercidas por un núcleoLos núcleos tienen como funciones básicas garantizar la carga y la ejecución de los procesos, las entradas/salidas y proponer una interfaz entre el espacio núcleo y los programas del espacio del usuario.

Aparte de las funcionalidades básicas, el conjunto de las funciones de los puntos siguientes (incluidos los pilotos materiales, las funciones de redes y sistemas de ficheros o los servicios) necesariamente no son proporcionados por un núcleo de sistema de explotación. Pueden establecerse estas funciones del sistema de explotación tanto en el espacio usuario como en el propio núcleo. Su implantación en el núcleo se hace en el único objetivo de mejorar los resultados. En efecto, según la concepción del núcleo, la misma función llamada desde el espacio usuario o el espacio núcleo tiene un coste temporal obviamente diferente. Si esta llamada de función es frecuente, puede resultar útil integrar estas funciones al núcleo para mejorar los resultados.

UnixUn núcleo Unix es un programa escrito casi en su totalidad en lenguaje C, con excepción de una parte del manejo de interrupciones, expresada en el lenguaje ensamblador del procesador en el que opera. Las funciones del núcleo son permitir la existencia de un ambiente en el que sea posible atender a varios usuarios y múltiples tareas en forma concurrente, repartiendo al procesador entre todos ellos, e intentando mantener en grado óptimo la atención individual.

El núcleo opera como asignador de recursos para cualquier proceso que necesite hacer uso de las facilidades de cómputo.

• Creación de procesos, asignación de tiempos de atención y sincronización.• Asignación de la atención del procesador a los procesos que lo requieren.• Administración de espacio en el sistema de archivos, que incluye: acceso, protección y administración de

usuarios; comunicación entre usuarios y entre procesos, y manipulación de E/S y administración de periféricos.

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

• Supervisión de la transmisión de datos entre la memoria principal y los dispositivos periféricos.

Reside siempre en la memoria principal y tiene el control sobre la computadora, por lo que ningún otro proceso puede interrumpirlo; sólo pueden llamarlo para que proporcione algún servicio de los ya mencionados. Un proceso llama al núcleo mediante módulos especiales conocidos como llamadas al sistema.

Consta de dos partes principales: la sección de control de procesos y la de control de dispositivos. La primera asigna recursos, programas, procesos y atiende sus requerimientos de servicio; la segunda, supervisa la transferencia de datos entre la memoria principal y los dispositivos del ordenador. En términos generales, cada vez que algún usuario oprime una tecla de una terminal, o que se debe leer o escribir información del disco magnético, se interrumpe al procesador central y el núcleo se encarga de efectuar la operación de transferencia.

Cuando se inicia la operación de la computadora, debe cargarse en la memoria una copia del núcleo, que reside en el disco magnético (operación denominada bootstrap). Para ello, se deben inicializar algunas interfaces básicas de hardware; entre ellas, el reloj que proporciona interrupciones periódicas. El núcleo también prepara algunas estructuras de datos que abarcan una sección de almacenamiento temporal para transferencia de información entre terminales y procesos, una sección para almacenamiento de descriptores de archivos y una variable que indica la cantidad de memoria principal.

A continuación, el núcleo inicializa un proceso especial, llamado proceso 0. En Unix, los procesos se crean mediante una llamada a una rutina del sistema (fork), que funciona por un mecanismo de duplicación de procesos. Sin embargo, esto no es suficiente para crear el primero de ellos, por lo que el núcleo asigna una estructura de datos y establece apuntadores a una sección especial de la memoria, llamada tabla de procesos, que contendrá los descriptores de cada uno de los procesos existentes en el sistema.

Después de haber creado el proceso 0, se hace una copia del mismo, con lo que se crea el proceso 1; éste muy pronto se encargará de "dar vida" al sistema completo, mediante la activación de otros procesos que también forman parte del núcleo. Es decir, se inicia una cadena de activaciones de procesos, entre los cuales destaca el conocido como despachador, o planificador, que es el responsable de decidir cuál proceso se ejecutará y cuáles van a entrar o salir de la memoria central. A partir de ese momento se conoce el número 1 como proceso de inicialización del sistema, init.

El proceso init es el responsable de establecer la estructura de procesos en Unix. Normalmente, es capaz de crear al menos dos estructuras distintas de procesos: el modo monousuario y el multiusuario. Comienza activando el intérprete del lenguaje de control Shell de Unix en la terminal principal, o consola del sistema, proporcionándole privilegios de "superusuario". En la modalidad de un solo usuario la consola permite iniciar una primera sesión, con privilegios especiales, e impide que las otras líneas de comunicación acepten iniciar sesiones nuevas. Esta modalidad se usa con frecuencia para revisar y reparar sistemas de archivos, realizar pruebas de funciones básicas del sistema y para otras actividades que requieren uso exclusivo de la computadora.

Init crea otro proceso, que espera a que alguien entre en sesión en alguna línea de comunicación. Cuando esto sucede, realiza ajustes en el protocolo de la línea y ejecuta el programa login, que se encarga de atender inicialmente a los nuevos usuarios. Si el nombre de usuario y la contraseña proporcionadas son correctos, entonces entra en operación el programa Shell, que en lo sucesivo se encargará de la atención normal del usuario que se dio de alta en esa terminal.

A partir de ese momento el responsable de atender al usuario en esa terminal es el intérprete Shell. Cuando se desea terminar la sesión hay que desconectarse de Shell (y, por lo tanto, de Unix), mediante una secuencia especial de teclas (usualmente. < CTL > - D). A partir de ese momento la terminal queda disponible para atender a un nuevo usuario.

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

2.- Administración de procesos y del procesador.2.1 Concepto de proceso.Un proceso es un programa en ejecución. Los procesos son gestionados por el sistema operativo y están formados por:

• Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador.• Su estado de ejecución en un momento dado, esto es, los valores de los registros de la unidad central de

procesamiento para dicho programa.• Su memoria de trabajo, es decir, la memoria que ha reservado y sus contenidos.• Otra información que permite al sistema operativo su planificación.

Esta definición varía ligeramente en el caso de sistemas operativos multihilo, donde un proceso consta de uno o más hilos, la memoria de trabajo (compartida por todos los hilos) y la información de planificación. Cada hilo consta de instrucciones y estado de ejecución.

Los procesos son creados y destruidos por el sistema operativo, así como también este se debe hacer cargo de la comunicación entre procesos, pero lo hace a petición de otros procesos. El mecanismo por el cual un proceso crea otro proceso se denomina bifurcación (fork). Los nuevos procesos pueden ser independientes y no compartir el espacio de memoria con el proceso que los ha creado o ser creados en el mismo espacio de memoria.

En los sistemas operativos multihilo es posible crear tanto hilos como procesos. La diferencia estriba en que un proceso solamente puede crear hilos para sí mismo y en que dichos hilos comparten toda la memoria reservada para el proceso.

Método

Dos o más procesos pueden cooperar mediante señales de forma que uno obliga a detenerse a los otros hasta que reciban una señal para continuar.

• Se usa una variable de tipo semáforo para sincronizar los procesos.• Si un proceso está esperando una señal, se suspende hasta que la señal se envíe.• Se mantiene una cola de procesos en espera en el semáforo.• La forma de elegir los procesos de la cola en espera es mediante una política first in first out.

La sincronización explícita entre procesos es un caso particular del estado "bloqueado". En este caso, el suceso que permite desbloquear un proceso no es una operación de entrada/salida, sino una señal generada a propósito por el programador desde otro proceso.

2.2 Estados y transiciones de los procesos

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

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

Entender cómo se manejan los procesos es un objetivo que nos ayudara en cualquier lenguaje de programación, por ejemplo no hay necesidad de estudiar programación orientada a objetos cada vez que se va a aprender java, C#, Visual Basic y otro lenguaje.

Por lo tanto entender los procesos en un formato estándar es clave a la hora de programar threads en cualquier lenguaje de programación.

Todos sabemos que en un programa en ejecución no puede estar ocupando la CPU permanentemente, esto es debido a que un usuario necesite realizar más de una acción a la vez, o también puede ser el caso que varios usuarios accedan a un sistema simultáneamente.

Definición de un proceso:

Un proceso es un programa en ejecución, pero esto no quiere decir que un programa por sí mismo es un proceso, un programa es una entidad pasiva.

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

Por ejemplo un exe es una entidad pasiva guardada en el disco, cuando nosotros ejecutamos el exe entonces se convierte en una entidad activa con un contador de programa que especifica la siguiente instrucción a ejecutarse y un conjunto de recursos asociados.

Entre los tipos de proceso se encuentran:

• Los procesos de tiempo real: Son aquellos en el que tiempo de respuesta es crítico para que no superen un tiempo límite.

• Los procesos de segundo plano (procesos de cálculo y servidores): Son los que no tienen interacción con el usuario y cuyo tiempo de respuesta no es crítico.

• Los procesos interactivos: Estos no suelen usar mucho tiempo de cómputo, pero estos procesos al ser requeridos deben tener un tiempo de respuesta rápido, ya que por lo general es cuando un usuario los pide.

Estados De Un proceso:

• Nuevo: Es cuando el proceso se está creando.• Ejecución: Es cuando se están ejecutando instrucciones.• Espera: Es cuando el proceso está esperando que ocurra algún evento.• Listo: Es cuando el proceso está a la espera de ser asignado a un procesador.• Terminado: Es cuando el proceso ha terminado su ejecución.

Hay que recalcar que estos nombres son arbitrarios, por lo que en cada sistema operativo pueden cambiar, sin embargo todo sistema operativo los tiene, es por eso que a la hora de programar en java no representa ningún problema.

Entender cómo se manejan los procesos es un objetivo que nos ayudara en cualquier lenguaje de programación, por ejemplo no hay necesidad de estudiar programación orientada a objetos cada vez que se va a aprender java, C#, Visual Basic y otro lenguaje.

Por lo tanto entender los procesos en un formato estándar es clave a la hora de programar threads en cualquier lenguaje de programación.

Todos sabemos que en un programa en ejecución no puede estar ocupando la CPU permanentemente, esto es debido a que un usuario necesite realizar más de una acción a la vez, o también puede ser el caso que varios usuarios accedan a un sistema simultáneamente.

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

Multiprocesamiento simétrico

SMP es la sigla de Symmetric Multi-Processing, multiproceso simétrico. Se trata de un tipo de arquitectura de ordenadores en que dos o más procesadores comparten una única memoria central.

Explicación detallada

La arquitectura SMP (Multi-procesamiento simétrico, también llamada UMA, de Uniform Memory Access), se caracteriza por el hecho de que varios microprocesadores comparten el acceso a la memoria. Todos los microprocesadores compiten en igualdad de condiciones por dicho acceso, de ahí la denominación "simétrico".

Los sistemas SMP permiten que cualquier procesador trabaje en cualquier tarea sin importar su localización en memoria; con un propicio soporte del sistema operativo, estos sistemas pueden mover fácilmente tareas entre los procesadores para garantizar eficientemente el trabajo.

Una computadora SMP se compone de microprocesadores independientes que se comunican con la memoria a través de un bus compartido. Dicho bus es un recurso de uso común. Por tanto, debe ser arbitrado para que solamente un microprocesador lo use en cada instante de tiempo. Si las computadoras con un solo microprocesador tienden a gastar considerable tiempo esperando a que lleguen los datos desde la memoria, SMP empeora esta situación, ya que hay varios parados en espera de datos.

2.3 Procesos ligeros: Hilos o hebras.Un proceso ligero, o thread, es un programa en ejecucion (flujo de ejecucion) que comparte la imagen de memoria y otras informaciones con otros procesos ligeros. Como muestra la Figura , un proceso puede contener un solo flujo de ejecucion, como ocurre en los procesos clasicos, o mas de un flujo de ejecucion (procesos ligeros).

Desde el punto de vista de la programacion, un proceso ligero se define como una funcion cuya ejecucion se puede lanzar en paralelo con otras. El hilo de ejecucion primario, o proceso ligero primario, corresponde a la funcion main.

Cada proceso ligero tiene informaciones que le son propias y que no comparte con otros procesos ligeros. Las informaciones propias se refieren fundamentalmente al contexto de ejecucion, pudiendose destacar las siguientes:

• Contador de programa.• Pila.• Registros.• Estado del proceso ligero (ejecutando, listo o bloqueado).

Todos los procesos ligeros de un mismo proceso comparten la informacion del mismo. En concreto, comparten:

• Espacio de memoria.• Variables globales.• Archivos abiertos.• Procesos hijos.• Temporizadores.

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

• Senales y semaforos.• Contabilidad.

Es importante destacar que todos los procesos ligeros de un mismo proceso comparten el mismo espacio de direcciones de memoria, que incluye el codigo, los datos y las pilas de los diferentes procesos ligeros. Esto hace que no exista proteccion de memoria entre los procesos ligeros de un mismo proceso, algo que si ocurre con los procesos convencionales.

El proceso ligero constituye la unidad ejecutable en Windows NT. La Figura representa de forma esquematica la estructura de un proceso de Windows NT con sus procesos ligeros.

2.4 Concurrencia y secuenciabilidad.La concurrencia comprende un gran número de cuestiones de diseño, incluyendo la comunicación entre procesos, comparición y competencia por los recursos, sincronización de la ejecución de varios procesos y asignación del tiempo de procesador a los procesos y es fundamental para que existan diseños como Multiprogramación, Multiproceso y Proceso distribuido.

Los procesos son concurrentes si existen simultáneamente. Cuando dos o más procesos llegan al mismo tiempo a ejecutarse, se dice que se ha presentado una concurrencia de procesos. Es importante mencionar que para que dos o más procesos sean concurrentes, es necesario que tengan alguna relación entre ellos La concurrencia puede presentarse en tres contextos diferentes:

• Varias aplicaciones: La multiprogramación se creó para permitir que el tiempo de procesador de la máquina fuese compartido dinámicamente entre varios trabajos o aplicaciones activas.

• Aplicaciones estructuradas: Como ampliación de los principios del diseño modular y la programación estructurada, algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos concurrentes.

• Estructura del sistema operativo: Las mismas ventajas de estructuración son aplicables a los programadores de sistemas y se ha comprobado que algunos sistemas operativos están implementados como un conjunto de procesos. Existen tres modelos de computadora en los que se pueden ejecutar procesos concurrentes:

• Multiprogramación con un único procesador. El sistema operativo se encarga de ir repartiendo el tiempo del procesador entre los distintos procesos, intercalando la ejecución de los mismos para dar así una apariencia de ejecución simultánea.

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

• Multiprocesador. Es una maquina formada por un conjunto de procesadores que comparten memoria principal. En este tipo de arquitecturas, los procesos concurrentes no sólo pueden intercalar su ejecución sino también superponerla.

• Multicomputadora. Es una maquina de memoria distribuida, que está formada por una serie de computadoras. En este tipo de arquitecturas también es posible la ejecución simultánea de los procesos sobre los diferentes procesadores

En general, la concurrencia será aparente siempre que el número de procesos sea mayor que el de procesadores disponibles, es decir, cuando haya más de un proceso por procesador. La concurrencia será real cuando haya un proceso por procesador. Aunque puede parecer que la intercalación y la superposición de la ejecución de procesos presentan formas de ejecución distintas, se verá que ambas pueden contemplase como ejemplos de procesos concurrentes.

Existen diversas razones que motivan la ejecución de procesos concurrentes en un sistema:

• Facilita la programación de aplicaciones al permitir que éstas se estructuren como un conjunto de procesos que cooperan entre sí para alcanzar un objetivo común.

• Acelera los cálculos. Si se quiere que una tarea se ejecute con mayor rapidez, lo que se puede hacer es dividirla en procesos, cada uno de los cuales se ejecuta en paralelo con los demás.

• Posibilita el uso interactivo a múltiples usuarios que trabajan de forma simultánea.

• Permite un mejor aprovechamiento de los recursos, en especial de la CPU, ya que pueden aprovechar las fases de entrada-salida de unos procesos para realizar las fases de procesamiento de otros.

Así como existen las razones que motivan la ejecución de procesos concurrentes, también existen sus contras:

• Inanición e interrupción de procesos.• Ocurrencia de bloqueos.• Que dos o mas procesos requieran el mismo recurso (No apropiativo)

Tipos de procesos concurrentes.Los procesos que ejecutan de forma concurrente en un sistema se pueden clasificar como:

Proceso independiente: Es aquel que ejecuta sin requerir la ayuda o cooperación de otros procesos. Un claro ejemplo de procesos independientes son los diferentes shells que se ejecutan de forma simultánea en un sistema.

Procesos son cooperantes: Son aquellos que están diseñados para trabajar conjuntamente en alguna actividad, para lo que deben ser capaces de comunicarse e interactuar entre ellos.

En ambos tipos de procesos (independientes y cooperantes), puede producirse una serie de interacciones entre ellos y pueden ser de dos tipos:

• Interacciones motivadas porque los procesos comparten o compiten por el acceso a recursos físicos o lógicos. Por ejemplo, dos procesos independientes compiten por el acceso a disco o para modificar una base de datos.

• Interacción motivada porque los procesos se comunican y sincronizan entre sí para alcanzar un objetivo común, Por ejemplo, un compilador que tiene varios procesos que trabajan conjuntamente para obtener un solo archivo de salida.

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

Elementos a gestionar y diseñar a causa de la concurrencia.Se pueden enumerar los siguientes:

1. El sistema operativo debe ser capaz de seguir la pista de los distintos procesos activos . Esto lo hace por medio de PBC’s (Bloque de Control de Procesos).

2. El sistema operativo debe asignar y quitar los distintos recursos a cada proceso activo . Entre estos recursos se incluyen:

• Tiempo de procesador: Es función de la planificación.• Memoria: La mayoría de los sistemas operativos emplean esquemas de memoria virtual.• Archivos.• Dispositivos de E/S.

3. El sistema operativo debe proteger los datos y los recursos físicos de cada proceso contra injerencias no intencionadas de otros procesos.

4. Los resultados de un proceso deben ser independientes de la velocidad relativa a la que se realiza la ejecución con respecto a otros procesos concurrentes.

Cuando dos o mas procesos llegan al mismo tiempo a ejecutarse, se dice que se ha presentado una concurrencia de procesos. Es importante mencionar que para que dos o mas procesos sean concurrentes , es necesario que tengan alguna relaciones entre ellos como puede ser la cooperaciion para un determinado trabajo o el uso de informacion y recursos compartidos, por ejemplo: en un sistema de un procesador , la multiprogramaciion es una condicion necesaria pero no suficiente para que exista concurrencia, ya que los procesos pueden ejecutarse de forma totalmente independiente.

Por otro lado en un sistema de varios procesos se puede presentar la concurrencia siempre y cuando las actividades necesiten actuar entre ellos sea para utilizar informacion como para cualquier otra cosa.

2.5 Niveles, objetivos y criterios de planificación.NIVELES DE PLANIFICACIÓN Se consideran tres niveles importantes de planificación, los que se detallan a continuación:

• Planificación de alto nivel : Se encarga de llevar procesos de disco a memoria y viceversa. Seleccionando los trabajos que deben admitirse en el sistema. También se denomina Planificación de trabajos, Determina a qué trabajos se les va a permitir competir activamente por los recursos del sistema, lo cual se denomina Planificación de admisión, Administra todos los recursos del sistema excepto el CPU, Mantiene las colas de procesos bloqueados y suspendidos, Controla la creación de procesos y Maneja el nivel de multiprogramación.

• Planificación de nivel intermedio : En algunos casos, en especial cuando el sistema está sobrecargado, el planificador de nivel medio encuentra ventajoso retirar trabajos activos de la memoria para reducir el grado de multiprogramación, y por lo tanto, permitir que los trabajos se completen mas aprisa. Este subadministrador controla los trabajos que se intercambian hacia fuera y de regreso.

• Determina a qué procesos se les puede permitir competir por la cpu. oEfectúa “suspensiones” y “activaciones” (“reanudaciones”) de procesos. O Debe ayudar a alcanzar ciertas metas en el

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

rendimiento total del sistema. O Equilibrar la administración de trabajos en el sistema con la asignación del CPU a dichos procesos. O Nivelar la carga del sistema (procesos activos y pasivos).

• Planificación de bajo nivel: Se encarga de pasar de un proceso a otro en memoria principal. Determinando a cuál proceso listo se le asignará el CPU cuando éste se encuentra disponible. oDetermina a qué proceso listo se le asigna la cpu cuando esta queda disponible y asigna la cpu al mismo, es decir que “despacha” la cpu al proceso.

Objetivos de la Planificación.

Los objetivos de la planificación del procesador son los siguientes e involucran a los conceptos detallados seguidamente:

• Ser justa: oTodos los procesos son tratados de igual manera. oNingún proceso es postergado indefinidamente.

• Maximizar la capacidad de ejecución: oMaximizar el número de procesos servidos por unidad de tiempo.

• Maximizar el número de usuarios interactivos que reciban unos tiempos de respuesta aceptables: En un máximo de unos segundos.

• Ser predecible: oUn trabajo dado debe ejecutarse aproximadamente en la misma cantidad de tiempo independientemente de la carga del sistema.

• Minimizar la sobrecarga: oNo suele considerarse un objetivo muy importante.

• Equilibrar el uso de recursos: oFavorecer a los procesos que utilizarán recursos infrautilizados.

• Equilibrar respuesta y utilización: oLa mejor manera de garantizar buenos tiempos de respuesta es disponer de los recursos suficientes cuando se necesitan, pero la utilización total de recursos podrá ser pobre.

• Evitar la postergación indefinida: oSe utiliza la estrategia del “envejecimiento”. Mientras un proceso espera por un recurso su prioridad debe aumentar, así la prioridad llegará a ser tan alta que el proceso recibirá el recurso esperado.

• Asegurar la prioridad: oLos mecanismos de planificación deben favorecer a los procesos con prioridades más altas.

• Dar preferencia a los procesos que mantienen recursos claves: Un proceso de baja prioridad podría mantener un recurso clave, que puede ser requerido por un proceso de más alta prioridad. Si el recurso es no apropiativo, el mecanismo de planificación debe otorgar al proceso un tratamiento mejor del que le correspondería normalmente, puesto que es necesario liberar rápidamente el recurso clave.

• Dar mejor tratamiento a los procesos que muestren un “comportamiento deseable”: Un ejemplo de comportamiento deseable es una tasa baja de paginación.

• Degradarse suavemente con cargas pesadas: oUn mecanismo de planificación no debe colapsar con el peso de una exigente carga del sistema. oSe debe evitar una carga excesiva mediante las siguientes acciones: No permitiendo que se creen nuevos procesos cuando la carga ya es pesada. Dando servicio a la carga más pesada al proporcionar un nivel moderadamente reducido de servicio a todos los procesos.

CRITERIOS DE PLANIFICACIÓN

• Equidad Garantizar que cada proceso obtiene su proporción justa de la cpu.

• Eficacia Mantener ocupada la cpu el ciento por ciento del tiempo.

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

• Tiempo de respuesta Minimizar el tiempo de respuesta para los usuarios interactivos.

• Tiempo de regreso Minimizar el tiempo que deben esperar los usuarios por lotes(batch) para obtener sus resultados.

• Rendimiento Maximizar el número de tareas procesadas por hora.

2.6 Técnicas de administración del planificador.Las disciplinas de planificación pueden ser:

• Expropiativas

• No expropiativas

Se denomina planificador al software del sistema operativo encargado de asignar los recursos de un sistema entre los procesos que los solicitan. Siempre que haya que tomar una decisión, el planificador debe decidir cuál de los procesos que compiten por la posesión de un determinado recursos lo recibirá.

Los algoritmos (técnicas) tienen distintas propiedades según los criterios en los que se basen para su construcción, lo cual se refleja en qué tipo de procesos se puede ver favorecido frente a otro en la disputa del procesador. Antes de realizar la elección de un algoritmo se debe considerar las propiedades de estos frente al criterio de diseño elegido. Algunos de estos son:

1. Eficacia : Se expresa como un porcentaje del tiempo medio de utilización. Aunque puede parecer lógico intentar mantener este parámetro próximo al 100%, con un valor tan elevado otros aspectos importante de medida del comportamiento del sistema pueden verse deteriorados, como por ejemplo el tiempo medio de espera.

2. Rendimiento: Es una medida del numero de procesos completados por unidad de tiempo. Por ejemplo 10 procesos por segundo.

3. Tiempo de retorno o regreso: Es el intervalo de tiempo que transcurre desde que un proceso se crea o presenta hasta que completa por el sistema.

4. Tiempo de espera : Es el tiempo que el proceso espera hasta que se le concede el procesador. Puede resultar una medida mas adecuada de la eficiencia del sistema, ya que se elimina de la media el tiempo que tarda en ejecutarse el mismo.

5. Tiempo de respuesta a un evento: Se denomina así el intervalo de tiempo que transcurre desde que se señala un evento hasta que se ejecuta la primera instrucción de la rutina de servicio de dicho evento. El criterio de selección de un algoritmo se suele basar en la maximización o minimización de una función de los parámetros anteriores.

3.- Administración de memoria.Los sistemas de administración de memoria se pueden clasificar en dos tipos: los que desplazan los procesos de la memoria principal al disco y viceversa durante la ejecución y los que no.

Gestión de la memoria principalLa 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, es volátil y pierde su

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

contenido en los fallos del sistema. El SO es el responsable de:

• Conocer qué partes de la memoria están siendo 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.

La parte del sistema operativo que administra la memoria se llama administrador de la memoria. Para ello existen diferentes esquemas de administración de memoria desde los mas simples hasta los mas elaborados entre los cuales se ubican:

• Administración de la memoria sin intercambio o paginación.

Los sistemas de administración de memoria se pueden clasificar en dos tipos. Los que desplazan los procesos de la memoria principal al disco y viceversa durante la ejecución (intercambio y paginación) y aquellos que no.

• Monopogramación sin intercambio o paginación.

Es en forma secuencial pues solo se tiene un objeto en memoria en cada instante, el usuario carga toda la memoria con un programa, esto implica que cada proceso debe contener controladores de dispositivo para cada uno de los dispositivos E/S que utilice.

• Multiprogramación y uso de la memoria. La multiprogramación facilita la programación de una aplicación al dividirla en dos o mas procesos. La mayoría de los procesos tardan cierto tiempo en la espera de datos de dispositivos E/S. Un modelo para el uso y aprovechamiento de la CPU es el modelo probabilístico dado por la fórmula : Uso de la CPU = 1 − pn

• Multiprogramación con particiones fijas. El objetivo en todo esto es tener mas de un proceso en memoria a la vez, solución posible sería dividir la memoria en n partes al inicio de una sesión de uso de la máquina, pero aún así se obtiene el desperdicio de particiones grandes con una tarea pequeña, la respuesta puede ser tener particiones pequeñas también. Las tareas que van llegando se forman hasta que una partición adecuada está disponible, en cuyo momento la tarea se carga en esa partición y se ejecuta hasta terminar.

• Intercambio

En un sistema por lotes la organización de la memoria en particiones fijas es adecuado pero en un ambiente multiusuario la situación es distinta con el tiempo compartido, ya que existen mas usuarios de los que puede albergar la memoria, por lo que es conveniente albergar el exceso de los procesos en disco., por supuesto para ser ejecutados estos procesos deben ser trasladados a la memoria principal. Al traslado de procesos de disco a memoria y viceversa se le llama intercambio.

• Multiprogramación con particiones variables. Mediante un algoritmo de administración de memoria las particiones variables varían de forma dinámica durante el uso de la máquina, evitando desperdicio de memoria.

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

Otros métodos de administración de memoria que tenemos son:

• La administración de memoria con mapa de bits. La memoria se divide en unidades de asignación, a cada asignación le corresponden un bit en el mapa de bits, un mapa de bits es una forma sencilla para llevar un registro de las palabras de la memoria en una cantidad fija de memoria.

• La administración de memoria con listas ligadas. Otra forma de mantener un registro en memoria es mediante una lista ligada donde cada entrada de la lista específica un hueco o un proceso.

• La administración de memoria con el sistema de los asociados.

• Basado en el sistema binario o utiliza para las direcciones.

• Memoria Virtual

El método diseñado por Fotheringham en 1961 se conoce como Memoria Virtual, la idea es que el tamaño combinado de la pila, programa y datos puede exceder la memoria física disponible para ello. El S.O. mantiene en memoria aquellas partes del programa que se deben permanecer en memoria y el resto lo deja en disco, las partes entre el disco y la memoria se intercambian de modo que se vayan necesitando.

• Paginación.

El espacio de direcciones de cada proceso se divide en bloques de tamaño uniforme llamados páginas, los cuales se pueden colocar dentro de cualquier para página marco disponible en memoria. Cuando las tablas de páginas son muy grandes se puede utilizar un esquema de paginación de varios niveles para que las páginas se paginen a sí mismas.

Existen distintos niveles de paginación y a su vez distintos modelos de computadoras han trabajado con ellas.

Paginación de nivel 1: PDP−11 Paginación de 2 niveles: la VAX Paginación de 3 niveles: la SPARC Paginación de 4 niveles: la 68030

Memoria asociativa En los algoritmos de paginación las tablas de páginas se mantienen en la memoria debido a su gran tamaño, en potencia este diseño tiene un efecto enorme en el rendimiento.

• Algoritmos de reemplazo de páginas. Cuando ocurre un fallo de página el sistema operativo debe elegir una página para retirarla de la memoria y hacer un espacio para la página por recuperar. Si la página por eliminar fue modificada mientras estaba en memoria, debe escribirla en el disco para mantener actualizada la copia del disco, si por el contrario la página no ha sido modificada la copia del disco ya está actualizada por lo que no es necesario volver a escribir, la página por leer sólo escribe encima de la página por retirar. Aunque es posible elegir una página al azar para el reemplazo relacionado con un fallo de página, el rendimiento del sistema es mucho mejor si se elige una página de poco uso.

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

• Algoritmo de reemplazo de páginas optimo.

Mejor algoritmo posible para reemplazo de páginas pero irrealizable en la práctica. Al momento de ocurrir un fallo de página cierto conjunto de páginas se encuentran en la memoria, en la siguiente instrucción se hará referencia a una de estas páginas, otras páginas no se utilizaran sino hasta mucho después, cada página puede ejecutarse con el número de instrucciones ejecutadas antes de la primera referencia a esa página, el algoritmo dice que se elimine la página con la mayor etiqueta; si una página no va a utilizase sino hasta mucho después que otra la eliminación de la primera retrasa el fallo de página lo mas posible, el único problema de este algoritmo es que es irrealizable. Al momento del fallo de página el S.O. no tiene forma de saber a qué página se hace referencia.

• Algoritmo de página de uso no muy reciente. En un fallo de página , el sistema operativo inspecciona todas las páginas y las divide en cuatro categorías según los valores actuales de los bits R y M.

Clase 0: No se ha hecho referencia ni ha sido modificada Clase 1: No se ha hecho referencia pero ha sido modificada Clase 2: Se ha hecho referencia pero no ha sido modificada Clase 3: Se ha hecho referencia y ha sido modificada.

El algoritmo NRU implica una hipótesis que indica que es mejor eliminar una página modificada sin referencias al menos por lo general un intervalo de reloj, este algoritmo es fácil de comprender, de implantación eficiente y con un rendimiento que, aún sin ser el óptimo si es adecuado en muchos casos.

• Algoritmo de reemplazo “ primero en entrar, primero en salir FIFO”

El sistema operativo tiene una lista de todas las páginas que se encuentran en memoria, siendo la primera página la mas antigua y la última la mas reciente, en un fallo de página, se elimina la primera página y se añade la nueva al final de la lista.

• Algoritmo de reemplazo de páginas de la segunda oportunidad

Una modificación simple del FIFO que evita deshacerse de una página de uso frecuente inspecciona el bit R de la página mas antigua, busca una página antigua sin referencias durante el anterior intervalo de tiempo.

• Algoritmo de reemplazo de páginas del reloj

Aunque el anterior algoritmo es razonable un mejor enfoque es mantener las páginas en una lista circular con la forma de un reloj, una manecilla apunta hacia la mas antigua. Al ocurrir un fallo de página se inspecciona la página a la que apunta la manecilla si su bit R=0 se retira de la memoria, se inserta la nueva página en su lugar en el reloj y la manecilla avanza una posición, si R=1 la manecilla avanza una posición y el bit se limpia, esto continua hasta encontrar una página con R=0.

• Segmentación.

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

Una memoria segmentada tiene otras ventajas como hacer mas sencilla la administración de las estructuras de datos que crecen o se reducen, si cada procedimiento ocupa un segmento independiente con la posición inicial cero el ligado independiente de los procesos compilados es mucho mas sencillo.

Bit que se activa si se hace referencia a la página en cuestión

Bit que se activa si se modifica la página.

3.1 Política y filosofía.

Filosofía: La memoria principal puede ser considerada como un arreglo lineal de localidades de almacenamiento de un byte de tamaño. Cada localidad de almacenamiento tiene asignada una dirección que la identifica.

Una de las funciones básicas que debe implementar un SO es la Administración de la Memoria para tener un control sobre los lugares donde están almacenados los procesos y datos que actualmente se están utilizando.

Sea cual sea es esquema de organización del almacenamiento que se adopte para un sistema específico, es necesario decidir que estrategias se deben utilizar para obtener un rendimiento óptimo .las estrategias de administración del almacenamiento determinan el comportamiento de la administración de memoria cuando se siguen ciertas políticas:

• ¿Cuándo se toma un nuevo programa para colocarlo en memoria?• ¿Se toma el programa cuando el sistema lo solicita específicamente o se intenta anticiparse alas particiones

del sistema?• ¿En que lugar del almacenamiento principal se coloca el programa por ejecutar?• ¿Se colocan los programas lo más cerca unos de otros en los espacios disponibles de la memoria principal

para reducir al mínimo el desperdicio de espacio, o se colocan los programas lo más rápido posible para reducir al mínimo el tiempo de ejecución?

• Si se necesita colocar un nuevo programa en el almacenamiento principal y éste está lleno, ¿Cuál de los otros programas se desaloja?

Se han realizado sistemas que utilizan cada una de estas estrategias de administración.

Los programas y datos necesitan estar en el almacenamiento principal para ser ejecutados o para poder hacer referencia de ellos. Los que no se necesitan de inmediato pueden guardarse en el almacenamiento secundario.

Unix permite procesos múltiples y en un proceso puede generar otro fácilmente. La planificación del procesador usa un algoritmo basado en prioridades. La administración de memoria es un algoritmo de regiones variables con intercambios. Inicialmente los algoritmos realizados se eligieron por sencillez, no por velocidad ni complejidad. El desarrollo inicial se hizo bajo un espacio muy pequeño de memoria.

Los recursos de memoria totales eran insuficientes para justificar algoritmos complejos, por lo que UNIX intercambiaba el contenido en memoria de los procesos.

Políticas.

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

FIFO: Los procesos se despachan de acuerdo a su tiempo de llega a la cola de procesos listos, si un proceso llega al procesador sale hasta que termine. La política FIFO actualmente no se usa como el esquema principal de un sistema, pero si por ejemplo cuando se usa una política de prioridades y hay procesos con la misma prioridad, a estos se les podría aplicar FIFO.

Round Robin: Los procesos se despachan en la forma que lo hace el FIFO, pero se les asigna una cantidad limitada de tiempo (CUANTUM) en el procesador, si no termina en ese lapso se manda al final de la lista de procesos listos.

SJF (Shortest job first - Prioridad del trabajo mas corto): Se ejecuta primero el proceso en espera que tiene el menor tiempo estimado. SJF favorece a los procesos cortos, ya que los largos podrían llegar a rezagarse mucho tiempo e incluso nunca ejecutarse.

SRT (Sortest remaining time scheduling – Tiempo restante más corto): En SJF una vez que un proceso comienza su ejecución continua hasta terminar. En SRT, un proceso en ejecución puede ser desposeído por uno nuevo de menor tiempo de ejecución.

HRN: (highest response ratio next – Prioridad de la tasa de respuesta más alta): Política no apropiativa que corrige el retraso excesivo de procesos grandes que produce el SJF, para así no caer en un favoritismo excesivo por los procesos cortos, lo logra usando una formula basada en el tiempo de espera y el tiempo de servicio, con lo cual la prioridad de cada trabajo no solo esta en función del tiempo de servicio sino también del tiempo que ha esperado para ser atendido.

3.2 Memoria real.La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. Por lo general esta memoria es de mayor costo que la memoria secundaria, pero el acceso a la información contenida en ella es de más rápido acceso. Solo la memoria cache es más rápida que la principal, pero su costo es a su vez mayor. Administración de la memoria con mapas de bits. Este tipo de administración divide la memoria en unidades de asignación, las cuales pueden ser tan pequeñas como unas cuantas palabras o tan grandes como varios kilobytes. A cada unidad de asignación le corresponde un bit en el mapa de bits, el cual toma el valor de 0 si la unidad está libre y 1 si está ocupada (o viceversa). La figura 6 muestra una parte de la memoria y su correspondiente mapa de bits.

Un mapa de bits es una forma sencilla para llevar un registro de las palabras de la memoria en una cantidad fija de memoria, puesto que el tamaño del mapa sólo depende del tamaño de la memoria y el tamaño de la unidad de asignación.

Administración de la memoria con listas ligadas.Otra forma de mantener un registro de la memoria es mediante una lista ligada de los segmentos de memoria asignados o libres, en donde un segmento puede ser un proceso o un hueco entre dos procesos. La memoria de la figura 7(a) está mostrada como una lista ligada de segmentos en la figura 7(b). Cada entrada de la lista especifica un hueco (H) o un proceso (P), la dirección donde comienza, su longitud y un apuntador a la siguiente entrada.

En este ejemplo, la lista de segmentos está ordenada por direcciones, lo que da la ventaja de que al terminar o intercambiar un proceso, la actualización de la lista es directa.

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

Asignación del hueco de intercambio.En algunos sistemas, cuando el proceso se encuentra en la memoria, no hay un hueco en el disco asignado a él. Cuando deba intercambiarse, se deberá asignar un hueco para él en el área de intercambio del disco. Los algoritmos para la administración del hueco de intercambio son los mismos que se utilizan para la administración de la memoria principal.

En otros sistemas, al caerse un proceso, se le asigna un hueco de intercambio en el disco. Cuando el proceso sea intercambiado, siempre pasará al hueco asignado, en vez de ir a otro lugar cada vez. Cuando el proceso concluya, se libera el hueco de intercambio. La única diferencia es que el hueco en disco necesario para un proceso debe representarse como un número entero de bloques del disco. Por ejemplo, un proceso de 13.5 K debe utilizar 14K (usando bloques de 1K).

3.2.1.- Administración de Almacenamiento.Si hay una cosa que toma la mayor parte del día de un administrador de sistemas, esto es la administración del almacenamiento. Pareciera que los discos nunca tienen espacio suficiente, que se sobrecargan con actividad de E/S o que fallan repentinamente. Por eso es vital tener un conocimiento práctico sólido del almacenamiento en disco para poder ser un administrador de sistemas exitoso.

Una vista general del hardware de almacenamiento.

Antes de administrar el almacenamiento, primero es necesario entender el hardware en el que están almacenados los datos. A menos que posea un algún conocimiento sobre la operación de los dispositivos de almacenamiento masivo, quizás se encuentre en una situación donde tenga un problema relacionado al almacenamiento pero le falte el conocimiento de fondo para si quiera entender lo que ve. Al tener un entendimiento sobre la forma en que opera el hardware subyacente, podrá más fácilmente determinar si el subsistema de almacenamiento de su computador está funcionando correctamente.

La gran mayoría de los dispositivos de almacenamiento masivo utilizan alguna forma de media de rotación y soportan el acceso aleatorio de los datos en esa media. Esto significa que los componentes siguientes están presentes en alguna forma dentro de casi todos los dispositivos de almacenamiento masivo:

• Plato del disco • Dispositivo de lectura/escritura de datos • Brazos de acceso

Las secciones siguientes exploran con más detalles cada uno de estos componentes.

Platos de discos La media rotativa utilizada por casi todos los dispositivos de almacenamiento masivo están en la forma de uno o más platos planos y de forma circular. El plato puede estar compuesto de cualquier número de materiales diferentes, tales como aluminio, vidrio y policarbonatos.

La superficie de cada plato se trata de forma que permita el almacenamiento de datos. La naturaleza exacta del tratamiento va a depender de la tecnología de almacenamiento de datos utilizada. La tecnología de almacenamiento de datos más común está basada en la propiedad de magnetismo; en estos casos los platos se cubren con un compuesto que presenta buenas características magnéticas.

Otra tecnología de almacenamiento de datos común está basada en principios ópticos; en estos casos, los platos se

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

cubren con materiales cuyas propiedades ópticas pueden ser modificadas, y en consecuencia, permitiendo almacenar datos ópticamente.

Sin importar la tecnología de almacenamiento utilizada, los platos del disco se giran , causando que su superficie completa barra más allá de otro componente - el dispositivo de lectura/escritura.

Dispositivo de lectura/escritura de datos.El dispositivo de lectura/escritura es el componente que toma los bits y bytes en los que opera un sistema computacional y los convierte en las variaciones magnéticas u ópticas necesarias para interactuar con los materiales que cubren la superficie de los platos de discos.

Algunas veces las condiciones bajo las cuales estos dispositivos deben operar son difíciles. Por ejemplo, en un almacenamiento masivo basado en magnetismo, los dispositivos de lectura/escritura (conocidos como cabezales), deben estar muy cerca de la superficie del plato. Sin embargo, si el cabezal y la superficie del plato del disco se tocan, la fricción resultante provocaría un daño severo tanto al cabezal como al plato. Por lo tanto, las superficies tanto del cabezal como del plato son pulidas cuidadosamente y el cabezal utiliza aire a presión desarrollado por los platos que giran para flotar sobre la superficie del plato, “flotando” a una altitud no menor que el grueso de un cabello humano. Por eso es que las unidades de discos magnéticos son muy sensibles a choques, cambios drásticos de temperaturas y a la contaminación del aire.

Los retos que enfrentan los cabezales ópticos son de alguna manera diferentes de aquellos para los cabezales magnéticos - aquí, el ensamblado de la cabeza debe permanecer a una distancia relativamente constante de la superficie del plato. De lo contrario, los lentes utilizados para enfocarse sobre el plato no producen una imagen lo suficientemente definida.

En cualquier caso, las cabezas utilizan una cantidad muy pequeña del área de superficie del plato para el almacenamiento de datos. A medida que el plato gira por debajo de las cabezas, esta área de superficie toma la forma de una línea circular muy delgada.

Si es así como los dispositivos de almacenamiento masivo funcionan, significa que más del 99% de la superficie del plato se desperdiciaría. Se pueden montar cabezas adicionales sobre el plato, pero para utilizar completamente el área de superficie del plato se necesitan más de mil cabezales. Lo que se requiere es algún método de mover los cabezales sobre la superficie del plato.

Brazos de acceso. Utilizando una cabeza conectada a un brazo que sea capaz de barrer sobre la superficie completa del plato, es posible utilizar completamente el plato para el almacenamiento de datos. Sin embargo, el brazo de acceso debe ser capaz de dos cosas:

• Moverse rápidamente • Moverse con gran precisión

El brazo de acceso se debe mover lo más rápido posible, pues el tiempo que se pierde moviendo el cabezal desde una posición a la otra es tiempo perdido. Esto se debe a que no se pueden leer o escribir datos hasta que el brazo se detenga.

El brazo de acceso debe ser capaz de moverse con gran precisión porque, como se mencionó anteriormente, el área de superficie utilizada por los cabezales es muy pequeña. Por lo tanto, para usar eficientemente la capacidad de almacenamiento del plato, es necesario mover las cabezas solamente lo suficiente para asegurar que cualquier datos escrito en la nueva posición no sobreescribe los datos escritos en la posición previa. Esto tiene el efecto de dividir

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

conceptualmente la superficie del plato en miles o más aros concéntricos o pistas. El movimiento del brazo de acceso desde una pista a la siguiente a menudo se conoce como búsqueda y el tiempo que toma el brazo de acceso para moverse de una pista a otra se le conoce como tiempo de búsqueda.

Cuando existen múltiples platos (o un plato que con ambas superficies utilizadas para almacenamiento de datos), se apilan los brazos para cada superficie, permitiendo que se pueda acceder a la misma pista en cada superficie simultáneamente. Si se pueden visualizar las pistas para cada superficie con el acceso estacionario sobre una pista dada, apareceran como que están apiladas una sobre la otra, haciendo una forma cilíndrica; por tanto, el conjunto de pistas accesibles en una posición dada de los brazos de acceso se conocen como cilindro.

3.2.2.- Jerarquía.Se conoce como jerarquía de memoria a la organización piramidal de la memoria en niveles, que tienen los ordenadores. Su objetivo es conseguir el rendimiento de una memoria de gran velocidad al coste de una memoria de baja velocidad, basándose en el principio de cercanía de referencias. Los puntos básicos relacionados con la memoria pueden resumirse en:

• Cantidad. • Velocidad. • Coste.

La cuestión de la cantidad es simple, cuanto más memoria haya disponible, más podrá utilizarse. La velocidad óptima para la memoria es la velocidad a la que el procesador puede trabajar, de modo que no haya tiempos de espera entre cálculo y cálculo, utilizados para traer operandos o guardar resultados. En suma, el costo de la memoria no debe ser excesivo, para que sea factible construir un equipo accesible.

Como puede esperarse los tres factores compiten entre sí, por lo que hay que encontrar un equilibrio. Las siguientes afirmaciones son válidas:

• A menor tiempo de acceso mayor coste. • A mayor capacidad mayor coste. • A mayor capacidad menor velocidad.

Se busca entonces contar con capacidad suficiente de memoria, con una velocidad que sirva para satisfacer la demanda de rendimiento y con un coste que no sea excesivo. Gracias a un principio llamado cercanía de referencias, es factible utilizar una mezcla de los distintos tipos y lograr un rendimiento cercano al de la memoria más rápida.

Los niveles que componen la jerarquía de memoria habitualmente son:

• Nivel 0: Registros. • Nivel 1: Memoria caché. • Nivel 2: Memoria principal. • Nivel 3: Disco duro (con el mecanismo de memoria virtual). • Nivel 4: Redes(Actualmente se concidera un nivel mas de la jerarquia de memorias).

3.2.3.- Estrategias de Administración de Memoria. Están dirigidas a la obtención del mejor uso posible del recurso del almacenamiento principal.

Se dividen en las siguientes categorías:

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

• Estrategias de búsqueda: • Estrategias de búsqueda por demanda. • Estrategias de búsqueda anticipada.

• Estrategias de colocación. • Estrategias de reposición.

Las “estrategias de búsqueda” están relacionadas con el hecho de cuándo obtener el siguiente fragmento de programa o de datos para su inserción en la memoria principal.

En la “búsqueda por demanda” el siguiente fragmento de programa o de datos se carga al almacenamiento principal cuando algún programa en ejecución lo referencia.

Se considera que la “búsqueda anticipada” puede producir un mejor rendimiento del sistema.

Las “estrategias de colocación” están relacionadas con la determinación del lugar de la memoria donde se colocará (cargará) un programa nuevo.

Las “estrategias de reposición” están relacionadas con la determinación de qué fragmento de programa o de datos desplazar para dar lugar a los programas nuevos.

Asignación Contigua de Almacenamiento Versus No Contigua.

En la “asignación contigua” cada programa ocupa un bloque contiguo y sencillo de localizaciones de almacenamiento.

En la “asignación no contigua” un programa se divide en varios bloques o “segmentos” que pueden almacenarse en direcciones que no tienen que ser necesariamente adyacentes, por lo que es más compleja pero más eficiente que la asignación continua.

Asignación Contigua de Almacenamiento de Un Solo Usuario.

Se consideran S. O. que ya poseen desarrollado el “sistema de control de entrada / salida”: IOCS: input / output control system.

3.2.4.- Asignación Contigua vs No Contigua.En la “asignación contigua” cada programa ocupa un bloque contiguo y sencillo de localizaciones de almacenamiento.

En la “asignación no contigua” un programa se divide en varios bloques o “segmentos” que pueden almacenarse en direcciones que no tienen que ser necesariamente adyacentes, por lo que es más compleja pero más eficiente que la asignación continua.

3.2.5.- Multiprogramación de Partición Fija, Partición Variable, con Intercambio de Almacenamiento.Se denomina multiprogramación a la técnica que permite que dos o más procesos ocupen la misma unidad de memoria principal y que sean ejecutados al “mismo tiempo” (seudo-paralelismo, en una única CPU sólo puede haber un proceso a la vez) en la unidad central de proceso o CPU.

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

Aporta las siguientes ventajas:

• La ya mencionada, varios procesos en ejecución. • Permite el servicio interactivo simultáneo a varios usuarios de manera eficiente. • Aprovecha los tiempos que los procesos pasan esperando a que se completen sus operaciones de E/S. • Aumenta el uso de la CPU. • Las direcciones de los procesos son relativas, el programador no se preocupa por saber en dónde estará el

proceso dado que el sistema operativo es el que se encarga de convertir la dirección lógica en física.

Un proceso entra a ejecutarse y llega al momento en que tiene que hacer espera por un dispositivo de entrada y/o salida por ejemplo, el CPU estara ocioso mientras espera que el proceso puede usar el dispositivo para así finalmente ejecutarse. Los sistemas de multiprogramación evitan eso ya que durante ese tiempo de esperar pasan a ejecutar otro proceso teniendo así al computador ocupado.

Particiones Variables

• Cada trabajo ocupa tanto espacio como necesita. • El tamaño del trabajo a ubicar no puede ser mayor que el almacenamiento principal disponible. • Se disminuye parcial o totalmente el desperdicio de memoria. • Aparecen: Condensación y Compactación

Particiones Fijas.

Consiste en dividir la memoria en varias particiones de tamaño fijo.

Cada partición puede contener exactamente un proceso. El nivel de multiprogramación está limitado por el número de particiones. Cuando una partición está libre, se selecciona un proceso de la cola de entrada y se carga en la partición libre; cuando un proceso termina, la partición está disponible para otro.

El sistema operativo conserva una tabla que indica qué partes de la memoria están disponibles y cuales están ocupadas.

3.3 Organización de memoria virtual

Introducción.Almacenamiento virtual significa la capacidad de direccionar un espacio de almacenamiento mucho mayor que el disponible en el almacenamiento primario de determinado sistema de computación.

Esta tecnología apareció en 1960 en la Universidad de Manchester (Inglaterra), en el sistema “Atlas”.

La ilusión de la memoria virtual está soportada por el mecanismo de traducción de memoria, junto con una gran cantidad de almacenamiento rápido en disco duro. Así en cualquier momento el espacio de direcciones virtual hace un seguimiento de tal forma que una pequeña parte de él, está en memoria real y el resto almacenado en el disco, y puede ser referenciado fácilmente.

Debido a que sólo la parte de memoria virtual que está almacenada en la memoria principal, es accesible a la CPU, según un programa va ejecutándose, la proximidad de referencias a memoria cambia, necesitando que algunas partes de la memoria virtual se traigan a la memoria principal desde el disco, mientras que otras ya ejecutadas, se

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

pueden volver a depositar en el disco (archivos de paginación).

Los métodos más comunes de implementación son mediante:

• Técnicas de paginación.

• Técnicas de segmentación.

• Una combinación de ambas técnicas.

3.4 Administración de memoria virtual

4.- Administración de entrada/salida.4.1 Dispositivos y manejadores de dispositivos: device drivers.

4.2 Mecanismos y funciones de los manejadores de dispositivos: device drivers.

4.3 Estructuras de datos para manejo de dispositivos.

4.4 Operaciones de Entrada /salidaConsiste 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.

5.- Sistemas de archivos.5.1 Concepto.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, EXT3, NTFS, XFS, etc.

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.

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

XFS: Registro de bitácora (journaling)XFS provee soporte para llevar un registro (journaling), donde los cambios al sistema de archivos primero son escritos a un diario o journalantes de que se actualicen los datos del disco. El journal es un buffer circular de bloques del disco que no son parte del sistema de archivos. En XFS el registro (journal) contiene entradas 'lógicas' que describen a un alto nivel las operaciones que se están realizando, al contrario de otros sistemas de archivo con un registro (journal) 'físico', que guardan una copia de los bloques modificados durante cada transacción. Las actualizaciones del registro (journal) se realizan asincrónicamente para evitar una baja en el rendimiento. En el caso de una caída repentina del sistema, las operaciones inmediatamente anteriores a la caída pueden ser terminadas, garantizando así la consistencia del sistema. La recuperación se realiza automáticamente a la hora del montaje del sistema de archivos y la velocidad de recuperación es independiente del tamaño del sistema de archivos. Incluso si alguna información que fuese modificada inmediatamente antes de la caída del sistema no fuese escrita al disco, XFS se encarga de borrar todos los bloques de datos sin escribir, eliminando así cualquier compromiso de seguridad.

Grupos de asignaciónLos sistemas de archivos XFS están particionados internamente en grupos de asignación, que son regiones lineares de igual tamaño dentro del sistema de archivos. Los archivos y los directorios pueden crear grupos de asignación. Cada grupo gestiona sus inodos y su espacio libre de forma independiente, proporcionando escalabilidad y paralelismo — múltiples hilospueden realizar operaciones de E/S simultáneamente en el mismo sistema de archivos.

HPFS sigla de High Performance File System, o sistema de archivos de altas prestaciones, fue creado específicamente para el sistema operativo OS/2 para mejorar las limitaciones del sistema de archivos FAT. Fue escrito por Gordon Letwin y otros empleados de Microsoft, y agregado a OS/2 versión 1.2, en esa época OS/2 era todavía un desarrollo conjunto entre Microsoft e IBM.

Se caracterizaba por permitir nombres largos, metadatos e información de seguridad, así como de autocomprobación e información estructural.

Otra de sus características es que, aunque poseía tabla de archivos (como FAT), ésta se encontraba posicionada físicamente en el centro de la partición, de tal manera que redundaba en menores tiempos de acceso a la hora de leerla/escribirla.

5.2 Noción de archivo real y virtual.

5.3 Componentes de un sistema de archivos.

5.4 Organización lógica y física.

5.5 Mecanismos de acceso a los archivos.

5.6 Manejo de espacio en memoria secundaria.

5.7 Modelo jerárquico.

5.8 Mecanismos de recuperación en caso de falla.

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

6.- Protección y seguridad.6.1 Concepto y objetivos de protección.

6.2 Funciones del sistema de protección.

6.3 Implantación de matrices de acceso.

6.4 Protección basada en el lenguaje.

6.5 Concepto de seguridad.

6.6 Clasificaciones de la seguridad.

6.7 Validación y amenazas al sistema.

6.8 Cifrado.

Gestión del almacenamiento secundarioUn 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.• Verificar que los datos se guarden en orden

Sistemas de protecciónMecanismo 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 comunicacionesPara 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.

Instituto Tecnológico de Cd. Victoria, Tamaulipas, México.Departamento de Sistemas ComputacionalesSistemas Operativos I

Programas de sistemaSon aplicaciones de utilidad que se suministran con el SO pero no forman parte de él. Ofrecen un entorno útil para el desarrollo y ejecución de programas, siendo algunas de las tareas que realizan:

• Manipulación y modificación de archivos.• Información del estado del sistema.• Soporte a lenguajes de programación.• Comunicaciones.

Gestor de recursosComo gestor de recursos, el Sistema Operativo administra:

• La CPU (Unidad Central de Proceso, donde está alojado el microprocesador).• Los dispositivos de E/S (entrada y salida)• La memoria principal (o de acceso directo).• Los discos (o memoria secundaria).• Los procesos (o programas en ejecución).• y en general todos los recursos del sistema.