martes, 19 de abril de 2011

LINUX Y SUS PARTICIONES

Partición Swap (Swap): el espacio destinado a esta partición seguirá la ecuación S=M+2, en donde S es el espacio destinado a Swap y M es la capacidad física de la RAM. Por ejemplo, para una RAM de 3 Gb, el espacio destinado a Swap ha de ser de 5 Gb. En mi caso, para una RAM de 4 Gb físicas (sólo tres reconocibles por el sistema en 32 bits), destino 6 Gb para esta partición.

Partición raíz (/): aquí va instalado todo el sistema, con lo que es conveniente que la capacidad mínima no sea inferior a 5-10 Gb. El formateado, con Fedora 11, es en Ext4. Como se puede ver en la imagen del principio, una instalación limpia y con las actualizaciones de última hora y algunas aplicaciones ya incorporadas, como OpenOffice 3.1, Inkscape y Blender, entre otras, no ocupa más de 5 Gb en total
.




Partición de arranque (/boot): en esta partición va el núcleo del sistema. Aquí va Linux, el kernel, con todas sus letras. Cada núcleo ocupa unos 10-20 Mb con lo que, en principio, no es necesario destinar más allá de 100 Mb en total (en mi experiencia con GNU/Linux, nunca he tenido más de cuatro núcleos activos). Esta partición es incompatible con Ext4 así que no queda más remedio que configurarla como Ext3. En mi caso, he sido un poco más generoso y esta partición la he montado con 200 Mb.

Sistemas de archivos y sistema operativo


Sistemas de archivos y sistema operativo

En realidad, la elección de un sistema de archivos depende en primer lugar del sistema operativo que esté usando. Generalmente, cuanto más reciente sea el sistema operativo, mayor será el número de archivos que admita. Por esto, se necesita contar con FAT16 en DOS y en las primeras versiones de Windows 95.

Empezando por Windows 95 OSR2, usted puede elegir entre los sistemas de archivos FAT16 y FAT32. Si el tamaño de la partición es mayor a 2GB, se excluyen los sistemas de archivos FAT y usted necesitará usar el sistema FAT32 (o modificar el tamaño de la partición).

Por debajo de este límite, se recomienda FAT16 para particiones con una capacidad menor a 500Mb. De lo contrario, es preferible usar FAT32.

En el caso de Windows NT (hasta la versión 4) usted puede elegir entre el sistema FAT16 y NTFS. No se admite FAT32. Por lo general, se recomienda el sistema NTFS ya que brinda una mayor seguridad y un mejor rendimiento que el sistema FAT. Actualmente, Microsoft recomienda el uso de una partición de tipo FAT pequeña (de entre 250 y 500MB) para el sistema operativo, para poder iniciar el sistema desde un disquete DOS de arranque en caso de que ocurra una catástrofe, y el uso de una segunda partición para almacenar sus datos.

En Windows NT5, hay muchas más opciones ya que acepta particiones FAT16, FAT32 y NTFS. Nuevamente, se recomienda el sistema de archivos más reciente (NTFS 5), ya que ofrece muchas más opciones que los sistemas FAT. Por las mismas razones mencionadas anteriormente, aún puede elegir una partición del tipo FAT.

Sistema operativoTipos de sistemas de archivos admitidos
DosFAT16
Windows 95FAT16
Windows 95 OSR2FAT16, FAT32
Windows 98FAT16, FAT32
Windows NT4FAT, NTFS (versión 4)
Windows 2000/XPFAT, FAT16, FAT32, NTFS (versiones 4 y 5)
LinuxExt2, Ext3, ReiserFS, Linux Swap (FAT16, FAT32, NTFS)
MacOSHFS (Sistema de Archivos Jerárquico), MFS (Sistemas de Archivos Macintosh)
OS/2HPFS (Sistema de Archivos de Alto Rendimiento)
SGI IRIXXFS
FreeBSD, OpenBSDUFS (Sistema de Archivos Unix)
Sun SolarisUFS (Sistema de Archivos Unix)
IBM AIXJFS (Sistema Diario de Archivos)

GNU/LINUX

Se le llama de esta forma ya que el grupo de integrantes que crearon Linux le dieron el nombre de proyecto GNU.

De acuerdo, el proyecto GNU merece que se le reconozca su trabajo, pero, ¿realmente vale la pena formar tanto alboroto cuando alguien no le da ese reconocimiento? ¿Lo importante no es que el trabajo esté hecho, y no quién lo hizo? Debería relajarse, sentirse orgulloso por el trabajo realizado, y no preocuparse por el reconocimiento.




DIFERENCIAS GNU HURD Y GNU MACH





GNU Hurd.
- Es un conjunto de programas servidores que simulan un núcleo Unix que establece la base del sistema operativo GNU.


- Hurd intenta superar los núcleos tipo Unix en cuanto a funcionalidad, seguridad y estabilidad, aun manteniéndose compatible con ellos. Esto se logra gracias a que Hurd implementa la especificación POSIX (entre otras), pero eliminando las restricciones arbitrarias a los usuarios.




GNU Mach.


- Es el micronúcleo oficial del Proyecto GNU. Como cualquier otro micronúcleo, su función principal es realizar labores mínimas de administración sobre el hardware para que el grueso del sistema operativo sea operado desde el espacio del usuario.


- En la actualidad el GNU Mach sólo funciona en máquinas de arquitectura Intel de 32 bits y su uso más popular es servir de soporte a Hurd, el proyecto que pretende reemplazar a los núcleo tipo Unix en el sistema operativo libre GNU.

TIPOS DE SOFTWARE

SOFTWARE LIBRE









Mantenemos esta definición de software libre para mostrar claramente qué debe cumplir un programa de software en concreto para que se le considere software libre. De vez en cuando modificamos esta definición para clarificarla. Si quisiera revisar los cambios que hemos hecho, por favor vea la sección historial más abajo para más información.

El «software libre» es una cuestión de libertad, no de precio. Para entender el concepto, debería pensar en «libre» como en «libre expresión», no como en «barra libre».

El software libre es una cuestión de la libertad de los usuarios de ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software. Más precisamente, significa que los usuarios de programas tienen las cuatro libertades esenciales.


  • La libertad de ejecutar el programa, para cualquier propósito (libertad 0).
  • La libertad de estudiar cómo trabaja el programa, y cambiarlo para que haga lo que usted quiera (libertad 1). El acceso al código fuente es una condición necesaria para ello.
  • La libertad de redistribuir copias para que pueda ayudar al prójimo (libertad 2).
  • La libertad de distribuir copias de sus versiones modificadas a terceros (la 3ª libertad). Si lo hace, puede dar a toda la comunidad una oportunidad de beneficiarse de sus cambios. El acceso al código fuente es una condición necesaria para ello.


Un programa es software libre si los usuarios tienen todas esas libertades. Entonces, debería ser libre de redistribuir copias, tanto con o sin modificaciones, ya sea gratis o cobrando una tarifa por distribución, a cualquiera en cualquier parte. El ser libre de hacer estas cosas significa, entre otras cosas, que no tiene que pedir o pagar el permiso.

También debería tener la libertad de hacer modificaciones y usarlas en privado, en su propio trabajo u obra, sin siquiera mencionar que existen. Si publica sus cambios, no debería estar obligado a notificarlo a alguien en particular, o de alguna forma en particular.

La libertad de ejecutar el programa significa la libertad para cualquier tipo de persona u organización de usarlo en cualquier tipo de sistema de computación, para cualquier tipo de trabajo y propósito, sin estar obligado a comunicarlo a su programador, o alguna otra entidad específica. En esta libertad, el propósito de los usuarios es el que importa, no el propósito de los programadores. Como usuario es libre de ejecutar un programa para sus propósitos; y si lo distribuye a otra persona, también es libre para ejecutarlo para sus propósitos, pero usted no tiene derecho a imponerle sus propios propósitos.

La libertad de redistribuir copias debe incluir las formas binarias o ejecutables del programa, así como el código fuente; tanto para las versiones modificadas como para las no lo están. (Distribuir programas en forma de ejecutables es necesario para que los sistemas operativos libres se puedan instalar fácilmente). Resulta aceptable si no existe un modo de producir una formato binario o ejecutable para un programa específico, dado que algunos lenguajes no incorporan esa característica, pero debe tener la libertad de redistribuir dichos formatos si encontrara o programara una forma de hacerlo.

Para que la 1ª y 3ª libertad, para realizar cambios y publicar versiones mejoradas, tengan sentido; debe tener acceso al código fuente del programa. Por consiguiente, el acceso al código fuente es una condición necesaria para el software libre. El «código fuente» ofuscado no es código fuente real, y no cuenta como código fuente.

La 1ª libertad incluye la libertad de usar su versión modificada en lugar de la original. Si el programa se entrega con un producto diseñado para ejecutar versiones modificadas de terceros, pero rechaza ejecutar las suyas, una práctica conocida como «tivoization» o «arranque seguro» (en la terminología perversa de los que la practican); la 1ª libertad se convierte más en una ficción teórica que en una libertad práctica. Esto no es suficiente. En otras palabras, estos binarios no son software libre, incluso si se compilaron desde un código fuente que es libre.

Una manera importante de modificar un programa es fusionando subrutinas y módulos libres disponibles. Si la licencia del programa dice que no puede fusionar un módulo existente con una debida licencia, así como si le requiere ser el titular de los derechos de autor de lo que agregue, entonces la licencia es demasiado restrictiva para calificarla como libre.

La 3ª libertad incluye la libertad de liberar sus versiones modificadas como software libre. Una licencia también puede permitir otras formas de relicenciarlas, en otras palabras, no tiene que ser una licencia de copyleft. No obstante, una licencia que requiera que las versiones modificadas no sean libres, no se puede considerar como una licencia libre.

Para que estas libertades puedan ser reales, deben ser irrevocables siempre que usted no cometa ninguna equivocación; si el programador del software tiene el poder de revocar la licencia, o de cambiar retroactivamente sus términos, sin que usted se haya equivocado para justificarlo, el software no es libre.





SOFTWARE DE DOMINIO PUBLICO

El software de dominio público no está protegido por las leyes de derechos de autor y puede ser copiado por cualquiera sin costo alguno. Algunas veces los programadores crean un programa y lo donan para su utilización por parte del público en general. Lo anterior no quiere decir que en algún momento un usuario lo pueda copiar, modificar y distribuir como si fuera software propietario. Así mismo, existe software gratis protegido por leyes de derechos de autor que permite al usuario publicar versiones modificadas como si fueran propiedad de este último.





SOFTWARE GRATUITO

En este ultimo sencillamente quiere decir que no hay que pagar cierta suma monetaria para adquirir el software. Un ejemplo de este seria Linux ya que obtener este sistema operativo es completamente gratuito por lo único que se cobra es por revisiones por expertos.

VULNERABILIDAD WINDOWS VISTA



Una de esas fallas se encuentra en el Firewall de Windows Vista, la cual expone los servicios de red que no solamente son accesibles al internet desde la red de área local



México .- Symantec hizo un resumen de las vulnerabilidades que presenta Windows Vista, y que el corporativo de tecnología Microsoft dio a conocer en diversos boletines de seguridad para los usuarios de este sistema operativo.


En un comunicado, el proveedor de soluciones de seguridad como Norton Antivirus, informó que una de esas fallas se encuentra en el Firewall de Windows Vista, la cual expone los servicios de red que no solamente son accesibles al internet desde la red de área local.


Otra falla fue identificada en Excel, donde surge un problema de negación del servicio que sería aprovechado con la trampa al usuario para que abra un archivo malicioso.


Asimismo, está la vulnerabilidad en .NET Framework, donde existen dos grietas que permitirían dañarle desde una página web maliciosa.


Además existe otra vulnerabilidad en el directorio activo de Windows, la cual permitiría a un atacante para ejecutar códigos a distancia y controlar al equipo.


NÚCLEO DE WINDOWS 7 Y NOMENCLATURA DEL KERNEL EN LINUX

El núcleo de Windows 7 al descubierto
Windows 7 es el nombre seguramente provisional con el que han bautizado en Redmon como sucesor del actual Windows Vista, y el cual mostró su por ahora escaso potencial durante una charla en la Universidad de Illinois de la mano del encargado de diseño y desarrollo de los sistemas operativos Windows, Eric Traut.




l desarrollador ejecutó lo que llamó “Mini Win” formado únicamente por el kernel, sin interface gráfica y sin florituras ni añadidos. Esto es, que ahora mismo ocupa 25MB de espacio y 40MB de RAM, y tardó 20 segundos en arrancar.

En la demostración se ejecutaron tareas muy simples, pero se hizo una declaración de intenciones que no pintan nada bien. La primera es que salta a la Vista (valga la redundancia) que el actual sistema operativo de Microsoft es como una ballena con un problema de sobrepeso mórbido, y que quieren poner a dieta el Windows 7. Esto significa que le van a quitar muchas cosas, y ahora falta saber qué le van a quitar que para todos los usuarios sea prescindible. El segundo punto oscuro es que el próximo sistema operativo va a salir con toda la gama de versiones, con lo que implica el que si quieres más, paga más, con todos los riesgos que eso comporta si lo comparamos con el exitoso Windows Vista.













NOMENCLATURA KERNEL LINUX


NOMENCLATURA DEL KERNEL EN LINUX.
Originalmente Linux era monolítico, es decir, como ya hemos comentado, todas las funcionalidades estaban incluidas en el código del núcleo y era necesario recompilarlo para soportar un nuevo dispositivo, etc. Sin embargo, esta idea no encaja con la enorme diversidad de componentes hardware que existen. Raro es que todo el mundo posea los mismos componentes en su ordenador y Linux, como buen sistema operativo Unix pretende obtener todo el partido de la máquina en la que se está ejecutando. Debido a todo esto, el diseño fue migrando paulatinamente a un modelo basado en módulos. Se procura así que el núcleo sea lo más ligero posible y cuando sea necesario añadir una nueva funcionalidad como soportar una nueva tarjeta de sonido, sólo haya que compilar el módulo y añadirlo al núcleo.

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.
Lo podemos encontrar en diferentes versiones, ahora explicaremos la nomenclatura de éste.
La nomenclatura del Kernel se divide en 3 campos separados por un punto (.), estos son:
Primer campo: Número de la versión, actualmente a fecha de este documento es la 2.
Segundo campo: Numero de "sub-versión", por llamarlo de algun modo, es la version dentro de la propia versión, si este numero es par, la versión sera estable, si por el contrario es impar, ésta sera inestable.
Tercer campo: Nivel de corrección el en que se encuentra.
Asi pues el primer paso para configurar nuestro propio Kernel será bajarnoslo, lo podreis encontar en ftp://ftp.kernel.org/pub/linux/kernel/
En esta dirección de ftp encontrareis varios directorios, los que nos atañen son los del tipo v2.4 (última versión estable hasta el momento).
En dicho directorio podemos encontrar tanto las sources del kernel con los parches aplicados (linux-x.y.z), como las propias aplicaciones (patch-x.y.z). Recomendamos descargar la última versión estable con la ultima aplicacion aplicada, en el momento que fue escrito este documento era la 2.4.18, y es la que vamos a tratar a lo largo de este documento, no os preocupeis si la vuestra otra, ya que será bastante parecido.
Una vez hemos descargado las sources del kernel, las metemos en un directorio, el más comun es /usr/src. Hecho esto procedemos a descomprimir y desempaquetar las fuentes.







NÚCLEO LINUX-NÚCLEO WINDOWS



Me han pasado por correo electrónico el enlace a kernel Comparison:Linux (2.6.20) versus Windows
 un completo texto comparativo entre el núcleo de Linux (concretamente en su versión 2.6.20) y el kernel de Windows (el artículo se ha actualizado y ahora el kernel corresponde al de Vista).

No es un paper en el sentido de que no explica de pe a pa cada parte, se limita a revisar opciones de cada núcleo y compararlas. En verde tenemos las opciones que son mejores o más flexibles en un núcleo frente al otro, en rojo las que son peores y en negro las que son neutrales o tienen cierta controversia detrás.

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.

Quizá no se comenta porque nadie duda de la superioridad técnica del núcleo Linux frente al de Windows… o directamente porque la mayoría de las mismas son poco técnicas y más un “me gusta por…” o “no me gusta por…” y claro el núcleo puede ser mejor o peor pero de ahí a gustarte… aunque seguro que un “kernel vanilla” debe estar sabroso :P

Algunos datos que me llaman la atención son por ejemplo las llamadas del sistema (system calls), mientras Linux tiene 320 Windows tiene más de 1000. A simple vista no se puede sólo por el dato comparar si esto es mejor para uno u otro, pero el hecho de que los desarrolladores no se suelan quejar de las llamadas del sistema en Linux me hace pensar que “tienen lo que necesitan”. Si estoy en lo cierto, el número abultado de llamadas en el kernel de Windows debe ser por mantener la (arcaica) compatibilidad hacía atrás lo cual como ya he dicho en anteriores veces vuelve el diseño muy complejo y propenso a errores.

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.

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).

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.

Seguimos con más datos, a destacar el número de arquitecturas soportadas donde Windows literalmente es machado: Windows soporta x86 (los ordenadores de toda la vida), AMD64 y IA-64. Linux soporta ésas y además otras 14 arquitecturas sin contar consolas.

lunes, 18 de abril de 2011

ARQUITECTURA DE LINUX



Linux es un núcleo de sistema operativo libre tipo Unix.2 Es uno de los principales ejemplos de software libre. Linux está licenciado bajo la GPL v2 y está desarrollado por colaboradores de todo el mundo. El desarrollo del día a día tiene lugar en la Linux Kernel Mailing List.

El núcleo Linux fue concebido por el entonces estudiante de ciencias de la computación finlandes,Linux  Torvalds , en 1991. Linux consiguió rápidamente desarrolladores y usuarios que adoptaron códigos de otros proyectos de software libre para su uso en el nuevo sistema operativo. El núcleo Linux ha recibido contribuciones de miles de programadores.


ARQUITECTURA WINDOWS

Archivo:Windows 2000 architecture.svg

La arquitectura de la familia de sistemas operativos de Windows NT se basa en dos capas, ( modo usuario y modo núcleo), con distintos módulos dentro de éstas capas.


El modo núcleo de la línea de Windows NT está compuesto por subsistemas capaces de pasar peticiones de E/S a los controladores apropiados usando el gestor de E/S. Dos subsistemas crean la capa del modo usuario de Windows 2000: el subsistema de Entorno (ejecuta aplicaciones escritas para distintos tipos de sistemas operativos), y el subsistema Integral (maneja funciones específicas de sistema de parte del subsistema de Entorno). El modo núcleo en Windows 2000 tiene acceso total al hardware y a los recursos del sistema de la computadora. El modo núcleo impide a los servicios del modo usuario y las aplicaciones acceder a áreas críticas del sistema operativo a las que no deberían tener acceso.

domingo, 17 de abril de 2011

NOMBRAMIENTO D DISCOS (LINUX)



Linux usa un método para nombrar particiones no tiene en cuenta el tipo de las mismas (a diferencias de otros UNIX) y que las nombra de acuerdo al disco en el que están ubicadas.

Nombramiento de discos:
Los discos del IDE primario se denominan /dev/hda y /dev/hdb (en el orden master y slave)
Los discos de la interfaz secundaria se se denominan /dev/hdc y /dev/hdd (en el orden master y slave)
Si posee otras interfaces IDE los dispositivos se denominarán /dev/hde, /dev/hdf, etc.
Los discos SCSI o SATA se denominan /dev/sda, /dev/sdb.

CARGADORES DE ARRANQUE

En Linux, el flujo de control durante el arranque es desde el BIOS , al gestor de arranque y al núcleo (Kernel). El núcleo inicia el planificador (para permitir la multitea) y ejecuta el primer espacio de usuario (es decir, fuera del espacio del núcleo) y el programa de inicialización (que establece el entorno de usuario y permite la interacción del usuario y el inicio de sesión), momento en el que el núcleo se inactiva hasta que sea llamado externamente.
La etapa del cargador de arranque no es totalmente necesaria. Determinadas BIOS pueden cargar y pasar el control a Linux sin hacer uso del cargador. Cada proceso de arranque será diferente dependiendo de la arquitectura del procesador y el BIOS.
En detalle:
  1. El BIOS realiza las tareas de inicio específicas de la plataforma de hardware.
  2. Una vez que el hardware es reconocido y se inicia correctamente, el BIOS carga y ejecuta el código de la partición de arranque del dispositivo de arranque designado, que contiene la fase 1 de un gestor de arranque Linux. La fase 1 carga la fase 2 (la mayor parte del código del gestor de arranque). Algunos cargadores pueden utilizar una fase intermedia (conocida como la fase 1.5) para lograr esto, ya que los modernos discos de gran tamaño no pueden ser totalmente leídos sin código adicional.
  3. El gestor de arranque a menudo presenta al usuario un menú de opciones posibles de arranque. A continuación, carga el sistema operativo, que descomprime en la memoria, y establece las funciones del sistema como del hardware esencial y la paginación de memoria, antes de llamar a la función start_kernel.
  4. La función start_kernel() a continuación realiza la mayor parte de la configuración del sistema (interrupciones, el resto de la gestion de memoria, la inicialización del dispositivo, controladores, etc), antes de continuar por separado el proceso inactivo y planificador, y el proceso de Init (que se ejecuta en el espacio de usuario).
  5. El planificador toma control efectivo de la gestión del sistema, y el núcleo queda dormido (inactivo).
  6. El proceso Init ejecuta secuencias de comandos (scrips) necesarios para configurar todos los servicios y estructuras que no sean del sistema operativo, a fin de permitir que el entorno de usuario sea creado y pueda presentarse al usuario con una pantalla de inicio d sesion.
En el apagado, Init es llamado a cerrar toda las funcionalidades del espacio de usuario de una manera controlada, de nuevo a través de secuencias de comandos, tras lo cual el Inittermina y el núcleo ejecuta el apagado.

DISCO DURO

Los 512 bytes del disco duroe de los 512 bytes del sector se reserva para la tabla de particiones y otra información (ver la tabla), así que el código del programa debe ser tan pequeño como para caber en poco más de 400 bytes de memoria. El código debe comunicarse con el usuario, examinar la tabla de particiones, o realizar tareas de gestión como activar la línea A20, o cambiar a modo irreal, desde modo real. Eventualmente, el MBR necesitará realizar su tarea y cargar el programa que hará la siguiente fase del arranque, usando la llamada de la BIOS INT 13.





Kernel el Nucleo del Sistema



kernel.gif 
E

n informática, el núcleo (también conocido en español con el anglicismo kernel, de raíces germánicas como kern) es la parte fundamental de un sistema operativo. Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma más básica, es el encargado de gestionar recursos, a través de servicios de llamada al sistema. Como hay muchos programas y el acceso al hardware es limitado, el núcleo 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. Esto permite esconder la complejidad, y proporciona una interfaz limpia y uniforme al hardware subyacente, lo que facilita su uso para el programador.

En informática, el núcleo de un sistema operativo, es el programa informático que se asegura de:
La comunicación entre los programas informáticos y el hardware.
Gestión de los distintos programas informáticos (tareas) de una máquina.
Gestión del hardware (memoria, procesador, periférico, forma de almacenamiento, etc.)

La mayoría de los sistemas operativos se construyen en torno al concepto del núcleo. La existencia de un núcleo, es decir, de un único programa responsable de la comunicación entre el hardware y el programa informático, resulta de compromisos complejos referentes a cuestiones de resultados, seguridad y arquitectura de los procesadores. El núcleo tiene grandes poderes sobre la utilización de los recursos materiales (hardware), en particular, de la memoria.








Funciones generalmente ejercidas por un núcleo



Los núcleos tienen como funciones básicas de garantizar el cargamento y la ejecución de los procesos, las entradas/salidas y proponer un interfaz entre el espacio núcleo y los programas del espacio del usuario.

Aparte de las funcionalidades básicas, el conjunto de las funciones de los puntos siguientes (incluidos los pilotos materiales, las funciones redes y sistemas de ficheros o los servicios) necesariamente no son proporcionados por un núcleo de sistema de explotación. Pueden establecerse estas funciones del sistema de explotación tanto en el espacio usuario como en el propio núcleo. Su implantación en el núcleo se hace en el único objetivo de aumentar los resultados. En efecto, según la concepción del núcleo, la misma función llamada desde el espacio usuario o el espacio núcleo tiene un coste temporal obviamente diferente. Si esta llamada de función es frecuente, puede resultar útil integrar estas funciones al núcleo para aumentar los resultados.

Hay que señalar que estas técnicas se utilizan para atenuar defectos de los núcleos como los elevados estados. En la medida de lo posible, es preferible escribir un programa informático fuera del núcleo, en el espacio usuario. En efecto, el espacio del núcleo, supone la ausencia de mecanismos como la protección de la memoria. Es pues más complejo escribir un programa informático que funciona en el espacio del núcleo, que en el espacio usuario; los errores y faltas de seguridad pueden ser elevados.











LOS 4 TIPOS DE NÚCLEO.




Hay cuatro grandes tipos de núcleos:




Los núcleos monolíticos facilitan abstracciones del hardware subyacente realmente potentes y variadas.




Los micronúcleos (en inglés microkernel) proporcionan un pequeño conjunto de abstracciones simples del hardware, y usan las aplicaciones llamadas servidores para ofrecer mayor funcionalidad.

Los núcleos híbridos (micronúcleos modificados) 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.Son los que reciben o dan salida a señales analógicas que son procesadas digitalmente.Esto puede realizarse gracias a los conversores analogicos/digitales que , como su nombre indica ,convierte señales analógicas a digitales


Los 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.







SISTEMA OPERATIVO

Es el conjunto de programas los cuales permiten el funcionamiento de sistemas informáticos y permite la ejecución  debida de el resto de operaciones.
Desde su creación, las computadoras digitales han utilizado un sistema de codificación de instrucciones en sistema de numeración binaria, es decir con los 0S. Esto se debe a que los circuitos integrados funcionan con este principio, es decir, hay corriente o no hay corriente.En el origen de la historia de las computadoras ( hace unos cuarenta años), los sistemas operativos no existían y la introducción de un programa para ser ejecutado se convertía en un increíble esfuerzo que solo podía ser llevado a cabo por muy pocos expertos. Esto hacia que las computadoras fueran muy complicadas de usar y que se requiriera tener altos conocimientos técnicos para operarlas. Era tan complejo su manejo, que en algunos casos el resultado llegaba a ser desastroso.


CUAL ES EL PROGRAMA PRINCIPAL DEL SISTEMA?

El programa principal del sistema vendría siendo LINUX , WINDOWS, etc, que seria el que se encargaría de las operaciones normales de una computadora. Después ya vendría siendo algún programa de nuestro beneficio ya sea Office o un algún programa que nos ayude a mantener en buen estado nuestra computadora(Desfragmentador).



FUNCIONES DEL SISTEMA OPERATIVO.


1-Manejo de errores: Gestiona los errores de hardware y la pérdida de datos.
2-Secuencia de tareas: El sistema operativo debe administrar la manera en que se reparten los procesos.
3-Definir el orden. (Quien va primero y quien después).
4-Protección: Evitar que las acciones de un usuario afecten el trabajo que esta realizando otro usuario.



SISTEMAS OPERATIVOS EN EL MERCADO

Los sistemas operativos mas conocidos en el mercado son:

WINDOWS
LINUX
MAC
MS-DOS
BEOS

LO QUE CUMPLE EL SISTEMA OPERATIVO




Interpreta los comandos que permiten al usuario comunicarse con el ordenador.


Coordina y manipula el hardware de la computadora, como la memoria, las impresoras, las unidades de disco, el teclado o el mouse.


Organiza los archivos en diversos dispositivos de almacenamiento, como discos flexibles, discos duros, discos compactos o cintas magnéticas.


Gestiona los errores de hardware y la pérdida de datos.


Servir de base para la creación del software logrando que equipos de marcas distintas funcionen de manera análoga, salvando las diferencias existentes entre ambos.


Configura el entorno para el uso del software y los periféricos; dependiendo del tipo de máquina que se emplea, debe establecerse en forma lógica la disposición y características del equipo. Como por ejemplo, una microcomputadora tiene físicamente dos unidades de disco, puede simular el uso de otras unidades de disco, que pueden ser virtuales utilizando parte de la memoria principal para tal fin. En caso de estar conectado a una red, el sistema operativo se convierte en la plataforma de trabajo de los usuarios y es este quien controla los elementos o recursos que comparten. De igual forma, provee de protección a la información que almacena.



CLASIFICACIÓN DEL OS SISTEMAS OPERATIVOS




Con el paso del tiempo, los Sistemas Operativos fueron clasificándose de diferentes maneras, dependiendo del uso o de la aplicación que se les daba. A continuación se mostrarán diversos tipos de Sistemas Operativos que existen en la actualidad, con algunas de sus características:

Sistemas Operativos de multiprogramación (o Sistemas Operativos de multitarea).
Es el modo de funcionamiento disponible en algunos sistemas operativos, mediante el cual una computadora procesa varias tareas al mismo tiempo. Existen varios tipos de multitareas. La conmutación de contextos (context Switching) es un tipo muy simple de multitarea en el que dos o más aplicaciones se cargan al mismo tiempo, pero en el que solo se esta procesando la aplicación que se encuentra en primer plano (la que ve el usuario). Para activar otra tarea que se encuentre en segundo plano, el usuario debe traer al primer plano la ventana o pantalla que contenga esa aplicación. En la multitarea cooperativa, la que se utiliza en el sistema operativo Macintosh, las tareas en segundo plano reciben tiempo de procesado durante los tiempos muertos de la tarea que se encuentra en primer plano (por ejemplo, cuando esta aplicación esta esperando información del usuario), y siempre que esta aplicación lo permita. En los sistemas multitarea de tiempo compartido, como OS/2, cada tarea recibe la atención del microprocesador durante una fracción de segundo. Para mantener el sistema en orden, cada tarea recibe un nivel de prioridad o se procesa en orden secuencial. Dado que el sentido temporal del usuario es mucho más lento que la velocidad de procesamiento del ordenador, las operaciones de multitarea en tiempo compartido parecen ser simultáneas.

Se distinguen por sus habilidades para poder soportar la ejecución de dos o más trabajos activos (que se están ejecutado) al mismo tiempo. Esto trae como resultado que la Unidad Central de Procesamiento (UCP) siempre tenga alguna tarea que ejecutar, aprovechando al máximo su utilización.

Su objetivo es tener a varias tareas en la memoria principal, de manera que cada uno está usando el procesador, o un procesador distinto, es decir, involucra máquinas con más de una UCP.

Sistemas Operativos como UNIX, Windows 95, Windows 98, Windows NT, MAC-OS, OS/2, soportan la multitarea.

Las características de un Sistema Operativo de multiprogramación o multitarea son las siguientes:


Mejora productividad del sistema y utilización de recursos.


Multiplexa recursos entre varios programas.


Generalmente soportan múltiples usuarios (multiusuarios).


Proporcionan facilidades para mantener el entorno de usuarios individuales.


Requieren validación de usuario para seguridad y protección.


Proporcionan contabilidad del uso de los recursos por parte de los usuarios.


Multitarea sin soporte multiusuario se encuentra en algunos computadores personales o en sistemas de tiempo real.


Sistemas multiprocesadores son sistemas multitareas por definición ya que soportan la ejecución simultánea de múltiples tareas sobre diferentes procesadores.


En general, los sistemas de multiprogramación se caracterizan por tener múltiples programas activos compitiendo por los recursos del sistema: procesador, memoria, dispositivos periféricos.

Sistema Operativo Monotareas.

Los sistemas operativos monotareas son más primitivos y es todo lo contrario al visto anteriormente, es decir, solo pueden manejar un proceso en cada momento o que solo puede ejecutar las tareas de una en una. Por ejemplo cuando la computadora esta imprimiendo un documento, no puede iniciar otro proceso ni responder a nuevas instrucciones hasta que se termine la impresión.

Sistema Operativo Monousuario.



Los sistemas monousuarios son aquellos que nada más puede atender a un solo usuario, gracias a las limitaciones creadas por el hardware, los programas o el tipo de aplicación que se este ejecutando.

Estos tipos de sistemas son muy simples, porque todos los dispositivos de entrada, salida y control dependen de la tarea que se esta utilizando, esto quiere decir, que las instrucciones que se dan, son procesadas de inmediato; ya que existe un solo usuario. Y están orientados principalmente por los microcomputadores.



Sistema Operativo Multiusuario.



Es todo lo contrario a monousuario; y en esta categoría se encuentran todos los sistemas que cumplen simultáneamente las necesidades de dos o más usuarios, que comparten mismos recursos. Este tipo de sistemas se emplean especialmente en redes.

En otras palabras consiste en el fraccionamiento del tiempo (timesharing).



Sistemas Operativos por lotes.

Los Sistemas Operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna interacción entre los usuarios y los programas en ejecución. Se reúnen todos los trabajos comunes para realizarlos al mismo tiempo, evitando la espera de dos o más trabajos como sucede en el procesamiento en serie. Estos sistemas son de los más tradicionales y antiguos, y fueron introducidos alrededor de 1956 para aumentar la capacidad de procesamiento de los programas.

Cuando estos sistemas son bien planeados, pueden tener un tiempo de ejecución muy alto, porque el procesador es mejor utilizado y los Sistemas Operativos pueden ser simples, debido a la secuenciabilidad de la ejecución de los trabajos.

Algunos ejemplos de Sistemas Operativos por lotes exitosos son el SCOPE, del DC6600, el cual está orientado a procesamiento científico pesado, y el EXEC II para el UNIVAC 1107, orientado a procesamiento académico.

Algunas otras características con que cuentan los Sistemas Operativos por lotes son:


Requiere que el programa, datos y órdenes al sistema sean remitidos todos juntos en forma de lote.


Permiten poca o ninguna interacción usuario/programa en ejecución.


Mayor potencial de utilización de recursos que procesamiento serial simple en sistemas multiusuarios.


No conveniente para desarrollo de programas por bajo tiempo de retorno y depuración fuera de línea.


Conveniente para programas de largos tiempos de ejecución (ej, análisis estadísticos, nóminas de personal, etc.).


Se encuentra en muchos computadores personales combinados con procesamiento serial.


Planificación del procesador sencilla, típicamente procesados en orden de llegada.


Planificación de memoria sencilla, generalmente se divide en dos: parte residente del S.O. y programas transitorios.


No requieren gestión crítica de dispositivos en el tiempo.


Suelen proporcionar gestión sencilla de manejo de archivos: se requiere poca protección y ningún control de concurrencia para el acceso.

Sistemas Operativos de tiempo real.

Los Sistemas Operativos de tiempo real son aquellos en los cuales no tiene importancia el usuario, sino los procesos. Por lo general, están subutilizados sus recursos con la finalidad de prestar atención a los procesos en el momento que lo requieran. se utilizan en entornos donde son procesados un gran número de sucesos o eventos.

Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy específicas como control de tráfico aéreo, bolsas de valores, control de refinerías, control de laminadores. También en el ramo automovilístico y de la electrónica de consumo, las aplicaciones de tiempo real están creciendo muy rápidamente. Otros campos de aplicación de los Sistemas Operativos de tiempo real son los siguientes:


Control de trenes.


Telecomunicaciones.


Sistemas de fabricación integrada.


Producción y distribución de energía eléctrica.


Control de edificios.


Sistemas multimedia.
Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks, Solaris, Lyns OS y Spectra. Los Sistemas Operativos de tiempo real, cuentan con las siguientes características:


Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos, la mayoría externos al sistema computacional, en breve tiempo o dentro de ciertos plazos.


Se utilizan en control industrial, conmutación telefónica, control de vuelo, simulaciones en tiempo real., aplicaciones militares, etc.


Objetivo es proporcionar rápidos tiempos de respuesta.


Procesa ráfagas de miles de interrupciones por segundo sin perder un solo suceso.


Proceso se activa tras ocurrencia de suceso, mediante interrupción.


Proceso de mayor prioridad expropia recursos.


Por tanto generalmente se utiliza planificación expropiativa basada en prioridades.


Gestión de memoria menos exigente que tiempo compartido, usualmente procesos son residentes permanentes en memoria.


Población de procesos estática en gran medida.


Poco movimiento de programas entre almacenamiento secundario y memoria.


Gestión de archivos se orienta más a velocidad de acceso que a utilización eficiente del recurso.

Sistemas Operativos de tiempo compartido.

Permiten la simulación de que el sistema y sus recursos son todos para cada usuario. El usuario hace una petición a la computadora, esta la procesa tan pronto como le es posible, y la respuesta aparecerá en la terminal del usuario.

Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S, son continuamente utilizados entre los diversos usuarios, dando a cada usuario la ilusión de que tiene el sistema dedicado para sí mismo. Esto trae como consecuencia una gran carga de trabajo al Sistema Operativo, principalmente en la administración de memoria principal y secundaria.

Ejemplos de Sistemas Operativos de tiempo compartido son Multics, OS/360 y DEC-10.

Características de los Sistemas Operativos de tiempo compartido:


Populares representantes de sistemas multiprogramados multiusuario, ej: sistemas de diseño asistido por computador, procesamiento de texto, etc.


Dan la ilusión de que cada usuario tiene una máquina para sí.


Mayoría utilizan algoritmo de reparto circular.


Programas se ejecutan con prioridad rotatoria que se incrementa con la espera y disminuye después de concedido el servicio.


Evitan monopolización del sistema asignando tiempos de procesador (time slot).


Gestión de memoria proporciona protección a programas residentes.


Gestión de archivo debe proporcionar protección y control de acceso debido a que pueden existir múltiples usuarios accesando un mismo archivos.

Sistemas Operativos distribuidos.

Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este conjunto de procesadores esté en un equipo o en diferentes, en este caso es trasparente para el usuario. Existen dos esquemas básicos de éstos. Un sistema fuertemente acoplado es a es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. En un sistema débilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local.

Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se compone otro componente debe de ser capaz de reemplazarlo.

Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc.

Características de los Sistemas Operativos distribuidos:


Colección de sistemas autónomos capaces de comunicación y cooperación mediante interconexiones hardware y software .


Gobierna operación de un S.C. y proporciona abstracción de máquina virtual a los usuarios.


Objetivo clave es la transparencia.


Generalmente proporcionan medios para la compartición global de recursos.


Servicios añadidos: denominación global, sistemas de archivos distribuidos, facilidades para distribución de cálculos (a través de comunicación de procesos internodos, llamadas a procedimientos remotos, etc.).

Sistemas Operativos de red.

Son aquellos sistemas que mantienen a dos o más computadoras unidas através de algún medio de comunicación (físico o no), con el objetivo primordial de poder compartir los diferentes recursos y la información del sistema.

El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando posteriormente a procesadores Intel como Novell Netware.

Los Sistemas Operativos de red mas ampliamente usados son: Novell Netware, Personal Netware, LAN Manager, Windows NT Server, UNIX, LANtastic.

Sistemas Operativos paralelos.

En estos tipos de Sistemas Operativos se pretende que cuando existan dos o más procesos que compitan por algún recurso se puedan realizar o ejecutar al mismo tiempo.

En UNIX existe también la posibilidad de ejecutar programas sin tener que atenderlos en forma interactiva, simulando paralelismo (es decir, atender de manera concurrente varios procesos de un mismo usuario). Así, en lugar de esperar a que el proceso termine de ejecutarse (como lo haría normalmente), regresa a atender al usuario inmediatamente después de haber creado el proceso.

Ejemplos de estos tipos de Sistemas Operativos están: Alpha, PVM, la serie AIX, que es utilizado en los sistemas RS/6000 de IBM.



ORGANIZACIÓN DE UN SISTEMA OPERATIVO.



Estructura modular.
También llamados sistemas monolíticos. Este tipo de organización es con mucho la mas común; bien podría recibir el subtitulo de "el gran embrollo". La estructura consiste en que no existe estructura alguna. El sistema operativo se escribe como una colección de procedimientos, cada uno de los cuales puede llamar a los demás cada vez que así lo requiera. Cuando se usa esta técnica, cada procedimiento del sistema tiene una interfaz bien definida en términos de parámetros y resultados y cada uno de ellos es libre de llamar a cualquier otro, si este ultimo proporciona cierto calculo útil para el primero. Sin embargo incluso en este tipo de sistemas es posible tener al menos algo de estructura. Los servicios (llamadas al sistema) que proporciona el sistema operativo se solicitan colocando los parámetros en lugares bien definidos, como en los registros o en la pila, para después ejecutar una instrucción especial de trampa de nombre "llamada al núcleo" o "llamada al supervisor".
Esta instrucción cambia la máquina del modo usuario al modo núcleo y transfiere el control al sistema operativo, lo que se muestra en el evento (1) de la figura 1. El sistema operativo examina entonces los parámetros de la llamada, para determinar cual de ellas se desea realizar, como se muestra en el evento (2) de la figura 1. A continuación, el sistema operativo analiza una tabla que contiene en la entrada k un apuntador al procedimiento que realiza la k-esima llamada al sistema. Esta operación que se muestra en (3) de la figura 1, identifica el procedimiento de servicio, al cual se llama. Por ultimo, la llamada al sistema termina y el control regresa al programa del usuario.
Figura 1. La forma en que debe hacerse una llamada al sistema: (1) el programa del usuario es atraído hacia el núcleo. (2) el sistema operativo determina el número del servicio solicitado. (3) el sistema operativo localiza y llama al procedimiento correspondiente al servicio. (4) el control regresa al programa del usuario.

Esta organización sugiere una organización básica del sistema operativo:
1.- un programa principal que llama al procedimiento del servicio solicitado.
2.- un conjunto de procedimientos de servicio que llevan a cabo las llamadas al sistema.
3.- un conjunto de procedimientos utilitarios que ayudan al procedimiento de servicio.

En este modelo, para cada llamada al sistema existe un procedimiento de servicio que se encarga de él. Los procedimientos utilitarios hacen cosas necesarias para varios procedimientos de servicio, por ejemplo buscar los datos de los programas del usuario. La siguiente figura muestra este procedimiento de tres capas:
(Para ver el gráfico faltante haga click en el menú superior "Bajar Trabajo")
Figura 2. Un modelo de estructura simple para un sistema monolítico.
(Para ver el gráfico faltante haga click en el menú superior "Bajar Trabajo")

Estructura por microkernel.
Las funciones centrales de un SO son controladas por el núcleo (kernel) mientras que la interfaz del usuario es controlada por el entorno (shell). Por ejemplo, la parte más importante del DOS es un programa con el nombre "COMMAND.COM" Este programa tiene dos partes. El kernel, que se mantiene en memoria en todo momento, contiene el código máquina de bajo nivel para manejar la administración de hardware para otros programas que necesitan estos servicios, y para la segunda parte del COMMAND.COM el shell, el cual es el interprete de comandos
Las funciones de bajo nivel del SO y las funciones de interpretación de comandos están separadas, de tal forma que puedes mantener el kernel DOS corriendo, pero utilizar una interfaz de usuario diferente. Esto es exactamente lo que sucede cuando cargas Microsoft Windows, el cual toma el lugar del shell, reemplazando la interfaz de línea de comandos con una interfaz gráfica del usuario. Existen muchos "shells" diferentes en el mercado , ejemplo: NDOS (Norton DOS), XTG, PCTOOLS, o inclusive el mismo SO MS-DOS a partir de la versión 5.0 incluyó un Shell llamado DOS SHELL.



PROCESO INFORMÁTICO.


Un proceso informático puede ser la simple ejecución de un programa el cual lo controla un sistema operativo ( controla en q orden sera abierto en caso de no ser el único proceso en ejecución).


ESTADOS DE PROCESO.

EJECUCIÓN: Cuando se esta usando el programa seleccionado, ejemplo: ESTAMOS JUGANDO UN JUEGO- En el administrador de tareas aparece en modo de ejecución.

LISTO: Cuando la aplicación esta en ejecución.(uso)

ESPERA: Es cuando se encuentran otros procesos en ejecución y el sistema operativo esta determinado en que orden abrir la ultima orden que se le dio.

NUEVO: Es básicamente cuando hacemos la apertura de un programa ya sea aplicación o archivo.



TERMINADO: Es cuando dejamos de usar un programa y lo cerramos. (TODOS LOS PROCESOS QUE SE ESTÁN CUMPLIENDO POR MEDIO DE ESTE SE TERMINAN)



MASTER BOOT RECORD (MRB)




El Master Boot Record (MBR) es un pequeño programa que es ejecutado en cada Inicio del sistema operativo y se encuentra ubicado en el primer sector absoluto (Track 0, head 0, sector 1) del disco duro en una PC y que busca la Tabla de Particiones para transferirla al Sector de Arranque (Boot).

El MBR está compuesto por código ejecutable y las entradas de la Tabla de Particiones.


Estructura del Master Boot Record

Offset
Naturaleza
size
+00h
Código ejecutable
varía
+1BEh
1a entrada de tabla de particiones
16 bytes
+1CEh
2a entrada de tabla de particiones
16 bytes
+1DEh
3a entrada de tabla de particiones
16 bytes
+1EEh
4a entrada de tabla de particiones
16 bytes
+1FEh
Marcador ejecutable (AA55h)
2 bytes


Los virus que infectan al Master Boot Record, por lo general lo reemplazan con su código viral e inutilizan en forma lógica de disco duro y el usuario afectado tendrá que formatear y cargar nuevamente su Sistema Operativo y los demás programas. A menos que se cuente con un diskette de Emergencia.

En los sistemas operativos D.O.S. y Windows, se puede crear el MBR con el comando de FDISK. Debido a que el MBR se ejecuta cada vez se inicia el sistema, este clase de virus son de extremadamente peligrosidad. Los virus de MBR pueden incorporar un sistema a través de un diskette que esté instalada en la unidad A: al momento del Inicio, e inclusive si el diskette no es uno de "arranque" también puede infectar el MB
R.








BOOT STRAP PROTOCOL (BSP)


BOOTP son las siglas de Bootstrap Protocol. Es un protocolo de red UDP utilizado por los clientes de red para obtener su dirección IP automáticamente. Normalmente se realiza en el proceso de arranque de los ordenadores o del sistema operativo.


  •