1. República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Superior
Universidad “Valle del Momboy”
Valera, Estado Trujillo
Informe de Sistemas Operativos
Alumno:
Asdrúbal Iván Suárez Rivera
Cédula de Identidad: 20.655.970
2. Para el informe se utilizó la distribución OpenSUSE. La cual está basada en
Linux.
Para el primer ejercicio se pide lo siguiente:
Genere un vector aleatorio de n elementos. Sume los elementos del mismo e
imprima el resultado de esta suma.
Podemos dividir el programa en 3 etapas:
1. Entrada
2. Proceso
3. Salida
Para la Entrada tenemos:
• N (Siendo “N” el tamaño del vector)
En cuanto al proceso tenemos:
• Generación del vector de acuerdo al tamaño proporcionado
• Suma de los elementos del mismo.
Para finalmente tener en la salida:
• Resultado de la suma
3. Para implementar el ejercicio se usó el siguiente código:
Archivo vector.cpp
#include <iostream>
#include <cstdlib>
long int sumar_vector(int *,size_t);
void generar_vector(int *,size_t);
void impr_vector(int *,size_t);
int main()
{
size_t tamano;
int *vectorcito;
long int suma;
std::cout<<"Tamaño del vector: ";
std::cin>>tamano;
vectorcito = new int[tamano];
generar_vector(vectorcito,tamano);
suma = sumar_vector(vectorcito,tamano);
impr_vector(vectorcito,tamano);
std::cout<<"La suma es: "<<suma<<'n';
delete vectorcito;
return 0;
}
long int sumar_vector(int *vector,size_t tam)
{
long int ret_val = 0;
for(int x=0;x<tam;x++)
ret_val += vector[x];
return ret_val;
}
void generar_vector(int *vector,size_t tam)
{
for(int x=0;x<tam;x++)
vector[x] = std::rand() % 100;
}
void impr_vector(int *vector,size_t tam)
{
std::cout<<"Elementos del vectorn";
for(int x=0;x<tam;x++)
std::cout<<vector[x]<<"n";
}
4. Luego, se compiló usando el siguiente comando
g++ vector.cpp -g -o vector.out
Generando un ejecutable llamado “vector.out”.
Éste ejecutable se corre usando el comando
./vector.out
Generando la siguiente salida
[asdrubal@localhost sistemasoperativos]$ ./vector.out
Tamaño del vector: 5
Elementos del vector
83
86
77
15
93
La suma es: 354
Es de hacer notar que ésta salida puede ser distinta al correr otra vez el
programa. Ya que en el mismo se puede observar que hay generación de
números aleatorios.
5. Kernel
1
Actualmente OpenSUSE usa el kernel de Linux versión 3.4 . Esto se puede
comprobar usando el comando “uname -r”, dando como resultado:
[asdrubal@localhost sistemasoperativos]$ uname -r
3.4.25
¿Qué pasa al abrir cualquier programa?
En cónsola podemos abrir cualquier programa.
Supongamos que queremos abrir el editor vectorial “Inkscape”. Mediante la
cónsola ejecutamos:
[asdrubal@localhost sistemasoperativos]$ inkscape
Al presionar la tecla ENTER, éste de una vez se aparece, tal y como lo podemos
ver en la siguiente imagen:
1
http://es.opensuse.org/Caracter%C3%ADsticas_m%C3%A1s_destacadas_del_producto
6. En el administrador de tareas se puede observar el proceso abierto:
Se pueden observar entre otras cosas el consumo de CPU, ID de proceso,
memoria virtual.
Al ejecutar en la cónsola
[asdrubal@localhost sistemasoperativos]$ gimp
Sucede algo similar, con la salvedad de que en este caso, no es “Inkscape”, sino
“Gimp” el programa a ejecutar.
7. En Linux se pueden usar varias maneras de ejecutar procesos. Una forma es por
2
cónsola, otra es mediante llamadas al sistema desde cualquier proceso padre .
Anteriormente vimos como era la carga de procesos por cónsola. Ahora bien, es
posible hacerlo también mediante llamadas desde lenguaje C usando librerías
que pertenecen al estándar POSIX.
3
Éstas llamadas son :
• Fork: Para crear un proceso hijo a partir de uno padre.
• Wait: Para esperar hasta el momento en el que un proceso externo le
mande una señal al proceso que ha ejecutado ésta llamada.
• Exit: Para salir del proceso.
• Signal: Para llamar a otro proceso.
• Kill: Para matar un proceso.
Es posible matar un proceso a través de cónsola, supóngase que se abre
“Inkscape” mediante los comandos ya mencionados anteriormente.
Podemos “matar” el proceso “Inkscape” (Suponiendo que el ID del proceso es
999) usando la siguiente llamada:
[asdrubal@localhost sistemasoperativos]$ kill 999
En caso de haber sido otro el ID del proceso, sencillamente se coloca este ID.
2 “Sistemas Operativos Modernos” Andrew Tanenbaum
3
http://www.softpanorama.org/Internals/unix_system_calls.shtml
8. Sistema de Archivos
OpenSUSE, al igual que otras distribuciones Linux usa el sistema de archivos
4
ext4.
5
Según Wikipedia “Las principales mejoras son:
•Soporte de volúmenes de hasta 1024 PiB.
•Soporte añadido de extent.
•Menor uso del CPU.
•Mejoras en la velocidad de lectura y escritura.”
Intento de borrado del /home/
Al ejecutar:
[asdrubal@localhost sistemasoperativos]$ rm /home/
El sistema devuelve
Error al eliminar el archivo. Permiso denegado.
Esto debido a que /home/ pertenece a “root”.
4
https://ext4.wiki.kernel.org/index.php/Ext4_Howto#For_people_who_are_running_openSuSE
5
http://es.wikipedia.org/wiki/Ext4
9. Cambio de privilegios
Se está usando LXDE como administrador de ventanas. Es posible acceder al
administrador del sistema como root mediante el comando
[asdrubal@localhost sistemasoperativos]$ sudo lxtask
Se puede cambiar la prioridad de los procesos de la forma mostrada en la
imagen: