SO TP LAB Gua Unificada v1 8
SO TP LAB Gua Unificada v1 8
SO TP LAB Gua Unificada v1 8
075)
2017 - Guía de Trabajos Prácticos
Introducción de contexto:
El grupo de alumnos deberá realizar la instalación y configuración de una plataforma operativa Linux, en
distribución y versión designada por el docente, pudiendo ser cualquiera que se justifique su instalación.
La instalación se desarrollará sobre una consola de máquina virtual, pudiendo ser remplazada por cualquier MV
(Máquina virtual) compatible con el SO (Sistema Operativo) anfitrión e invitado a usar. En este caso se usa y
ejemplifica sobre VMware Workstation, debido a su operatividad en múltiples plataformas de anfitriones, y la
posibilidad de operar con múltiples plataformas de invitados.
Elementos Necesarios:
Una computadora en condiciones de ejecutar la consola de máquina virtual VMware Workstation o similar.
Conocer la instalación de una consola de máquina virtual y su operación.
Acceso a Internet por parte del sistema anfitrión.
Una distribución de un SO Linux en formato ISO, compatible con la máquina virtual a usar.
Utilizar la bibliografía de la materia para realizar consultas.
1
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
2. Iniciar la creación de una nueva máquina virtual, para ello seleccionar desde el menú “File New
Virtual Machine”, o “Create a New Virtual Machine”
2
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
4. Presionar “next”.
6. Seleccionar el “tipo de Sistema Operativo a instalar”, en este caso “Linux, Ubuntu”. Presionar “next”.
3
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
8. Seleccionar la cantidad de procesadores que poseerá la máquina virtual. Para este caso: mantener las
“opciones por defecto”. Presionar “next”.
4
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
10. Seleccionar “tipo de conexión a red que usará la máquina virtual”, en este caso se usará NAT. Presionar
“next”.
11. Seleccionar “tipo de controladora para el disco duro (HD)”, usar LSI Logic. Presionar “next”.
5
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
14. Ajustar el “tamaño máximo posible para el HD” a 10GB y la seleccionar “estructura del archivo asociado”.
Presionar “next”.
Ya creamos una máquina virtual y esta ventana, indica la configuración seleccionada. Mantener los valores
seleccionados para finalizar.
Cuestionario
1. ¿Cuál es el path donde se creó el HD virtual? En que paso se definió.
2. ¿Cuál es el nombre del archivo del HD primario? En que paso se definió.
3. ¿Sobre qué tipo de bus opera el HD primario? ¿Por qué se seleccionó dicho bus? En que paso se
definió.
4. ¿Qué tipos de buses puede operar el HD? Indicar en forma breve las características principales de
cada uno.
5. ¿Cuál es su tamaño final en bytes del HD virtual utilizado? ¿Por qué no es de 10,00 GB como se
definió? ¿Por qué se definió de este tamaño? ¿Qué tamaño mínimo de archivo quedó alocado? En que
paso se definió.
6. ¿Cuál es el tamaño de memoria base? ¿De qué depende la elección de ese tamaño? En que paso se
definió.
7. ¿Cuál es la cantidad de procesadores y de núcleos asignados? En que paso se definió.
8. ¿Cuál es el nombre del controlador de audio?
9. ¿Cuál es el nombre del adaptador de red? ¿Coincide con el de la máquina real?
10. ¿Está habilitada la virtualización por hardware? ¿Qué significa esto?
7
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
2. Seleccionar “CD/DVD (IDE) “e “ISO image file”. Seleccionar archivo ubuntu-12.04.3-desktop-i386.iso que
se encuentra en el disco V. Presionar “OK”.
3. Iniciar la máquina virtual arrancando de la imagen ISO del sistema operativo designado.
En la pantalla de arranque del Ubuntu:
8
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
4. Seleccionar el lenguaje con el cual se desea instalar “español” y presionar “Instalar Ubuntu”.
9
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
Una vez seleccionado “particionamiento manual” del disco duro (HD), se deben crear por lo menos
dos particiones (raíz y de intercambio), y proceder a montarlas.
10
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
Captura4
11
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
b) Seleccionar “espacio libre”, “Añadir “, “ubicación de la partición”, “tipo de sistema de archivos a usar”
y “punto de montaje”. Completar los campos y presionar “Aceptar”.
7. Generar las particiones, para ello presionar “Instalar ahora”. En este momento se generan las particiones
en el HD y se formatean.
8. Generada las particiones necesarias continuar con el proceso de instalación del Sistema Operativo.
12
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
13
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
El sistema comenzará su instalación, mostrándonos un indicador visual del avance. Este proceso demora un
tiempo determinado que depende del tipo de máquina física y de la velocidad de conexión a internet. Este
proceso puede durar aproximadamente 30’.
12. Una vez finalizada la instalación: Presionar “Reiniciar ahora”, con lo que generaremos el primer
arranque del equipo virtual para dar por finalizada la instalación.
Cuestionario
1. En una máquina real: ¿Cuál sería el equivalente de la acción realizada en la parte 2 paso 2?
2. Enumerar los diversos tipos de conexión de HD que puede tener instalados una computadora (IDE, SATA,
etc.) y realice una breve descripción de los mismos.
¿Cuál es la denominación lógica que el SO Linux da a sus particiones? Estas fueron anotadas cuando se
realizó el paso 6. 1) c). ¿Cuántas particiones son necesarias como mínimo para instalar Linux?, ¿Cuáles
son? ¿Por qué se utiliza este sistema? ¿Conoce algún otro? En que paso se definió.
3. Describir la función de cada una de las particiones creadas, cuál es su punto de montaje y cuál es el sistema
de archivos (File System) seleccionado en cada caso. Justificando el porqué.
4. ¿Por qué no es necesario formatear la partición de swap?
5. ¿Por qué el SO en el paso 6 reporta la existencia de un HD de 10,7GB y no de 10GB como se definió al
crearlo?
14
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
6. ¿Por qué el tamaño de la partición sda1 definida no es de 9000MB como se pidió? (justifique la respuesta).
7. Durante la creación de una partición se puede elegir ubicarla al principio o al final del espacio libre del
disco, ¿cuál es la razón de esto?
8. ¿Qué cantidad de memoria de video está asignada?
9. ¿Cuál es el nombre del controlador de audio? ¿Coincide con el reportado por la consola? ¿Cuál es el
comando utilizado en Linux para obtener la información?
10. ¿Cuál es el nombre del adaptador de red? ¿Coincide con el de la máquina real? ¿Cuál es el comando
utilizado en Linux para obtener la información?
11. ¿Qué es el Kernel?
12. ¿Cuáles son las funciones del Kernel?
13. Mencione distintas versiones de Kernel Linux. ¿Cómo se las clasifica?
14. ¿Es posible tener instalado más de un Kernel en una instalación de Linux?, ¿cuál es su sentido?
15. ¿Dónde se encuentra ubicado el Kernel dentro del File System de Linux?
16. Describa qué función cumple el comando sudo, y que es “root”.
17. Explique el significado de los símbolos “#” y “$” al final del prompt.
15
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
Introducción de contexto:
El TP constará de dos partes, a saber:
a) Conocer las diversas formas de uso del compilador GCC (http://www.gnu.org/software/gcc/),
con la finalidad de obtener resultados intermedios durante el proceso de compilación.
b) Aprender a controlar desde el programa el uso de los diversos mecanismos de IPC, y ver como
se utiliza la memoria para el intercambio de información
Al finalizar cada una de las partes se deberá responder un cuestionario relacionado con la tarea
realizada.
Elementos Necesarios:
Una computadora en condiciones de ejecutar alguna distribución del SO Linux, puede ser en modo anfitrión
o modo virtual.
Disponer de un editor de texto compatible con el compilador gcc.
Disponer del compilador gcc.
Acceso a Internet.
Una computadora en condiciones de ejecutar alguna distribución del SO Linux, puede ser en modo anfitrión
o modo virtual.
Disponer de un editor de texto compatible con el compilador gcc.
Disponer del compilador gcc.
Como alternativa se puede disponer de un IDE (entorno de desarrollo integrado) para lenguaje “C”. (Geany
o similar).
Acceso a Internet.
16
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
Introducción
El GNU Compiler Collection (gcc), es un conjunto de programas que comprenden el compilador del proyecto
GNU para diversos lenguajes, ej.: ANSI C, C++, Fortran, Java, etc.
El gcc le da al programador un amplio control sobre el proceso de compilación, el cuál comprende cuatro
etapas:
Pre procesado.
Compilación.
Ensamblaje.
Vinculación.
Uno puede detener después de cualquiera de dichas etapas para examinar el rendimiento del compilador.
El gcc es también un compilador cruzado, de modo que se puede desarrollar el código en una arquitectura de
procesador y correrlo en otra.
La compilación cruzada es importante porque Linux corre en diferentes tipos de sistemas, tales como los x86
de Intel, las PowerPC, etc.
Cada chip de procesador tiene una arquitectura física diferente, de modo que la manera de construir un binario
varía para cada sistema.
Para utilizar gcc, hay que suministrar un nombre de archivo fuente de C y utilizar la opción -o para especificar el
nombre del archivo de salida.
Gcc pre procesará, compilará, ensamblará y vinculará (link) el programa, generando un archivo ejecutable, a
menudo denominado binario.
La sintaxis más simple es la siguiente:
gcc archivo_entrada.c [-o archivo_salida]
NOTA: gcc se basa en las extensiones de los archivos para determinar cómo procesar correctamente cada
archivo.
Las extensiones más comunes y sus interpretaciones se listan en la siguiente tabla:
17
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
En el primer ejercicio, habrá muchas cosas que estarán de manera encubierta, a saber:
gcc primero correrá primerGcc.c por el preprocesador, cpp, para expandir cualquier macro que pudiese
haber, e insertar los contenidos de los archivos incluidos mediante #include.
Luego compilará el código fuente pre procesado, convirtiéndolo en el código objeto.
Finalmente, el linker, ld, creará el archivo binario primerGcc.
Uno puede recrear estas etapas manualmente, avanzando por el proceso de compilación un paso por vez.
1. Para indicarle a gcc que detenga la compilación luego del pre procesado hay que utilizar la opción -E de gcc,
como se indica a continuación:
gcc -E archivo_entrada.c -o archivo_salida.cpp
2. El siguiente paso es el de compilación:
gcc -S archivo_entrada.c
3. El ensamblado transforma el programa escrito en lenguaje ensamblador a código objeto, de esta manera:
as -o archivo_salida.o archivo_entrada.s
18
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
19
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
Parte práctica
Ejercicio 1: Compilar el archivo fuente denominado primerGcc.c y ejecutarlo.
Nota: Para ejecutar el archivo se debe tipear ./primerGcc seguido de Enter.
/* primerGcc.c */
#include <stdio.h>
int main(void)
{
printf("Hola mundo.\n");
return 0;
}
Ejercicio 2: Compilar el archivo fuente denominado primerGcc.c en la forma manual paso a paso.
Obtener todos los archivos intermedios. Ejecutar el archivo final obtenido luego del proceso completo.
Cuestionario
1. Describir qué función realiza el programa primerGcc ejecutado.
2. ¿Cuáles son los archivos intermedios obtenidos al realizar el ejercicio 2? Visualizar cada uno de los
archivos intermedios y describir sus características.
a) ¿Cuál es la función específica del preprocesador?
b) ¿Cuál es la función específica del compilador?
c) ¿Cuál es la función específica del enlazador?
3. Mencione por lo menos dos circunstancias donde es necesario realizar el proceso de compilación paso a
paso.
4. Escriba la línea de comando que usaría para compilar múltiples archivos de código fuente.
Archivo 1: “segundoGcc.c”
/* segundoGcc.c */
#include <stdio.h>
int suma(int, int);
int main(void){
int a, b;
printf("Ingrese a: ");
scanf("%d", &a);
printf("Ingrese b: ");
scanf("%d", &b);
printf("La suma de %d y %d es: %d\n", a, b, suma(a,b));
return 0;
}
Archivo 2: “sumar.c”
/* sumar.c */
int suma(int a, int b){
return a + b ;
}
5. Escriba la línea de comando que usaría para compilar un archivo de código fuente cuyas bibliotecas o
inclusiones no se hallan en la ubicación estándar.
6. Por defecto el gcc vincula bibliotecas en forma dinámica y no estática,
¿qué diferencia hay entre las bibliotecas dinámicas y las estáticas?
¿cuándo conviene usar una o la otra?
¿cuál es la diferencia visible en el archivo ejecutable final?
20
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
Introducción
Las estructuras de IPC (segmentos de memoria compartidos, colas de mensajes y semáforos), existen en el
kernel como si fuesen pipes, en lugar de estar presentes en el file system, como los FIFO’s. Las estructuras IPC
son denominadas a veces en conjuntos de objetos IPC.
Los objetos de IPC permiten que puedan intercambiar datos dos procesos no relacionados entre sí.
21
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
Los procesos mapean los segmentos de memoria compartida a su propio espacio de memoria.
Archivos de
Función Descripción Prototipo
encabezado
shmget Permite crear de un int shmget(key_t key, int size, int flags)
segmento
shmat Permite utilizar un segmento, char *shmat(int shmid, char *shmaddr, int flags)
una vez creado
sys/types.h
shmdt Permite cancelar el uso del int shmdt(char *shmaddr); sys/ipc.h
segmento. Elimina el vínculo
sys/shm.h
entre el segmento adosado
en shmaddr y espacio en
memoria del proceso que
efectúo la llamada.
key: Puede ser ya sea IPC_PRIVATE o una clave retornada por la función ftok.
size: tamaño del segmento.
flags
IPC_CREATE: Indica que si aún no existe ningún segmento asociado con key deberá ser creado uno nuevo.
shmid: identificador del segmento que el proceso desea adosar. Este es retornado por la función shmget.
shmaddr: dirección de memoria la cual deberá mapear el kernel el segmento de memoria compartida. Si
shmaddr es 0, el Kernel mapeará el segmento hacia el espacio en memoria correspondiente al proceso que
efectuó la respectiva llamada.
msgsnd Permite añadir un nuevo int msgsend(int msqid, const void *ptr, size_t
mensaje al final de una cola nbytes, int flags) sys/msg.h
sys/types.h
msgrcv Permite extraer un mensaje de int msgrcv(int msqid, void *ptr, size_t nbytes,
sys/ipc.h
una cola long type, int flags)
msgctl Permite proveer de un cierto int msgctl(int msqid, int cmd, struct msqid_ds
grado de control sobre las *buf)
colas de mensajes
22
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
msqid: identificador de la cola Si la llamada resulta exitosa de msgget, retorna el nueva o existente que
corresponda al valor contenido en key.
nbytes: tamaño del mensaje
ptr: mensaje
cmd: acción. Puede adoptar uno de los siguientes valores:
IPC_RMID: Elimina la cola msquid_ds a la cola identificada como msqid.
IPC_STAT: Permite desplazarse por los mensajes contenidos en una cola sin eliminar ninguno de ellos.
IPC_SET: Permite modificar los siguientes parámetros de una cola: UID, GID, modo de acceso y el máximo
número de bytes que se permite almacenar en la misma.
Los errores de las funciones son colocados en la variable errno.
Semáforos (semaphore).
Vamos a analizar sólo la modalidad más simple de un semáforo, el semáforo binario.
Un semáforo binario puede adoptar sólo uno de dos valores: 0 cuando un recurso se encuentra bloqueado y no
debe ser accedido por otros procesos, y 1 cuando el recurso queda desbloqueado.
Los semáforos funcionan de una manera muy similar a señales de tránsito de sólo dos luces (roja y verde)
ubicadas en un cruce transitado.
Cuando un proceso necesita acceder a un recurso controlado, tal como un archivo, primero verifica el valor del
semáforo pertinente, lo mismo que un conductor verifica que una luz de tránsito este en verde.
Si un semáforo tiene un valor positivo, lo cual equivale a una luz verde para dicho acceso, el recurso asociado al
mismo se encuentra disponible, de modo que el semáforo procede a disminuir el semáforo (enciende la luz
roja), lleva a cabo sus operaciones con el recurso y luego vuelve a encender la luz verde, es decir incrementa el
valor del semáforo a fin de liberar su “bloqueo”.
Naturalmente, antes de que un proceso esté en condiciones de incrementar o disminuir un semáforo, y
suponiendo que le proceso cuente con los permisos adecuados, el semáforo debe existir.
Archivos de
Función Descripción Prototipo
encabezado
semget Permite crear un semáforo o int semget(key_t key, int nsems, int flags)
acceder a uno existente
semct Permite controlar y eliminar int semctl(int semid, int semnum, int cmd, union sys/sem.h
semáforos semun arg)
semid: identifica el conjunto de semáforos que se desea manipular.
semnum: especifica el semáforo específico que uno se encuentra interesado, en nuestro caso que siempre
será cero.
cmd: acción. Puede ser uno de los valores de la lista siguiente:
GETVAL: Retorna el estado corriente del semáforo (bloqueado o desbloqueado).
SETVAL: Establece el estado corriente del semáforo.
GETPID: Retorna el PID del último proceso que llamó a semop.
GETNCNT: permite retornar el número de procesos aguardando que el semáforo se incremente.
GETNCNT: permite retornar el número de procesos que están aguardando para que el valor del sem
sea 0.
GETALL: Retorna los valores corrientes a todos los semáforos presentes en el conjunto asociado con
semid.
IPC_RMID: Elimina el conjunto de semáforos con identificador semid.
23
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
Parte práctica
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdlib.h>
int main(void){
int identificadorSegmento;
if((identificadorSegmento = shmget(IPC_PRIVATE,TAMANO_BUF,0666)) < 0){
perror("shmget");
return 1;
}
printf("Identificador del segmento creado: %d\n", identificadorSegmento);
return 0;
}
2. Visualizar el código del programa fuente: adosar_sgtomemcomp.c , con la finalidad de ver como se aplica
la función para adosar un segmento de memoria compartido y usarlo.
/* ============================================================================
Name : adosar_sgtomemcomp.c
Author : Julian Rousselot
Reference : "Programacion en Linux con Ejemplos de Prentice Hall, Kurt Wall"
Copyright : GPL V3
Description : Adosar y elimina el segmento de memoria compartida, Ansi-style
24
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
============================================================================ */
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int main(int argc,char *argv[]){
int identificadorSegmento; //Identificador del segmento
char *buf_sgtomemcomp; //Punt. a dir. en espacio de mem. del proceso
if(argc != 2){ //En la linea de comandos se espera un identificador de segmento
puts("MODO DE EMPLEO: atshm <identificador>");
return 1;
}
identificadorSegmento = atoi(argv[1]);
25
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
26
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <unistd.h>
struct mimjebuffr {
long int tipo;
int nro;
};
struct mensaje {
long tipo_mensaje;
char texto_mensaje[TAMANO_BUF];
};
int main(void) {
int qid; // identificador_cola
key_t mjekey;
struct mimjebuffr buffer;
int longitud;
pid_t pid;
int i;
27
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
return 0;
}
//Obtener el mensajes
system ("ipcs -m");
printf("Padre - qid = %d\n", qid);
puts("Lectura de mensajes...");
for (i=0; i<10; i++) {
sleep(rand()%4);
if (msgrcv(qid, &buffer, longitud, 1,0)<0)
printf("Padre - nro de mensaje no leido: %2d\n", i+1);
else
printf("Padre - nro mensaje %2d: %d\n", i+1, buffer.nro);
}
return EXIT_SUCCESS;
}
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int main(void) {
int id;
system("ipcs -q ");
printf("Ingrese identificador de la cola: ");
scanf("%d", &id);
msgctl(id, IPC_RMID, 0);
printf("Cola eliminada. . ,\n ");
system("ipcs -q ");
return EXIT_SUCCESS;
}
28
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
29
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
Semáforos (semaphore).
1. ¿Cuál es la sintaxis del comando para visualizar los semáforos que el Kernel tiene en uso? ¿Cuál es la tabla
que genera como resultado de su ejecución? ¿Cuál es la información que por defecto proporciona el
comando ipcs sobre los semáforos?
2. Visualizar el código del programa fuente: semaforo.c, con la finalidad de ver como se aplica la función de
crear, usar y eliminar un semáforo.
/* ============================================================================
Name : semaforo.c
Author : Julian Rousselot
Version :
Copyright : GPL V3
Description : Crea y decrementa un semaforo, Ansi-style
============================================================================ */
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int identificador_semaforo;
int total_semaforos = 1; //Cuantos semaforos crear
int indicadores = 0666; //Derechos de lectura y modificacion para todos los usuarios
struct sembuf buf;
//Elimina el semaforo
if((semctl(identificador_semaforo,0,IPC_RMID)) < 0){
perror("semctl IPC_RMID");
exit(EXIT_FAILURE);
}
else{
puts("Semaforo eliminado");
system("ipcs -s");
}
exit(EXIT_SUCCESS);
}
Compilar el código fuente y ejecutarlo. Describir en detalle el funcionamiento del programa relacionándolo
con el resultado obtenido de la corrida.
30
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
31
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
32
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
Objetivos:
Elementos necesarios:
Una computadora en condiciones de ejecutar alguna distribución del SO Linux, puede ser en modo anfitrión
o modo virtual.
Una computadora en condiciones de ejecutar el SO MS Windows XP, puede ser en modo anfitrión o modo
virtual.
Disponer de la posibilidad de poder visualizar archivos PDF.
Disponer de una copia del archivo comandos_linux.pdf.
Disponer de conexión con acceso a Internet para la búsqueda de información adicional.
Utilizar la bibliografía de la materia para realizar consultas.
Introducción de contexto:
33
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
Figura 1
El KERNEL está directamente en contacto con el hardware y permite las interacciones con los dispositivos de
E/S y la unidad de administración de la memoria; además controla el acceso de la CPU a estos dispositivos.
Como se muestra en la figura 1 Existen tres niveles que son:
1. Bajo: contiene manejadores de interrupciones, los cuales son la forma principal de interactuar con los
dispositivos, y el mecanismo de despacho de bajo nivel.
2. Alto: contiene la comunicación con las llamadas al sistema (call systems).
3. Componentes principales:
a. Componente de E/S: es el responsable de interactuar con los dispositivos y realizar operaciones de
E/S de red y almacenamiento.
b. Administración de la memoria incluyen el mantenimiento de las asignaciones entre la memoria
virtual y la memoria física, el mantenimiento de una caché de páginas de acceso reciente y la
implementación de una buena directiva de reemplazo de páginas, y el proceso de traer a la memoria
nuevas páginas de código y datos necesarias, según la demanda
c. Administración de procesos es la creación y terminación de los procesos. También incluye el
planificador de procesos, que selecciona cuál proceso o hilo debe ejecutar a continuación.
34
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
Se recomienda configurar una instancia de terminal de comandos para usarla como regla, se recomienda
cambiar el tamaño de la ventana y del buffer de pantalla a 50 caracteres., para ello hacer “clic” derecho sobre
encabezado de ventana propiedades Diseño
35
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
Cuestionario
1. Relacionado al modelo conceptual básico de un SO ¿indique sobre que partes del mismo operan las
terminales de consola y tty?
2. ¿Cuál es el equivalente a la terminal de consola de Linux en el SO Windows?
3. Enumere la secuencia de comandos para la invocación en un SO Windows.
4. Operando con el SO Linux, ¿Se puede trabajar con el intérprete de comandos desde el entorno gráfico? De
ser posible, indique la secuencia para realizar dicha acción.
36
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
7. Cree el directorio dir2 y dir3 dentro del directorio prueba3. Determine cuáles son los actuales permisos del
directorio dir2, indique la secuencia de comandos utilizada.
8. Utilice la notación simbólica, elimine todos los permisos de escritura (propietario, grupo, otros) del
directorio dir2. Indique cuál es la nueva estructura de permisos y la secuencia de comandos utilizada.
9. Explique cómo realizaría la misma acción utilizando notación octal e indique como sería el comando
correspondiente.
10. Cree bajo dir2, un directorio llamado dir21. Indique la secuencia de comandos utilizada. Concédase a sí
mismo permiso de escritura en el directorio dir2 e intente de nuevo el paso anterior. Indique la secuencia
de comandos utilizada.
11. Proceda a eliminar todos los archivos/directorios creados, y deje la máquina en las condiciones originales
en la que la recibió. Indique comandos usados para poder eliminar el directorio prueba3.
Accesos
1. Utilizar el comando less para ver el contenido del archivo passwd, de la siguiente manera: less passwd.
¿Analice su contenido?
2. Utilizar el comando less para ver el contenido del archivo shadow, de la siguiente manera: sudo less
shadow. Analice su contenido e indique cuál es la función del comando sudo.
Enlaces
1. Cree un enlace simbólico a la aplicación nano que está en el directorio /usr/bin. Pruebe su correcto
funcionamiento e indique la secuencia de comandos utilizada. ¿Cuál sería el equivalente en MS Windows?
2. Cree un enlace duro a la aplicación nano que está en el directorio /usr/bin. Pruebe su correcto
funcionamiento e indique la secuencia de comandos utilizada. ¿Cuál sería el equivalente en MS Windows?
37
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
Panel de control
3. Mediante el comando msinfo32, y el panel de control obtener la siguiente información. Determinar los
recursos asociados a las operaciones entrada/salida por categoría, y dentro de la misma según dispositivo
para comunicarse con la CPU. Indicar la siguiente información según corresponda
Puertos, canales DMA.
Interrupciones.
Espacios de memoria y variables asociadas con registro de datos, estado y control.
Archivos ejecutables de comandos asociados con operaciones de I/O.
38
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
4. Otros dispositivos de E/S. Mediante la opción “Componentes” obtener la siguiente información de los
siguientes dispositivos:
a) Teclado (entrada teclado).
Descripción
5. Error y conflictos
a) Verificar utilizando: (recursos de hardware conflictos/recursos compartidos). ¿De haberlos,
mencione cuáles?
b) Verificar utilizando: (componentes recursos con problemas). ¿De haberlos, mencione cuáles?
39
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
Utilizar <comando>/?, como ayuda interna del comando o help <comando> para manual de comandos, y el
tabulador para completar los comandos o los nombres.
Cuestionario
1. Enumerar los datos informados para cada archivo informado por la interfaz gráfica y mediante el comando
de consola
2. Indicar que tamaño informa para cada archivo la columna tamaña del explorador y comando dir.
Especificar la línea de comando usado. Justificar la razón de la diferencia de valores obtenidos si la hubiera
entre la columna del explorador y el comando.
3. Indicar que propiedad del archivo informa para cada archivo la columna atributo del explorador y el
comando attrib. Especificar la línea de comando usado. Justificar la razón de la diferencia de valores
obtenidos si la hubiera entre la columna del explorador y el comando.
4. Indicar que fechas informa para cada archivo la columna de fecha del explorador y el comando dir.
Especificar la línea de comando usado. Justificar la razón de la diferencia de valores obtenidos si la hubiera
entre las columnas del explorador y el comando.
5. Medir la cantidad de caracteres que acepta el atributo nombre del archivo.
6. Renombrar un archivo de los existentes mediante el comando ren, intentando usar una cadena de 100
caracteres para el nuevo nombre. Visualizar el nombre desde el explorador, el comando dir y el que
aparece si se selecciona propiedades del archivo desde el ícono. Justificar la razón de la diferencia de
valores obtenidos si la hubiera.
Nota: Recuerde que cada línea de la terminal tiene 50 caracteres.
7. Repetir el proceso usando una cadena de 200 y 300 caracteres para el nuevo nombre. Visualizar el nombre
desde el explorador, el comando dir y el que aparece si se selecciona propiedades del archivo desde el
ícono. Justificar la razón de la diferencia de valores obtenidos si la hubiera. Mediante que parámetro del
comando dir puede observarse los nombres cortos (MSDOS formato 8.3). Cual son las reglas para
generación de nombres cortos a partir de los nombres largos.
Nota: Se recomienda buscar en la bibliografía de base como se relaciona este formato con el nuevo
extendido para nombre.
Conclusiones
En base a los elementos investigados en cada sistema operativo, indicar las diferencias
(Funcionalidades/nombres).
40
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
Ejercicios propuestos
Otros comandos
6. Investigar el uso del comando fsutil sobre un volumen NTFS. (se requieren privilegios de administrador).
7. Utilizar aplicaciones propietarias para determinar los recursos asociados a las operaciones entrada salida:
Puertos, interrupciones, canales DMA.
Archivos ejecutables de comandos asociados con operaciones de I/O.
Espacios de memoria y variables asociadas con registro de datos, estado y control.
8. Indicar y describir comandos del Shell que suministren información de dispositivos y permitan su
configuración, ejemplo comando mode.
9. Crear un archivo de comandos que almacene en un archivo el estado de los puertos de comunicaciones, la
configuración del puerto de impresora y la pantalla, fecha y hora.
41
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
Elementos Necesarios:
42
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
43
Sistemas Operativos (3.4.075)
2017 - Guía de Trabajos Prácticos
Conclusiones
En base a los elementos investigados en cada sistema operativo, indicar las diferencias
(Funcionalidades/nombres).
44