🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #15379

Re: Llamadas al sistema

#15379
From: Fco. Javier Espejo
Date: Tue, 04 Jul 2000 00:00
77 lines
4544 bytes
> > encargan de llamar a las respectivas "llamadas al sistema", que
necesiten,
> > que son menos; en ensamblador he leido que es la int 80h (no estoy
seguro),
> > pero los parametros se pasan por pila y no por registros.
> Te equivocas... Los par�metros en linux se pasan por registros, aunque en
> llamadas complejas normalmente uno o dos de los registros es un puntero
> a una zona de memoria del proceso que contiene una estructura con un
> buen n�mero de par�metros.

Se pasan dos parametros por registro, el primero indica el servicio que se
quieres llamar, es sys_call_num, que se encuentra en la tabla
sys_call_table[], y el segundo sys_call_args son el n�mero de argumentos en
pila. Y ahora afirmo que es con int 0x80. Si realmente se pasan m�s de estos
dos, dime donde lo ves, porque yo no lo encuentro, pero puede que tengas
raz�n.

> > Si lo que quieres es llamarlas directamente, no te lo aconsejo, entre
otras
> > cosas por que pueden cambian con cada n�cleo, pero no tienes problema
porque
> > se enlanzan en memoria din�micamente, y si miras include/linux/sys.h
ver�s
> No te confundas. Si llamas con INT est�s no se enlazan ni nada. Si haces
> un ejecutable normal entonces no haces las llamadas directamente sino a
> trav�s de la libc. En este caso SI se enlazan y los par�metros se pasan
por
> la pila.
> Pero la libc trabaja al mismo nivel tu aplicaci�n. Solo facilita las
tareas
> y aumenta la compatibilidad.

A lo mejor es que no me he explicado bien. Cuando digo "se enlazan en
memoria din�micamente", quiere decir "en tiempo de ejecuci�n". JAM�S una
llamada al sistema es enlazada junto con el ejecutable, ya que eso ser�a
romper toda la protecci�n de los Sistemas Operativos, y el Hardware
existente, otra cosa es la llamada a esa "puerta de llamada", la cual va
un�da al ejecutable irremediablemente (que es la instrucci�n int de la que
hablas).

> > ten�an. Por eso cuando sale un fallo de seguridad, no tienes que
recompilar
> > todos los programas, s�lo el n�cleo que es el que corrige el fallo, por
que
> > enlaza din�micamente en tiempo de ejecuci�n.
> Esto... Depende de donde sea el error. Lo normal es que el error sea de
una
> aplicaci�n determinada (un buffer overflow o algo similar) y sea lo que
haya
> que cambiar.
> Tambi�n puede ser que sea del kernel (como lo que paso con los inferiores
> a la 2.2.16) y sea lo que haya que upgradear.

Una aplicaci�n puede tener fallos, y se corrigen cuando se encuentran. Pero
si tu haces un fork() (que es una "llamada al sistema") esperas que se cree
un proceso hijo, con los mismos datos que tiene el padre; supongamos que uno
de ellos intenta modificar una variable, y en este punto el programa falla,
por que se han modificado los datos del padre y del hijo a la vez; de quien
es la culpa del programa o de SO. Del SO, por qu�, porque como en el fork()
el segmento de datos no se copia hasta que alguno de los dos, intenta
modificarlo no ha cumplido su misi�n, esa aplicaci�n no hay que
recompilarla, ya que como las llamadas al sistema se producen en tiempo de
ejecuci�n, lo �nico que hay que hacer es corregir esa llamada al n�cleo del
SO, y todo solucionado.

No se pueden confundir los errores de un programa, con los del SO, es m�s si
programas te aconsejo mirar /usr/src/linux/include/asm-386/unistd.h y
/usr/src/linux/arch/i386/kernel/entry.S, aparte de un libro que es muy bueno
Linux kernel internals de M. Beck, H. B�hme, M. Dziadzka, U. Kunitz, R.
Magnux y D. Verworner. Aqu� encontrar�s todo sobre el n�cleo de Linux y sus
interioridades. Espero se te de mejor que a m� el ingl�s.

---------------------------------
jespejoYASABES@QUEHACERarrakis.es
�Sistemas Operativos? �Vis�tala!
http://www.arrakis.es/~jespejo
---------------------------------
Technical Details
Message-ID: <39613841_3@news.arrakis.es>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <8jna63$s7n$1@diana.bcn.ttd.net> <395f6e8c_2@news.arrakis.es> <8joa2h$b5m$2@titan.bt.es>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,5d86869c9df0a42e
X-Google-Attributes: gidf86c8,public
From: "Fco. Javier Espejo" <jespejoYASABES@QUEHACERarrakis.es>
Subject: Re: Llamadas al sistema
Date: 2000/07/04
Message-ID: <39613841_3@news.arrakis.es>
X-Deja-AN: 642059081
References: <8jna63$s7n$1@diana.bcn.ttd.net> <395f6e8c_2@news.arrakis.es> <8joa2h$b5m$2@titan.bt.es>
X-Priority: 3
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6600
X-Trace: 4 Jul 2000 03:05:05 +0100, 195.5.77.177
Organization: http://www.arrakis.es/~jespejo
X-MSMail-Priority: Normal
Newsgroups: es.comp.os.linux.programacion