elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: planificamiento de hilos en linux en: 5 Noviembre 2012, 09:42 am
claro te cuento que lo de las funciones te lo dije porque leí que a nivel programación multihilo, la planificación, así como la creación, destrucción, etc lo hace el programador. ya sea mediante una librería o mediante su programación particular.
por eso mencioné algunas funciones como esas, porque me imagino que si quiero poner un hilo a dormir y que me libere la cpu debería usar algo como 'wait'

bien, yo entiendo que por ejemplo el kernel mediante el scheduler por ejemplo use round robin para los procesos, digamos.... pero en cuanto a los hilos de un proceso cómo los planifica? osea espera a que duerma uno para proseguir con otro, o espera señales del programa (programación, ejemplo 'wait'), o el kernel interviene directamente con los hilos y los planifica por ejemplo usando algun algoritmo de prioridades.

Eso es lo que quiero saber, porque si es así que el kernel lo hace, entonces lo que yo leí que el programador debía encargarse de todo está mal, y lo leí en varios lugares. por ejemplo usando una libreria.

aparte si el kernel interviene tiene que poder reconocer que es un hilo y que es un proceso, y saber cuantos hilos hay en un proceso determinado, para poder planificarlos. algo como una lista de subprocesos, no lo se. pero yo leí que el kernel ve a un proceso en modo user como si fuera un sólo hilo, así tenga 5 o más.


son controversias que nunca me terminan de aclarar la situación. tan sólo estoy interesado en saber quien lo hace y medianamente como lo hace. porque me imagino que si es el kernel como te dije antes, entonces debería poder reconocer cuantos hilos hay en un proceso, pero como te dije, he leído que no se da cuenta de la cantidad de hilos que tiene un proceso. por eso  estaba casi convencido de que lo hacía el programador.

pero entonces surge un inconveniente, quién provoca el context switch y cómo?
porque el programador pueda usar alguna función del sistema para provocar un switch, también puede poner a dormir un hilo para poder continuar con otro por ejemplo, ese tipo de cosas son mis dudas.

lo de la biblioteca que se encarga de todo te juro que lo leí no lo estoy inventando, se dice que la librería hace todo, crea, destruye, planifica, etc
pero eso no aclara nada porque lo que quisiera saber en ese caso es como hace el kernel para hacer el switch en base a la librería y como sincronizarse en si con la librería (yo asumiía que mediante systemcalls) pero cómo el kernel reconoce los hilos de un proceso? yo leí que no notaba más de un hilo
2  Programación / Bases de Datos / Re: pregunta con SUM en access en: 4 Noviembre 2012, 19:46 pm
ok, déjenlo ya lo solucioné

3  Programación / Bases de Datos / pregunta con SUM en access en: 4 Noviembre 2012, 11:29 am
hola, estoy con el access tratando de resolver un problema, pasa que no soy experto en sql novato digamos. tengo esta consulta

Código:
SELECT Sum(StockEquipoXLocal.stock) AS Expr1, Locales.NombreLocal, Equipos.NombreEquipo
FROM SumaStock, Locales INNER JOIN (Equipos INNER JOIN StockEquipoXLocal ON Equipos.codEquipo = StockEquipoXLocal.codEquipo) ON Locales.localID = StockEquipoXLocal.localID
WHERE (((StockEquipoXLocal.codEquipo)=[@codEquipo]) AND ((StockEquipoXLocal.stock)>0));

y el access me dice:

"ha intentado ejecutar una consulta que no incluye la expresión especificada 'NombreLocal' como parte de una función de agregado"

bien, entiendo que yo quiero hacer un select de 2 campos más aparte del sum. osea quiero mostrar las 3 cosas los 3 resultados, pero sólo me deja mostrar el sum, osea de esta forma:

Código:
SELECT Sum(StockEquipoXLocal.stock) AS Expr1
FROM SumaStock, Locales INNER JOIN (Equipos INNER JOIN StockEquipoXLocal ON Equipos.codEquipo = StockEquipoXLocal.codEquipo) ON Locales.localID = StockEquipoXLocal.localID
HAVING (((StockEquipoXLocal.codEquipo)=[@codEquipo]) AND ((StockEquipoXLocal.stock)>0));


quisiera saber como hacer correctamente para poder lograr los 3 resultados. gracias
4  Programación / Programación C/C++ / Re: planificamiento de hilos en linux en: 4 Noviembre 2012, 11:19 am
me gustaron mucho sus respuestas especialmente la última ;-)
en verdad estoy interesado en los dos aspectos, primero a nivel planificación del SO. esa era mi pregunta principal.

digamos, entiendo que un algoritmo como el round robin puede usarse desde el modulo planificador del kernel a los procesos en modo usuario (sin detallar si un proceso en modo user tiene una imagen a nivel kernel). osea les asigna un cuantum a cada uno. ahora supongamos que uno de entre varios procesos de user tiene 5 hilos. bien yo preguntaba como se planifican esos 5 hilos dentro del proceso. osea quién los planifica en primer lugar, el kernel o lo debe hacer el programador manualmente usando funciones del sistema (por ejemplo wait, wake, etc)

mi pregunta es específica sobre como se realiza la planificación de los hilos dentro de un proceso. (suponiendo que tiene por ejemplo 3 o más hilos)

cómo hace el cambio de contexto de un hilo a otro, cómo se reparten los tiempos de ejecución (imagino que entre esos 5 hilos deben repartirse el cuantum asignado al proceso, y su planificación no puede salirse de ese tiempo), quién y cómo lo hace, esa es mi duda.

siempre hablando de procesos y hilos a nivel usuario no a nivel kernel.

espero sus respuestas.

5  Programación / Programación C/C++ / planificamiento de hilos en linux en: 30 Octubre 2012, 20:24 pm
estoi investigando sobre procesos en linux, quisiera saber si alguno lo sabe ya. como hace linux para planificar por ejemplo un proceso que tiene 3 hilos. no se si es el foro que va del tema pero es sobre programar en c me imagino.
hasta donde yo se para planificar procesos lo hace el kernel de linux pero los hilos estuve viendo que lo debe hacer el programador manualmente o usar una biblioteca.
eso significa que el kernel no es el que planifica los hilos de unproceso sino es como que el kernel ve al proceso como un hilo solo. si alguno sabe como se hace el planificamiento o planificacion de hilos en linux me gustaria saberlo,desde ya gracias
6  Programación / ASM / duda con parametros sin definir y saber su direccion en: 14 Agosto 2011, 05:52 am
hola de nuevo  ;D , tengo una funcion en c que lleva un parametros fijo, y luego permite mas parametros que no estan definidos ,
lo que necesito es saber con asm la direccion de esos parametros, pero aqui viene el tema de la convencion de llamada me parece  :-\ , yo en este caso quisiera saber la direccion del segundo parametro, porque yo se que se le va a pasar 1 mas, por eso digo el segundo

Código:
int AgregarRegistro(int reg_tipo, ...)
{
       void* ptrreg;
__asm eax, esp
__asm add eax,4
__asm mov ptrreg, eax

       //......
}


supongamos que la llamo asi

Código:
class Usuario reg;
AgregarRegistro(1 ,  reg);

bueno yo necesitaria saber con asm la direccion de reg, esto lo haria dentro de la propia AgregarRegistro()
alguna idea  :huh:

PS: noten que puse add 4 porque supuse que el primer parametro fijo ocupa 4 bytes,  entonces despues de ese viene el segundo osea el que quiero, pero esto no estoy seguro, por  eso pregunto

7  Programación / ASM / Re: duda add esp, 4 y crash en: 14 Agosto 2011, 05:46 am
gracias por la explicacion, voy a seguir estudiando esto. si vuelvo a tener dudas ya sabran de mi   :laugh:
8  Programación / ASM / Re: duda add esp, 4 y crash en: 13 Agosto 2011, 18:35 pm

Código:
format PE console
entry main
include 'c:\fasm\include\win32a.inc'
section '.data' data readable writeable
msg db "hello world!",0
p db "pause>nul",0

section '.code' code readable executable
main:
push ebp
mov ebp,esp
sub ebp,4
mov dword [esp],msg
call [printf]
mov dword [esp],p
call [system]
mov dword [esp],0
call [exit]

section '.idata' import data readable
library msvcrt,'msvcrt.dll'
import msvcrt,\
printf,'printf',\
system,'system',\
exit,'exit'  

mas dudas me surgieron por favor necestio comprender esto

Código:
push ebp
mov ebp,esp
sub ebp,4

el registro ebp se usa  como auxiliar de la pila para dentro de las rutinas es verdad?
entonces entiendo que mueva esp a ebp para tener una copia, y despues porque substrae 4 (DWORD)  ? :huh:


y por otro lado me  pregunto, porque guarda la direccion de msg en esp?
osea seria como hacer un push msg? pero no me queda claro
Código:
mov dword [esp],msg
call [printf]

aparte no usa add, 4 en la pila luego de llamar :huh:

9  Programación / ASM / Re: duda add esp, 4 y crash en: 13 Agosto 2011, 18:31 pm
gracias  ;-) entendi todo lo que explicaron x zuerte  :xD
si tengo mas dudas las voy a decir de nuevo
chau
10  Programación / ASM / duda add esp, 4 y crash en: 12 Agosto 2011, 05:02 am
hola ando decidio a apreder asm  :silbar:, trato de compilar este pequeño programa pero no anda (pero compila), compilado con fasm. agradeceria sus correcciones de las cosas que esten mal . mi duda primero es porque no anda y  despues tube que comentar los add esp, 4 que estaban originalmente en el codigo porque no entiendo bine su funcion, si entiendo que suma 4 (un doble palabra) a puntero pila pero no entiendo el objetivo. gracias  :-*
Código:

format pe console
entry main
include 'c:\fasm\include\win32a.inc'
section ".data" data readable writeable
 

hello db 'Hello, world!'
pausa db 'pause'

section ".code" code readable writeable

main:
 
push hello
call printf
;add esp,4
 
push pausa
call system
;add esp,4
 
mov eax,0
ret

section ".idata" import data readable
library msvcrt, "msvcrt"
import msvcrt, printf, "printf" , system, "system"

Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines