viernes, 15 de noviembre de 2013

PROCESOS DE UN SISTEMA OPERATIVO

PROCESOS DE UN SISTEMA OPERATIVO


DEFINICIONES DE PROCESO

 

El término proceso fue utilizado, en principio, por los diseñadores del sistema multic en la década de 1960. Desde entonces, al proceso, en alguna medida intercambiado con tarea. Estas son algunas de ellas:
  • Un programa que se está ejecutando
  • Una actividad asincrónica
  • El "espíritu animado" del procedimiento
  • El "emplazamiento del control" de un procedimiento que está siendo ejecutado
  • Aquel que se manifiesta por la existencia en el sistema operativo de un "bloque de control de proceso"
  • Aquella entidad a la cual son asignados los procesadores
  • La unidad "despechable"
Existen muchas otras definiciones. A pesar de que no existe un acuerdo universal sobre la definición, parece hacerse referencia más frecuentemente al concepto programa que se está ejecutando.

Transiciones de estado de proceso

Cuando un trabajo es admitido en el sistema, se crea un proceso equivalente, y es insertado en la última parte de la lista de listos. El proceso se desplaza gradualmente hacia la cabeza de la lista a medida que se completan los procesos que se encontraban antes que él. Cuando el proceso llega a la cabeza de la lista, y cuando el CPU se encuentre disponible, el CPU recibe el proceso, cuando esto ocurre se dice que hay una transición de estado, del estado listo al estado en ejecución. La asignación del primer proceso de la lista de listos al CPU es llamada despacho (Figura 1a), esta acción es llevada a cabo por una entidad del sistema operativo llamada despachador. Se indica una transición de la siguiente manera:
Despacho (nombre del proceso): listos èen ejecución



 Transiciones de estado de proceso
Mientras el CPU tenga un proceso se dice que está en ejecución. Para evitar que el cualquier momento se acapare el uso de todos los recursos del sistema, el sistema operativo ajusta un reloj de interrupción del hardware para permitir al usuario ejecutar su proceso durante un periodo de tiempo específico o cuánto. Si un proceso no abandona el CPU antes de que termine el intervalo, el reloj genera una interrupción, haciendo que el sistema operativo recupere le control. Al ocurrir esto, el sistema operativo hace que el proceso que se encontraba anteriormente en estado de ejecución pase al estado de listo, y hace que el primer proceso de la lista de listos pase al estado de ejecución. Estas transiciones de estado se indican como:
Tiempo excedido (nombre del proceso): en ejecución è listo y despacho (nombre del proceso): listo  en ejecución
Si un proceso se encuentra en estado de ejecución inicia una operación de entrada/salida antes de que termine su cuanto, el proceso abandona por sí mismo el CPU (es decir, el proceso se bloquea a sí mismo hasta la terminación de la operación de entrada/salida). Esto se expresa:
Bloque (nombre del proceso): en ejecución è listo
La otra transición posible tomando en cuenta el modelo de tres estados ocurre cuando termina una transición de entrada/salida (o algún otro evento que esté esperando el proceso). El estado cambia del estado bloqueado al estado listo. La transición es:
Despertar (nombre del proceso): bloqueado è listo
Con esto tenemos cuatro posibles transiciones de estado:
Despacho (nombre del proceso): listos è en ejecución
Tiempo excedido (nombre del proceso): en ejecución è listo
Bloque (nombre del proceso): en ejecución è listo
Despertar (nombre del proceso): bloqueado è listo
La única transición de estado iniciada por el propio proceso del usuario es el bloque; las otras tres transiciones son iniciadas por entidades ajenas al proceso.
 

EL BLOQUEO DE CONTROL DE PROCESO


La manifestación de un proceso en Un sistema operativo es Un bloque de control de proceso (PCB). El es una estructura de datos que contiene cierta información importante acerca del proceso, incluyendo:
·         Estado actual del proceso
·         Identificación única del proceso
·         Prioridad del proceso
·         Apuntadores para localizar la memoria del proceso
·         Apuntadores para asignar recursos
·         Área para preservar registros

El PCB es un almacenamiento central de información que permite al sistema operativo localizar toda la información clave sobre el proceso. Cuando el sistema operativo cambia la atención del CPU entre los procesos, utiliza las áreas de preservación del PCB para mantener la información que necesita para reiniciar el proceso cuando consiga de nuevo el CPU.

Así, pues, el PCB es la entidad que define un proceso al sistema operativo. Debido a que los PCB deben ser manipulados con rapidez por el sistema operativo, muchos sistemas de computación contienen un registro de hardware que apunta siempre al PCB del proceso que está en ejecución. Las instrucciones de hardware que cargan la información de estado al PCB están casi siempre disponibles y restablecen la información rápidamente.

OPERACIONES SOBRE PROCESOS


Los sistemas que administran los procesos deben ser capaces de realizar ciertas operaciones sobre los procesos. Estos incluyen:
·         Crear un proceso
·         Destruir un proceso
·         Suspender un proceso
·         Reanudar un proceso
·         Cambiar la prioridad de un proceso
·         Bloquear un proceso
·         Despertar un proceso
·         Despachar un proceso

La creación de un proceso implica varias operaciones, incluyendo:
·         Dar nombre al proceso
·         Insertar un proceso en la lista del sistema de procesos conocidos
·         Determinar la prioridad inicial del proceso
·         Crear el bloque de control de proceso
·         Asignar los recursos iniciales del proceso.

Un proceso puede crear un nuevo proceso. Si lo hace, el proceso que lo crea se llama proceso padre, y el proceso creado se llama proceso hijo. Sólo se necesita un padre para crear un hijo. Tal creación produce una estructura jerárquica de proceso, como la mostrada en la figura 2a, en la cual cada hijo tiene un solo padre, pero cada padre puede tener varios hijos.




 
 Jerarquía creada por el proceso


Destruir un proceso implica borrarlo del sistema. Sus recursos son devueltos al sistema, se purga de todas las listas o tablas del sistema, y se borra su bloque de control de proceso.
Un proceso suspendido no puede proseguir hasta que otro proceso lo reanude. La suspensión es una operación importante y ha sido implementada de diversas formas en muchos sistemas diferentes. Las suspensiones suelen durar sólo un breve periodo de tiempo. A menudo son realizados por el sistema para sacar temporalmente ciertos procesos durante una situación de carga punta. Para las suspensiones de larga duración los recursos del proceso deben ser liberados. La decisión sobre la liberación de los recursos depende, en gran parte, de la naturaleza del proceso. La memoria principal debe ser liberada inmediatamente después de la suspensión de un proceso. Una unidad de cinta puede ser retenida por el proceso durante una suspensión corta, pero debe ser liberada por un proceso que ha sido suspendido por un periodo de tiempo largo o indefinido.
Reanudar (o activar) un proceso implica el reiniciarlo en el punto donde fue suspendido.
La destrucción de un proceso es mucho más complicada si ha creado otros procesos. En algunos sistemas, un proceso creado se destruye automáticamente al destruir al padre; en otros sistemas, los procesos creados continúan independientemente de sus padres, y la destrucción de un padre no tienen ningún efecto sobre los hijos que ha creado.

Cambiar la prioridad de un proceso no suele implicar más que cambiar el valor de la prioridad en el bloque de control de procesos.

 

SUSPENSION Y REANUDACION


En la sección anterior se introdujeron las nociones de procesos suspendidos y reanudados. Estas operaciones son importantes por varias razones:
Si un sistema está funcionando deficientemente y puede fallar, entonces los procesos que están en ejecución deberán ser suspendidos para reanudarlos una vez que el problema ha sido corregido.
Un usuario que sospeche que algo no está bien, partiendo de los resultados parciales obtenidos de un proceso, puede suspenderlo (en lugar de abortarlo) hasta que el usuario esté seguro de sí el proceso funciona correctamente o no.
Como respuesta a las fluctuaciones a corto plazo en la carga del sistema, algunos procesos pueden ser suspendidos y reanudados más tarde, cuando la carga vuelva a sus niveles normales.
La figura 3a muestra el diagrama de transición del estado de proceso modificado para incluir suspensión y reanudación. Se han añadido dos estados más: el suspendido listo y el suspendido bloqueado; no hay necesidad de un estado suspendido de ejecución. Sobre la línea de trazos de la figura están los estados activos; debajo de ella están los estados suspendidos.
Una suspensión puede ser iniciada por el propio proceso o por otro proceso. En un sistema uniprocesador, un proceso en estado de ejecución puede suspenderse a sí mismo; ningún otro proceso puede estar en ejecución al mismo tiempo para emitir la suspensión. En un sistema multiprocesador, un proceso en estado de ejecución puede ser suspendido por otro proceso en el mismo estado que se esté ejecutando en un procesador diferente.
Un proceso en estado de listo puede ser suspendido por otro proceso; realiza la siguiente transición:
Suspende (nombre del proceso): listo è suspendido listo
Un proceso en estado de suspendido listo puede convertirse en listo por otro proceso realiza la siguiente transición:
Reanudar (nombre del proceso): suspendido è listo
Un proceso en estado bloqueado puede ser suspendido por otro proceso; para ello realiza la transición:
Suspende (nombre del proceso): bloqueadoèsuspendido bloqueado
Un proceso en estado de suspendido bloqueado puede ser reanudado por otro proceso; la transición realizada es la siguiente:
Reanuda (nombre del proceso): suspendido bloqueado è bloqueado
Podría argumentarse que, en vez de suspender un proceso bloqueado, es mejor esperar hasta que la entrada/salida o el evento tenga lugar y el proceso pase al estado de listo. Desafortunadamente, la terminación puede no producirse, o puede ser retrasada indefinidamente. En este caso, el diseñador se encuentra ante el problema de sí debe realizar la suspensión del proceso bloqueado o ajustar un mecanismo para que, una vez que se produzca la terminación, se realice la suspensión desde el estado de listo. Debido a que la suspensión es, en general, una actividad de alta prioridad, ésta debe ser ejecutada inmediatamente. Cuando por fin ocurra la terminación (si es que ocurre), el proceso en estado de suspendido bloqueado realiza la transición:
Terminación (nombre del proceso): suspendido bloqueado è suspendido listo




  Transiciones de estado de proceso con suspensión y reanudación



PROCESAMIENTO DE INTERRUPCIONES


La figura 4a muestra un ejemplo de un procesamiento de interrupción con el cual seguramente estamos familiarizados. En un sistema computacional, una interrupción es un evento que altera la secuencia en que el procesador ejecuta las instrucciones; este hecho, es generado por el hardware de la computadora. Cuando ocurre una interrupción:
·         El sistema operativo obtiene el control.
·         El sistema operativo salva el estado de proceso interrumpido. En muchos sistemas, esta información es almacenada en el bloque de control de procesos del proceso interrumpido.
·         El sistema operativo analiza la interrupción y pasa el control a la rutina apropiada para la manipulación de la interrupción.


Una interrupción debe ser específicamente iniciada por un proceso en estado de ejecución, o puede ser iniciada por un evento que puede estar relacionado o no con dicho proceso.

TIPOS DE INTERRUPCIONES


En esta sección se trata el esquema de interrupciones de los procesadores IBM a gran escala. Esta información será especialmente útil cuando se presenten los casos de estudio sobre los sistemas operativos MVS y VM de IBM.

Existen seis tipos de interrupciones, a saber:

Ø  Interrupciones SVC (llamada al supervisor). Son iniciadas por un proceso en estado de ejecución que ejecuta la instrucción SVC. Una SVC es una petición generada por el usuario para un servicio particular del sistema, como la realización de entrada/salida, la obtención de más almacenamiento o la comunicación con el operador del sistema. El mecanismo SVC ayuda a mantener el sistema operativo a seguro de los usuarios. Un usuario no puede entrar arbitrariamente al sistema operativo; en lugar de esto, el usuario debe hacer una petición de servicio por medio de una SVC. Así, el sistema operativo se da cuenta de todos los intentos realizados por los usuarios para cruzar sus fronteras, y puede negar ciertas peticiones Si el usuario no tiene los privilegios apropiados.

Ø  Interrupciones de entrada/salida. Son iniciadas por el hardware de entrada/salida. Envía señales al CPU indicando que el estado de un canal o dispositivo ha cambiado. Estas interrupciones son acusadas cuando acaba una operación de entrada/salida, cuando se produce un error o, por ejemplo, cuando un dispositivo queda listo.


Ø  Interrupciones externas. Son causadas por varios eventos, incluidos la expiración de un cuanto en el reloj de interrupción; la presión de la tecla de interrupción en la consola por parte del operador o la recepción de una señal de otro procesador en un sistema multiprocesador.

Ø  Interrupciones de reinicio. Ocurren cuando el operador presiona el botón de reinicio en la consola o cuando llega una instrucción SIGP (procesador de señales) de reinicio de otro procesador en un sistema multiprocesador.


Ø  Interrupciones de verificación de programa. Son causadas por varios tipos de errores experimentados al ejecutar un proceso como un intento de dividir entre cero; el intento de un proceso de usuario de ejecutar una instrucción privilegiada; un intento de ejecutar un código de operación invalido, etcétera.

Ø  Interrupciones de verificación de máquina. Son causadas por un mal funcionamiento del hardware.

CAMBIO DE CONTEXTO


El sistema operativo incluye rutinas llamadas manipuladores de interrupciones (IH) para procesar cada tipo diferente de interrupción. Hay manipuladores de interrupciones (IH): el IH SVC, el lH de entrada/salida, el IH externo, el IH de reinicio, el IH de verificación de programa y el IH de verificación de la máquina. Cuando se produce una interrupción, el sistema operativo salva el estado del proceso interrumpido y dirige el control al manipulador de interrupciones adecuado. Esto se realiza mediante una técnica llamada cambio de contexto.
Las palabras de estado de programa (PSW) controlan el orden de ejecución de las instrucciones y contiene información sobre el estado del proceso. Hay tres tipos de PSW: PSW actual, PSW nueva y PSW vieja.
La dirección de la siguiente instrucción que va a ser ejecutada se guarda en la PSW actual, que también indica los tipos de interrupciones actualmente habilitadas, y las actualmente inhabilitadas. El CPU permite que tengan lugar interrupciones habilitadas:
las interrupciones inhabilitadas permanecen pendientes, o son ignoradas en algunos casos. El procesador nunca puede ser inhabilitado para interrupciones SVC de reinicio, o algunos tipos de interrupciones de programas. Pronto quedarán claras las razones para la habilitación e inhabilitación de interrupciones.
En un sistema uniprocesador existe solamente una PSW actual, pero hay seis PSW nuevas y seis PSW viejas (una para cada tipo de interrupción). La PSW nueva para un tipo de interrupción dado contiene la dirección permanente en el hardware, donde reside el manipulador de interrupciones para este tipo específico. Cuando ocurre una interrupción (Fig. 3.5), Si el procesador no está inhabilitado para este tipo de interrupción, entonces el hardware cambia las PSW en los casos siguientes:
·         Al almacenar la PSW actual en la PSW vieja, para ese tipo de interrupción,
·         Al almacenar la PSW nueva para ese tipo de interrupción, dentro de la PSW actual.


 

Intercambio de PSW durante el proceso de ina interrupción
Después de este intercambio de PSW, la PSW actual contiene la dirección del manipulador de interrupción adecuado. El manipulador de interrupciones procesa ahora la interrupción.
Cuando se completa el proceso de la interrupción, el CPU es enviado al proceso que estaba en ejecución en el momento de la interrupción, o al proceso de listo de más alta prioridad. Esto depende de sí el proceso de interrupción es apropiado.

 

EL NUCLEO DEL SISTEMA OPERATIVO


Todas las operaciones que implican procesos son controladas por una porción del sistema operativo, el cual es llamado su núcleo o centro. El núcleo representa, solamente, una pequeña porción del código de todo el sistema operativo, pero se encuentra entre los códigos de más amplio uso. Por razón, el núcleo suele permanecer en el almacenamiento primario, mientras otras porciones del sistema operativo son transportadas de un lado a otro, entre el almacenamiento primario y el secundario, según las necesidades. Una de las funciones más importantes incluidas en el núcleo es el proceso de interrupciones. En los grandes sistemas de múltiples usuarios hay una corriente constante de interrupciones dirigidas al procesador. La rápida respuesta a estas interrupciones es esencial para mantener bien utilizados los recursos del sistema, y para proveer tiempos de respuesta aceptables a los usuarios interactivos. El núcleo inhabilita las interrupciones mientras responde a una interrupción; las interrupciones son habilitadas de nuevo después de completar el proceso de una interrupción.

RESUMEN DE FUNCIONES DEL NÚCLEO


Un núcleo de sistema operativo contiene normalmente código necesario para realizar las siguientes funciones:
·         Manipulación de interrupciones.
·         Creación y destrucción de procesos.
·         Cambio de estados de proceso.
·         Despacho
·         Suspensión y reanudación de procesos
·         Sincronización de procesos
·         Comunicación entre procesos
·         Manipulación de bloques de control de proceso.
·         Soporte de las actividades de entrada/salida
·         Soporte del sistema de archivo
·         Soporte de un mecanismo de llamada/regreso al procedimiento
·         Soporte de ciertas funciones contables del sistema

HABILITACIÓN E INHABILITACIÓN DE INTERRUPCIONES


Al núcleo suele entrarse mediante una interrupción. El núcleo inhabilita las interrupciones mientras responde a ellas. Una vez determinada la causa de la interrupción, el núcleo pasa el procesamiento de la interrupción a un proceso especifico del sistema, diseñado para manejar es tipo de interrupción.
En algunos sistemas, el procesamiento completo de cada interrupción es realizado por un gran sistema operativo de una sola pieza. En tales sistemas, las interrupciones son inhabilitadas por un amplio porcentaje del tiempo, pero los sistemas son conceptualmente más sencillos. Tal diseño el útil en sistemas pequeños que soportan un número limitado de procesos; en los grandes sistemas de usuarios múltiples, el método del núcleo proporciona un rendimiento mucho mejor.

MIGRACIÓN DEL NÚCLEO AL MICROCÓDIGO


Una tendencia definitiva que ha surgido en los sistemas recientes es la de colocar gran parte del núcleo en microcódigo. Esta es una técnica de seguridad efectiva, y con una micromodificación cuidadosa puede hacer que las funciones del núcleo se realicen más rápidamente.
Alta prioridad. Esto depende de sí el proceso de interrupción es apropiativo o no apropiativo. Si el proceso es no apropiativo, obtiene de nuevo el CPU; si el proceso es apropiativo, obtiene el CPU solo si no hay procesos de listos.

viernes, 1 de noviembre de 2013

CONCEPTOS Y GENERACIONES


Sistemas Operativos 1

TEMAS Y SUBTEMAS

1. Introducción.

1.1.  Definición.

1.2.  Generaciones de Sistemas Operativos.

1.3.  Hardware, Firmware y software.

1.4.  Evolución de la programación concurrente,

1.5. Estructura de los sistemas operativos.

2. Procesos.

2.1. Introducción

2.2. Definición y estado de un proceso.

2.3. Bloque de control de un proceso (PCB) y operaciones sobre procesos.

2.4. Creación jerárquica y no jerárquica.

2.5. Procesamiento de interrupciones y tipos de interrupciones.

2.6. Funciones del núcleo (kernel).

2.7. Des habilitación y habilitación de interrupciones,

2.8. Estructura jerárquica de un sistema operativo.

2.9. Migración del núcleo a micro código.

3. Algoritmos de Administración de Procesadores.

3.1 Objetivos de la asignación de procesadores.

3.2. Criterios de la asignación de CPU.

3.3. Manejo del quantum

3.4. Prioridad.

3.5. Tipos de asignación del CPU

4. Administración de la Memoria.

4.1. Administración del almacenamiento.

4,2. Jerarquía del almacenamiento

4.3. Estrategias de administración de almacenamiento.

4.4. Sistema tipo Batch.

4.5. Tipos de multiprogramación.

4.6. Tipos de estrategia de almacenamiento.

Sistema Operativo

Es un software que proporciona un acceso sencillo y seguro al soporte físico del ordenador (hardware), oculta al usuario detalles de la implementación particular, y creando la ilusión de existencia de recursos ilimitados.
Es un programa que actúa como intermedio entre el usuario y la computadora así como su hardware.




Los sistemas operativos proveen un conjunto de instrucciones necesarias y usadas por diversos programas de aplicaciones de una computadora para:
·         Controlar
·         Sincronizar
·         Organizar

 

Evolución e Historia de los Sistemas Operativos


Generaciones de Computadoras

 
 

1940

Se accedía directamente a la consola de la computadora desde la cual se actuaba sobre una serie de micro interruptores que permitían introducir directamente programas a la computadora.
Existían sistemas operativos que interactuaban con la computadora pero el peso era demasiado que casi no se instalaban .

1950

Los sistemas operativos hacen una aparición discreta y bastante simple pues ya empezaban a no estar tan pesados para la computadora y se ocupaban conceptos tales como:
1.       Monitor residente.  Su funcionamiento era bastante simple se limitaba a cargar los programas a la memoria leyéndolos de una cinta o de tarjetas perforadas.
2.       Procesamiento por lotes. Como solución para optimizar una misma cinta o conjunto de tarjetas perforadas.
3.       Almacenamiento Temporal. Disminuir el tiempo de la carga de programas haciéndolo simultáneamente a la salida de datos.

1960

1.       Multiprogramación. Sistema multiprogramado a la memoria principal que alberga a más de un programa de usuario.  
2.       Tiempo Compartido. Interactividad , multiusuario tiempo compartido multiprogramación
3.       Tiempo Real. Se usan en entornos donde se deben aceptar y procesar tiempos en torno a la información.
4.       Multiprocesador. Diseño que no se encuentran en ordenadores monoprocesador (ejecutan simultáneamente una interfaz).

1980

Ø  Creación de los microcircuitos, chips que contenían miles de transistores a través de ordenadores.
Ø  Interfaces Gráficos.
Ø  Lenguajes ya existentes como C++…, MS-DOS.
Ø  Microprocesadores tipo Intel  8088,68000
Ø  Unix

1990

GNU/Linux.  Se caracterizan por el hecho de que la navegación a través de la Web es sin riesgos de ser afectados por virus, esto debido a los permisos implementados.
ReactOS. Sistema operativo de código abierto destinado a lograr la compatibilidad con otras aplicaciones de Software

Generaciones de Sistemas Operativos


GENERACION
EPOCA
Generación CERO
1940
Generación UNO
1950
Generación DOS
1960
Generación TRES
1960 y 1970
Generación CUATRO
1980
Generación CINCO
1990-Actual

 

Sistema Operativo Aplicación


KERNEL è Núcleo o software que constituye la parte más importante del

 Sistema Operativo.
ENSAMBLADOR èLenguaje de programación de bajo nivel para las computadoras.
·         Microprocesador
·         Micro controlador
·         Circuitos Integrados
·         Arquitectura CPU

 



Firmware


El firmware es un bloque de instrucciones de máquina para propósitos específicos, grabado en una memoria, normalmente de lectura/escritura (ROM, EEPROM, flash, etc.), que establece la lógica de más bajo nivel que controla los circuitos electrónicos de un dispositivo de cualquier tipo. Está fuertemente integrado con la electrónica del dispositivo siendo el software que tiene directa interacción con el hardware: es el encargado de controlarlo para ejecutar correctamente las instrucciones externas.

ORGWARE



Es el componente estructural de un sistema tecnológico especialmente concebido para integrar al hombre y sus competencias profesionales y asegurar el funcionamiento del hardware y software del sistema así como la interacción de éste con otros elementos y con otros sistemas de naturaleza diferente.


Las siguientes tres características son fundamentales:

1. Un conjunto de partes.- Un sistema tiene más de un elemento. Un volante no es un sistema, pero es una parte vital de un sistema muy conocido que se llama automóvil
 2. Partes integradas.- Debe existir una relación lógica entre las partes de un sistema. Los sistemas mecánicos y electrónicos.
 3. El propósito de lograr algún objetivo común. El sistema se diseña para alcanzar uno o más objetivos. Todos los elementos del sistema deben estar ligados y controlados de manera que se logre el objetivo del sistema.

Clasificación del software

Software de sistema:  Su objetivo es desvincular adecuadamente al usuario y al programador de los detalles del sistema informático en particular que se use, aislándolo especialmente del procesamiento referido a las características internas de: memoria, discos, puertos y dispositivos de comunicaciones, impresoras, pantallas, teclados, etc. El software de sistema le procura al usuario y programador adecuadas interfaces de alto nivel, controladores, herramientas y utilidades de apoyo que permiten el mantenimiento del sistema global. 
Incluye entre otros:
·         Sistemas operativos

·         Controladores de dispositivos
·         Herramientas de diagnóstico
·        Herramientas de Corrección y             Optimización
·         Servidores
·         Utilidades

Software de programación:  Es el conjunto de herramientas que permiten al programador desarrollar programas informáticos, usando diferentes alternativas y lenguajes de programación, de una manera práctica.
 Incluyen básicamente:
·         Editores de texto      

·         Compiladores
·         Intérpretes
·         Enlazadores
·         Depuradores

Entornos de Desarrollo Integrados (IDE): Agrupan las anteriores herramientas, usualmente en un entorno visual, de forma tal que el programador no necesite introducir múltiples comandos para compilar, interpretar, depurar, etc. Habitualmente cuentan con una avanzada interfaz gráfica de usuario (GUI).

Software de aplicación:  Es aquel que permite a los usuarios llevar a cabo una o varias tareas específicas, en cualquier campo de actividad susceptible de ser automatizado o asistido, con especial énfasis en los negocios.
Incluye entre muchos otros:
·         Aplicaciones para Control de sistemas y automatización industrial
·         Aplicaciones ofimáticas
·         Software educativo
·         Software empresarial
·         Bases de datos
·         Telecomunicaciones (por ejemplo Internet y toda su estructura lógica)
·         Videojuegos
·         Software médico
·         Software de cálculo numérico y simbólico.
·         Software de diseño asistido (CAD)
·         Software de control numérico (CAM)
Enfoque Jerárquico de un Sistema Operativo





KERNEL


El núcleo o kernel (de la raíz germánica Kern, núcleo, hueso) es un software que constituye una parte fundamental del sistema operativo. Es el principal responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma 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, 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 al programador.

Generalidades


En informática, los ordenadores son el núcleo del programa informático que se asegura de:
·         La comunicación entre los programas que solicitan recursos 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 las interfaces de usuario se construyen en torno al concepto de 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.

Tipos de núcleos de sistema operativo


Hay cuatro grandes tipos de núcleos:
1.       Los núcleos monolíticos facilitan abstracciones del hardware subyacente realmente potentes y variadas.
2.       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.
3.       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.
4.       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.