domingo, 18 de octubre de 2015

Algoritmos de Planificación.

Ver el prezi, es sencillo y bien explicado, fácil de entender.

Realizar la planificación de la siguiente lista de procesos aplicando los siguientes algoritmos:

  1. MLQF: cola1 Round Robin2 para trabajos <3; cola2 RR4 para trabajos <5 y cola3 SJF
  2. MLQ: cola1 RR4; cola2 RR2 y cola3 FCFS
ProcesosLlegadaPrioridadCPU
A03-8
B125
C21+4
D51+4
E327
F63-4

lunes, 12 de octubre de 2015

Procesos con fork() III.

1. Dime que saca por pantalla y su árbol de procesos.
      #include<stdio.h>
#include<stdlib.h>

void main() {
int i, e;
pid_t childpid;
      for(i=1; i<4; i++){
                  if ( childpid = fork() <= 0){
                             break;
                  }
                  else{
                             wait(&e);
                  }
                  printf(“este es le proceso %d con padre %d\n”, getpid(), getppid());
      }

}
2. Dime que saca por pantalla y su árbol de procesos.
     #include<stdio.h>
#include<stdlib.h>

     main()
{
int i;
for(i=0; i<4;i++)
if (fork()!=0)
break;
wait(NULL);
printf("pid=%d ppid=%d\n", getpid(), getppid());
exit(0);
}

jueves, 8 de octubre de 2015

Procesos con fork() II.

Dime que saca por pantalla este programa y su árbol de procesos.

#include<stdio.h>
#include<stdlib.h>


main()
{
int i=0;
int j=0;
int e=0;
int pid;
printf("Soy el proceso= %d y mi padre es= %d\n", getpid(),getppid());
                for(i=0;i<3;i++)
                               {
                               pid=fork();
                               wait(&e);
                               if (pid==0)
                               {
                               printf("Soy el proceso %d mi padre es%d\n", getpid(), getppid());
                                               for(j=0;j<2;j++)
                                               {
                                               pid=fork();
                                               wait(&e);
                                                               if (pid==0)
                                                              {
                                                               printf("Soy el proceso= %d mi es padre %d\n",getpid(),getppid());
                                                               break;
                                                               }
                                               }
                               break;
                               }
                               }

}

martes, 6 de octubre de 2015

Procesos con fork() I.

Dime que saca por pantalla este programa y su árbol de procesos.
#include<stdio.h>
#include<stdlib.h>
main()
{
int i, e;

pid_t pid;
printf ("Proceso %d con padre %d\n", getpid(), getppid());
for (i=1; i<4;++i)
{
pid = fork();
wait(&e);
if ( pid == 0)
                {
                                              
                 if (fork()!=0)
                               {
                                               if (fork()!=0)
                                               {
                                                               printf("Proceso con  pid=%d y padre ppid=%d\n", getpid(), getppid());
                                               }
                                               else
                                                              
                                                               printf("Proceso con pid=%d y padre ppid=%d\n", getpid(), getppid());
                               }
                else
                               {
                                               printf(" Proceso con pid=%d y padre ppid=%d\n", getpid(), getppid());      
                               }
                break;
                }
}
}

miércoles, 26 de agosto de 2015

Scripst III

Mas ejemplos para programar.

Ejercicios propuestos en los últimos exámenes

  1. Realiza un script que me devuelva el número de enlaces simbólicos del directorio actual.
  2. Realiza un script que pida por teclado una palabra. El algoritmo indica si hay el mismo número de vocales y consonantes o te indica cuál tiene más.
  3. Realiza un programa que pida un número y me devuelva todos los números hasta ese número repetidos tantas veces como indique su valor. Por ejemplo: si meto el 4, me devuelve, 1223334444.
  4. Programa que dado un nombre de grupo determine si existe en el sistema, y si es así, presente su nombre, número de grupo (GID), y lista de usuarios que pertenecen a él.

jueves, 20 de agosto de 2015

Solución Scripts I, ejercicio 4.

Solución al ejercicio numero 4:

if [ $# -eq 0 ]

then

echo tienes que pasar algún argumento, $0 directorios

exit 1

#¿por qué exit 1 y no exit 0?

#Los dos terminan o acaban el proceso, pero para finalizaciones normales mejor exit 0

#indicando al proceso padre la terminación normal del proceso hijo

#para utilizaciones incompletas del proceso o terminaciones anormales, mejor poner exit 1

fi

fecha=$(date "+Y-%m-%d")

if [ -e $fecha.lista ]

then

echo Error, el fichero lista ya existe.

exit 1

fi

for var in $*

do

if ! [ -d $var ]

then

echo Error, $var no es un directorio

exit 1

fi

done

touch $fecha.lista

for var in $*

do

echo $var>>$fecha.lista

done

#también puedes hacer: echo $*|tr " " "\n">$fecha.lista

tar cfz $fecha.tar.gz $*

martes, 9 de junio de 2015

Soluciones scripts II

Como podéis comprobar la mayoría de los ejercicios se pueden hacer de varias formas, pero recordar QUE LA ÚNICA LIMITACIÓN QUE TIENE EL PROGRAMADOR ES SU PROPIA IMAGINACIÓN.

Solución al ejercicio número 1:

También puedes poner solamente la secuencia de números pares

for var in 0 1 2 3 4 5 6 7 8 9 10 12 -- también for var in `seq 1 12;` o $(seq 1 12)

do

if [ `expr $var % 2` -eq 0 ]

then

for var2 in 0 1 2 3 4 5 6 7 8 9 10

do

echo "$var x $var2" = `expr $var \* $var2`

done

fi

read

done

Solución al ejercicio número 2:

linea="linea"

while [ ! -z "$linea" ]

do

read linea

if [ ! -z "Slinea" ]

then

numlinea=`expr $numlinea + 1`

echo " La linea numero: $numlinea del fichero es: $linea"

fi

done</home/alumno/fichero.txt

Otras formas o posibles soluciones:

  • nl fichero.txt|tr -s"\t" " "|cut -d " " -f2|tail -1
  • otra:
    • cat -n fichero.txt
    • cat fichero.txt|wc -l

Solución al ejercicio número 3:

if test $# -ne 2 –a $1 –lt $2

then

echo “Introduce solo dos números y el segundo mayor que el primero”

else

for (( i=$1; i<=$2;i++))

do

echo “$i”

done

fi

Solución al ejercicio número 4:

for var in $*

do

if [ -d $var ]

then

echo $var es un directorio

rm –ri $var

fi

if [ -f $var –a `find . –name $var –a –size +100c` ]

then

echo $var es un fichero de mas de 100 bytes

rm $var

else

echo $var no tiene 100

fi

done