Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Práctica 1
1 - Qué es la Shell? Para qué sirve?
Una shell es un intérprete de comandos. Provee una interface para interactuar con el
sistema.
Una llamada a wait() bloquea el proceso de llamada hasta que uno de sus procesos
secundarios termina o se recibe una señal. Después de que finaliza el proceso hijo, el padre
continúa su ejecución después de esperar la instrucción de llamada al sistema.
El proceso hijo puede terminar debido a cualquiera de estos:
No tengo idea.
Práctica 2
Tipos de kernel:
Microkernel: Es aquel en el que las partes del kernel están protegidas de ellas
mismas, usualmente corriendo como servicios en espacio usuario. Basicamente es
tan pequeño que solo contiene mecanismos de IPC(comunicación entre procesos) y
la implementación del scheduler. Su código permite solamente el pasaje de
mensajes entre los diferentes procesos que está corriendo, todo lo demas esta en
espacio usuario.
X.Y.Z
4. ¿Cuáles son las razones por las cuáles los usuarios de GNU/Linux recompilan
sus kernels?
Las razones por las que los usuarios recompilan sus kernels son:
- Corrección de bugs
El kernel de linux se configura mediante el archivo .config, este reside en la raíz del
directorio del kernel y contiene las instrucciones de que es lo que el kernel debe
compilar.
9 - Indique que tarea realiza cada uno de los siguientes comandos durante la tarea de
configuración/compilación del kernel:
Nos provee una interfaz que nos permitirá navegar las categorías de drivers y
módulos para seleccionar los que queramos.
Compila archivos individuales por cada opción marcada con “M” durante la
configuración del kernel.
6. Una vez que el kernel fue compilado, ¿dónde queda ubicada su imagen?
¿dónde debería ser reubicada? ¿Existe algún comando que realice esta copia
en forma automática?
12. ¿Cuál es la razón por la que una vez compilado el nuevo kernel, es
necesario reconfigurar el gestor de arranque que tengamos instalado?
13. ¿Qué es un módulo del kernel? ¿Cuáles son los comandos principales para
el manejo de módulos del kernel?
14.¿Qué es un parche del kernel? ¿Cuáles son las razones principales por las
cuáles se deberían aplicar parches en el kernel? ¿A través de qué comando se
realiza la aplicación de parches en el kernel?
Están basados en archivos diff (archivos de diferencia) que indican que se debe
agregar o quitar. Permiten agregar funcionalidad. La idea es simplificar lo que es
descargar todo el código de una nueva versión, descargando solamente el archivo
de diferencia.
ejemplo:
$ cd ~/linux-4.7.2 # change to the kernel source dir
$ cd ..
Práctica 3
1. ¿Qué es una System Call?, ¿para que se utiliza?
Es el mecanismo por el cual una aplicación accede a los recursos del sistema, solicitando un
servicio al sistema operativo. Este servicio es generalmente algo que solo el kernel tiene el
privilegio de hacer.
2. ¿Para qué sirve la macro syscall?. Describa el propósito de cada uno de sus
parámetros.
Ayuda: http://www.gnu.org/software/libc/manual/html_mono/libc.html#System-Calls
A veces uno quiere hacer una system call de manera explícita y para eso la librería C para
GNU provee la función syscall. Esta rinde más cuando estás trabajando con una system call
que es especial a tu sistema o que es más nueva que la librería de C para el GNU que estés
usando.
sysno es el número de la system call. Cada system call es identificada por un número.
Todos los macros definidos para esos número están en sys/syscall.h
El resto de los parámetros son para la system call. Y el significado depende de la clase de
system call que estemos por invocar. Cada system call tiene definidos distintas cantidades
de parámetros, desde 0 a 5.
Se usa para decirle al compilador que cuando se llama a esta funcion debe buscar los
parametros en la pila y no en los registros.
Se usa al declarar una system call para informarle al compilador que al invocarse la misma,
no debe buscar los parámetros en los registros (como se hace normalmente) sino que debe
buscarlos en la pila.
Permite monitorear las system calls usadas por un determinado programa y todas las
señales que éste recibe
Conceptos Generales
1.
a. ¿Cómo se denomina en Gnu/Linux a la porción de código que se agrega al
kernel en tiempo de ejecución?
Se denomina Módulo :D
En /dev estan los archivos que representan a los dispositivos del sistema.
Encontramos links, directorios y archivos de tipo dispositivo.
Responda lo siguiente:
1. ¿Para qué sirve la estructura ssize_t y memory_fops? ¿Y las funciones
register_chrdev y unregister_chrdev?
ssize_t: Es una estructura de C para leer y escribir drivers.
memory_fops:
register_chrdev:
unregister_chrdev:
2. ¿Cómo sabe el kernel que funciones del driver invocar para leer y escribir al
dispositivo?
La struct file_operations sirve para decirle al kernel como leer y/o escribir al
dispositivo.
Práctica 4
File Systems
1. ¿Qué es un file system?
2. Describa las principales diferencias y similitudes entre los file systems: FAT, NTFS,
Ext(2,3,4), XFS y HFS+
FAT: Solo puede manejar archivos menores a 4 gbs
NTFS:
Ext2: Tiene blockgroup y tabla de inodos
Ext3: Incorpora “journaling”, que permite reparar posibles inconsistencias en el file
system
Ext4: Mejor alocación de bloques para disminuir la fragmentación e
incrementar el throughput: “persistent preallocation”, “delay
and multiple block allocation”. Uso de extents: descriptor que representa un rango
contiguo de bloques físicos.
Los archivos que aparecen en lost + found son típicamente archivos que ya estaban
desvinculados (es decir, su nombre se había borrado), pero aún estaban abiertos por
algún proceso cuando el sistema se detuvo repentinamente.
/procFS
En /proc hay información sobre procesos y otra información del sistema en una
estructura jerárquica de “archivos”.
/sysFS
12. ¿Qué archivo debería consultar si se quiere ver el mismo resultado que el
comando lsmod?
Se debe consultar el archivo /proc/modules
14. Los permisos por defecto de Linux al crear un archivo o directorio son 666 y 777
respectivamente.
Cree un nuevo archivo y analice sus permisos. ¿Es así? ¿Por qué sucede esto?
FALSO, archivo es 644 y directorio es 755
Si se borra el archivo original, con un link simbólico, este link sigue existiendo pero
apuntaría un archivo inexistente.
Si el link fuese Duro, no pasaría nada, porque el link seguirá apuntando al i-nodo en
disco, que contiene la información.
17. ¿Para qué sirven los permisos especiales en Linux? Analizar el Sticky-bit, SUID y
SGID
Sticky bit: el Sticky bit se utiliza para permitir que cualquiera pueda escribir y
modificar sobre un archivo o directorio, pero que solo su propietario o root pueda
eliminarlo.
SUID: el bit SUID activo en un archivo significa que el que lo ejecute va a tener los
mismos permisos que el que creó el archivo.
SGID: el SGID es lo mismo que en el SUID, pero a nivel de grupo.
19. Crear un archivo en el directorio /tmp. Si abre otra consola y se loguea con un
usuario distinto ¿puede borrar ese archivo? ¿Por qué? (Hint.: ver permisos especiales
en Linux)
No se puede borrar porque el dueño del archivo es otro usuario(al menos por default).
Esto se hace para hacer un uso más eficiente del espacio físico de las unidades de disco.
RAID
1. ¿Qué es un RAID? Explique las diferencias entre los distintos niveles de RAID
RAID es una técnica que permite usar múltiples discos en forma conjunta.
Raid 0:
distribuye los datos equitativamente entre dos o más discos sin información de paridad que
proporcione redundancia.
Raid 1:
- Crea una copia exacta (o espejo) de un conjunto de datos en dos o más discos.
- Capacidad (n discos): n/2.
- Es ineficiente por la escritura en espejo.
- Requiere mínimo 2 discos y siempre en cantidades pares.
Raid 5:
• Striping a nivel de bloque y paridad distribuida
• Una de las implementaciones más utilizadas
• Distribuye la información de paridad entre todos los discos del array
• 3 discos requeridos como mínimo
• Alto rendimiento. No hay cuello de botella
• No ofrece solución al fallo simultáneo de discos
Capacidad (n-1)
Raid 6
-Striping a nivel de disco y doble paridad distribuida
-Requiere 4 discos como mínimo
-Operaciones de escritura más lentas por el cálculo de doble paridad.
Capacidad (n-2)
4. ¿Por qué es necesario crear una partición extendida? Si se usase GPT, ¿sería
necesario este tipo de particiones?
GPT no tiene particiones extendidas. No sería necesario. (trae 128 particiones por defecto)
Los sistemas típicos solo necesitan un Grupo de volúmenes para contener todos los
volúmenes físicos y lógicos en el sistema. Los volúmenes físicos corresponden a discos; son
dispositivos de bloque que proporcionan el espacio para almacenar volúmenes lógicos. Los
volúmenes lógicos corresponden a particiones: contienen un sistema de archivos. Sin
embargo, a diferencia de las particiones, los volúmenes lógicos obtienen nombres en lugar
de números, pueden abarcar varios discos y no tienen que ser físicamente contiguos.
ZFS
● Pooled storage
● Copy-on-write
● Snapshots
● Data integrity verification and automatic repair
● RAID-Z
● Maximum 16 Exabyte file size
● Maximum 256 Quadrillion Zettabytes storage
Práctica 5
1. Defina virtualización. Investigue cuál fue la primer implementación que se realizó.
Es crear por software una versión virtual de algún recurso tecnológico, como
hardware, un sistema operativo, un dispositivo de almacenamiento u otros recursos
de red.
Hipervisor tipo 2
También denominado hosted, es software que se
ejecuta sobre un sistema operativo para ofrecer la
funcionalidad descrita.
(VirtualBox, vmWare, etc...)
(c) Indique por qué un hypervisor de tipo 1 no podría correr en una arquitectura
sin tecnología de virtualización. ¿Y un hypervisor de tipo 2 en hardware sin
tecnología de virtualización?
Porque… no?
Tampoco?
Las instancias se ejecutan en el espacio del usuario. Comparten el mismo kernel (el del SO
base)
Dentro de cada instancia son como máquinas virtuales. Por fuera son procesos normales del
SO.
Conceptos:
Chroot es una forma de aislar aplicaciones del resto del sistema. Cambia el directorio raíz
aparente de un proceso, afectando sólo a dicho proceso y sus procesos hijos.
Al entorno virtual creado por chroot a partir de la nueva raíz del sistema se lo conoce como
jail chroot. No se puede acceder a archivos y comandos fuera de ese directorio.
cgroups provee:
Cada proceso del sistema, solo puede pertenecer a un cgroup dentro de una jerarquía
Namespace Isolation
Permite abstraer un recurso global del sistema, para que los procesos dentro de ese
namespace piensen que tienen su propia instancia aislada de ese recurso global.
Mount Namespace: Permite aislar la tabla de montajes (montajes por namespace). Cada
proceso o conjunto de procesos, tiene una vista distinta de los puntos de montajes.
Linux Containers
Es una tecnología liviana de virtualizacion a nivel SO, que permite ejecutar varios sistemas
aislados en un unico host. Todas las instancias son ejecutadas en espacio de usuario
compartiendo el kernel del SO base (no es posible ejecutar instancias de SO con otro
kernel).
Internamente, cada instancia es una maquina virtual, pero por fuera son procesos normales
del SO.
Cada container:
- Tiene su propio nombre y dominio
- Tiene sus propias interface de red (junto con sus IPs)
- Tiene sus propios filesystems
- Tiene su propio espacio de nombre de procesos ID(PIDs) e IPC
- Provee aislación (seguridad y uso de recursos)
With:
In short: