Вы находитесь на странице: 1из 62

Contenido

1 Definición y Concepto

2 Funciones y Características

3 Evolución Histórica

4 Clasificación

5 Estructura (niveles o estratos de diseño).

6 Núcleo
¿Qué es un Sistema Operativo?

Esta pregunta no es simple, y procuraremos


responderla a lo largo de todo el curso. Sin
embargo podemos dar algunas definiciones
simples.
Un Sistema Operativo es:
1.El código que acompaña la ejecución de
cualquier aplicación.
1.Un programa que actúa como intermediario
entre un usuario y el hardware del computador.
1.Un programa que dirige todos los recursos de
un sistema computacional.
Los Objetivos de un S.O son:


Acercar el sistema computacional al usuario
facilitando su uso.

Usar el hardware de una manera eficiente

La mejor forma de entender un S.O. Es
entender como se construye.

También ayuda a su comprensión el tener una
visión histórica de su desarrollo
Estructura de un Sistema Computacional


El S. O. Es una de las componentes más importantes
de un sistema computacional.


Un Sistema Computacional es una plataforma sobre la
cual se construyen los llamados Sistemas de
Información, factor clave de competitividad en
cualquier organización.


Un Sistema Computacional está compuesto de:
hardware, s.o., aplicaciones
Componentes del sistema de cómputacional

Usuario 1 Usuario 2 Usuario N

Aplicaciones

Programas de Sistemas
Sistema Operativo
Hardware


Hardware - Proveé los componentes básicos de cómputo (CPU,
memoria, dispositivos de E/S).

Sistema Operativo - Controla y coordina el uso del hardware entre
los varios programas de aplicación para los diferentes usuarios.

Programas de sistemas- Compiladores, Assembler, Editores,
herramientas de Monitoreo y Mantención

Aplicaciones - Bases de datos, Juegos, Navegadores, etc.
Observaciones


No existe una definición precisa de un S.O.


Los S.O. Existen porque existe la necesidad de
resolver problemas usando sistemas
computacionales

Tampoco existe una definición única sobre qué
contiene y qué no contiene un S.O.


Una definición práctica es que un S.O. es el
código qué siempre se ejecuta y acompaña la
ejecución de las aplicaciones
Componentes del Sistema Operativo


Manejador de recursos - administra y aloja
los recursos.


Programa de control - controla la ejecución
de los programas de usuarios y las
operaciones de los dispositivos de
entrada/salida.


Kernel - el programa que corre en todo
momento (todo lo demas es programa de
aplicación).
Por que necesitamos al Sistema Operativo

• Usuarios: prove interfaces de usuario, interprete de


comandos, estructura de directorios, programas de
utilerias (compiladores, editores, filtros).

• Ambiente de programacion- prove un ambiente de


alto nivel para manejo E/S, manejo de archivos,
manejo de procesos.

• Eficiencia - remplaza al operador en la calendarizacion


de jobs, almacenamiento archivos de E/S, manejo de
concurrencia.
Evolución Historica de los Sistemas Operativos
Evolución (1): Primeros Computadores, década 1940´s
Evolución Historica de los Sistemas Operativos

Evolución (2): década 1950´s.


Spooling


La introducción de la tecnología de discos entrega una
solución: en vez de leer del disco y escribir a la impresora, la
CPU interactúa directamente con el disco.

Si la CPU necesita leer una tarjeta, lee desde un área del
disco. En forma similar cuando necesita imprimir una línea, la
escribe en el disco

Esta forma de procesamiento se denomina Spooling
(Simultaneous peripheral operation on-line)

Observaciones
 El Spooling traslada la entrada y salida de un job con los cálculos
(CPU) de otro job.
 Tiene un efecto directo e importante en el desempeño ya que
mantienen a la CPU y los dispositivos trabajando a su máxima
velocidad
Evolución Historica de los Sistemas Operativos

SPOOL: Operación On-line

Impresora
Cinta

Lector

Impresora
Disco

Procesador Central
Memoria CPU
Canal1 Canal2 Canal3
Evolución Historica de los Sistemas Operativos

Monitor Residente
Tratamiento de
Interrupciones
Controladores de
Dispositivos MONITOR
RESIDENTE
Secuenciador de Jobs
Intérprete del Lenguaje
de control
Límite

Area de programa
de usuario
Evolución Historica de los Sistemas Operativos
Evolución (3): década 1960_1970
 Sistemas de Multiprogramación.
 Monitor residente comienza a llamarse Sistema Operativo.
 Asignación de tiempo de ejecución por ráfagas de CPU. Una
ráfaga es un período de tiempo de uso de CPU y limitado por
tiempos de espera.
 Este debe decidir qué jobs hace avanzar, tratando de
maximizar el rendimiento del computador. Esto se conoce
como job scheduling.
 Se introducen los primeros esquemas de administración de
memoria con particiones y espacio de direcciones lógicos.
 Ventajas: CPU se mantiene mayor tiempo ocupado.
 Desventajas:
 Ausencia de protección entre jobs (en primeras versiones).
 Hardware y S.O. Son más complejos.
 Ejemplos: IBM Systen/360, OS/370.
Sistemas Multiprogramados


El Spooling mantiene una estructura de datos con todos los jobs
listos para ser ejecutados en un área de disco.

Esta estructura permite seleccionar cualquier job del conjunto. Con
esta estructura es posible mejorar la utilización de la CPU.

La selección de un job para su ejecución de un conjunto Se
denomina itineración de job

La itineración de jobs permite la mutiprogramación.

La multiprogramación aumenta la utilización de la CPU al
organizar los jobs de manera tal que la CPU siempre tenga algún
job que ejecutar.

Para esto se mantienen los jobs en memoria principal. El S.O.
Selecciona un job, lo ejecuta y cuando el job debe esperar por
E/S, se selecciona otro job
Evolución Historica de los Sistemas Operativos

Monoprogramación
Ráfaga
de CPU
corriendo espere corriendo

Multiprogramación con dos programas

corriendo espere corriendo

corriendo espere corriendo

corriendo corriendo espere corriendo corriendo


Evolución Historica de los Sistemas Operativos

Diagrama de Estados de un Proceso


fork()
Asigna Memoria,
Idle
crea PCB, asigna Zombie
(Creación)
identificación
Enviado

Exit
Ready Running
(Listo) (Corriendo)

Wake-up
(despierta) Bloqueado
Waiting (Read, Write, etc.)
(Esperando)
Evolución Historica de los Sistemas Operativos

PCB (Process Control Block) o Descriptor de Proceso

*nextPCB

Registros CPU

PC
Información
administración
de memoria
Información
administración
de E/S

 En Linux, esta estructura de datos se denomina task_struct.


Evolución Historica de los Sistemas Operativos

Evolución (4): década 1970

 Sistemas de Tiempo Compartido (Time Sharing).


Los sistemas batch multiprogramados permiten usar recursos eficientemente, pero los usuarios no pueden
interactuar con sus aplicaciones.
El tiempo compartido (time sharing) o multitarea es una extensión de la multiprogramación. La CPU ejecuta
múltiples jobs, pero la conmutación de un job a otro ocurre con una frecuencia tal que los usuarios piensan
que interactúan con el programa mientras éste corre
 Trabajo interactivo con el computador a través de terminales.
 Nace el concepto de Proceso.

 Asignación de tiempo de CPU por tajadas de tiempo.

 Ya no se habla de tiempo de despacho de un job, sino de tiempo de respuesta.

 Núcleos monolíticos. Todas las funciones y servicios del sistema operativo están dentro del núcleo.

 Espacio de direcciones virtuales para cada proceso, utilizando mecanismos de segmentación o


paginación.
 Sistemas Operativos: Unix, VAX/VMS, AS/400.

 Ventaja: Aumento en la productividad de los programadores.

 Desventaja: El procesador es un cuello de botella.


Evolución Historica de los Sistemas Operativos

Evolución (5)

 Computadores Personales.

 Fines de los años ´70.

 Aparece el microprocesador.

 Sistema Monousuario.

 Sistemas Operativos: CP/M, MS-DOS, Macintosh,

OS/2, Windows.
 Problema: Dificultad para compartir recursos.
Evolución Historica de los Sistemas Operativos
1980’s. Redes

 Estaciones de Trabajo: (Sun, Vax, Silicon


Graphics).

 Redes de Area Local (Ethernet, Token


Ring, FDDI, ATM), Redes de larga distancia
(Arpanet).

 Redes organizadas como clientes-


servidores.

 Servicios de S.O. Protocolos de


comunicación, encripcion de datos, seguridad,
consistencia en datos distribuidos
Evolución Historica de los Sistemas Operativos
1980’s. Sistemas Distribuidos

 Sistemas Distribuidos - distribuyen el cómputo entre varios


procesadores geográficamente dispersos.

 Sistemas debilmente acoplados - cada procesador tiene su propia


memoria local y el procesador se comunica con los demas
procesadores mediante lineas de comunicación, buses de alta
velocidad y lineas telefónicas.

 Ventajas:
 Compartición de recursos
 Incremento en la velocidad de cómputo
 compartición de carga
 Confiabilidad
 Comunicación
Evolución Historica de los Sistemas Operativos

1980-1990`s. Sistemas Paralelos

Sistemas paralelos - sistemas de múltiples procesadores con mas de 1


procesador con comunicación entre ellos.

Sistema fuertemente acoplado - los procesadores comparten memoria


y reloj; la comunicación usualmente se realiza mediante memoria
compartida.

Ventajas:
Incremento de Rendimiento (throughput)
Economica
Incremento en la confiabilidad
Evolución Historica de los Sistemas Operativos

1990`s-2000.

Computo Paralelo (Teraflops).

PC’s poderosas (1.5 GigaHertz) , Computadoras Multimedia.

Redes de Comunicación de distancia mundial, con envio de imágenes,


grandes cantidades de datos, audio y video.

World Wide Web.

Notebooks utilizando tecnologias de comunicación inalambrica:


Computo Mobil.

Computo Embebido y Robotica.


Evolución Historica de los Sistemas Operativos

1990-2000`s-Sistemas de Tiempo Real


A menudo utilizados como dispositivo de control en aplicaciones dedicadas, como control de
experimentos científicos, sistemas de procesamiento de imagenes médicas, sistemas de
control industrial, etc...

Exige cumplimiento de restricciones de tiempos.

Sistemas de tiempo real criticos.


Cumplimiento forzoso de plazos de respuesta.
Predecibilidad y analisis de cumplimineto de plazos de respuesta

Sistemas de tiempo real acríticos.


Exigencia “suave” de plazos de respuesta.
Atención lo mas rapido posible a eventos, en promedio .

Ejemplos:
– Sistemas de Control Industrial
– Monitoreo médico
– Control de encendido de motores
– Sistemas de defensa
• El procesamiento se debe hacer con restricciones de tiempo. En caso contrario se producen
fallas
Funciones del sistema operativo


• Gestor de recursos (cpu, memoria, ...)
 – Asignación y recuperación de recursos
 – Protección de los usuarios
 – Contabilidad/monitorización

• Máquina extendida (servicios)
 – Ejecución de programas (procesos)
 – Órdenes de E/S
 – Operaciones sobre archivos
 – Detección y tratamiento de errores

• Interfaz de usuario
 – Shell
Niveles del sistema operativo

núcleo (kernel) es la que gestiona los


recursos hardware del sistema y la que
suministra otras funcionalidades básica del
sistema operativo. Esta capa ha de
ejecutar en modo núcleo, mientras que las
otras pueden ejecutar en niveles menos
permisivos.

La capa de servicios o llamadas al sistema ofrece a los programas unos


servicios en forma de una interfaz de programación o API (application programming
interface). Desde el punto de vista de los programas, esta capa extiende la
funcionalidad de la computadora, por lo que se suele decir que el sistema operativo
ofrece una máquina virtual extendida a los programas.
La capa de intérprete de comandos o shell suministra una interfaz a través de
la cual el usuario puede dialogar de forma interactiva con la computadora. El shell
recibe los comandos u órdenes del usuario, los interpreta y, si puede, los ejecuta.
Dado que el shell suele ejecutar en nivel de usuario
Componentes y Estructura del SO

Gestión de procesos. Encargada de la creación, planificación y destrucción de procesos.


Gestión de memoria. Componente encargada de saber qué partes de memoria están
libres y cuáles ocupadas, así como de la asignación y liberación de memoria según la
necesiten los procesos.
Gestión de la E/S. Se ocupa de facilitar el manejo de los dispositivos periféricos.
 Gestión de archivos y directorios. Se encarga del manejo de archivos y directorios y de
la administración del almacenamiento secundario.
Comunicación y sincronización en los procesos. Encargada de ofrecer mecanismos
los procesos puedan comunicase y sincronizarse.
Seguridad y protección. Este componente debe encargarse de garantizar la seguridad de
los usuarios y de definir lo que pueden hacer cada uno de ellos con los recursos del sistema.
Clasificación de los Sistemas Operativos


Por su Estructura Interna:

 Estructura Modular (Monolítica): el SO se escribe como


una colección de procedimientos.

 Estructura Microkernel: las funciones principales son


controladas por el núcleo (kernel) mientras que la interfaz
del usuario es controlada por el entorno shell.
Clasificación de los Sistemas Operativos


Por la forma en que ofrecen sus servicios:

 SO por Lotes: Los trabajos se reunían por grupos o lotes. Cuando el


trabajo estaba en ejecución, este tenia el control absoluto de la maquina.
Al terminar cada trabajo, el control era devuelto al SO.

 SO de Tiempo Compartido: Permite que varios programas de usuario


se encuentren al mismo tiempo en la memoria principal, y el procesador
es alternado rápidamente de un trabajo a otro.

 SO de Tiempo Real: Procesan las instrucciones recibidas al instante,


y una vez que han sido procesadas muestra el resultado. Su
característica principal es dar respuestas inmediatas. Generalmente se
utilizan en procesos industriales o de control.
Clasificación de los Sistemas Operativos


Por la forma en que ofrecen sus servicios:
 SO de Red: Son aquellos sistemas que mantienen dos o mas
computadoras unidades a través de algún medio de comunicación
(físico o no), con el fin de poder compartir los distintos recursos y
la información del sistema
 SO Distribuidos: Colección de sistemas autónomos capaces de
comunicación y cooperación mediante interconexiones hardware y
software.
Proporcionan abstracción de maquina virtual a los usuarios.
Permiten distribuir trabajos, tareas o procesos entre un conjunto
de procesadores, el cual pueden encontrarse en un equipo o en
distintos equipos.
Clasificación de los Sistemas Operativos


Sistemas Operativos por Servicios:
 Por el numero de Usuarios:
 Monousuarios: Sistemas que atienden a una única tarea de usuario.
 Multiusuarios: Se emplean en redes y cumplen simultáneamente las
necesidades de dos o mas usuarios, que comparten unos mismos recursos
 Por el numero de Tareas:
 Monotareas: Solo pueden manejar un proceso en cada momento, es decir
ejecutan las tareas una a una.
 Multitareas: Pueden procesar varias tareas al mismo tiempo.
 Por el Numero de Procesadores:
 Uniproceso: Se mantiene un solo procesador
 Multiproceso: Pueden manejar varios procesadores a la vez,
compartiendo la misma memoria y reloj
• Simétricos: Una CPU principal retiene el control global de la
computadora, así como la de los procesadores.
• Asimétricos : No existe una CPU controladora única. Cada
procesador tiene asignado una tarea especifica.
Estructura del sistema operativo

En función de esta estructura se pueden agrupar los SO en dos grandes
grupos: monolíticos y estructurados.

Sistemas operativos monolíticos
● No tiene una estructura clara y bien definida.
● Todos sus componentes se encuentran integrados en un único programa (el SO)
que se ejecuta en un único espacio de direcciones.
● Todas las funciones que ofrece el SO se ejecuta en un modo núcleo.
● Estos SO han surgido, normalmente, de SO sencillos y pequeños a los que se les
ha ido añadiendo un número mayor de funcionalidades.
● Esto les ha hecho evolucionar y crece hasta convertirlos en programas grandes y
complejos formados por muchas funciones situadas todas ellas en un mismo nivel.
Ejemplos claros de este tipo de sistemas son MS-DOS y UNIX
● El problema que plantean este tipo de SO radica en lo complicado que es
modificarlo para añadir nuevas funcionalidades y servicios. Añadir una nueva
característica implica la modificación de un gran programa, compuesto por miles de
líneas de código fuente y funciones
Estructura del sistema operativo

Estructura simple
 Monousuarios con funcionalidad básica (e.g.
computadores personales antiguos)
 No existen protecciones ni multiprogramación
 Cualquier falla de programación hace caer al
sistema
 Actividad asincrónica se maneja a través
derutinas activadas por interrupción (difícil
programar)

MS-DOS – escrito para proveer la mayor
funcionalidad en el menor espacio
 No tiene módulos
 Aunque MS-DOS tiene algo de estructura, sus
interfaces y niveles de funcionalidad no están
bien separados
Estructura del sistema operativo


UNIX – limitado por funcionalidad
del hardware, el SO UNIX original
tenía una estructura limitada, con
dos partes separadas
 Programas del sistema
 El kernel

Todo abajo de la interfaz
de llamadas al sistema y
arriba del hardware

Provee: sistema de
archivos, CPU scheduling,
manejo de memoria y otras
operaciones del SO. Un
gran número de funciones
para una capa.
Estructura del sistema operativo


Sistemas operativos estructurados
 Cuando se quiere dotar de estructura a un SO, normalmente
se recurre a dos tipos de soluciones: sistemas por capas y
sistemas cliente- Servidor.
 Sistemas por capas

En un sistema por capas, el SO se organiza como una
jerarquía de capas, donde cada capa ofrece una interfaz
clara y bien definida a la capa superior y solamente
utiliza los servicios que le ofrece la capa inferior.

La principal ventaja que ofrece este tipo de estructuras
es la modularidad y la ocultación de la información.
Una capa no necesita conocer como se ha implementado
la capa sobre la que se construye, únicamente necesita
conocer la interfaz que ofrece. Esto facilita enormemente
la depuración y verificación del sistema, puesto que las
capas se pueden ir construyendo y depurando por
separado.
Estructura del sistema operativo

5 El operador

4 Programas del usuario

3 Control de entrada/salida
Sistemas Operativo THE
2 Comunicación operador-proceso

1 Administración de la memoria y el disco

0 Asignación procesador y multiprogramación

OS/2
Estructura del sistema operativo
 Modelo cliente-servidor o micronúcleo

En este tipo de modelo, el enfoque consiste en implementar la
mayor parte de los servicios y funciones del SO en procesos de
usuario, dejando solo una pequeña parte ejecutando en modo
núcleo. A esta parte se le denomina micronúcleo y a los procesos
que ejecutan el resto de funciones se les denomina servidores.

No hay una definición clara de las funciones que debe llevar a
cabo un micronúcleo. La mayoría incluyen la gestión de
interrupciones, gestión básica de procesos y de memoria y
servicios básicos de comunicación entre procesos. Para
solicitar un servicio en este tipo de sistemas, como por ejemplo
crear un proceso, el proceso de usuario (proceso denominado
cliente) solicita el servicio al servidor del SO correspondiente, en
este caso al servidor de procesos. A su vez, el proceso servidor
puede requerir los servicios de otros servidores, como es el caso
del servidor de memoria. En este caso, el servidor de procesos se
convierte en cliente del servidor de memoria.
Estructura del sistema operativo


Modelo cliente-servidor o micronúcleo continuacion…

Beneficios:
 Más fácil de extender un microkernel
 Más fácil portar el SO a otras arquitecturas
 Más confiable (menos código se ejecuta en modo kernel)
 Más seguro

Problemas:
 Sobrecarga de comunicación entre los espacios de usuario y
kernel


Ejemplos: windows NT, mac OS
Estructura del sistema operativo

Windows NT

Estructura de Mac OS X
Estructura del sistema operativo
Estructura del sistema operativo
Estructura del sistema operativo


Módulos
 La mayoría de los SO modernos implementan módulos de
kernel

Enfoque orientado a objetos

Cada componente base está separado

Cada uno habla con los otros a través de interfaces
comunes

Cada uno puede cargarse (al kernel) conforme se necesita
 En general, similar a las capas, pero más flexible
Estructura del sistema operativo


Enfoque modular en Solaris
Estructura del sistema operativo


Máquinas virtuales
 Una máquina virtual lleva el enfoque de capas a su conclusión lógica.
Trata el hardware y el kernel del SO como si fueran hardware ambos
 Una máquina virtual ofrece una interfaz idéntica para cualquier hardware
que esté abajo
 El sistema operativo crea la ilusión de múltiples procesos, cada uno
ejecutando en su propio procesador con su propia memoria (virtual)
 Los recursos de la computadora física se comparten para crear las
máquinas virtuales

CPU scheduling produce la ilusión de que los usuarios tienen su
propio procesador

Colas (spooling) y el sistema de archivos pueden ofrecer lectores
de tarjetas e impresoras virtuales

Una terminal de usuario en un sistema de tiempo compartido, sirve
como la máquina virtual de la consola del operador
Estructura del sistema operativo

Máquinas virtuales cont...
 El concepto de máquinas virtuales provee protección
completa de los recursos del sistema, ya que cada
máquina virtual está aislada de las demás. Sin
embargo, por el aislamiento no pueden compartir
recursos directamente.
 Una máquina virtual es un excelente vehículo para
hacer investigación en SO. El desarrollo se lleva a
cabo en la máquina virtual, sin afectar la operación
normal del sistema.
 El concepto de máquina virtual es difícil de
implementar debido al gran esfuerzo de proveer un
duplicado exacto de la máquina.
Estructura del sistema operativo


Ejemplos de maquinas Virtuales


IBM VM: ofrecía a cada usuario su propia máquina virtual no
multiprogramada; las m.v. se planificaban con tiempo
compartido.

Java: los programas compilados en Java corren sobre una
máquina virtual (JVM).

VMware: capaz de ejecutar al mismo tiempo varias
sesiones windows, Linux, Mac OS X, etc. sobre plataforma
PC o Mac.

Nachos: S.O. que se ejecuta en una máquina virtual MIPS,
cuyo emulador corre sobre Unix.
Estructura del sistema operativo

Ejemplo Maquina Virtual

Máquina no virtual Máquina virtual


Estructura del sistema operativo

Arquitectura de VMware
Estructura del sistema operativo

La máquina virtual Java
Estructura del sistema operativo

Portabilidad de Java en varias plataformas
Estructura del sistema operativo


Ambiente de desarrollo Java
Estructura del sistema operativo


Sistemas Operativos basados en JAVA
 JavaOS: proyecto abandonado por SUN
(reemplavado por las API de JME).
 Jnode.– Máquina Virtual y Sistema Operativo http://
www.jnode.org/
 Jx.– Kernel mas AWT

http://www4.informatik.uni-erlangen.de/Projects/JX/
Estructura del sistema operativo


jnode
Estructura del sistema operativo

JX
Estructura del sistema operativo


El sistema operativo JX
Núcleo del sistema operativo


Proporciona la funcionalidad básica del SO

Es la parte más dependiente del hw de todo el SO

Suele permanecer en el almacenamiento primario
porque su código se ejecuta muy frecuentemente

proporciona una serie de servicios a las capas
superiores del sistema. Procesos usuario

Proceso S.O.
NUCLEO
| Hardware
Núcleo del sistema operativo


Funciones básicas del núcleo
 Proporcionar el entorno adecuado para la existencia
de procesos

Tratamiento de interrupciones

Conmutación del procesador entre procesos
(soporte al diagrama de estados)

Mecanismos básicos de comunicación y
sincronización entre procesos

Carga inicial y activación de la configuración del
sistema
Núcleo del sistema operativo


Tratamiento de interrupciones:
 El núcleo transforma las interrupciones en eventos de más
alto nivel (p. ej. mensajes)
 El núcleo determina qué proceso espera una interrupción y
el envía un mensaje
 Cuando el hardware detecta una interrupción, el control se
transfiere a este módulo,
 el cual analiza el carácter de la interrupción y toma las
acciones apropiadas:

Transferir el control a otro módulo del S. O.

Iniciar otro programa

Continuar la ejecución del programa interrumpido
Núcleo del sistema operativo

Conmutación de CPU entre procesos
 Los procesos de usuario pasan por varios estados
durante su tiempo de vida en el sistema
 El núcleo proporciona los mecanismos de conmutación
de la CPU entre procesos
 El núcleo transfiere el control al programa que el
planificador ha determinado para que sea el próximo en
ejecutarse.
 La comunicación entre programas se logra manteniendo
una cola de mensajes en espera para cada uno de los
programas activos.
 El núcleo recibe los mensajes y los va almacenando en la
cola apropiada al destino en cuestión, para distribuirlos
cuando el programa destino se active.
Núcleo del sistema operativo
Núcleo del sistema operativo


Comunicación y sincronización entre procesos
 El núcleo proporciona mecanismos para que los
procesos puedan intercambiar información y
sincronizarse
 Mecanismos:

Señales

Semáforos

Mensajes

RPCs (remote procedure calls)

Вам также может понравиться