PDF de programación - Tema 1 - Introducción - Sistemas Operativos: Programación de Sistemas

Imágen de pdf Tema 1 - Introducción - Sistemas Operativos: Programación de Sistemas

Tema 1 - Introducción - Sistemas Operativos: Programación de Sistemasgráfica de visualizaciones

Actualizado el 26 de Octubre del 2020 (Publicado el 23 de Febrero del 2018)
658 visualizaciones desde el 23 de Febrero del 2018
1,4 MB
41 paginas
Creado hace 17a (10/10/2006)
Tema 1 : Introducción

Sistemas Operativos:
Programación de Sistemas

Oscar Déniz Suárez
Alexis Quesada Arencibia
Francisco J. Santana Pérez
Curso 2006-07

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

1

Concepto y definición
 Construcción de módulos orientados a:

 Aumentar la seguridad y eficiencia del sistema,

 Mejorar el entorno de desarrollo de las aplicaciones
generales, mediante facilidades que permitan una
mayor comodidad y productividad en la
programación.
mediante facilidades que controlen el acceso a los
recursos del sistema, mejoren y faciliten al usuario su
uso.
integración de nuevos recursos en el sistema.

 Aumentar la capacidad del sistema, mediante la

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

2

Llamadas al sistema/Funciones. de librería
 Se distinguen por:

 Acceso al kernel o ejecución en esp. de
usuario
 Funcionalidad
 “permanencia”o sustituibilidad

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

3

Llamadas al sistema /
Funciones. de librería

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

4

KERNELAppsLlamadas al sistemaFones. de librería Llamadas al sistema /
Funciones de librería
 Ejemplos:

 sbrk / malloc
 printf / write
 Funciones de fecha
 fork, exec / wait / system

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

5

Llamadas al sistema
 Ejemplo de llamada:
count = read(file, buffer, nbyte);
read ‑> nombre de la llamada al sistema
file ‑> fichero de donde leer
buffer ‑> zona de memoria donde colocar los datos
nbytes ‑> nº de bytes a leer
count ‑> nº de bytes leídos,

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

6

Llamadas al sistema

Ejemplo de uso del open para abrir el fichero especial
“/dev/tty” asociado con la consola asociada al proceso
# include <fcntl.h> // control y manejo de ficheros
int main (int argc, char **argv) {
/* abrimos la consola */
/* el descriptor de fichero “fd” devuelto por open es utilizado por write

int fd = open(“/dev/tty”, O_RDWR);
para escribir */
write(fd, “hola joven!\n”, 12);
exit(0);

/* cerramos el fichero */
}

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

7

Arquitectura básica de UNIX

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

8

Arquitectura básica de UNIX

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

9

Manejo de errores
 En caso de error: Las llamadas al sistema

devuelven -1 ó NULL (si la función devuelve
tipo puntero)

 Deben siempre comprobar después de una
llamada si todo es correcto, para ello Linux
proporciona una variable errno y una función
perror():

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

10

Manejo de errores

Ejemplo de programa, del uso de la variable global errno y del

procedimiento perror()

/* errores.c: lista los 53 primeros errores de llamadas al sistema */
# include <stdio.h>
main(argc,argv)
int argc;
char *argv[];
{
int i;
extern int errno;
for (i=0;i<=53;i++){
fprintf(stderr,"%3d",i);
errno=i;
perror(" ");
}
exit(0);
}

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

11

Búsqueda de información
 man sección función. Secciones en Linux:

1 = comandos de usuario

2 = llamadas al sistema, definiciones en C
3 = funciones de librería
4 = ficheros especiales
5 = ficheros de configuración
6 = juegos
8 = comandos administrativos y de mantenimiento

 Buscar ficheros con cierto texto:

grep funcion /usr/include/*.h
grep funcion /usr/include/sys/*.h

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

12

Ficheros cabecera
 Puede recurrirse a ellos para buscar

funciones y/o ver la sintaxis exacta de las
mismas

 unistd.h // standard POSIX

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

13

Normas y estándares
 ANSI C: Define sintaxis, semántica y librería
 POSIX: Portable Operating System Interface
 Definidos como un conjunto de ficheros

estándar

cabecera, con grupos de funciones
tiene alrededor de 200

llamadas al
idénticas a UNIX V7 (estándar

sistema,
POSIX) en nombre, función y parámetros.

LINUX



(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

14

Fases de la compilación

ejemplo.c

gcc

cpp

cc1

as

ld

ejemplo.i

ejemplo.s

ejemplo.o

a.out

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

15

gcc
 Opciones más importantes:

 -o = fichero ejecutable
 -c = cambia el objeto a otro nombre en vez de a.out
 -l = librería. Útiles: m, curses
 -I = directorio de include
 -L = directorio de librerías
 -g = genera información para depuración

gcc -o ejemplo ejemplo.c -lm -I /usr/fsantana/include

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

16

Depurador
 Sintaxis: gdb ejecutable
 Opciones más importantes:

 run, help, quit
 set args <argumentos>
 break <nombre_de_funcion>
 list
 step, next (no entra en las funciones), continue
 print <variable>
 where

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

17

strace
 Para ver las llamadas al sistema que

hace un programa

 Sintaxis: strace a.out

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

18

make
 Imaginemos un programa complejo

compuesto por un conjunto de módulos (cada
uno de ellos con sus respectivos ficheros
cabecera)
 pantalla.c ficheros.c bdatos.c principal.c
 pantalla.h ficheros.h bdatos.h

$gcc -c pantalla.c
$gcc -c bdatos.c
$gcc -c ficheros.c
$gcc -c principal.c
$gcc -o programa pantalla.o ficheros.o bdatos.o principal.o
// en un solo paso
$gcc -o programa pantalla.c ficheros.c bdatos.c principal.c
19

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

make
 Solución:

 Para no tener que teclear tanto cada vez que
necesito recompilar me creo un script de shell
(compila)
 Problema

 En el ejemplo anterior realizamos una pequeña
 Cuando lanzamos “compila” se compilaría todo

modificación en el programa principal (principal.c)
nuevamente

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

20

make
 Herramienta que teniendo en cuenta las
dependencias entre los módulos sólo compile
aquellos que hayan sido modificados

 Programa make
fichero makefile
un fichero ejecutable compilando sólo aquellos
módulos que hayan sufrido modificaciones

 La información de dependencias se escribe en un
 Al ejecutar make, se lee dicho fichero y se genera

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

21

make
 Dependencias de un fichero

 Conjunto de ficheros que participan directa
o indirectamente en su elaboración

 Reglas explícitas

 El programa make lee del fichero makefile
un conjunto de reglas de construcción de
ficheros

objetivo: fich1 fich2 .....

orden1
orden2

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

22

make
 Para construir un objetivo se entra la orden
 make objetivo
 Funcionamiento

y se busca la regla para construir objetivo

 Se lee el fichero makefile del directorio de trabajo
 Se aplican las reglas de dependencia, si existen
 Se ejecutan las órdenes de construcción en caso

de que:
• No existe el objetivo
• La fecha de ultima modificación de alguna de
las dependencias es posterior a la del objetivo

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

23

make
Ejemplo:

programa: principal.o pantalla.o

cc –o programa principal.o pantalla.o

principal.o: principal.c pantalla.h

cc –c principal.c

pantalla.o: pantalla.c pantalla.h

cc –c pantalla.c

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

24

make
 Otro tipo de objetivos:

...

clean:

rm programa *.o

 Comentarios con #

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

25

make
 Las macros se utilizan en make para abreviar

textos que se utilizan en varias partes del
fichero makefile

 Se declaran en cualquier parte del fichero

makefile
 nombre=texto
 Uso: $(nombre)
 Se distinguen mayúsculas de minúsculas

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

26

make
 Ejemplo con macros:

OBJ=principal.o pantalla.o
programa: $(OBJ)

cc –o programa $(OBJ)

principal.o: pantalla.h

cc –c principal.c

pantalla.o: pantalla.h

cc –c pantalla.c

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

27

make
 Si una regla no tiene dependencias se

aplica siempre

 Se pueden escribir reglas pertenecientes

a varios proyectos de software en el
mismo fichero makefile

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

28

touch
 Cambia la fecha de última modificación

del fichero

 Sintaxis: touch fichero
 El fichero será recompilado por make

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

29

Gestión de librerías - ar

(d), listar (t) y extraer miembros (x)

 Gestión de bibliotecas: crear-añadir (r), borrar
 Ejemplos de bibliotecas: libc.a, libm.a
 Extensión: .a
 Ejemplo:

gcc –c complejo.c
ar r libcomplejo.a complejo.o
...
cc principal.c libcomplejo.a
ar t libcomplejo.a

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

30

nm
 Sirve para mostrar el contenido de una

biblioteca o módulo objeto. Las funciones
que exporta

 Sintaxis: nm libcomplejo.a

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

31

ldd
 Muestra las bibliotecas compartidas que un

ejecutable necesita para funcionar:

$ ldd /usr/bin/mutt
libnsl.so.1 => /lib/libnsl.so.1 (0x40019000)
libslang.so.1 => /usr/lib/libslang.so.1
libm.so.6 => /lib/libm.so.6 (0x40072000)
libc.so.6 => /lib/libc.so.6 (0x4008f000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

(0x4002e000)

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

32

Editores
 vi
 emacs
 gedit
 xemacs
 kdevelop
 ...

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

33

Ejercicio Práctico:
“Manejo de polinomios”

 Realizar un “proyecto” que permita

realizar las operaciones de
lectura/escritura de polinomios, así como
las operaciones aritméticas de
sumar/restar/simplificar polinomios”

(c) Oscar Déniz / Alexis Quesada

/ Francisco J. Santana

34

Desarrol
  • Links de descarga
http://lwp-l.com/pdf9008

Comentarios de: Tema 1 - Introducción - Sistemas Operativos: Programación de Sistemas (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad