Concepto de llamada: (system calls)
Las llamadas son peticiones a ejecución de rutinas y proporcionan la interfaz entre el sistema operativo y un programa en ejecución. Estas llamadas son instrucciones de lenguaje ensamblador y se presentan en los manuales que emplean los programadores de este lenguaje. Algunos sistemas permiten efectuar llamadas al sistema directamente desde un programa realizado en el lenguaje de mayor nivel, normalmente estas llamadas se asemejan a una función o sub-rutinas predefinidas, que generan una llamada a una ruta en especial de tiempo de ejecución, que realice efectivamente la llamada al sistema, o bien pueden generarla directamente en la línea
El mecanismo utilizado por un programa de aplicación para solicitar el servicio desde el SO.
Un System Call a menudo utiliza una instrucción de código de máquina especial que hace que el procesador cambie el modo (por ejemplo, a "Modo de supervisor" o "modo protegido"). Esto permite que el sistema operativo pueda realizar acciones restringidas, como el acceso al hardware de
dispositivos o de la unidad de gestión de memoria.
Las system call tienen 3 propositos principales:
- Abstraer el HW hacia el espacio de usuario
- El Kernel actua como intermediario entre los recursos haciendo q la system call pueda arbitrar en el acceso
- Provee una capa de acceso unica entre el espacio de usuario y el resto del sistema. Esto permite exponer un sistema "virtualizado" a los procesos.
- Las system calls, son diferentes en cada SO Es la llamada al nucleo para un servicio
- Es un punto de entrada al SO
- Se ejecuta en el espacio de direccion del nucleo
- Cuenta como parte del tiempo del sistema
- Hay alrededor de 90 system calls en Unix, mucho menos q en MS-DOS
- Las System Calls mas comunes son: chdir, fork, write, brk
El Shell es lo que el sistema operativo nos muestra, la portada, el intérprete de comandos, etc. El Kernel es el núcleo del sistema operativo.
____________________________________________________________________________
Concepto de Interrupción (Interrupt Request / Petición de Interrupción)
Es una señal recibida por el procesador de un ordenador, indicando 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 surgen de la necesidad que tienen los dispositivos periféricos de enviar información al procesador principal de un sistema informático.
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.).
Una interrupción es un mecanismo que permite ejecutar un bloque de instrucciones interrumpiendo la ejecución de un programa, y luego restablecer la ejecución del mismo sin afectarlo directamente. De este modo un programa puede ser interrumpido temporalmente para atender alguna necesidad urgente del computador y luego continuar su ejecución como si nada hubiera pasado
Generalmente se aplica para realizar tareas elementales asincrónicas en el computador tales como responder al teclado, escribir en la pantalla, leer y escribir archivos. Podemos considerar una tarea asincrónica como aquella que es solicitada sin previo aviso y aleatoriamente desde el punto de vista del computador. Tomemos el caso de la operación Ctrl-Alt-Supr. En Windows tiene el efecto de que aparece en pantalla una lista de los procesos y ventanas en ejecución en el computador. En cambio en el Sistema Operativo DOS cuando el usuario presiona simultáneamente dichas teclas el computador procede a reinicializarse, aunque pueda estar ocupado ejecutando un programa en ese instante. Vale decir fuerza obligadamente a que el computador se reinicialice. Ya sea en el sistema Windows o en DOS, el computador no está constantemente monitoreando el teclado para ver si el usuario ha solicitado un Ctrl-Alt-Del, ya que en ese caso consumiría mucho tiempo de proceso en ello y por ende la capacidad de proceso se vería significativamente afectada. La solución empleada es una interrupción.
Existen tres tipos de interrupciones
- Interrupciones internas de hardware:
Las interrupciones internas son generadas por ciertos eventos que surgen durante la ejecución de un programa.
Este tipo de interrupciones son manejadas en su totalidad por el hardware y no es posible modificarlas.
Un ejemplo claro de este tipo de interrupciones es la que actualiza el contador del reloj interno de la computadora, el hardware hace el llamado a esta interrupción varias veces durante un segundo para mantener la hora actualizada.
Aunque no podemos manejar directamente esta interrupción (no podemos controlar por software las actualizaciones del reloj), es posible utilizar sus efectos en la computadora para nuestro beneficio, por ejemplo para crear un "reloj virtual" actualizado continuamente gracias al contador del reloj interno. Unicamente debemos escribir un programa que lea el valor actual del contador y lo traduzca a un formato entendible para el usuario.
- Interrupciones externas de hardware:
Las interrupciones externas las generan los dispositivos perifericos, como pueden ser: teclado, impresoras, tarjetas de comunicaciones, etc. También son generadas por los coprocesadores.
No es posible desactivar a las interrupciones externas.
Estas interrupciones no son enviadas directamente a la CPU, sino que se mandan a un circuito integrado cuya función es exclusivamente manejar este tipo de interrupciones. El circuito, llamado PIC 8259A, si es controlado por la CPU utilizando para tal control una serie de vias de comunicación llamadas puertos.
- Interrupciones de software:
Las interrupciones de software pueden ser activadas directamente por el ensamblador invocando al número de interrupción deseada con la instrucción INT.
Este tipo de interrupciones podemos separarlas en dos categorias: las interrupciones del sistema operativo DOS y las interrupciones del BIOS.
La diferencia entre ambas es que las interrupciones del sistema operativo son más fáciles de usar pero también son más lentas ya que estas interrupciones hacen uso del BIOS para lograr su cometido, en cambio las interrupciones del BIOS son mucho más rápidas pero tienen la desventaja que, como son parte del hardware son muy específicas y pueden variar dependiendo incluso de la marca del fabricante del circuito.
La elección del tipo de interrupción a utilizar dependerá unicamente de las caracteristicas que le quiera dar a su programa: velocidad (utilizando las del BIOS) o portabilidad (utilizando las del DOS).
--- "Son llamadas al sistema, una interrupcion ya sea de hardware o de software significa que cualquiera de estos dos componentes de la computadora es como si avisaran primero al microprocesador, al reloj y etc. que quieren hacer una operacion de entrada o salida ( ya sea guardar un dato o leer un dato), o simplemente que se tiene que ejecutar algo; entonces los componentes del reloj y microprocesador detienen algunos procesos que se estan ejecutando para permitir que las otras instrucciones con mayor preferencia se ejecuten (Es decir se interrumpe la ejecucion de unos procesos para permitir la ejecucion de otros). Estas interrupciones no se notan en una computadora actual por que es demasiado rapido para que se de cuenta el humano pero en una computadora un poco antigua te puedes dar cuenta cuando guardas un archivo de word al diskette y se pasma por un pequeño lapso de tiempo." ---
_______________________________________________________________________________
Concepto de Reloj "del sistema" (System Clock)
El reloj es la parte de la CPU que proporciona una sucesión de impulsos eléctricos (llamados ciclos) a intervalos constantes. Cada sucesión marca el instante que debe comenzar un paso de una instrucción
Diferentes factores determinan con qué rapidez su computadora ejecuta los trabajos. LaVelocidad del Procesador es un factor y es afectada por el Reloj del Sistema = Un pulso electrónico usado para sincronizar el procesamiento, (Entre pulso y pulso solamente puede tener lugar una sola acción), es Medido en megahertz (MHz) dónde 1 MHz= 1 millón de ciclos por segundo o gigahertz(GHz) donde 1 GHz = 1 ciclos de mil millones por segundo
El reloj de una computadora se utiliza para dos funciones principales:1. Para sincronizar las diversas operaciones que realizan los diferentes subcomponentes delsistema informático.2. Para saber la hora
(Clock Rate)
La frecuencia de reloj es la velocidad en ciclos por segundo (medidas en hercios) con que una computadora realiza las operaciones más básicas. Diferentes chips en la placa madre pueden tener diferentes frecuencias de reloj. En general, en computación, cuando se habla de "la frecuencia de reloj", se está haciendo referencia a la velocidad del CPU (el microprocesador).
(Overclocking)
Overclocking es el proceso de forzar un componente de una computadora para que funcione a una frecuencia de reloj más alta que la normal. El overclocking generalmente es empleado para incrementar el rendimiento de una computadora.
Generalmente se puede hacer overclocking en los procesadores, tarjetas de video, la memoria RAM y las placas madre.
Precauciones con el Overclocking
El overclocking aumenta la frecuencia de reloj de un componente, lo cual requiere ciertas precauciones, pues esta práctica puede quemar literalmente los componentes y dejarlos inutilizables.
En general, un aumento de la frecuencia de reloj redunda en un aumento en el calor que emite el componente, por lo tanto, se debe tener en cuenta ese factor en el momento del overclocking y se debe asegurar una buena refrigeración