Está en la página 1de 12

SISTEMAS OPERATIVOS

INTRODUCCION

El presente trabajo de investigacion, se ha realizado con la finalidad de indagar


mucho mas a fondo todo lo relacionado con sistemas operativos.

En dicha investigacion se desarrollaran puntos referentes al tema planteado


anteriormente, entre los cuales podemos mencionar, Procesos, programas, definicion de
los estados de los procesos y a su vez el reconocimiento de la gestion de los procesos
presentados dentro de un sistema operativo, al igual que las llamadas.

En principio podemos definir procesos como, un programa en ejecución. Los


procesos son gestionados por el sistema operativo y están formados por:
• Las instrucciones de un programa destinadas a ser ejecutadas por el
microprocesador.
• Su estado de ejecución en un momento dado, esto es, los valores de los registros
de la CPU para dicho programa.
• Su memoria de trabajo, es decir, la memoria que ha reservado y sus contenidos.

Otra información que permite al sistema operativo su planificación.

Aunado a esto, los programas los definimos como un conjunto de instrucciones


que una vez ejecutadas realizarán una o varias tareas en una computadora. Sin
programas, estas máquinas no pueden funcionar. Al conjunto general de programas, se
le denomina software, que más genéricamente se refiere al equipamiento lógico o
soporte lógico de una computadora digital.

Es importante recalcar que en el desarrollo del presente trabajo de investigacion


se desarrollan mucho mas a fondo todos los puntos asignados.
Definicion de procesos

Un proceso es un programa en ejecución. Los procesos son gestionados por el


sistema operativo y están formados por:

• Las instrucciones de un programa destinadas a ser ejecutadas por el


microprocesador.
• Su estado de ejecución en un momento dado, esto es, los valores de los registros
de la CPU para dicho programa.
• Su memoria de trabajo, es decir, la memoria que ha reservado y sus contenidos.
• Otra información que permite al sistema operativo su planificación.

Esta definición varía ligeramente en el caso de sistemas operativos multihilo,


donde un proceso consta de uno o más hilos, la memoria de trabajo (compartida por
todos los hilos) y la información de planificación. Cada hilo consta de instrucciones y
estado de ejecución.

Los procesos son creados y destruidos por el sistema operativo, así como
también este se debe hacer cargo de la comunicación entre procesos, pero lo hace a
petición de otros procesos. El mecanismo por el cual un proceso crea otro proceso se
denomina bifurcación (fork). Los nuevos procesos pueden ser independientes y no
compartir el espacio de memoria con el proceso que los ha creado o ser creados en el
mismo espacio de memoria.

En los sistemas operativos multihilo es posible crear tanto hilos como procesos.
La diferencia estriba en que un proceso solamente puede crear hilos para sí mismo y en
que dichos hilos comparten toda la memoria reservada para el proceso.

Programas

Un programa informático es un conjunto de instrucciones que una vez ejecutadas


realizarán una o varias tareas en una computadora. Sin programas, estas máquinas no
pueden funcionar. Al conjunto general de programas, se le denomina software, que más
genéricamente se refiere al equipamiento lógico o soporte lógico de una computadora
digital.

En informática, se los denomina comúnmente binarios, (propio en sistemas unix,


donde debido a la estructura de este último, los ficheros no necesitan hacer uso de
extensiones. Posteriormente, los presentaron como ficheros ejecutables, con extensión
.exe, en los sistemas operativos de la familia Windows) debido a que una vez que han
pasado por el proceso de compilación y han sido creados, las instrucciones que se
escribieron en un lenguaje de programación que los humanos usan para escribirlos con
mayor facilidad, se han traducido al único idioma que la máquina comprende,
combinaciones de ceros y unos llamada código máquina. El mismo término, puede
referirse tanto a un programa ejecutable, como a su código fuente, el cual es
transformado en un binario cuando es compilado.
Generalmente el código fuente lo escriben profesionales conocidos como
programadores. Se escribe en un lenguaje que sigue uno de los siguientes dos
paradigmas: imperativo o declarativo y que posteriormente puede ser convertido en una
imagen ejecutable por un compilador. Cuando se pide que el programa sea ejecutado, el
procesador ejecuta instrucción por instrucción.

De acuerdo a sus funciones, se clasifican en software de sistema y software de


aplicación. En los computadores actuales, al hecho de ejecutar varios programas de
forma simultánea y eficiente, se le conoce como multitarea.

Un programa en ejecución se trata de forma diferente que los datos en los cuales
opera. De cualquier forma, en algunos casos ésta distinción es ambigua, especialmente
cuando un programa se modifica a sí mismo. El programa modificado es
secuencialmente ejecutado como parte del mismo programa. Se pueden escribir
programas auto-modificables en lenguajes como Lisp, COBOL y Prol.

Ejecución y almacenamiento de los programas

Típicamente, los programas se almacenan en una memoria no volátil (por


ejemplo un disco), para que luego el usuario de la computadora, directa o
indirectamente, solicite su ejecución. Al momento de dicha solicitud, el programa es
cargado en la memoria de acceso aleatorio o RAM del equipo, bajo el control del
software llamado sistema operativo, el cual puede acceder directamente al procesador.
El procesador ejecuta (corre) el programa, instrucción por instrucción hasta que termina.
A un programa en ejecución se le suele llamar también proceso. Un programa puede
terminar su ejecución en forma normal o por causa de un error, dicho error puede ser de
software o de hardware.

Programas empotrados en hardware

Algunos programas están empotrados en el hardware. Una computadora con


arquitectura de programas almacenados requiere un programa inicial almacenado en su
ROM para arrancar. El proceso de arranque es para identificar e inicializar todos los
aspectos del sistema, desde los registros del procesador, controladores de dispositivos
hasta el contenido de la memoria RAM. Seguido del proceso de inicialización, este
programa inicial carga al sistema operativo e inicializa al contador de programa para
empezar las operaciones normales. Independiente de la computadora, un dispositivo de
hardware podría tener firmware empotrado para el control de sus operaciones. El
firmware se utiliza cuando se espera que el programa cambie en raras ocasiones o
nunca, o cuando el programa no debe perderse cuando haya ausencia de energía.

El microcontrolador a la derecha de la Memoria USB está controlada por un firmware empotrado.


Programas cargados manualmente

Los programas históricamente se cargaron manualmente al procesador central


mediante interruptores. Una instrucción era representada por una configuración de
estado abierto o cerrado de los interruptores. Después de establecer la configuración, se
ejecutaba un botón de ejecución. Este proceso era repetitivo. También, históricamente
los programas se cargaban manualmente mediante una cinta de papel o tarjetas
perforadas. Después de que el programa se cargaba, la dirección de inicio se establecía
mediante interruptores y el botón de ejecución se presionaba.

Interruptores para la carga manual en una Data General Nova

Programas generados automáticamente

La programación automática es un estilo de programación que crea código


fuente mediante clases genéricas, prototipos, plantillas, aspectos, y generadores de
código para aumentar la productividad del programador. El código fuente se genera con
herramientas de programación tal como un procesador de plantilla o un IDE. La forma
más simple de un generador de código fuente es un procesador macro, tal como el
procesador de C, que reemplaza patrones de código fuente de acuerdo a reglas
relativamente simples.

Un motor de software da de salida código fuente o lenguaje de marcado que


simultáneamente se vuelve la entrada de otro proceso informático. Podemos pensar
como analogía un proceso manejando a otro siendo el código máquina quemado como
combustible. Los servidores de aplicaciones son motores de software que entregan
aplicaciones a computadoras cliente. Por ejemplo, un software para wikis es un sevidor
de aplicaciones que permite a los usuarios desarrollar contenido dinámico ensamblado a
partir de artículos. Las Wikis generan HTML, CSS, Java, y Javascript los cuales son
interpretados por un navegador web.
Ejecución simultánea

Muchos programas pueden correr simultáneamente en la misma computadora, a


lo cual se le conoce como multitarea y puede lograrse a través de mecanismos de
software o de hardware. Los sistemas operativos modernos pueden correr varios
programas a través del planificador de procesos — un mecanismo de software para
conmutar con frecuencia la cantidad de procesos del procesador de modo que los
usuarios puedan interactuar con cada programa mientras estos están corriendo. También
se puede lograr la multitarea por medio del hardware; las computadoras modernas que
usan varios procesadores o procesadores con varios núcleos pueden correr muchos
programas a la vez.

Implementacion de Sistemas Operativos

Cuando hablamos de implementación de sistemas operativos tenemos y debemos


hacer hincapiés en los siguientes puntos que se mencionan a continuación:

1. Pilotos, Fases y Plazos de Implementación.


 Definición de Pilotos: Tanto para los contenidos, las herramientas, como
para su presentación ante los usuarios, deben definirse pilotos que
permitan detectar fallas, deficiencias y oportunidades de mejoría antes de
que su corrección sea muy costosa o su impacto negativo sea
significativo.
2. Evaluación de la Implementación.
 Los plazos de implementación deben contar con evaluaciones periódicas
que permitan detectar a tiempo problemas, debilidades y limitaciones e
iniciar procesos formales para su corrección a tiempo. Algunos
desarrolladores no ven con buenos ojos la introducción de cambios en el
proyecto una vez iniciado el proceso de implementación, argumentando
que introducirá retrasos e impactará el resto del proyecto.
 Es por ello que debe definirse un protocolo formal (así como recursos y
equipos de trabajo) para la revisión, corrección y adaptación de
herramientas y sistemas en la fase de implementación sin que se
produzca un impacto negativo significativo en la ejecución global del
proyecto.
 En ciertos casos se recomienda un equipo de trabajo paralelo al de
desarrollo para la incorporación de los resultados de la evaluación a las
fases semi-completadas del proyecto y su adecuación para no detener el
avance del cronograma central de implementación.
3. Definición de Plan contra la Resistencia al Cambio.
 Plan de participación de actores y sectores.
 Plan de trabajo con líderes y actores claves.
 Plan de relación con iniciativas existentes.
 Plan de concientización y difusión.
4. Plan de capacitación.
 Plan de Capacitación de Multiplicadores.
 Definición de materiales de capacitación.
 Cobertura geográfica, sectorial y consideraciones logísticas.
5. Unidades de Ejecución.
1. Recursos Humanos.
 Definición de perfiles de grupos de trabajo, líderes y responsables de las
distintas secciones y servicios del proyecto, e identificación de quiénes
cumplen con esos perfiles.
2. Definición de Responsabilidades.
 Delimitación clara de responsabilidades de acción, recursos y
participación con conocimiento de las relaciones y dependencias entre el
trabajo de las distintas unidades. Prever cómo el incumplimiento de una
unidad puede afectar el resto y cómo podrá detectarse eso a tiempo, etc.

Asignación de recursos

En informática, un núcleo o kernel (de la raíz germánica Kern) es un software


que actúa de sistema operativo. Es el principal 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, 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.

En informática, el núcleo es el 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.

Funciones generalmente ejercidas por un núcleo

Los núcleos tienen como funciones básicas garantizar la carga y la ejecución de


los procesos, las entradas/salidas y proponer una interfaz entre el espacio núcleo y los
programas del espacio del usuario.

Aparte de las funcionalidades básicas, el conjunto de las funciones de los puntos


siguientes (incluidos los pilotos materiales, las funciones de 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 mejorar 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 mejorar los resultados.

Estado de los procesos

Un proceso es simplemente, un programa en ejecución que necesita recursos


para realizar su tarea: tiempo de CPU, memoria, archivos y dispositivos de E/S. El SO
es el responsable de:

• Crear y destruir los procesos.


• Parar y reanudar los procesos.
• Ofrecer mecanismos para que se comuniquen y sincronicen.

La gestión de procesos podría ser similar al trabajo de oficina. Se puede tener


una lista de tareas a realizar y a estas fijarles prioridades alta, media, baja por ejemplo.
Debemos comenzar haciendo las tareas de prioridad alta primero y cuando se terminen
seguir con las de prioridad media y después las de baja. Una vez realizada la tarea se
tacha. Esto puede traer un problema que las tareas de baja prioridad pueden que nunca
lleguen a ejecutarse. Y permanezcan en la lista para siempre. Para solucionar esto, se
puede asignar alta prioridad a las tareas más antiguas.

Manejo de recursos

• Centralizado: Si permite utilizar los recursos de una sola computadora.


• Distribuido: Si permite utilizar los recursos (memoria, CPU, disco, periféricos)
de más de una computadora al mismo tiempo.

Estado de los hilos

En sistemas operativos, un hilo de ejecución o subproceso es una característica


que permite a una aplicación realizar varias tareas a la vez (concurrentemente). Los
distintos hilos de ejecución comparten una serie de recursos tales como el espacio de
memoria, los archivos abiertos, situación de autenticación, etc. Esta técnica permite
simplificar el diseño de una aplicación que debe llevar a cabo distintas funciones
simultáneamente.

Un hilo es básicamente una tarea que puede ser ejecutada en paralelo con otra
tarea.

Los hilos de ejecución que comparten los mismos recursos, sumados a estos
recursos, son en conjunto conocidos como un proceso. El hecho de que los hilos de
ejecución de un mismo proceso compartan los recursos hace que cualquiera de estos
hilos pueda modificar éstos. Cuando un hilo modifica un dato en la memoria, los otros
hilos acceden a ese dato modificado inmediatamente.

Lo que es propio de cada hilo es el contador de programa, la pila de ejecución y


el estado de la CPU (incluyendo el valor de los registros).

El proceso sigue en ejecución mientras al menos uno de sus hilos de ejecución


siga activo. Cuando el proceso finaliza, todos sus hilos de ejecución también han
terminado. Asimismo en el momento en el que todos los hilos de ejecución finalizan, el
proceso no existe más y todos sus recursos son liberados.

Algunos lenguajes de programación tienen características de diseño


expresamente creadas para permitir a los programadores lidiar con hilos de ejecución
(como Java o Delphi). Otros (la mayoría) desconocen la existencia de hilos de ejecución
y éstos deben ser creados mediante llamadas de biblioteca especiales que dependen del
sistema operativo en el que estos lenguajes están siendo utilizados (como es el caso del
C y del C++).

Un ejemplo de la utilización de hilos es tener un hilo atento a la interfaz gráfica


(iconos, botones, ventanas), mientras otro hilo hace una larga operación internamente.
De esta manera el programa responde de manera más ágil a la interacción con el
usuario. También pueden ser utilizados por una aplicación servidora para dar servicio a
múltiples clientes.

Estados de un hilo

Los principales estados de los hilos son: Ejecución, Listo y Bloqueado. No tiene
sentido asociar estados de suspensión de hilos ya que es un concepto de proceso. En
todo caso, si un proceso está expulsado de la memoria principal (ram), todos sus hilos
deberán estarlo ya que todos comparten el espacio de direcciones del proceso.

Ventajas de los hilos contra procesos

Si bien los hilos son generados a partir de la creación de un proceso, podemos


decir que un proceso es un hilo de ejecución, conocido como Monohilo. Pero las
ventajas de los hilos se dan cuando hablamos de Multihilos, que es cuando un proceso
tiene múltiples hilos de ejecución los cuales realizan actividades distintas, que pueden o
no ser cooperativas entre sí. Los beneficios de los hilos se derivan de las implicaciones
de rendimiento.
6. Se tarda mucho menos tiempo en crear un hilo nuevo en un proceso existente
que en crear un proceso. Algunas investigaciones llevan al resultado que esto es
así en un factor de 10.
7. Se tarda mucho menos en terminar un hilo que un proceso, ya que cuando se
elimina un proceso se debe eliminar el BCP del mismo, mientras que un hilo se
elimina su contexto y pila.
8. Se tarda mucho menos tiempo en cambiar entre dos hilos de un mismo proceso
9. Los hilos aumentan la eficiencia de la comunicación entre programas en
ejecución. En la mayoría de los sistemas en la comunicación entre procesos debe
intervenir el núcleo para ofrecer protección de los recursos y realizar la
comunicación misma. En cambio, entre hilos pueden comunicarse entre sí sin la
invocación al núcleo. Por lo tanto, si hay una aplicación que debe implementarse
como un conjunto de unidades de ejecución relacionadas, es más eficiente
hacerlo con una colección de hilos que con una colección de procesos separados.

Reconocimiento de la gestión de procesos de un sistema operativo

Para que un ordenador pueda hacer funcionar un programa informático (a veces


conocido como aplicación o software), debe contar con la capacidad necesaria para
realizar cierta cantidad de operaciones preparatorias que puedan garantizar el
intercambio entre el procesador, la memoria y los recursos físicos (periféricos).

El sistema operativo (a veces también citado mediante su forma abreviada OS en


inglés) se encarga de crear el vínculo entre los recursos materiales, el usuario y las
aplicaciones (procesador de texto, videojuegos, etcétera). Cuando un programa desea
acceder a un recurso material, no necesita enviar información específica a los
dispositivos periféricos; simplemente envía la información al sistema operativo, el cual
la transmite a los periféricos correspondientes a través de su driver (controlador). Si no
existe ningún driver, cada programa debe reconocer y tener presente la comunicación
con cada tipo de periférico.

De esta forma, el sistema operativo permite la "disociación" de programas y


hardware, principalmente para simplificar la gestión de recursos y proporcionar una
interfaz de usuario (MMI por sus siglas en inglés) sencilla con el fin de reducir la
complejidad del equipo.
Funciones del sistema operativo

El sistema operativo cumple varias funciones:


• Administración del procesador: el sistema operativo administra la distribución
del procesador entre los distintos programas por medio de un algoritmo de
programación. El tipo de programador depende completamente del sistema
operativo, según el objetivo deseado.
• Gestión de la memoria de acceso aleatorio: el sistema operativo se encarga de
gestionar el espacio de memoria asignado para cada aplicación y para cada
usuario, si resulta pertinente. Cuando la memoria física es insuficiente, el
sistema operativo puede crear una zona de memoria en el disco duro,
denominada "memoria virtual". La memoria virtual permite ejecutar
aplicaciones que requieren una memoria superior a la memoria RAM disponible
en el sistema. Sin embargo, esta memoria es mucho más lenta.
• Gestión de entradas/salidas: el sistema operativo permite unificar y controlar el
acceso de los programas a los recursos materiales a través de los drivers
(también conocidos como administradores periféricos o de entrada/salida).
• Gestión de ejecución de aplicaciones: el sistema operativo se encarga de que las
aplicaciones se ejecuten sin problemas asignándoles los recursos que éstas
necesitan para funcionar. Esto significa que si una aplicación no responde
correctamente puede "sucumbir".
• Administración de autorizaciones: el sistema operativo se encarga de la
seguridad en relación con la ejecución de programas garantizando que los
recursos sean utilizados sólo por programas y usuarios que posean las
autorizaciones correspondientes.
• Gestión de archivos: el sistema operativo gestiona la lectura y escritura en el
sistema de archivos, y las autorizaciones de acceso a archivos de aplicaciones y
usuarios.
• Gestión de la información: el sistema operativo proporciona cierta cantidad de
indicadores que pueden utilizarse para diagnosticar el funcionamiento correcto
del equipo.

Llamadas a sistemas

En informática, llamada al sistema (en inglés system call) es el mecanismo


usado por una aplicación para solicitar un servicio al sistema operativo.

Mecanismos
Las llamadas al sistema comúnmente usan una instrucción especial de la CPU
que causa que el procesador transfiera el control a un código privilegiado, previamente
especificado por el mismo código. Esto permite al código privilegiado especificar donde
va a ser conectado así como el estado del procesador.
Cuando una llamada al sistema es invocada, la ejecución del programa que
invoca es interrumpida y sus datos son guardados, normalmente en su PCB, para poder
continuar ejecutándose luego. El procesador entonces comienza a ejecutar las
instrucciones de código de alto nivel de privilegio, para realizar la tarea requerida.
Cuando esta finaliza, se retorna al proceso original, y continúa su ejecución. El retorno
al proceso demandante no obligatoriamente es inmediato, depende del tiempo de
ejecución de la llamada al sistema y del algoritmo de planificación de CPU.
Las bibliotecas como intermediarias

Generalmente, los sistemas operativos proveen bibliotecas que relacionan los


programas de usuario y el resto del sistema operativo, usualmente una biblioteca C
como glibc o el runtime de Microsoft C. Esta biblioteca maneja los detalles de bajo
nivel para transferir información al kernel y conmutar a modo supervisor, así como
cualquier procesamiento de datos o tareas que deba ser realizada en modo supervisor.
Idealmente, esto reduce la dependencia entre el sistema operativo y la aplicación, e
incrementa su portabilidad.

Ejemplos y herramientas

En los sistemas operativos bajo norma POSIX o similares, algunas llamadas al


sistema muy usadas son open, read, write, close, wait, exec, fork, exit y kill. Los
sistemas operativos actuales tienen cientos de llamadas, por ejemplo Linux 2.x y
FreeBSD tienen más de 300.

Implementaciones típicas

La implementación de las llamadas al sistema requiere un control de


transferencia que involucra características especificas de la arquitectura del procesador.
Una forma típica de implementar es usar una interrupción por software. Linux usa esta
implementación en la arquitectura x86.
Para los procesadores con arquitectura RISC, ésta es la única forma, pero arquitecturas
CISC como x86 soportan otras técnicas adicionales. Un ejemplo es SYSCALL/SYSRE.

También podría gustarte