Núcleo de los Sistemas Operativos
Funciones de un núcleo
El núcleo del sistema operativo, también
llamado kernel (núcleo en alemán) es aquella parte
de un sistema
operativo que
interactúa de forma directa con el hardware de una máquina. Entre las funciones
principales del kernel se encuentran:
·
La administración de servicios de entrada/salida.
·
La asignación de recursos entre los usuarios.
Recopilación de los requerimientos funcionales
Los
requerimientos funcionales son declaraciones de los servicios que proveerá el
sistema, de la manera en que éste reaccionará a entradas particulares. En
algunos casos, los requerimientos funcionales de los sistemas también declaran
explícitamente lo que el sistema no debe hacer.
Muchos
de los problemas de la ingeniería de software provienen de la imprecisión en la
especificación de requerimientos. Para un desarrollador de sistemas es natural
dar interpretaciones de un requerimiento ambiguo con el fin de simplificar su
implementación. Sin embargo, a menudo no es lo que el cliente desea. Se tienen
que estipular nuevos requerimientos y se deben hacer cambios al sistema,
retrasando la entrega de éste e incrementando el costo.
En
principio, la especificación de requerimientos funcionales de un sistema debe
estar completa y ser consistente. La compleción significa que todos los
servicios solicitados por el usuario están definidos. La consistencia
significa que los requerimientos no tienen definiciones contradictorias.
En
la práctica, para sistemas grandes y complejos, es imposible cumplir los
requerimientos de consistencia y compleción. La razón de esto se debe
parcialmente a la complejidad inherente del sistema y parcialmente a que los
diferentes puntos de vista tienen necesidades inconsistentes. Estas
inconsistencias son obvias cuando los requerimientos se especifican por primera
vez. Los problemas emergen después de un análisis profundo. Una vez que éstos
se hayan descubierto en las diferentes revisiones o en las fases posteriores
del ciclo de vida, se deben corregir en el documento de requerimientos.
Diagrama de Estados
de los Procesos
Consideramos
que todo proceso puede estar, como mínimo, en uno de los siguientes tres
estados:
·
Activo: el proceso está empleando la CPU, por
tanto, está ejecutándose. Puede haber tantos procesos activos como procesadores
haya disponibles. Por tanto, si el sistema dispone de un único procesador,
únicamente puede haber un proceso activo a la vez.
·
Preparado: el proceso no está ejecutándose,
pero es candidato a pasar a estado activo. Es el planificador el que, en base a
un criterio de planificación, decide qué proceso selecciona de la lista de
procesos preparados para pasar a estado activo.
·
Bloqueado: el proceso está pendiente de un
evento externo que le ha hecho bloquear, tales como una operación de
lectura/escritura, la espera de finalización de un proceso hijo, una señal o
una operación sobre un semáforo. El dispositivo/hecho externo "avisa"
al S.O. cuando ha terminado la acción que
·
realizaba mediante una INTERRUPCIÓN, dejando
el S.O. lo que está haciendo para atender a esta última. Tras esto, el S.O.
comprueba cuales son los procesos que fueron bloqueados por ese evento externo,
cambiándolos al estado de preparado.
La
transición de activo a preparado y viceversa depende de decisiones tomadas por
el planificador del sistema operativo en base a un cierto criterio. La
transición de activo a bloqueado, y de bloqueado a preparado puede inducirlas
el programador mediante llamadas al sistema.
Gestión de
Interrupciones
En el
contexto de la informática, una
interrupción (del inglés interrupt request, en español «petición de
interrupción») es una señal recibida por el
procesador
de una computadora, para
indicarle que debe «interrumpir» el curso de ejecución actual y pasar a
ejecutar código específico para tratar esta situación.
Una
interrupción es una suspensión temporal de la ejecución de un proceso, para
pasar a ejecutar una subrutina de servicio de interrupción, la cual, por lo
general, no forma parte del programa, sino que pertenece al sistema operativo o al BIOS. Una vez finalizada dicha
subrutina, se reanuda la ejecución del programa.
Las
interrupciones son generadas por los dispositivos
periféricos habilitando una señal del CPU (llamada IRQ del inglés
"interrupt request") para solicitar atención del mismo. Por ejemplo.
cuando un disco duro completa una lectura solicita atención al igual que cada
vez que se presiona una tecla o se mueve el ratón.
La
primera técnica que se empleó para esto fue el polling, que consistía en que el
propio procesador se encargara de sondear los dispositivos periféricos cada
cierto tiempo para averiguar si tenía pendiente alguna comunicación para él.
Este método presentaba el inconveniente de ser muy ineficiente, ya que el
procesador consumía constantemente tiempo y recursos en realizar estas
instrucciones de sondeo.
El
mecanismo de interrupciones fue la solución que permitió al procesador
desentenderse de esta problemática, y delegar en el dispositivo periférico la
responsabilidad de comunicarse con él cuando lo necesitara. El procesador, en
este caso, no sondea a ningún dispositivo, sino que queda a la espera de que
estos le avisen (le "interrumpan") cuando tengan algo que comunicarle
(ya sea un evento, una transferencia de información, una condición de error,
etc.).
Comentarios
Publicar un comentario