Вы находитесь на странице: 1из 7

Benemérita Universidad

Autónoma de Puebla

Sistemas Operativos 1

Hilario Salazar Martínez

Eduardo Bravo Gutiérrez


201640330

04/09/2020
Programa 1
. Dado dos vectores(v1,v2) con 3 componentes, realizar las siguientes operaciones:

Proceso padre: a. Calcula las suma V3=v1+v2 b. Calcula La norma │v2│

Proceso hijo: c. Calcula La resta v3=v2-v1

Código Fuente
#include<unistd.h> //Fork
#include<sys/types.h> //Fork
#include<math.h>
#include<stdio.h> //print y scan
#include<stdlib.h> //exit

int main(){
int j=0,aux=0;
int v1[3]={1,2,3};
int v2[3]={3,2,1};
int v3[3]={0,0,0};
switch(fork() ){
case -1:
perror("Error al crear procesos");
exit(-1);
break;

case 0: /*Codigo del hijo */

printf("\nEste es el proceso hijo: \n");


printf("Resta: \n");
for (j=0;j<3;j++){
v3[j]=v2[j]-v1[j];
printf("El resultado de la resta es: %d\n",v3[j]);
}
break;

default: /*Codigo del padre */


printf("Este es el proceso padre: \n");
printf("Suma: \n");
for (j=0;j<3;j++){
v3[j]=v2[j]+v1[j];
printf("El resultado de la suma es: %d\n",v3[j]);
}
for (j=0;j<3;j++){
v3[j]=v2[j]*v2[j];
aux=aux+v3[j];
}
printf("La norma es: %d\n",aux);
break; } }
Programa 2
Dada como entrada una cadena(s1) y un carácter dado(c1) calcular los siguiente:
Proceso padre a. La frecuencia de c1 en s1 Proceso hijo b. La sustitución de c1 por un espacio en
blanco en s1
Código Fuente
#include<unistd.h> //Fork
#include<sys/types.h> //Fork
#include<stdio.h> //print y scan
#include<stdlib.h> //exit

int main(){
int i=0,cont=0;
char *p,a,b[30]={"Esta es la segunda tarea"};
printf("\nLa oracion es \n%s",b);
printf("\nInserte el caracter con el que deseas trabajar\n");
scanf("%c",&a);
switch(fork() ){
case -1:
perror("Error al crear procesos");
exit(-1);
break;
case 0: /*Codigo del hijo */
printf("\nEste es el proceso hijo: \n");
i=0;
while(b[i]!='\0'){
if(b[i]==a){
p=&b[i];
*p=' ';
}
i++;
}
printf("%s\n",b);
break;

default: /*Codigo del padre */


printf("Este es el proceso padre: \n");
while(b[i]!='\0'){
if(b[i]==a){
cont++;
}
i++;
}
printf("La letra aparecio %d veces\n ",cont);
break;

}
}
Programa 3
Dado un archivo de texto (t1) realizar la siguiente tarea Proceso padre: a. Lectura del t1 y mostrar
en la pantalla Proceso hijo b. Escritura de una cadena en t1 y mostrar el resultado en pantalla

Código Fuente
#include<unistd.h> //Fork
#include<stdio.h> //print y scan
#include<stdlib.h> //exit

int main(){
pid_t pid;
FILE *f;
char aux;
char aux2;
char *cadena;
printf("---Proceso pid = %d comienza---\n",getpid());

pid= fork();
if(pid>0){

printf("Soy proceso padre\n");


f=fopen("Archivo.txt","r");
if(f==NULL){
printf("no se ha podido abrir el fichero \n");
exit(1);
}

while(aux!=EOF){
aux=fgetc(f);
printf("%c",aux);
}
fclose(f);

}else if (pid==0){
printf("Soy proceso hijo\n");
f=fopen("Archivo.txt","a");
if(f==NULL){
printf("no se ha podido abrir el fichero \n");
exit(1);
}

fprintf(f,"Esta es la nueva cadena en el archivo\n ");


printf("Se ha modificado el archivo\n");
while(aux2!=EOF){
aux2=fgetc(f);
printf("%c",aux2);

}
fclose(f); }
else{
printf("error en los procesos\n");
}
return 0;
}
Programa 4
Dado dos vectores (v1,v2) con 3 componentes, realizar las siguientes operaciones Proceso padre:
a. Calcula el producto cruz V3=v1xv2
Proceso hijo: b. Calcula el producto punto v=v1•v2
Código Fuente
#include<unistd.h> //Fork
#include<sys/types.h> //Fork
#include<math.h>
#include<stdio.h> //print y scan
#include<stdlib.h> //exit

int main(){
int v1[3]={1,3,2};
int v2[3]={2,0,5};
int v3[3]={0,0,0};
int a=0,b=0,c=0;
switch(fork() ){
case -1:
perror("Error al crear procesos");
exit(-1);
break;
case 0: /*Codigo del hijo */
printf("\nEste es el proceso hijo: \n");
printf("Producto Punto: \n");
for (b=0;b<3;b++){
v3[b]=v2[b]*v1[b];
a=a+v3[b];
}
printf("El resultado es %d\n",a);
break;

default: /*Codigo del padre */


printf("Este es el proceso padre: \n");
a=(v1[1]*v2[2]-v1[2]*v2[1]);
b=(v1[2]*v2[0]-v1[0]*v2[2]);
c=(v1[0]*v2[1]-v1[1]*v2[0]);

printf("El resultado es: %d\n",a);


printf("El resultado es: %d\n",b);
printf("El resultado es: %d\n",c);
break;

}
Video de Youtube

https://youtu.be/GNgnXbDPHbU

Вам также может понравиться