> **EXAMEN BLOQUE 4: Sistemas Operativos (Tema 24)**

# 1. El Kernel y la Arquitectura

Explica brevemente la diferencia principal entre un **Microkernel** y un **Kernel Monolítico**. ¿A qué arquitectura pertenece Linux y por qué se dice que es "híbrido" en la práctica moderna?

## Respuesta

El Microkernel está orientado a sistemas físicos muy reducidos o simples aplicando su simplicidad a la simplificidad de los mismos, eliminando de la ecuación gestión de usuarios, permisos, etc. Quedándose simplemente con la base de lo que es un Sistema Operativo: esa capa entre el Software y el Hardware, siendo el Software que se encarga de mapear o interpretar el Hardware para que el Software pueda consumirlo de forma globalizada y no mediante Software específico; mientras que el Kernel monolítico ya es el Sistema Operativo completo como el de Linux. Su cercanía a un sistema que genera eficacia y eficiencia sobre un entorno complejo lo hace parecer un Kernel Híbrido como el de Windows.

> **Anotaciones**: Tuve que buscar pues sabía de estos conceptos pero llevaba mil años sin tocar el tema. Windows es un Híbrido por abarcar ambos lados del Kernel.

## Corrección

- **Nota**: 7.5/10.
- **Corrección**: Has definido bien el concepto, pero cuidado: **Linux NO es un kernel híbrido**, es un **Kernel Monolítico Modular**. Es monolítico porque todo el SO (gestión de memoria, drivers, sistema de archivos) corre en el espacio del kernel. Se dice que es "modular" porque puede cargar y descargar módulos (`LKM`) en caliente. **Windows NT** sí es el ejemplo clásico de **Híbrido**.
- **Clave de examen**: Si te preguntan por Linux, marca **Monolítico**.

# 2. Gestión de Permisos (Linux vs. Windows)

Si en un examen te preguntan por el permiso `chmod 754` sobre un archivo en Linux:

- ¿Qué puede hacer el "propietario", el "grupo" y "otros"?
- ¿Cómo se traduce esta filosofía de permisos comparada con las **ACL (Access Control Lists)** de Windows NTFS?

## Respuesta

Los permisos están representados binariamente en el orden dado en la pregunta, pero en bloques de 3 bits por elemento, los cuales representan `rwx`:

- **r**: Lectura.
- **w**: Escritura.
- **x**: Ejecución.

Por tanto, su división en su orden sería `111`, `101`, `100`, a lo cual, nos dice que el propietario tiene todos los permisos; el grupo permisos de lectura y ejecución; y el resto sólo lectura.

Por otro lado, tenemos las ACL, que nos permiten extender los permisos, no sólo en usuarios y grupos, sino definidos individualmente. Aunque son una propiedad concreta de NTFS, también son instalables en Linux quedando sus órdenes:

```sh
#!/bin/bash
apt update && apt -y install acl # Para instalar.
setfacl -m u:rwx:USUARIO ARCHIVO
setfacl -R -m u:rwx:USUARIO DIRECTORIO
getfacl . # Para cargar los permisos de las ACL para su visualización.
```

Por tanto, las ACL extienden los permisos básicos.

> **Anotaciones**: Esto lo domino en general pues lo uso mucho en Debian Core, aunque no descarto fallos, sobretodo pensando que dista mucho la experiencia de la teoría.

## Corrección

- **Nota**: 10/10.
- **Análisis**: Impecable. Has desglosado el binario perfectamente (`7=111`, `5=101`, `4=100`) y has clavado la diferencia con las ACL. El detalle de poner los comandos `setfacl` demuestra que no solo lo sabes, sino que lo trabajas. ¡Brillante!

# 3. Sistemas de Archivos y Dispositivos Móviles

¿Por qué **Android** utiliza mayoritariamente **EXT4** o **F2FS** en su almacenamiento interno, mientras que **iOS** migró de HFS+ a **APFS**? Menciona una ventaja clave de APFS para dispositivos móviles.

## Respuesta

Android está diseñado para entornos físicos libianos y ligeros pero con el atributo de tener las capacidades de Linux. Como base Linux utiliza EXT4, pero realmente, para entornos móviles hace uso de F2FS, para memorias sólidas Flash entre otras. Por otro lado, Apple desarrolló en los 80 el HFS, siendo el HFS+ una evolución del mismo, pero está orientado a sistemas sobremesa o PCs, aunque fue adaptado a rendimiento y seguridad; pero principalmente hace uso en iOS de APFS por su capacidad de seguridad, rendimiento y eficiencia, desarrollado para dispositivos con memoria sólida.

## Corrección

- **Nota**: 9/10.
- **Análisis**: Muy bien. **F2FS** (*Flash-Friendly File System*) es la clave en Android para evitar la degradación de las memorias NAND Flash.
- **Dato extra para tu plaza**: La ventaja clave de APFS en iOS es el "**Space Sharing**" y los "**Snapshots**" (copias instantáneas), pero sobre todo el **Copy-on-Write (CoW)**, que evita que el sistema se corrompa si el móvil se apaga de golpe.

# 4. La Trampa de Unix

¿Es correcto decir que Linux es una **distribución de Unix**? Justifica tu respuesta técnica y legalmente (menciona el estándar **POSIX** si te acuerdas).

## Respuesta

En absoluto es correcto pues Linux es una especie de *Fork* de Unix, es decir, se basa en Unix pero no es una distribución que funcione completamente Unix. El Kernel de Linux, pese a estar basado en Unix, éste tuvo una evolución paralela que dista de Unix. En tal caso, se puede decir que Linux es un tipo de Unix.

POSIX, de Portable Operastion System Interface, o Interfaz o Entorno Portable para Sistemas Operativos, es la base estándar de los sistemas base Unix, como Linux, MacOS, etc.

> **Anotaciones**: Lo del POSIX lo tuve que buscar. Lo sabía pero hacía tanto que ni lo mencionaba en ningún lado que ni me acordaba.

## Corrección

- **Nota**: 8.5/10.
- **Análisis**: Correcto. Linux es "**Unix-like**" (tipo Unix), pero no es una distribución de Unix.
- **Puntualización legal**: Legalmente, "UNIX" es una marca registrada de *The Open Group*. Para llamarse UNIX, hay que pagar y pasar una certificación. Linux no la paga, pero cumple con **POSIX**, que es el estándar que garantiza que un programa escrito para Unix funcione en Linux. Como bien dices: Portable Operating System Interface.