trabajo de sistemas operativos
TRANSCRIPT
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
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
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 vector\n"; for(int x=0;x<tam;x++) std::cout<<vector[x]<<"\n";}
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.
Kernel
Actualmente OpenSUSE usa el kernel de Linux versión 3.41. 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
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.
En Linux se pueden usar varias maneras de ejecutar procesos. Una forma es por
cónsola, otra es mediante llamadas al sistema desde cualquier proceso padre2.
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.
Éstas llamadas son3:
• 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 Tanenbaum3 http://www.softpanorama.org/Internals/unix_system_calls.shtml
Sistema de Archivos
OpenSUSE, al igual que otras distribuciones Linux usa el sistema de archivos
ext4.4
Según Wikipedia5 “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
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: