Sistemas Operativos

Sitio: Facultad de Ingeniería U.Na.M.
Curso: Computación ET-344
Libro: Sistemas Operativos
Imprimido por: Invitado
Día: lunes, 22 de julio de 2024, 16:00

1. Introducción

Existen en el mundo un montón de Sistemas Operativos, cada uno tiene sus características y persiguen un propósito distinto.

El tema da para mucho, es parte de una materia por ejemplo en la Carrera de Ing. En Computación.

La idea de esta presentación es mostrar que es un tema complejo, mucho mas que hacer una aplicación o programa

La idea de este tema es presentar sus características y finalidades.



Luego de tener un Sistema operativo se necesitan muchos elementos mas par hacer que el mismo sea útil, como ser :compiladores, interpretes, editores, procesadores de texto, panillas de cálculo, software de gestión, software de navegación, de correo, interfaces gráficas, bibliotecas, juegos y muchas otras cosas.

Los sistemas operativos (llamados a veces núcleos o kernels) se ejecutan de manera privilegiada respecto al resto del software, podemos ver que en el lugar que se encuentran y contra quien interactúan ( Hardware) y aplicaciones es un lugar muy importante en la estructura de un equipo operativo.

En la década de los 50, comenzó a surgir el concepto de Sistema Operativo,  específicamente en 1956, utilizado para un ordenador IBM 704, que básicamente sólo permitía la ejecución de otros programas en él.

Unix (registrado oficialmente como UNIX®) es un sistema operativo portable, multitarea y multiusuario; desarrollado en 1969 por un grupo de empleados de los laboratorios Bell de AT&T.

En la década de los 70 nació el ordenador personal, con un sistema operativo creado por medio del lenguaje de programación C, siendo éste la evolución de UNIX.

Como consecuencia de eso, en los años 80 salieron a la luz los sistemas operativos como MacOS, MS-DOS, y Windows. En competencia, nuevas empresas se sumaron en la creación de nuevos sistemas y nació Linux, siendo esto ya en los años 90, que luego se unió al proyecto GNU, que es un sistema operativo completamente libre.


2. Listas de Sistemas Operativos.

Al inicio de los años ochenta casi todo el software era privativo, lo que significa que tenía dueños que prohibían e impedían la cooperación entre usuarios. De ahí que fuera necesario el Proyecto GNU.



Todo usuario de ordenadores necesita un sistema operativo. Si no existe un sistema operativo libre, ni siquiera se puede comenzar a usar un ordenador sin recurrir al software privativo. Así, el primer elemento en la agenda del software libre tenía que ser un sistema operativo libre.

  • MS/DOS
  • DR DOS
  • Microsoft Windows.
  • Mac OS X
  • UNIX
  • GNU/Linux
  • iOS
  • Android
  • HongMeng OS/HarmonyOS
  • IBM OS/360
  • MVS
  • VM
  • OpenVMS
  • Solaris
  • OpenBSD
  • Google Chrome OS
  • QNX
  • RTOS
  • FreeRTOS
  • VxWorks


Según el sitio https://netmarketshare.com/


Notar que esta lista no es del todo justa, si se presentara una lista con los sistemas operativos de los  servidores, probablemente no tendría los mismos valores. Estos números se refieren a Sistemas operativos de Escritorio.

3. Proceso

¿Que es un Proceso?


Un proceso es cualquier programa en ejecución, este necesita ciertos recursos para poder ejecutarse.
Un programa es como una receta:

Un cocinero (procesador) cocinando (acción) la receta (programa o código) es como un proceso.


Para ejecutar un proceso satisfactoriamente se necesita:
1) Tiempo de CPU.
2) Memoria.
3) Archivos.
4) Dispositivos de E/S.

Estados de un Proceso.

A medida que un proceso se ejecuta cambia de estado.

Cada proceso puede estar en uno de los estados:

  • A-Nuevo (new): el proceso se está creando.
  • B-En ejecución (running): el proceso está en la CPU ejecutando
  • instrucciones.
  • C-Bloqueado (waiting, en espera): proceso esperando a que ocurra
  • un suceso (ej. terminación de E/S o recepción de una señal).
  • D-Preparado (ready, listo): esperando que se le asigne a un
  • procesador.
  • E-Terminado (terminated): finalizó su ejecución, por tanto no ejecuta más instrucciones y el SO le retirará los recursos que consume.


Un proceso es un programa ejecutándose dentro de su propio espacio de direcciones.

4. Hilo

Se conocen como hilo o hebra (del inglés thread), a un concepto en los Sistemas Operativos.

En este contexto, un proceso recibe el nombre de proceso pesado, mientras que un hilo recibe el nombre de proceso ligero.

El término hilo se refiere sintáctica y semánticamente a hilos de ejecución.

El término multihilo hace referencia a la capacidad de un SO para mantener varios hilos de ejecución dentro del mismo proceso.

¿Que es un hilo?

Los distintos hilos de ejecución comparten una serie de recursos tales como el espacio de memoria, los archivos abiertos, la 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 simplemente una tarea que puede ser ejecutada al mismo tiempo que otra tarea.
Los hilos, a diferencia de los procesos, no son independientes entre sí.

Ventajas de los hilos sobre los procesos.

Se tarda mucho menos tiempo en crear un nuevo hilo en un proceso existente que en crear un nuevo proceso.
Se tarda mucho menos tiempo en terminar un hilo que un proceso.
Se tarda mucho menos tiempo en conmutar entre hilos de un mismo proceso que entre procesos.
Los hilos hacen más rápida la comunicación ya que al compartir memoria y recursos, se pueden comunicar entre sí sin invocar el núcleo del SO.

Recordar que los procesos no se pueden comunicar directamente por que no coexisten con el mismo estado running o ejecución, es por eso que la comunicación entre hilos es importante.

Ejemplo:

Una aplicación puede tener un hilo en background chequeando automáticamente la gramática de lo que se escribe, mientras otro hilo puede estar guardando automáticamente los cambios del documento en el que se trabaja.

5. Analogías de Sistema Operativo

Un sistema operativo es como una torre de control en un aeropuerto.

Debe coordinar el acceso y control de procesos a los recursos.

El sistema Operativo sirve, ayuda a los procesos a desentenderse de cuestiones físicas y operativas de acceso y administración de recursos de las cuales se encarga el Sistema Operativo, algo como un pasajero en un taxi, esta analogía sería con un solo proceso o pasajero.

Pero en realidad lo hace con cientos o miles de procesos, para esta analogía podemos pensar en un director de orquesta.


Con esta analogía se puede entender que para lograr una buena interpretación la coordinación de instrumentos ( procesos) no necesariamente debe ser igualitaria en cuanto a los recursos, es decir un triangulo de percusión no va a tener tanta participación ( tiempo de recursos ) como un violín o piano. Por supuesto todo depende de la pieza que se ejecutando.

¿Que es un sistema Operativo?

Toma lo programas ( aviones ) los hace despegar ( ejecutar y se convierten en procesos ) luego los hace aterrizar, sigue con otro avión
( programa).
Los recursos que maneja el Sistema Operativo, son los de una
computadora.

6. Evolución

La tecnología presentó evoluciones en distintos recursos:

  • Del monoprocesador a los multiprocesadores.
  • de 8 bits a 64 bits.
  • Memorias ultra rápidas
  • Incorporación de nuevos dispositivos
  • Interconexión con otros sistemas

Los sistemas operativos no fueron la excepción y necesitaron estar a las altura de las novedades.

Un sistema operativo debe incluir:

  • Un manejador de recursos.
  • Un programa de control.
  • Un programa que se ejecuta constantemente en una computadora...

Definición.

Un SISTEMA OPERATIVO es un conjunto de programas (y por lo tanto, SOFTWARE) que administran los recursos de la computadora de manera:

  1. eficiente
  2. fácil y transparente para el usuario
  3. acompañar la evolución del resto de las componentes.
Veamos a que se refieren cada uno de estos puntos.

1) Sobre eficiencia.
Enfoque desde el punto de vista de administración de recuros de Hardware  y Software.
  • Tiempo de CPU,
  • espacio de memoria primaria
  • secundaria, dispositivos de E/S
Asignación de estos recursos a programas que ejecuta el usuario

2) fácil y transparente para el usuario

  • Abstracción del hardware por parte del usuario
  • Interfase friendly (amigable)
  • El usuario trabaja cómodo, sin especificaciones de bajo nivel
3) acompañar la evolución del resto de las componentes.
  • Portabilidad, Interoperabilidad, Interconectividad
  • Ambiente Multitareas, multiusuario
  • Seguridad, Protección (entre usuarios y desde el exterior)
  • Fácil administración.
  • Independencia de dispositivo,
  • Abstracción del Hardware.

7. Tipos de Sistemas Operativos.

  • Batch
  • Interactivo
  • Monousuario
  • Time Sharing
  • Multiusuario
  • Paralelo
  • Distribuido
  • de Red
  • de Tiempo Real
  • Cliente-Servidor...

7.1. Sistemas Batch

Este termino que proviene de los viejos sistemas por lotes, con tarjetas perforadas

  • No hay interacción con el usuario
  • Se usa para largos procesos, con entrada  desde archivos y salida a archivos o impresión.
  • Se define, como una linea de código mas, los archivos de E/S y el nombre del trabajo a ejecutar.
  • Se “dispara” el trabajo y no hay interacción con el usuario. Salida a un archivo o a la impresora.
  • Tareas encoladas


7.2. Time-sharing

• Sistemas interactivos
• Multiusuarios: la CPU se reparte entre los distinto usuarios, cada
uno de ellos en su PC/terminal
• Para estos sistemas, se debe proveer multiprogramación.
• Filesystem en linea.

La complejidad de los sistemas time-sharing
• Proteger los programas entre si.
• Tiempo de respuesta razonable
• Incorporación del concepto de memoria virtual. Swapping.
• Optimizar accesos a disco para no degradar la respuesta.
• Optimizar el uso de la CPU

¿Que es Multiprogramación?

  • Posibilidad de tener varios programas en memoria  simultaneamente.
  • Grado de multiprogramación es la cantidad de programas que se tienen en memoria
  • En un sistema uni-procesador, habrá varios programas en memoria pero solo uno en ejecución, en un momento especifico.
  • Los sistemas Time-sharing son una consecuencia lógica de la multiprogramación

7.3. Sistemas de Tiempo Real

  • Restricciones de tiempo bien definidas
  • Se usan para una aplicación dedicada.
  • Memoria primaria amplia.
  • Almacenamiento secundario ilimitado 
FreeRTOS

7.4. Sistemas Paralelos

  • Sistemas multiprocesador Procesadores compartiendo bus,
    clock.
  • Si comparten memoria y perifericos, son tightly coupled.
  • El multiprocesamiento puede ser simétrico o asimétrico




Ventajas de los Sistemas Paralelos
• Mejoran el throughput (resolución de mayor cantidad de procesos en un momento dado)
Permiten compartir periféricos (puede haber varios procesadores accediendo al mismo disco)
Graceful degradation, fault tolerant (ante la caída de un procesador, continua trabajando el resto, absorviendo su trabajo,es tolerante a fallas)

Tipos de Sistemas Paralelos
  • Simétricos (SMP): cada procesador tiene una copia idéntica del SO y esas copias se comunican entre si, si es necesario
  • Asimétricos: Uno de los procesadores distribuye y dirige la actividad de los otros. Relación Master-Slave
  • Equipos TANDEM: duplican HW y SW para asegurar continuidad ante fallas.

7.5. Sistemas Distribuidos

Se distribuye el trabajo entre varios procesadores, pero estos no
comparten memoria ni reloj.

Ventajas: compartir recursos, mejorar el procesamiento por división de un proceso en subprocesos, confiabilidad, comunicación, escalabilidad, robusto.



7.6. Sistemas de Red

Multiplicidad de maquinas con acceso remoto a recursos.
Conexión por login remoto ( telnet)

Transferencia remota ( ftp)

Podemos conectarnos a una maquina con otro SO

MAthSL de Ferchi fue un ejemplo, de sistema operativo de red donde el Software que le permitía trabajar en red se debía instalar en el cliente sobre el sistema operativo del equipo. El equipo personal necesitaba ambos sistema operativos para gestionar conjuntamente las funciones de red y las individuales.

7.7. Cliente Servidor

  • Servicio: entidad de Software en una o mas maquinas que provee una función particular
  • Servidor: Software de servicio que corre en una maquina
  • Cliente: Proceso que puede solicitar un servicio a través de un  conjunto de operaciones bien definidas que forman la interfase cliente.
  • Peer-to-peer y el cliente/servidor.
Ejemplos de sistemas cliente servidor
Servidor de impresión: el servicio es la impresión, el servidor es el programa que brinda el servicio y los clientes son los programas que solicitan el servicio
Servidor de archivos: el servicio es la administración de archivos, el servidor es un filesystem y los clientes solicitan el servicio

Servidor en Internet (WEB)


Servidor en la Red LAN



8. Servicios de un Sistema Operativo

  • Eficiencia en administración de recursos
    • Controlar la ejecución de procesos (creación, terminación,  suspención y comunicación)
    • Planificar el uso de la CPU
    • Asignar Memoria principal en ejecución
    • Asignar Memoria Secundaria
    • Permitir acceso controlado desde los procesos a los dispositivo
  • Seguridad
  • Portabilidad
  • Facilidad de Administración
  • Abstracción de Hardware
  • Intrefase con el Usuario
  • Estabilidad
  • Soporte
  • Actualizaciones

9. GNU/Linux

El sistema operativo GNU es un sistema completo de software libre compatible con Unix. El término GNU proviene de «GNU No es Unix». Se pronuncia en una sola sílaba: ñu. Richard Stallman escribió el anuncio inicial del Proyecto GNU en setiembre de 1983. Una versión extendida, denominada el Manifiesto de GNU, se publicó en setiembre de 1985.

Stallman necesitaba un kernel, pero las características de lo que quería para Kernel ( Hurd) no las estaba consiguiendo en el tiempo que se esperaba.

Hacia 1991, un estudiante de ciencias de la computación de la Universidad de Helsinki, llamado Linus Torvalds desarrolló un núcleo para computadoras con arquitectura x86 de Intel que emulaba muchas de las funcionalidades de UNIX y lo lanzó en forma de código abierto en 1991, bajo el nombre de Linux.

Como Linus T. quería  compartir su código para que cualquiera pudiera usarlo se juntaron y surgió  GNU/Linux con la filosofía de software libre, GNU es patrocinado por la Free Software Foundation (FSF) , una fundación que promueve el uso del software libre.

En 1992, el Proyecto GNU comenzó a utilizar el núcleo Linux junto a sus programas.

Estas personas tiene un Ego muy grande y por supuesto hubo y van a existir problemas de quien mas grande :-) , pero mas allá de eso, los beneficiados en esta sociedad fuimos muchos usuarios.

Hoy en día  GNU/Hurd es un proyecto dentro del Proyecto GNU para reemplazar al núcleo de un sistema operativo Linux, que se ha estado desarrollando desde 1990, con esto en el futuro tendríamos GNU/Hurd.


9.1. Kernel , Shell

El kernel ó núcleo de linux se puede definir como el corazón del sistema operativo. Es el encargado de que el software y el hardware de la máquina puedan trabajar juntos.

La interfaz con el sistema operativo se denomina que interpreta comandos se conoce con el nombre de shell.

La terminal es la interface entre el usuario y el Shell.

GNU/Linux tiene varios shells:  bash, ash (o sh) , csh, Zsh, ksh, tcsh

shell :bash

Lista de comandos :https://www.gnu.org/software/bash/manual/bash.html

Ejemplo cálculo de factorial de 10000:

seq 10000 | paste -sd'*'| bc 

Cantidad de dígitos del 10000!:

 seq 10000 | paste -sd'*'| bc |wc  -m


Los shells ofrecen un método para comunicarse con el sistema operativo. Esta  comunicación tiene lugar de forma interactiva (la entrada desde el teclado se ejecuta inmediatamente) o como un script de shell. Un script de shell es una secuencia de mandatos del shell y del sistema operativo que se almacena en un archivo.

Shell era lo que tenía Stallman. Kernel era lo que tenía Linus Toward.


En Linux el entorno Gráfico NO forma parte del Sistema Operativo!!

Existen muchas interfaces gráficas, algunas livianas otras pesadas, una para cada gusto y hardware disponible.

POSIX

POSIX (acrónimo de Portable Operating System Interface, y X viene de UNIX como seña de identidad de la API) es una norma escrita por la IEEE, que define una interfaz estándar del sistema operativo y el entorno, incluyendo un intérprete de comandos (o "shell").
El término fue sugerido por Richard Stallman en la década de 1980, en respuesta a la demanda del IEEE, que buscaba un nombre fácil de recordar. La traducción del acrónimo es "Interfaz de Sistema Operativo Portable"


9.2. Distribuciones

GNU/Linux es un núcleo de un SO pero para tener un SO operativo completo hay que acompañarlo de un montón de utilidades, dotarlo de una estructura de directorios, así
como dotarlo de ficheros de configuración, y scripts para muy distintas tareas. Un script es un fichero que contiene instrucciones para el interprete de comandos. Todas estas
cosas juntas y bien organizadas son las cosas que debe proporcionar una distribución. Algunas distribuciones incluyen software comercial de su propiedad. Otras en
cambio solo incorporan software GPL o similar. (software libre)

● Distribuciones libres son Slackware y Debian , Fedora,
Mandriva , Ubuntu ,Gentoo, Rxart , Knoppixs, Vector Linux.

● Distribuciones propietarias son RedHat, SuSE, Caldera,Mandrake etc.

Cada distribución tiene sus propias características que la hacen más o menos adecuada para ciertos usos.

9.3. Entorno de Escritorio

Un entorno de escritorio (en inglés desktop environment, abreviado DE) es un conjunto de software para ofrecer al usuario de una computadora una interacción amigable y cómoda. Es una implementación de interfaz gráfica de usuario que ofrece facilidades de acceso y configuración, como barras de herramientas e integración entre aplicaciones con habilidades como arrastrar y soltar. Los entornos de escritorios, por lo general, no suelen incorporar interfaz gráfica en su centro de control, en caso de tenerlo, para configurar opciones propias del sistema operativo, sino que se limita a ofrecer opciones de configuración del mismo entorno. De todos modos, cabe destacar que, algunos centros de control de algunos entornos permiten instalar módulos que añaden opciones de configuración adicionales, que servirían para configurar esas opciones que no están disponibles por defecto. 

Gnome (shell)

GNOME es desarrollado por The GNOME Project y proporciona el escritorio GNOME, una interfaz gráfica de usuario, un conjunto de aplicaciones centrales, y la plataforma de desarrollo GNOME, un entorno para crear aplicaciones que se integran con el escritorio.

Al igual que con la mayoría de los proyectos de software libre, el desarrollo de GNOME se maneja de manera flexible. La discusión se produce principalmente en una serie de listas de correo públicas. Los desarrolladores y usuarios de GNOME se reúnen en una reunión anual de GUADEC para analizar el estado actual y la dirección futura de GNOME.8​ GNOME incorpora estándares y programas de freedesktop.org para interactuar mejor con otros escritorios.

GNOME está escrito principalmente en C, C++, Vala, Python y JavaScript.9​ Varias combinaciones de idiomas están disponibles.
Gráficos basados en GTK+

https://upload.wikimedia.org/wikipedia/commons/thumb/9/97/GNOME_Shell.png/640px-GNOME_Shell.png
 

KDE Plasma

El entorno KDE se basa en el principio de la personalización; todos los componentes de KDE pueden ser configurados en mayor o menor medida por el usuario. Las opciones más comunes son accesibles en su mayoría desde menús y diálogos de configuración. Los usuarios avanzados pueden optar por editar los archivos de configuración manualmente, obteniendo en algunos casos un mayor control sobre el comportamiento del sistema.
Gráficos basados en Qt.

https://upload.wikimedia.org/wikipedia/commons/thumb/e/ef/KDE_Plasma_5.26_screenshot.png/640px-KDE_Plasma_5.26_screenshot.png


Xfce


Xfce (pronunciado como cuatro letras por separado)​ es un entorno de escritorio libre para sistemas tipo Unix como GNU/Linux, BSD, Solaris y derivados. Su objetivo es ser rápido y ligero, sin dejar de ser visualmente atractivo y fácil de usar. Consiste en varios componentes empaquetados por separado que en conjunto proporcionan la funcionalidad completa del entorno de escritorio, pero se pueden seleccionar por separado para que el usuario pueda adaptar el ambiente de trabajo a sus necesidades.
Gráficos basados en GTK2.

File:XFCE-4.18-Desktop.png


MATE

MATE es un entorno de escritorio derivado del código base de GNOME 2.​ El nombre proviene de la yerba mate, una especie de acebo, una planta nativa de Sudamérica subtropical que se utiliza para preparar una bebida muy popular y energizante llamada mate.​
Es ideal para usuarios que quieran aprovechar al máximo su máquinas, tanto computadoras como laptops, con una metáfora de escritorio tradicional. Con requisitos de hardware modestos, es adecuado para estaciones de trabajo modernas, computadoras y laptops, tanto con hardware antiguo como moderno. Mate hace que las máquinas modernas sean más rápidas y que las antiguas sean utilizables. En una máquina antigua de 64 bits, Mate funcionara rápido y con bajo consumo de recursos, mientras que en una máquina moderna funcionará aun más rápido que otros entornos de escritorios pesados.
Gráficos basados en GTK+2/3.

File:Mate-desktop-1.26.en.png


Cinnamon

Cinnamon es un entorno de escritorio para los sistemas operativos basados en GNU/Linux, desarrollado inicialmente por el proyecto Linux Mint como una bifurcación de GNOME Shell. Intenta ofrecer un entorno de escritorio más tradicional basado en la metáfora de escritorio, como GNOME 2. Cinnamon usa Muffin, una bifurcación del gestor de ventanas de GNOME 3 Mutter, como su gestor de ventanas desde la versión 1.2.

File:Cinnamon 5.2.png

10. GLP

La licencia más utilizada en Linux es la licencia GPL(General Public License) de GNU. Sin embargo hay otras licencias igualmente aceptables bajo el término de software libre.
Un buen lugar para informarse sobre los tipos de licencias libres es el 'Debian Policy Manual' en este documento se establecen unos criterios para establecer si Debian
considera o no libre una licencia. Esto se describe a continuación de forma resumida

  • Libertad de distribución:Se refiere a la libertad de comercializar el software sin que sea necesario pagar derechos de ningún tipo.
  • Código libre: Se considera que el código es libre cuando los fuentes son de dominió
    público.
  • Integridad de los fuentes: Se recomienda no restringir los derechos de modificación del código fuente, aunque se aceptan algunas fórmulas que restringen la forma
    de efectuar ciertas modificaciones pero no entramos en estos detalles ahora.
  • No discriminación para grupos o personas: La licencia no considera distinción alguna para ningún tipo de persona o grupo.
  • No discriminación para actividad o propósito Por ejemplo no se distingue entre uso comercial, doméstico, educativo, etc.
  • Distribución de la licencia :La licencia afectará a las sucesivas distribuciones de los programas de forma automática sin necesidad de trámite alguno.
  • La licencia no debe de ser específica de Debian: Es decir Debian no admitiría una licencia que impida el uso de un programa fuera de la distribución Debian.
  • La licencia no debe contaminar otros programas: La licencia no debe imponer restricción alguna a otros programas. Por ejemplo no sería admisible obligar a que el programa solo se pueda redistribuir en un medio que no contenga software comercial.
  • Ejemplos de licencias libres
    GPL, BSD, y Artistic son ejemplos de licencias libres.

De las mas de 30 tipos de Licencias existentes solo unas pocas tienen una gran aceptación...

11. Estructura y diseño de un SO


• Es Software, por lo tanto, debe ser modular.
• Las interfases entre los módulos deben estar bien definidas
• Establecer niveles jerárquicos
• Posibilidad de abstracción del HW

12. Componentes

Se deben proveer módulos para:
manejo de procesos,
De la memoria principal,
De archivos
Del sistema de E/S
De la memoria secundaria
Para networking
Para protección

13. System calls

¿Qué es una llamada al sistema (syscall)?

Una llamada al sistema o system call es un método utilizado por los programas de aplicación para comunicarse con el núcleo del sistema

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 (generalmente es el núcleo), previamente especificado. Esto permite al código privilegiado especificar donde va a ser conectado así como el estado del procesador.

El procesador entonces comienza a ejecutar las instrucciones de código de bajo nivel de privilegio, para realizar la tarea requerida.

¿Para qué se necesitan las system calls?

Las system calls están estrechamente ligadas al modelo moderno de sistema operativo con modo usuario y modo núcleo, que se introdujo en respuesta al creciente número de procesos que se ejecutan simultáneamente en la memoria principal (RAM) de los ordenadores. De este modo, cada proceso individual tiene sus propios datos con derechos de acceso especiales y, solo si se distribuyen los recursos correctamente, el sistema y los programas pueden ejecutarse según lo esperado.

  • Proveen la interfase entre un proceso y el SO
  • Pueden estar en lenguaje assembler, aunque algunos lenguajes pueden invocarlas directamente.
  • Se ejecutan en modo supervisor.

¿Qué tipos de llamadas al sistema hay?

En principio, como se dijo arriba, todas las llamadas al sistema se pueden utilizar como unidades de control para la comunicación entre los procesos de aplicación y el sistema operativo o el hardware. Además, las llamadas al sistema establecidas también se pueden clasificar en diferentes categorías, por lo que se han establecido en particular estos cinco tipos:

    Control de procesos:
todos los procesos de un sistema informático deben controlarse para que en cualquier momento se puedan detener u otros procesos los puedan dirigir. Para esto, las llamadas al sistema de esta categoría supervisan, por ejemplo, el inicio o la ejecución o la detención/terminación de procesos.
    Gestión de archivos: los programas de aplicación requieren este tipo de llamadas al sistema para acceder a las operaciones típicas con archivos. Estos métodos de manipulación de archivos incluyen la creación, eliminación, apertura, cierre, escritura y lectura (create, delete, open, close, write y read).
    Gestión de dispositivos: la categoría “Gestión de dispositivos” incluye todas las llamadas al sistema que sirven para solicitar o administrar los recursos de hardware necesarios, como la potencia de computación o el espacio de almacenamiento.
    Gestión de la información: los procesos tienen mucha información asociada, y la puntualidad y la integridad son muy importantes. Para intercambiar o solicitar información, los programas de aplicación utilizan llamadas al sistema para la gestión o el mantenimiento de la información.
    Comunicación entre procesos: solo se puede garantizar una interacción fluida entre el sistema operativo y los distintos programas de aplicación si los procesos individuales están coordinados. Con este fin, es indispensable la comunicación a través de las correspondientes llamadas al sistema.

• Para control de procesos (end, abort, create, wait...)
• Para manejo de archivos (open, close, read,write...)
• Para manejo de dispositivos (request, release...)
• Para info del sistema (obtener date, fijar o ver atributos...)
• Para manejo de comunicaciones (create, send, receive...)

Supervisor o privilegiado:

En este modo es posible acceder a todo el juego de instrucciones del procesador. Con ello se pueden utilizar todos los recursos, y realizar ciertas acciones tales como programar los controladores de dispositivo, atender interrupciones, programar la unidad de gestión de memoria, etc.

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 de tiempo de ejecución (runtime) de C como la glibc de GNU o la biblioteca de C de Microsoft. Esta biblioteca maneja, entre otras cosas, 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 y el software, e incrementa su portabilidad.