Unidad II Mtodos para compartir recursos de Software - PowerPoint PPT Presentation

1 / 90
About This Presentation
Title:

Unidad II Mtodos para compartir recursos de Software

Description:

La compartici n din mica consiste en cargar en memoria solo la parte requerida ... En lugar de cargar 'n' copias del c digo del editor, este ser cargado una sola vez. ... – PowerPoint PPT presentation

Number of Views:65
Avg rating:3.0/5.0
Slides: 91
Provided by: juancarlos3
Category:

less

Transcript and Presenter's Notes

Title: Unidad II Mtodos para compartir recursos de Software


1
Unidad II Métodos para compartir recursos de
Software
  • M.C. Juan Carlos Olivares Rojas

2
Temario
  • 2.1 Justificación
  • 2.2 Requisitos
  • 2.3 Procedimientos entrantes
  • 2.4 Recursos compartidos asignados estáticamente
  • 2.5 Recursos compartidos asignados dinámicamente

3
2.1 Justificación
  • Compartir un recurso de software significa que
    dos o más procesos puedan utilizar una misma
    rutina o dato que está en memoria (habiendo una
    sola instancia de la rutina o dato).
  • La rutina es el recurso que se comparte en los
    procesos.

4
Justificación
  • La compartición de recursos de software hace que
    un sistema operativo sea más flexible y eficiente
    ya que aumenta la capacidad de atención de
    procesos.
  • Es necesario la compartición de recursos en un
    sistema operativo multiusuario y multitarea por
    que generalmente sólo se tiene un recurso y
    varios ocupan acceder a él.

5
Justificación
  • Muchos sistemas como las redes de computadoras,
    los sistemas distribuidos, la Web y el groupware
    basan su funcionamiento en la compartición de
    recursos (procesos, periféricos, etc.).
  • También la compartición puede ayudar al balanceo
    de carga entre los procesos.

6
2.2 Requisitos
  • Para la compartición de recursos de software se
    requiere principalmente que el sistema operativo
    permita la repetición de apuntadores en las
    tablas de segmento o de página (dependiendo del
    método empleado).
  • Cualquier tipo de recurso hace referencia a
    memoria.

7
Requisitos
  • Además, si la compartición será dinámica, se
    requiere que el sistema operativo soporte
    carga/descarga y ligado dinámico, para lo cual se
    requiere implementar tablas auxiliares como
  • ART (Tabla de Referencia Activa),
  • AST (Tabla de Segmento Activa),
  • SMT (Tabla de Mapeo de Segmentos).

8
Requisitos
  • Los recursos pueden ser
  • Dedicados se asignan por el tiempo que el
    proceso los requiera. El proceso debe liberar el
    recurso, generalmente utilizan memoria estática,
    pero también se pueden utilizar memoria dinámica
    o espacio de almacenamiento físico.

9
Requisitos
  • Los recursos asignados dinámicamente son aquellos
    que son intercalados para cada uno de los
    procesos es decir, no le pertenecen a nadie de
    manera absoluta.
  • La compartición de los recursos se asigna de esta
    forma de manera predeterminada salvo en el caso
    en que el recurso no pueda ser intercalado dado
    que se requiera control absoluto por parte de un
    proceso.

10
Requisitos
  • Los recursos compartidos pueden ser asignados de
    dos formas básicas
  • Uno a la vez. El recurso es asignado a un solo
    proceso/usuario, el uso es intercalado. Por
    ejemplo el recurso procesador es recuperado por
    el Sistema Operativo. Los archivos son liberados
    por los procesos.

11
Requisitos
  • Muchos a la vez Es una compartición real, muchos
    procesos son asignados a un recurso. Por ejemplo
    una página en memoria es asignada a muchos
    programas, un archivo es asignado a muchos
    recursos.
  • Para realizar compartición de recursos se
    necesitan considerar usuarios (u), derechos (d)
    y recursos (r).

12
Requisitos
  • Por este motivo se necesita de una base de datos
    de nmr
  • Al compartir recursos se generan colas (lista de
    espera).
  • El principal problema de la compartición es la
    concurrencia a un recurso

13
Requisitos
  • Los mecanismos más básicos de compartición hacen
    referencia a base de datos (tablas), semáforos y
    listas ligadas.
  • Cada recurso define su forma de compartir.
  • Por ejemplo en una sesión de computadora un
    recurso puede estar asignado en un tiempo, el
    cual recibe el nombre de quantum.

14
Requisitos
  • Los derechos de los usuarios prevalecen sobre una
    sesión.
  • Otro requisito indispensable para compartir
    recursos es que los procesos sepan que el recurso
    está compartido.
  • También es requisito indispensable que los
    procesos se puedan comunicar entre sí para
    compartir cualquier recurso (IPC).

15
2.3 Procedimientos entrantes
  • La base fundamental para que se pueda compartir
    recursos es que los procesos puedan soportarlo.
  • Para que sean compartidos eficientemente en un
    sistema de multiprogramación, los procesos deben
    ser concurrentemente reutilizables (también
    llamados procesos puros).

16
Procedimientos reentrantes
  • Un proceso puro opera solamente sobre variables
    que están en registros del CPU o sobre datos que
    están en otros segmentos asociados con la tarea
    nunca se modifican a sí mismos. Ejemplo Los
    Archivos Ejecutables (EXE). Ejemplo de Archivos
    No Reentrantes Archivos de Comando (COM).

17
Procedimientos reentrantes
  • Otros ejemplos de procesos no reentrantes son el
    uso de CGI, mientras que los Servlets son
    procesos reentrantes.
  • Algunos autores definen los procesos reentrantes
    aquellos que pueden obtener datos y memoria fuera
    de su segmento.
  • Un programa para ser concurrente necesita ser
    reentrante, pero esto al revés la implicación no
    es necesariamente cierta.

18
Procedimientos reentrantes
  • Los procesos necesitan de mecanismos de
    protección y sincronización para el uso correcto
    de los recursos.
  • Los procesos deben ser bloqueantes (es decir que
    puedan detenerse en espera de un evento) de
    preferencia para obtener una buena compartición
    de los recursos.

19
Procedimientos reentrantes
  • Los procesos deben responsabilizarse de la
    compartición de los recursos con la supervisión
    del sistema operativo, de lo contrario un proceso
    se puede adueñar de un recurso y jamás dejarlo.
  • Cuando dos o más procesos compiten por un recurso
    y este no es liberado por los dos se produce un
    interbloqueo.

20
Procedimientos reentrantes
  • Las funciones recursivas son un ejemplo claro de
    un programa reentrante por que piden memoria
    dinámica ubicada en distintas localidades de
    memoria.
  • Se debe cuidar la consistencia y la integridad de
    los recursos como meta principal.

21
2.4 Recursos compartidos asignados estáticamente
  • Cuando los procesos compartidos se cargan
    completamente en memoria desde el inicio de su
    ejecución, se dice que la compartición es
    estática. Ejemplo Rutinas del servicio de
    Interrupción del BIOS o MS-DOS

22
2.5 Recursos compartidos asignados dinámicamente
  • La compartición dinámica consiste en cargar en
    memoria solo la parte requerida de los procesos
    compartidos. Al necesitarse código que no está en
    memoria, éste será cargado durante la ejecución
    de las tareas. Ejemplo Componentes gráficos del
    sistema operativo como los cuadros de dialogo de
    Windows.

23
Métodos para la Compartición de Recursos de
Software
  • Básicamente existen dos Métodos, los cuales están
    representado por la forma de direccionamiento del
    sistema operativo
  • Segmentos Compartidos
  • Paginación Compartida  

24
Segmentación compartida
  • Consiste en que cada proceso tiene una tabla de
    segmentos asociado con su PCB (Bloque de Control
    de Procesos) el cual es utilizado por el
    despachador para definir la tabla de segmentos de
    hardware cuando a ese proceso se le asigne el
    CPU.

25
Segmentación compartida
  • Los segmentos son compartidos cuando las entradas
    en las tablas de segmentos de dos o más procesos
    diferentes apuntan a las mismas localidades de
    memoria física.

26
Segmentación compartida
  • Ejemplo Considérese el uso de un editor de
    textos de un sistema de tiempo compartido. En
    lugar de cargar 'n' copias del código del editor,
    este será cargado una sola vez. Si hay varios
    procesos que necesitan usar este código, sus
    tablas de segmento contendrán apuntadores a la
    misma dirección de memoria donde está cargado el
    código.

27
Páginas compartidas
  • Este método utiliza paginación como sistema base
    de la administración de la memoria. Consiste en
    cargar una sola instancia de las paginas de
    código a compartir y colocar apuntadores a estas
    páginas en las tablas de páginas de todos los
    procesos que utilizan el recurso.

28
Páginas compartidas
  • Ejemplo Utilizando el mismo editor de textos
    sólo las funciones utilizadas se cargan en
    memoria y están residentes en memoria por si
    otros procesos las utilizan.
  • La memoria no es la única forma de compartir
    recursos de software, existen otros mecanismos
    menos eficientes que discutiremos a continuación.

29
Mecanismos de compartición de recursos de software
  • Una forma sencilla de compartir recursos de
    software es a través de utilizar almacenamiento
    secundario archivos.
  • Un proceso escribe en un archivo y otro lo lee.
    Este es el funcionamiento de ciertos procesos
    como las tuberías.

30
Mecanismos de compartición de recursos de software
  • Un tubo es un archivo temporal que enlaza la
    salida de un programa con la entrada de otra.
  • El problema radica en cuando dos o más procesos
    quieren escribir en el archivo que simula la
    memoria compartida.

31
Mecanismos de compartición de recursos de software
  • Las tuberías en DOS o Linux pueden manejarse a
    nivel de sistema con los operadores de
    redirección lt, gt, gtgt y que redirecciona la
    salida de un programa hacia la entrada de otro.
  • Los tubos a nivel IPC se ejecutan en el núcleo
    del sistema operativo.

32
Actividad
  • Realizar un programa en C que permita obtener 10
    elementos desde la entrada estándar
    redireccionada con los flujos del sistema
    operativo y muestre por salida estándar
    direcciona a un archivo denominado salida.txt en
    una columna el número X separada por un tabulador
    X2 y hasta el final en una fila el rótulo total,
    y el resultado de la sumatoria de los elementos
    al cuadrado.

33
Mecanismos para compartir recursos de software
  • Las tuberías en POSIX (Portable Operating System
    InterconeXion) se crean a través de la siguiente
    llamada
  • int tuberia2 /Descriptor de archivos/
  • int pipe(tuberia)
  • tuberia0 /Escritura/
  • tuberia1 /Lectura/

34
Mecanismos para compartir recursos de software
  • Al dejar de utilizar una tubería, esta se debe de
    cerrar en sus dos extremos close(tubería).
  • Se escriben datos en la tubería como cualquier
    escritura de archivos con read(tuberia1,
    mensaje, strlen(mensaje)) y write(tuberia0,
    mensaje, strlen(mensaje)).

35
Mecanismos para compartir recursos de software
  • Las tuberías no son bidireccionales, sólo van en
    un sentido, pero se pueden utilizar dos tuberías
    para pasar mensajes en ambas direcciones.
  • Las tuberías utilizadas sólo están disponibles
    para los descendientes de un proceso que lo
    crean. Por este motivo, no están disponible para
    otros procesos.

36
Tarea
  • Realizar un programa en ANSI C para sistemas X
    que en un programa un usuario introduzca un valor
    y en el segundo programa se muestre dicho valor.
  • Se deberán utilizar tuberías POSIX y sincronizar
    adecuadamente dichos programas.

37
Mecanismos de compartición de recursos de software
  • Otra forma de compartir memoria es a través de
    los puertos físicos del sistema, como el puerto
    paralelo o serial. Un proceso puede escribir en
    un puerto (el cual es una dirección de memoria
    conocida) y el otro lee en esa misma dirección,
    el proceso puede ser remoto hacia un periférico.

38
Mecanismos para compartir recursos de software
  • Los puertos tienen asociados direcciones físicas,
    por ejemplo el puerto serial o de comunicaciones
    COM1 en una IBM PC tiene asociado la dirección
    física 0x3F8-0x3FF
  • Escribiendo en esa memoria todos esos datos
    pueden ser leídos por otro proceso o dispositivo.
    Otros puertos son AUX, LPT1, CON en DOS. En Linux
    se manejan otros.

39
Mecanismos de compartición de recursos de software
  • Otra forma de compartir recursos es a través de
    las variables de entorno del sistema operativo.
    Un proceso escribe un valor en una variable y
    otro proceso lo lee.
  • Las variables de entorno PATH, USER en los
    sistemas operativos tienen algún valor especial

40
Mecanismos para la compartición de recursos de
software
  • Las variables de entorno pueden ser a nivel
    usuario o sistema. A nivel usuario sólo están
    disponibles para ese usuario o terminal (no son
    accesibles por otros y por lo tanto no tan
    compartibles), a nivel sistema es global.
  • SET varhola
  • ECHO var

41
Mecanismos para compartir recursos de software
  • En sistemas Linux se cuenta con algunas
    primitivas para el acceso a variables de entorno
  • char valor getenv(TERM)
  • char var1 VARIABLEvalor
  • putenv(var1)

42
Actividad
  • Realizar un programa en ANSI C en Sistemas X que
    permita compartir un dato introducido por el
    usuario a través de una llamada a putenv() o bien
    a través del comando set, hacia otro proceso con
    la llamada al sistema getenv() o bien el comando
    echo.

43
Mecanismos de compartición de recursos de software
  • También se puede hacer la compartición en algunos
    entornos comunes a las aplicaciones como lo son
    variables de entorno de una máquina virtual como
    Java o .NET.
  • Otra compartición puede ser a través de procesos
    remotos usando sockets en máquinas dispersas
    geográficamente.

44
Mecanismos de compartición de recursos de software
  • Los sockets permiten comunicar procesos de manera
    remota. Sin embargo, existen sockets que se
    manejan local o bien, la dirección de red de un
    proceso remoto puede ser la misma máquina por lo
    que los remotos se manejan localmente.
  • Existen muchas implementaciones de Sockets las
    más conocidas la API de Berkeley (Unix y
    variantes) y los WinSocks en Windows.

45
Tarea
  • Compartir datos de un proceso en java a otro a
    través de variables compartidas de entorno a
    través de los métodos getProperty() y
    setProperty() del espacio de nombres System.
  • Qué método se utiliza en Java para ejecutar un
    comando del sistema?

46
Mecanismos de compartición de recursos de software
  • Otra forma de compartir recursos es la
    replicación, la cual hace que un pedazo de
    memoria se copie en otro. De alguna forma se
    comparten datos y recursos pero sólo es útil para
    lectura, ya que para escritura deberá
    reintegrarse el contenido siendo en muchos casos
    más complicado que compartirlo.

47
Mecanismos de compartición de recursos de software
  • En sistemas Unix una manera muy fácil de
    compartir recurso vía duplicación es a través de
    la creación de un subproceso a través de la
    llamada del sistema fork().
  • Cuando se realiza un fork, el subproceso hace una
    réplica del segmento total de proceso (datos,
    código, pila, segmento).

48
Mecanismos de compartición de recursos de software
  • include ltsys/types.hgt
  • pid_t pid
  • pid fork()
  • Los procesos pueden reemplazar esos segmentos con
    la familia de instrucciones exec.
  • Los datos compartidos duran una sóla vez.

49
Mecanismos de compartición de recursos de software
  • if (pid -1)
  • perror(Error al crear proceso)
  • else
  • if (pid 0)
  • /Proceso hijo/
  • else
  • /Proceso padre/

50
Actividad
  • Crear un programa que cree un subproceso con
    fork() en donde el proceso padre comparta el
    valor de una variable al proceso hijo, el proceso
    hijo debe modificarlo y el proceso padre debe de
    reintegrar ese valor.
  • La sincronización debe de realizarse con int pid
    wait(estado).

51
Mecanismos de compartición de recursos de software
  • Otra forma de compartir recursos de software es a
    través de mecanismos de señalamiento como paso de
    mensajes (colas), interrupciones, señales, los
    cuales son considerados mecanismos de
    sincronización y que se verán en la siguiente
    unidad.

52
Mecanismos de compartición de recursos de software
  • Aunque no es una señal un código de estado de un
    proceso puede servir para compartir información
    entre procesos.
  • Al utilizar lenguajes como C, el programador
    puede retornar un valor a otro programa vía el
    sistema operativo. Útil cuando un programa
    depende de otro.

53
Mecanismos de compartición de recursos de software
  • En Unix, la variable de entorno ? Devuelve el
    estado del último proceso, en D.O.S. es la
    variable errorlevel
  • Una forma más eficiente de terminar un proceso y
    enviar datos es a través de la función exit() y
    atexit() que cierran de forma segura el sistema

54
Mecanimos de compartición de recursos de software
  • La forma más eficiente de compartir recursos es a
    través de la memoria compartida.
  • En sistemas Unix se puede compartir memoria a
    través de las primitivas IPC. Las cuales son
  • include ltsys/shm.hgt
  • int shmget(key, size, shmflg)

55
Mecanismos de compartición de recursos de software
  • int shmid
  • if((shmid shmget(llave, 4096, IPC_CREATE
    0600)) -1)
  • /Error al crear memoria compartida/
  • int shmctl(shmid, cmd, buf)
  • cmd indica la operación la cual puede ser
    IPC_STAT, IPC_SET, IPC_RMID, SHM_LOCK, SHM_UNLOCK.

56
Mecanismos de compartición de recursos de software
  • struct shmid_s buf
  • smctl(shmid, IPC_RMID, 0)
  • char shmat(shmid, shmaddr, shmflg) /Liga/
  • int shmdt(shmaddr) /Desliga la memoria/
  • Las llaves son genéricas para todos los IPC e
    identifican de manera única dicho objeto en el
    núcleo.

57
Mecanismos de compartición de recursos de software
  • key_t llave
  • if((llave ftok(/etc/ntp.conf, A)
    (key_t)-1)
  • /Error al crear la llave/
  • ipcs se utiliza para ver los mecanismos ipc
    asignados (-q, -m, -s, -b)
  • ipcrm se utiliza para liberar recursos (-q msqid,
    -m shmid, -s semid)

58
Tarea
  • Realizar un programa que permita manipular
    matrices utilizando memoria dinámica. Se tienen
    dos procesos A y B los cuales tiene la matrices
    para la multiplicación. El proceso C realiza la
    multiplicación de las matrices y tanto A como B
    muestran el resultado de la multiplicación.
  • Fecha de entrega lunes 13 de octubre.

59
Mecanismos de compartición de recursos de software
  • Otra forma de compartir recursos de software en
    Windows consiste en utilizar mecanismos
    centralizados por el sistema operativo como lo
    son el portapapeles (Clipboard) y el registro.
  • El portapapeles es un área de memoria compartida
    que sólo puede contener un valor a la vez.

60
Mecanismos de compartición de recursos de
softtware
  • El portapapeles es de tamaño variable. Se puede
    administrar esta zona de memoria para guardar más
    datos como lo hace el portapapeles de office.
  • El registro es una base de datos de
    configuraciones del sistema. Cualquier proceso
    puede leer y actualizar el registro.

61
Compartición de recursos de Software en Windows
  • Dentro del MFC, no existen APIs directas para la
    manipulación del portapapeles, en .NET se
    encuentra con la clase Clipboard.
  • Afortunadamente existen diversas clases en
    Internet que permiten enmascarar la complejidad
    del portapapeles de la API Win32, sólo se debe
    tener en cuenta que existen métodos para
    manipular texto y otros para imágenes.

62
Compartición de recursos de software en Windows
  • Manipular el registro se hace de forma fácil
    utilizando .NET ya que cuenta con el nombre de
    espacio microsoft.win32 en la cual se cuentan con
    clases de envoltura para el manejo del registro.
  • En visual C se tiene que utilizar funciones
    como RegCreateKeyEx(), RegSetValue(),
    RegOpenKey() y RegCloseKey().

63
Compartición de recursos de software Windows
  • El término módulo describe una colección
    relacionada de código, datos y otros recursos
    (por ejemplo, mapas de bits) presentes en
    memoria. Normalmente, tal colección conformará o
    bien un único programa ejecutable o una
    biblioteca de ligado dinámico (DLL).

64
Compartición de Recursos de Software en Windows
  • Se debe tener un registro de los módulos cargados
    en cada instante, ya que dicho registro permite
    detectar que segmentos de código y recursos (como
    íconos), ya están en uso. En lugar de cargar una
    segunda copia y ocupar más memoria, Windows crea
    referencias adicionales para los recursos que ya
    están en uso.

65
Compartición de Recursos de Software
  • Durante la vida del sistema, Windows mantiene una
    cuenta de uso para cada recurso.
  • Cuando las aplicaciones hacen uso de un recurso,
    el sistema incrementa la cuenta de referencia.

66
Compartición de Recursos de Software en Windows
  • Cuando finaliza la aplicación, el sistema
    decrementa la cuenta de referencia.
  • Una cuenta de referencia con valor 0 indica que
    el recurso ya no está en uso y el sistema puede
    ocupar la memoria liberada.
  • Este esquema es utilizado por los recolectores de
    basura en lenguajes POO como Java y C.

67
Compartición de recursos de Software
  • Se implementa mediante el uso de unas estructuras
    de datos llamadas objetos de núcleo. Una
    aplicación Win32 crea, abre y maneja objetos de
    núcleo (objetos proceso, objetos suceso, objetos
    semáforo, objetos hilo, etc.) con regularidad.

68
Compartición de Recursos de Software
  • Cada objeto del núcleo es un bloque de memoria
    asignado por el Kernel y al que sólo puede
    acceder el Kernel (parecidos a los IPC de UNIX).
  • Este bloque de memoria es una estructura de datos
    cuyos elementos contienen información sobre un
    objeto.

69
Compartición de Recursos de Software
  • Dicho bloque de memoria dispone de algunos campos
    comunes a todos los tipos de objeto, por ejemplo,
    nombre del objeto, descriptor de seguridad,
    contador de utilización, etc., mientras que otros
    serán propios de cada tipo de objeto.

70
Compartición de recursos de software
  • Por ejemplo, un objeto-proceso contendrá una
    identificación del proceso, una prioridad de base
    y un código de salida, mientras que un
    objeto-archivo contendrá un desplazamiento de
    bytes, un modo de compartición y un modo de
    apertura.

71
Compartición de recursos de software
  • Las DLL se pueden crear de manera similar a lo
    que es una función estática para ello se debe de
    utilizar directivas especiales. Si se utiliza
    Visual C que hace uso de la API Win32 a través
    de la MFC (Microsoft Foundation Clasess) se
    seguirá el proceso.
  • Crear un proyecto en C (se puede escoger
    proyecto de DLL pero no es del todo necesario).

72
Compartición de Recursos de Software
  • En el archivo .cpp se agrega el modificador
    __declspec(dll) para cada método o función que se
    desea este presente en la DLL, también se pueden
    exportar datos.
  • __declspec(dll) int suma(int a, int b)
  • return ab

73
Compartición de recursos de software
  • int compartida 10
  • Si se utiliza este segmento de código (la DLL
    generada deberá ser visible al programa que la va
    a ocupar, así como tener un archivo de encabezado
    .h) se verá que los datos no son compartidos.
  • Se le tiene que indicar explícitamente que
    comparta los datos.

74
Compartición de recursos de software
  • La compartición se indica a través de las
    siguientes directivas del compilador
  • pragma data_seg(DataCom)
  • int valor 0
  • char cad30 NULL
  • pragma
  • pragma comment (linker, SECTION DataCom, rws)

75
Librerías en Linux
  • Las librerías estáticas se crean como cualquier
    programa en C, poniendo en un archivo de
    encabezado (.h) los prototipos de función y en el
    código fuente (.c) la definición de las funciones
    sin utilizar una función main
  • Después el código se debe compilar a formato de
    objeto con gcc c libreria.c libreria.o

76
Librerías en Linux
  • Después se deben crear los módulos con el comando
    ar, de la siguiente forma
  • ar r c s libreria.a librería.o
  • Con el comando nm se pueden visualizar las
    dependencias de las diferentes funciones
  • nm librería.a

77
Librerías en Linux
  • Para utilizar la librería se utiliza realiza un
    programa en el cual se incluye el archivo de
    cabecera de la librería.
  • Se debe indicar con las opciones l para indicar
    la librería (.h) y L en donde buscar la librería
    compilada
  • gcc g programa.c o programa L. -lerr

78
Librerías en Linux
  • Las librerías dinámicas tienen la extensión .so y
    son diferentes a las estáticas .a en que se
    cargan en memoria una sola vez y pueden ser
    reutilizables por otros procesos.
  • El comando ldd permite verificar que librerías
    ocupa un programa para ejecutarse. Si se utiliza
    los parámetros d y r para ver funciones y
    objetos faltantes.

79
Librerías en Linux
  • El prefijo .so viene del nombre shareable object
    (objeto compartido)
  • Las librerías dinámicas son administradas por el
    kernel del sistema.
  • Por ejemplo las librerías de C están por ejemplo
    en libc.so.5.4.46, una pequeña variación podría
    ser totalmente diferente a la otra.

80
Librerías en Linux
  • La parte fija de las librerías dinámicas recibe
    el nombre de soname, en este caso libc.
  • Los programas se relacionan en base a su libc.
    Esto se asocia a través de la utilidad ldconfig.
  • Por qué las bibliotecas dinámicas son
    incompatibles?

81
Librerías en Linux
  • Se vuelven incompatibles sobre diferentes vistas
  • han sido modificadas las interfaces de función
    exportadas
  • han sido añadidas nuevas interfaces de funciones,
  • el comportamiento de ciertas funciones varía
    respecto de su especificación original

82
Librerías en Linux
  • Para evitar la problemática de las librerías
    dinámicas se debe tener cuidado en
  • Añadir funciones con nuevos nombres en lugar de
    modificar o cambiar funcionalidad
  • Añadir estructuras de datos sólo cuando sea
    necesario
  • Las librerías dinámicas a nivel de implementación
    son iguales a las estáticas, difiere la forma de
    compilarlas.

83
Librerías en Linux
  • Para crear la librería de forma dinámica se
    siguen los siguientes pasos
  • Compilar la librería en formato objeto con la
    opción fPIC para generar Código Independiente de
    la Posición
  • gcc fPIC g c librería.c o librería.o

84
Librerías en Linux
  • No utilizar la opción fomit-frame-pointer de gcc
    para poder realizar depuración.
  • Utilizar las opciones shared soname y -Wl de
    gcc
  • gcc g shared Wl, -soname, libreria.so o
    librería.so.1.0.0.0 librería.o -lc

85
Librerías en Linux
  • Se debe enlazar la librería de C para que tenga
    su funcionalidad y no tenga problemas de
    versiones
  • ln s librería.so.1.0.0 librería.so.1
  • ln s librería.so.1.0.0 librería.so
  • Los directorios por default en donde se
    encuentras las librerías son /lib y /usr/lib

86
Librerías en Linux
  • Para utilizar una librería dinámica se utiliza de
    la misma manera que su variante estática en el
    programa
  • gcc g programa.c o programa L. lerr
  • Se debe agregar la ruta donde se encuentra la
    librería LD_LIBRARY_PATH (pwd) ./libreria

87
Referencias
  • Tutorial de Sistemas Operativos 2. Instituto
    Tecnológico de la Paz. http//sistemas.itlp.edu.mx
    /tutoriales/sistemasoperativos2/ agosto 2007
  • Tanebaum, A., Woodhull, A. (1997) Sistemas
    Operativos. Diseño e Implementación. México,
    Prentice Hall. ISBN 970-17-0165-8.

88
Referencias
  • Villegas, Cristobal. Material Curso de Sistemas
    Operativos 2 (2002). Instituto Tecnológico de
    Morelia, México.
  • Silberschatz, Abraham, Galvin, Peter, Sistemas
    Operativos, Quinta edición (1999). México,
    Pearson.

89
Referencias
  • Wall, Kurt (2000) Programación en Linux con
    Ejemplos, Pearson Buenos Aires, Argentina,
    ISBN 987-9460-09-X, pp- 299-318.

90
Preguntas?
Write a Comment
User Comments (0)
About PowerShow.com