S.O NUCLEO Y SISTEMA
ARCHIVOS
SISTEMAS OPERATIVOS
Un Sistema Operativo es el
programa (o software) más importante de un ordenador. Para que funcionen los
otros programas, cada ordenador de uso general debe tener un sistema operativo.
Los sistemas operativos realizan tareas básicas, tales como reconocimiento de
la conexión del teclado, enviar la información a la pantalla, no perder de
vista archivos y directorios en el disco, y controlar los dispositivos
periféricos tales como impresoras, escáner, etc.
INTÉRPRETE DE ÓRDENES
El programa principal del sistema es un intérprete de
órdenes o de comandos, es un programa informático que tiene la capacidad de
traducir las órdenes que introducen los usuarios, mediante un conjunto de
instrucciones facilitadas por él mismo directamente al núcleo y al conjunto de
herramientas que forman el sistema operativo.
FUNCIONES PRINCIPALES
DE UN SISTEMA OPERATIVO
Las cuatro grandes funciones del Sistema Operativo son:
Coordinar y manipular el hardware del computador
Organizar los archivos en diversos dispositivos de almacenamiento
Gestionar los errores de hardware
y la pérdida de datos
Encargado de brindar al usuario
una interfaz con la cual pueda operar de manera fácil todas las funciones
anteriormente descritas.
OTRAS FUNCIONES DE UN
S.O
Las distintas funciones de los
Sistemas Operativos son: Gestión de tareas, Interpretación de comandos, Control
de recursos, Manejo de dispositivos de E/S, Manejo de errores, Secuencia de
tareas, Protección, Multiacceso y Contabilidad de recursos.
ORGANIZACIÓN DE UN
SISTEMA OPERATIVO
La organización de un Sistema
Operativo está compuesta por lo siguiente:
En el primer nivel y más bajo, se
encuentra el núcleo (kernel), que es el que tiene contacto directo con los
circuitos electrónicos.
En el segundo se encuentran las
rutinas que implementan los servicios que ofrece el Sistema Operativo, como el
manejo de lo discos, el monitor, teclado y la gestión de los procesos.
En el tercero se encuentran el
gestor de la memoria y de archivos.
El cuarto, están los procesos que
permiten la comunicación del usuario con el Sistema Operativo: el caparazón
[shell] y las órdenes propias del Sistema Operativo. La comunicación sólo es
posible entre los niveles inmediatamente superior e inferior.
PROCESOS
Un proceso es simplemente, un
programa en ejecución que necesita recursos para realizar su tarea.
Estados de un Proceso
Ejecución: El
proceso está actualmente en ejecución.
Listo: El proceso está listo para ser ejecutado, sólo está esperando
que el PLANIFICADOR así lo disponga.
Espera: El
proceso no puede ejecutar hasta que no se produzca cierto suceso, como una
operación de Entrada/Salida.
Nuevo: El proceso recién fue creado y todavía no fue admitido
por el sistema operativo. En general los procesos que se encuentran en este
estado todavía no fueron cargados en la memoria principal.
Terminado: El proceso fue expulsado del grupo de procesos
ejecutables, ya sea porque terminó o por algún fallo, como un error de
protección, aritmético, etc.
MASTER BOOT RECORD
El Master Boot Record es el
primer sector ó sector cero de un dispositivo de almacenamiento de datos, como
un disco duro. A veces, se emplea para el arranque del sistema operativo con
bootstrap, otras veces es usado para almacenar una tabla de particiones y, en
ocasiones, se usa sólo para identificar un dispositivo de disco individual,
aunque en algunas máquinas esto último no se usa y es ignorado.
El Master Boot Record está compuesto por un código
ejecutable y las entradas de la tabla de particiones.
Bootstrap es un término
utilizado para describir el arranque, o proceso de inicio de cualquier
ordenador. Suele referirse al programa que arranca un sistema operativo como
por ejemplo GRUB, LiLo o NTLDR. Se ejecuta tras el proceso POST del BIOS.
También es llamado Bootstrap Loader (Cargador de inicialización).
Los 512 bytes del sector de
arranque están distribuidos de la siguiente forma:
Código maestro de carga ó Boot
Loader, tamaño 446 bytes.
Tabla de particiones, tamaño 64
bytes.
Firma o validación del MBR,
tamaño 2 bytes.
EL NÚCLEO
Un núcleo es un software que
actúa de Sistema Operativo, es el que facilita los distintos programas de
acceso seguro al hardware de la computadora, en conclusión es el encargado de
gestionar recursos a través de servicios de llamada al sistema.
Su función es garantizar la carga
y la ejecución de los procesos, las entradas/salidas y proponer una interfaz
entre el espacio núcleo y los programas del espacio del usuario.
TIPOS DE NUCLEOS
Núcleos Monolíticos: Facilitan
abstracciones del hardware subyacente realmente potentes y variadas
Núcleos Micronúcleos: Proporcionan un pequeño conjunto de
abstracciones simples del hardware, y usan las aplicaciones llamadas servidores
para ofrecer mayor funcionalidad.
Núcleos Híbridos: Son muy parecidos a los micronúcleos puros,
excepto porque incluyen código adicional en el espacio de núcleo para que se
ejecute más rápidamente.
Núcleos Exonúcleos: No facilitan ninguna abstracción, pero
permiten el uso de bibliotecas que proporcionan mayor funcionalidad gracias al
acceso directo o casi directo al hardware.
EL KERNEL
Un núcleo o kernel, es un
software que trabaja en un sistema operativo como puede ser Linux o Windows,
como hay muchos programas y el acceso al hardware es limitado, también se
encarga de decidir qué programa podrá hacer uso de un dispositivo de hardware y
durante cuánto tiempo, lo que se conoce como multiplexado. Acceder al hardware
directamente puede ser realmente complejo, por lo que los núcleos suelen
implementar una serie de abstracciones del hardware.
CONVENCIONES PARA
NOMBRAR LOS DISCOS (EN LINUX)
Linux, al igual que Windows NT,
puede instalarse en una partición primaria o en una partición lógica, en
cualquiera de los discos duros. Si la instalación no se realiza en una
partición primaria del primer disco duro, es necesario instalar un gestor de
arranque. Linux proporciona un potente gestor de arranque llamado LILO. Las
posibilidades de instalación son dos: instalarlo en la partición de Linux o en
el sector de arranque del disco duro (Master Boot Record). La primera opción es
preferible si Linux se instala en una partición primaria del primer disco duro
(debe ser la partición activa) junto a otro sistema operativo.
CARGADORES DE
ARRANQUE PARA LINUX
Es un programa sencillo, diseñado
exclusivamente para preparar todo lo que necesita el sistema operativo para
funcionar. Normalmente se utilizan los cargadores de arranque multietapas, en
los que varios programas pequeños se suman los unos a los otros, hasta que el último
de ellos carga el sistema operativo. En los ordenadores modernos, el proceso de
arranque comienza con la CPU ejecutando los programas contenidos en la memoria
ROM en una dirección predefinida (se configura la CPU para ejecutar este
programa, sin ayuda externa, al encender el ordenador).
SISTEMA DE ARCHIVOS
Los sistemas de archivos o
fichero, estructuran la información guardada en una unidad de almacenamiento
(Disco Duro) que luego será representada ya sea textual o gráficamente
utilizando un gestor de archivos. La mayoría de los sistemas operativos manejan
su propio sistema de archivos.
FUNCIONES DEL NÚCLEO
O KERNEL
Su función principal es facilitar
a diferentes programas un acceso seguro al hardware, se encarga de gestionar
recursos a través del sistema.
ARQUITECTURA DE
WINDOWS Y DE LINUX
Actualmente Linux es un núcleo
monolítico híbrido. Los controladores de dispositivos y las extensiones del
núcleo normalmente se ejecutan en un espacio privilegiado conocido como anillo
0 (ring 0), con acceso irrestricto al hardware, aunque algunos se ejecutan en espacio
de usuario. A diferencia de los núcleos monolíticos tradicionales, los
controladores de dispositivos y las extensiones al núcleo se pueden cargar y
descargar fácilmente como módulos, mientras el sistema continúa funcionando sin
interrupciones. También, a diferencia de los núcleos monolíticos tradicionales,
los controladores pueden ser prevolcados (detenidos momentáneamente por
actividades más importantes) bajo ciertas condiciones. Esta habilidad fue
agregada para gestionar correctamente interrupciones de hardware, y para
mejorar el soporte de multiprocesamiento simétrico.
COMPARACIÓN ENTRE EL NÚCLEO DE LINUX Y WINDOWS
En las discusiones típicas de
“Windows vs Linux” suelo ver como algo habitual que se limiten a facilidad de
uso, programas de terceras compañías (software, juegos, etcétera) y algo de FUD
por en medio pero nunca se comenta cosas como el núcleo, algo que suele ser muy
importante.
Diferencias:
El tamaño resultante del kernel
(sin drivers/módulos) también es exageradamente, Linux ocupa 1.3MB frente
a los 4.6MB de Windows.
El tamaño en líneas de código en
Windows aumenta en cada versión (actualmente 10 millones de líneas) de forma
exagerada aunque Linux en cada versión mete soporte para mucho hardware sin que
aumente el número tanto (4 millones actualmente) osea que no sé que pensar. El
número anterior es sin drivers, si incluimos los drivers los números se
disparan y la diferencia también (Windows 25 millones, Linux 8).
Otro dato interesante es el
tiempo de desarrollo, cada “versión menor” (en el caso de linux los 2.6.x) dura
3 meses en linux y 31 en Windows. En las versiones mayores la cosa ya se
balancea menos: Linux tarda 35 meses y Windows 38. Aquí se puede observar lo
que decía Linus Torvalds (si no me falla la memoria): lanza versiones
rápidamente, continuamente.
NOMENCLATURA DEL
KERNEL EN LINUX
El kernel de Linux (Linux) está
escrito en C y es código abierto licenciado bajo licencia GNU/GPL (excepto el
planificador de recursos, el cual pertenece a Linus Torvalds y al resto de
programadores que se han ocupado de dicha parte), con lo cual tenemos acceso al
código para su estudio y/o modificación.
La nomenclatura del Kernel se divide en 3 campos separados
por un punto
Primer campo: Número de la versión.
Segundo campo: Numero de
"sub-versión", por llamarlo de algún modo, es la versión dentro de la
propia versión, si este número es par, la versión será estable, si por el
contrario es impar, ésta será inestable.
Tercer campo: Nivel de corrección el en que se
encuentra.
TIPOS DE SOFTWARE POR
DISTRIBUCIÓN
Software Libre: Es la
denominación del software que respeta la libertad de los usuarios sobre su
producto adquirido y, por tanto, una vez obtenido puede ser usado, copiado,
estudiado, modificado y redistribuido libremente. Según la Free Software
Fundación, el software libre se refiere a la libertad de los usuarios para
ejecutar, copiar, distribuir, estudiar, modificar el software y distribuirlo
modificado.
Software Gratuito: El término
freeware define un tipo de software no libre que se distribuye sin costo,
disponible para su uso y por tiempo ilimitado siendo una variante gratuita del
shareware, en el que la meta es lograr que un usuario pruebe el producto
durante un tiempo ("trial") limitado, y si le satisface, pague por
él, habilitando toda su funcionalidad. A veces se incluye el código fuente pero
no es lo usual.
Software de Dominio Público: Es
aquel software que no requiere de licencia, pues sus derechos de explotación
son para toda la humanidad, porque pertenece a todos por igual.
SISTEMAS DE ARCHIVOS
USADOS POR S.O
Sistema operativo
|
Tipos de sistemas de archivos admitidos
|
Dos
|
FAT16
|
Windows 95
|
FAT16
|
Windows 95 OSR2
|
FAT16, FAT32
|
Windows 98
|
FAT16, FAT32
|
Windows NT4
|
FAT, NTFS (versión 4)
|
Windows 2000/XP
|
FAT, FAT16, FAT32, NTFS (versiones 4 y 5)
|
Linux
|
Ext2, Ext3, ReiserFS, Linux Swap (FAT16, FAT32, NTFS)
|
MacOS
|
HFS (Sistema de Archivos Jerárquico), MFS (Sistemas de
Archivos Macintosh)
|
OS/2
|
HPFS (Sistema de Archivos de Alto Rendimiento)
|
SGI IRIX
|
XFS
|
FreeBSD, OpenBSD
|
UFS (Sistema de Archivos Unix)
|
Sun Solaris
|
UFS (Sistema de Archivos Unix)
|
IBM AIX
|
JFS (Sistema Diario de Archivos)
|
PARTICIONES EN LINUX
Swap: Se usa para la memoria
virtual, cuyo tamaño es aproximadamente equivalente al tamaño de la memoria.
Root: / Contiene los datos
más importantes para el sistema y es el punto de montaje para otras
particiones.
Las necesidades para la partición
raíz en términos de tamaño son muy limitadas, 300MB es suficiente.
El directorio raíz: / El
directorio raíz contiene toda la jerarquía del sistema. No se puede clasificar
ya que sus subdirectorios pueden,
DIRECTORIOS USADOS EN
LINUX
/bin: archivos binarios
esenciales del sistema. Este directorio contiene los comandos básicos que
usarán todos los usuarios y son necesarios para la operación del sistema: ls,
cp, login, etc. Estático, no compartible.
/boot: contiene los archivos
que necesita el administrador de arranque de GNU/Linux (grub o LILO para las
plataformas Intel). Este puede, o no, contener al núcleo: si el núcleo no está
aquí, debe estar ubicado en el directorio raíz. Estático, no compartible.
/dev: archivos de los dispositivos del sistema (dev por
DEVices, Dispositivos). Estático
/etc: este directorio
contiene todos los archivos de configuración específicos a la máquina.
Estático
/home: contiene todos los
directorios personales de los usuarios del sistema. Este directorio puede, o
no, ser compartible (algunas redes grandes lo hacen compartible por NFS). No
estático, compartible.
/lib: este directorio
contiene las bibliotecas esenciales al sistema; también contiene los módulos
del núcleo en /lib/modules. Todas las bibliotecas que necesitan los binarios
presentes en los directorios /bin y /sbin se deben ubicar aquí, junto con el
vinculador ld.so. Estático
/mnt: directorio que
contiene los puntos de montaje para los sistemas de archivos temporales. No
estático
/opt: este directorio
contiene los paquetes que no son necesarios para la operación del sistema. Se
recomienda poner los archivos estáticos (binarios, bibliotecas, páginas de
manual, etc.) de tales paquetes en el directorio /opt/nombre_del_paquete y sus
archivos de configuración específicos para la máquina en /etc/opt.
/root: directorio personal
de root. No estático
/sbin: contiene los binarios
del sistema esenciales para el arranque del mismo, sólo utilizables por root.
Un usuario no privilegiado también puede ejecutarlos pero no llegará muy lejos.
Estático
/tmp: directorio destinado a
contener archivos temporales que pueden crear ciertos programas. No estático