PDF de programación - INTRODUCCIÓN A LAS LLAMADAS AL SISTEMA OPERATIVO UNIX

Imágen de pdf INTRODUCCIÓN A LAS LLAMADAS AL SISTEMA OPERATIVO UNIX

INTRODUCCIÓN A LAS LLAMADAS AL SISTEMA OPERATIVO UNIXgráfica de visualizaciones

Publicado el 14 de Enero del 2017
202 visualizaciones desde el 14 de Enero del 2017
59,3 KB
28 paginas
Creado hace 21a (05/02/1999)
INTRODUCCIÓN A LAS

LLAMADAS AL SISTEMA

OPERATIVO UNIX

Introducción a las llamadas al Sistema Operativo UNIX

Introducción de llamadas al sistema operativo UNIX

ÍNDICE

1.- Introducción
2.- Conceptos generales

Ficheros
Programas y procesos
Identificadores de procesos y grupos
Permisos

3.- Formato general de las llamadas al sistema
4.- Llamadas de acceso a ficheros
4.1.- Abrir un fichero (open)
4.2.- Lectura de un fichero (read)
4.3.- Escritura de un fichero (write)
4.4.- Cerrar un fichero (close)
4.5.- Posicionamiento de un fichero (lseek)
4.6.- Destruyendo entradas en los directorios (unlink)

5.- Llamadas de control de procesos

5.1.- Conceptos generales
5.2.- Ejecución de comandos (exec)
Argumentos de un programa

5.3.- Crear un proceso (fork)

5.3.1.- Programa de ejemplo de utilización de fork

5.4.- Espera de la terminación de un proceso (wait)
5.5.- Terminación de un proceso (exit)

6.- Interrupciones software: señales

6.1.- Conceptos generales
6.2.- Algunas señales
6.3.- Capturar señales (subrutina signal)

7.- Comunicación entre procesos

7.1.- Conceptos generales

7.1.1.- Redirección (subrutinas dup y dup2)

7.1.1.1.- Ejemplo de programa donde se utilice la llamada dup2

7.2.- Pipes

7.2.1.- Ejemplo de utilización de la llamada pipe

7.3.- Named pipes (FIFOs)
7.4.- System V IPCs

8.- Otras llamadas

8.1.- Obtener la hora del sistema
8.2.- Tratamiento de errores
8.3.- Otras

Bibliografía

23

Introducción a las llamadas al Sistema Operativo UNIX

1.- Introducción

En este documento se van a analizar algunas llamadas al Sistema Operativo

UNIX.

En un primer apartado, se hará un repaso de los conceptos generales de UNIX,
nombrando los tipos de ficheros que existen, definiendo programas y procesos,
los identificadores y los permisos asociados. Estos son conceptos que ya se vieron
en las prácticas de Introducción básica al Sistema Operativo UNIX a nivel de
usuario.

En apartados posteriores, se tratará el formato de las llamadas al sistema y toda
la documentación relacionada con estas llamadas. Se clasificarán en Llamadas de
acceso a ficheros, Llamadas de control de procesos, Interrupciones software:
señales, y Comunicaciones entre procesos.

24

Introducción a las llamadas al Sistema Operativo UNIX

2.- Conceptos generales

Un sistema operativo es el programa o conjunto de programas que permiten
gestionar los recursos del hardware de un sistema informático como son la
memoria, dispositivos de almacenamiento de datos, terminales, etc. Los
diferentes programas que se desarrollan en una máquina se basan en las
peticiones de servicios a dicho sistema operativo.

UNIX como sistema operativo ofrece servicios para manejar la memoria, la
planificación de los procesos, la comunicación entre los mismos, y operaciones
de entrada y salida. Los procesos o programas pueden solicitar dichos servicios
directamente al KERNEL (llamadas al sistema), o indirectamente a través de
rutinas de librería. La comodidad de utilizar el lenguaje C viene del hecho de
que se puede utilizar cualquier llamada al sistema a través de las bibliotecas de
funciones de que se dispone.

Ficheros

Los ficheros en UNIX se organizan en lo que se conoce como file systems
(sistemas de ficheros), que son agrupaciones de ficheros bien por razones físicas o
lógicas. Hay tres tipos de ficheros en UNIX:

• fichero ordinario: conjunto de bytes en un ordenamiento secuencial.
Cualquier byte de dicho ordenamiento puede ser leído y escrito. Tan solo se
puede modificar el fichero añadiendo o eliminando bytes del final del mismo.
Un fichero ordinario se identifica por un número denominado i-number. Un i-
number es un índice a una tabla de i-nodos que se mantiene al comienzo de cada
sistema de ficheros. Cada i-nodo contiene información del tipo: tipo de fichero,
propietario, grupo, permisos, etc.

• directorio: permite utilizar nombres lógicos para referirnos a todos los
ficheros. Consiste en una tabla de dos campos: el primer campo contiene el
nombre de un fichero, y el segundo campo su correspondiente i-number. Cada
registro de dicha tabla (nombre, i-number) se conoce como enlace (link). Cuando
se solicita al sistema operativo el acceso a un fichero referenciándolo por su
nombre, éste busca en un directorio para encontrar el i-number. Entonces accede
al inodo asociado, donde se encuentra la información asociada al fichero y las
direcciones de dónde se encuentra en el disco.

• fichero especial: puede ser de dos clases, FIFO y dispositivo.

FIFO (first-in-first-out queue) es un mecanismo de intercambio de datos

entre procesos.

25

Introducción a las llamadas al Sistema Operativo UNIX

Dispositivo (device) es cualquier dispositivo hardware.
Los ficheros especiales también tienen un i-nodo asociado, pero dicho i-nodo
no apunta a ningún bloque en disco donde se contienen datos sino que se hace
referencia a una tabla que usa el kernel donde se encuentran unas rutinas
llamadas driver. El driver sirve para la comunicación con los terminales. Si se
trata de un proceso de entrada de datos desde un dispositivo externo, los datos
son pasados a un interface y es el driver el que realiza un procesamiento de éstos
y entrega los datos al programa. Si por el contrario, desde el proceso se envían
los datos, el driver procesa los datos de salida y los envía al interface.

Programas y procesos

Se entiende por programa al conjunto de instrucciones y datos que se
encuentran en un fichero normal en el disco. El i-nodo asociado está marcado
como ejecutable.

Un programa en ejecución se conoce como proceso. UNIX distingue dentro de
un proceso tres regiones básicas: texto, datos y pila. Texto es el conjunto de bytes
que se interpretan como instrucciones por la CPU. Los datos son tratados por el
procedimiento definido en el programa y pila es la zona dinámica de la
memoria de un proceso que permite la implementación de rutinas y paso de
parámetros. Varios procesos pueden compartir algunas de estas regiones.

Un proceso se puede encontrar en diferentes estados, como listo para

ejecutarse (ready to run), ejecutándose (running), o durmiendo (sleeping).

El system data segment (segmento de datos del sistema) de un proceso consiste
en una serie de información que mantiene el kernel para controlar la ejecución
de los procesos. Esta información (process id, parent process id, process group id,
current directory, etc) se encuentra repartida en diferentes tablas del sistema.

Identificadores de procesos y grupos

Todos los procesos en UNIX tienen un número positivo que los identifica, el
process-ID (pid). Todos los procesos excepto algunos del sistema tienen un
proceso padre. El identificador del proceso padre se conoce con el nombre de
parent process-ID (ppid).

Si el padre de un proceso muere (termina), éste es adoptado por el proceso init

(pid=1).

26

Introducción a las llamadas al Sistema Operativo UNIX

Permisos

Cada usuario del sistema tiene asociado un número positivo llamado user ID.
Los usuarios pueden estar organizados en grupos, cada grupo tiene una
identificación conocida con el nombre de group ID.

Cuando un usuario entra en el sistema se leen los ficheros en donde se
configuran los usuarios y los grupos y se asocian al usuario las identificaciones
de usuario y grupo.

Cada fichero en su i-nodo contiene información del user ID y del group ID del
propietario. Así mismo, contiene los conjuntos de permisos que ya se indicaron
en la Introducción básica al Sistema Operativo UNIX a nivel de usuario. Estos
conjuntos de permisos son: usuario, grupo y otros, y dentro de cada uno de ellos,
permisos de lectura, escritura y ejecución.

27

Introducción a las llamadas al Sistema Operativo UNIX

3.- Formato general de las llamadas al sistema

Las llamadas al sistema se pueden usar por medio de funciones en C y todas
ellas tienen un formato común, tanto en su documentación como en la
secuencia de llamada.

Una llamada al sistema se invoca mediante una función retornando ésta
siempre un valor con información acerca del servicio que proporciona o del
error que se ha producido en su ejecución. Aunque dicho retorno puede ser
ignorado, es recomendable siempre testearlo.

Retornan un valor de -1 como indicación de que se ha producido un error en
su ejecución. Además existe una variable externa errno, donde se indica un
código de información sobre el tipo de error que se ha producido. En el archivo
de include errno.h hay declaraciones referentes a esta variable.

La variable errno no cambia de valor después de una llamada al sistema que
retorna con éxito, por tanto es importante tomar dicho valor justo después de la
llamada al sistema y únicamente cuando éstas retornan error.

El formato general de documentación de una llamada al sistema es:

CREAT(2)

SYNOPSIS

Crear un fichero nuevo.

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int creat(const char *pathname, mode_t mode);

Creat crea un fichero regular nuevo, o prepara para

volver a escribir uno ya existente.

DESCRIPTION

.......

ERRORS

ficheros.

[ENOSPC] no hay suficiente espacio en el sistema de

[EACCES] no se tiene permiso de acceso.
......

RETURN VALUE

Si no hay error retorna el file descriptor, si hay
algún error retorna un -1 y se guarda en la variable errno la
causa del error.

SEE ALSO

chmod(2), close(2),...

28

Introducción a las llamadas al Sistema Operativ
  • Links de descarga
http://lwp-l.com/pdf870

Comentarios de: INTRODUCCIÓN A LAS LLAMADAS AL SISTEMA OPERATIVO UNIX (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad