Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

PDF Llamadas Al Sistema - Compress

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 5

LLAMADAS AL SISTEMA

Las llamadas al sistema proporcionan una interfaz con la que el poder de


invocar los servicios que el Sistema Operativo ofrece, rutinas
típicamente escritas en C o C++.

El intérprete de comandos
El intérprete de comandos llamado shell (concha) hace un uso intenso
de las llamadas al sistema. Cuando un usuario entra al sistema, se inicia
un shell. Una vez activado el shell espera a que el usuario emita un
coma
co mand
ndo.
o. Cu
Cuan
ando
do se em
emit
ite
e un co
coma
mand
ndoo el sh
shel
elll crea
crea un pr
proc
oces
esoo
derivado y espera a que este termine, devolviendo un estatus y un valor
de retorno.

Este intér
Este intérpr
prete
ete de co
coman
mando
dos
s no
norm
rmalm
alment
ente
e est
esta
a fue
fuera
ra del Ke
Kern
rnel
el o
núcleo, y las llamadas se hacen por niveles hacia su interior como se
muestra en algunos ejemplos mostrados mas adelante.

Llamadas al sistema
Conjunto de servicios básicos que proporciona el sistema operativo
Definen la interfaz entre un proceso y el sistema operativo.

Implementación de las llamadas al sistema

Se implementan como interrupciones software o traps.

Normalmente se proporciona una interfaz como funciones de biblioteca


de lenguajes de programación que ocultan el trap y dan la apariencia
de llamadas a procedimientos o funciones predefinidas
Definen Interfaz entre el S.O. y los programas de usuario

Dependen mucho de la máquina y en ocasiones están en código


ensamblador

Lenguajes de alto nivel tienen librerías de procedimientos que permiten


hacer llamadas al sistema

Un proceso de usuario necesita un servicio del S.O. ) llamada al


sistema ) control al S.O.

Entonces el S.O. realiza las siguientes tareas:

Determina qué quiere el proceso invocador, examinando los parámetros


ejecutará la llamada al sistema

Devuelve el control a la instrucción que está después de la llamada al


sistema

Llamada a un procedimiento especial que se ejecuta en modo Núcleo


TIPOS DE LLAMADAS A SISTEMAS
Tomado del Capítulo
Capítulo 2 del libro de Galvin Silberschatz,
Silberschatz, 7ma. Edicion

EJEMPLOS DE ALGUNAS LLAMADAS A SISTEMA

Manejo de procesos
pid = fork() - crea un proceso hijo idéntico a proceso padre
s = wait(&status) - espera a que un proceso hijo termine y determina su
condición de salida
s = execve(name,argv,envp) - sustituye la imagen esencial de un proceso
exit(status) - pone fin a la ejecución del proceso y produce la condición de
salida
Señales
oldfunc = signal(sinc,func) - arregla que alguna señal sea capturada, pasada
por alto, etc.
s = kill(pid,sig) - envia una señal a un proceso
residual = alarm(seconds) - planifica o programa una señal SIGALRM después
de cierto tiempo
s = pause() - suspende al solicitante hasta la siguiente señal

Manejo del archivo


fd = creat(name,mode) - crea un nuevo archivo o trunca uno existente
fd = mknod(name,mode,addr) - crea un nodo i especial, regular o de directorio
fd = open(file,how) - abre un archivo para lectura, escritura o ambos
s = close(fd) - cierra un archivo abierto
n = read(fd,buffer,nbytes) - lee datos de un archivo en un buffer
n = write(fd,buffer,nbytes) - escribe datos de un archivo en un buffer
pos = lseek(fd,o
lseek(fd,offset
ffset,when
,whence)
ce) - mueve el apuntador
apuntador del archivo
archivo a alguna
alguna otra
parte del archivo

Manejo del directorio y del sistema de archivos


s = link(name1,name2) - crea un nuevo registro del directorio, name2 para
name1 del archivo
s = unlink(name) - elimina una entrada del directorio
s=
s = mount(special,name,rwflag)
unmount(special) - desmonta- monta un sistema
un sistema de archivo
de archivo
s = sync() - limpia todos los bloques reservados en la memoria para el disco

Protección
s = chm
chmod(
od(nam
name,me,mode
ode)) - cambia
cambia los bits
bits de pro
protec
tecció
ción
n asocia
asociados
dos co
con
n un
archivo
uid = getuid() - determina el uid del solicitante
gid = getgid() - determina el gid del solicitante
s = setuid(uid) - fija el uid del solicitante
s = setgid(gid) - fija el gid del solicitante

Manejo del tiempo


seconds = time(&seconds) - determina el tiempo transcurrido en segs. desde el
1o. de enero de 1970
s= stime(tp) - fija el tiempo desde el 1o. de enero de 1970
s = utime(file,timep) - fija la hora del "último acceso" del archivo
s = times(buffer) - fija los tiempos del usuario
u suario y del sistema que se han usado
hasta ahora

También podría gustarte