# Descrittore processo Linux[Risolto]

## dursino

Salve ragazzi, ho scaricato un sorgente del Kernel per vedere un attimo come linux organizza il descrittore di processo.

Sapete in che file posso andare a parare per ottenere questa info?

GrazieLast edited by dursino on Tue Dec 21, 2010 8:47 am; edited 1 time in total

----------

## cloc3

```

ls /proc/1

```

 :Question: 

----------

## dursino

Intendo il file dove è dichiarato la struttura del descrittore di processo,dovrebbe essere tipo cosi:

```
struct task_struct {

/* these are hardcoded - don't touch */

volatile long        state;          /* -1 unrunnable, 0 runnable, >0 stopped */

long                 counter;

long                 priority;

unsigned             long signal;

unsigned             long blocked;   /* bitmap of masked signals */

unsigned             long flags;     /* per process flags, defined below */

int errno;

long                 debugreg[8];    /* Hardware debugging registers */

struct exec_domain   *exec_domain;

/* various fields */

struct linux_binfmt  *binfmt;

struct task_struct   *next_task, *prev_task;

struct task_struct   *next_run,  *prev_run;

unsigned long        saved_kernel_stack;

unsigned long        kernel_stack_page;

int                  exit_code, exit_signal;

/* ??? */

unsigned long        personality;

int                  dumpable:1;

int                  did_exec:1;

int                  pid;

int                  pgrp;

int                  tty_old_pgrp;

int                  session;

                                                                        

                                                                        

/* boolean value for session group leader */

int                  leader;

int                  groups[NGROUPS];

/*

* pointers to (original) parent process, youngest child, younger sibling,

* older sibling, respectively.  (p->father can be replaced with

* p->p_pptr->pid)

*/

struct task_struct   *p_opptr, *p_pptr, *p_cptr,

                  *p_ysptr, *p_osptr;

struct wait_queue    *wait_chldexit;
```

Comunque interessante anche la risorsa da te postata..Dove ci sono le info fondamentali dei processi presenti nel sistema

----------

## cloc3

 *dursino wrote:*   

> Intendo il file dove è dichiarato la struttura del descrittore di processo,dovrebbe essere tipo cosi:
> 
> ```
> struct task_struct {
> 
> ...

 

quelle sono dichiarazioni da cercare alla fonte, direttamente nei sorgenti:

```

s939 ~ # grep -rH "struct task_struct {" /usr/src/linux

/usr/src/linux/include/linux/sched.h:struct task_struct {

s939 ~ # 

```

----------

## dursino

Ok,l'ho trovato.

Grazie

----------

## Ic3M4n

Non so se ti possa interessare, nel senso che non so se sei agli inizi nella programmazione e vuoi avere un idea di come si comporta un kernel per determinate cose, nel caso qui trovi il link al kernel 0.1 di linux, secondo me molto più comprensibile per fasi di studio in cui è necessario capire il funzionamento generale di un kernel.

my 2 cents

----------

## dursino

Un pò di programmazione in c,c++,java assembly la conosco.

All'università ho già studiato un nucleo di sistema operativo minimale:

http://calcolatori.iet.unipi.it/deep/nuclext.tar.gz pert maggiori info.

Comunque hai fatto bene a fornirmi il kernel 0.1 .

Praticamente adesso sto studiando sistemi operativi e nel mentre leggo la teoria volevo vedere anche qualcosa di 'reale',dunque

do un occhiata al kernel linux.

Una domanda vorrei fare, che sito di riferimento avete su argomenti del tipo sistemi operativi,programmazione concorrente?

Mentre circa le reti?

Sto leggendo il libro di Kurose,Ross 5 edizione ed è veramente fatto bene.

Se non è un problema di copyright metto un link al download ,così lo leggete pure voi.

Grazie per le risposte

----------

## dursino

Ragazzi voi sapete mica se linux implementa una pila sistema unica od una per ogni processo?

Mentre la pila 'normale' quanto è grande per ogni processo?

----------

## Pes88

Per queste domande ti conviene usare questo forum : 

http://wiki.osdev.org/Main_Page

è dedicato hai sistemi operativi! 

Secondo me ti conviene analizzare una versione più avanzata di linux tipo 0.11 o 0.12 perché la 0.1 non è completamente indipendente da  minix!

----------

