Download Nociones de Software Archivo

Document related concepts

Servidor wikipedia , lookup

Socket de Internet wikipedia , lookup

Almacenamiento conectado en red wikipedia , lookup

Middleware wikipedia , lookup

Skype wikipedia , lookup

Transcript
Nociones de Software
Software de sistema, de desarrollo y de aplicación. Sistemas Operativos.
Redes e Internet.
75.40 Algoritmos y Programación I
Curso Prof. Servetto
1
Clasificación del software
Software
De sistema
Sistema
operativo
Utilidades
75.40 Algoritmos y Programación I
De desarrollo
De redes
Ambientes
integrados
Herramientas
CASE
Curso Prof. Servetto
De aplicación
De mercado
horizontal
De mercado
vertical
A medida
2
Software de sistema
Realiza las tareas comunes a los sistemas de computadoras en general.
Se puede dividir en tres categorías:
• Sistema operativo: se encarga del control de la computadora para proveer la
interfaz con usuarios y la infraestructura lógica para la ejecución de
programas (la interfaz entre el hardware y los programas).
• Utilidades: extienden las capacidades del sistema operativo. Por ejemplo,
para compresión de datos (WinZip), edición de textos (NotePad),
procesamiento básico de palabras (WordPad), dibujo (Paint), reproducción de
multimedia, navegación en la web, cortafuegos, mantenimiento del sistema,
etc.
• De redes: permite la comunicación entre computadoras conectadas en red,
para intercambio de mensajes y compartir recursos (impresoras, software,
almacenamiento masivo).
75.40 Algoritmos y Programación I
Curso Prof. Servetto
3
Software de desarrollo
Sirve de plataforma para el desarrollo de aplicaciones. Se puede dividir
en:
• Ambientes integrados de desarrollo o IDE (integrated development
environments): proporcionan servicios integrales para facilitarle al
programador de computadoras el desarrollo de software. Normalmente, un
IDE consiste de un editor de código fuente, herramientas de construcción
automáticas y un depurador. La mayoría de los IDE tienen auto-completado
inteligente de código.
• Herramientas CASE (computer aided software engineering –ingeniería de
software asistida por computadora): pueden ayudar en una o varias tareas
de desarrollo de software, como la planificación y control de procesos de
desarrollo o el desarrollo de productos en distintas etapas (análisis, diseño,
codificación, documentación, prueba).
75.40 Algoritmos y Programación I
Curso Prof. Servetto
4
Software de aplicación
Consiste de los programas para realizar tareas particulares con la
computadora. Se puede subclasificar en:
• De mercado horizontal: aplicaciones para usuarios en general, como software
para oficina (Microsoft Office, LibreOffice), para reproducción de multimedia,
juegos, etc.
• De mercado vertical: aplicaciones para usuarios especializados en alguna
disciplina o área de negocio particular, como software de contabilidad y
administración de empresas (Tango), para diseño gráfico (AutoCAD), para
gestión de bases de datos (MySQL), etc.
• A medida: desarrollado a medida de una empresa o institución para
automatizar tareas y procesos de gestión o de producción.
75.40 Algoritmos y Programación I
Curso Prof. Servetto
5
Sistema Operativo
Arquitectura. Coordinación de actividades de la computadora. Seguridad.
75.40 Algoritmos y Programación I
Curso Prof. Servetto
6
Arquitectura de sistemas operativos
Usuario
Usuario
Interfaz con Usuarios
Núcleo (kernel)
Usuario
75.40 Algoritmos y Programación I
Usuario
Curso Prof. Servetto
7
Interfaz con usuarios
• Los sistemas operativos para grandes computadoras admiten la interacción
simultánea de varios usuarios con la máquina, en lo que se denomina “tiempo
compartido” (time-sharing). La interfaz con usuarios en estos sistemas es a través
de mensajes de texto, usando un monitor y un teclado que conforman lo que se
llama una “terminal de usuario”. Este tipo de interfaz se denomina “cáscara”
(shell), y también la implementan los sistemas para computadoras personales
cuando se arranca el sistema a prueba de fallos o para ciertas aplicaciones que no
admiten interfaces gráficas.
• Los sistemas operativos para computadoras personales pueden admitir varios
usuarios en una misma computadora e incluso ejecutar tareas no interactivas de
varios usuarios que hayan iniciado sesión en la máquina, pero sólo admiten una
única sesión activa para interactuar con su usuario. La interfaz por defecto en
estos sistemas es gráfica (GUI –graphical user interface), y consiste en ventanas,
íconos, menús y dispositivos de señalamiento.
75.40 Algoritmos y Programación I
Curso Prof. Servetto
8
El núcleo o kernel
Contiene los componentes de software encargados de implementar las funciones más básicas en la
operación de una computadora:
• El manejador de archivos (file manager): coordina el uso de los sistemas de almacenamiento masivo de la
computadora. Permite agrupar archivos en directorios o carpetas, y controla la asignación de espacio y el
acceso a directorios y archivos.
• Los manejadores de dispositivos (device drivers): son unidades de software que se comunican con los
controladores (o a veces directamente con dispositivos periféricos) para realizar operaciones en los
dispositivos periféricos.
• El manejador de memoria: coordina el uso de la memoria principal de la computadora, de manera que todo
programa que se ejecute pueda acceder a toda la memoria que pueda direccionar, aunque haya varios
programas ejecutándose simultáneamente (multitarea o multitasking). Rota el almacenamiento de páginas
(secciones de tamaño fijo) de programas o datos entre la memoria principal y la secundaria, implementando
lo que se llama paginación o memoria virtual.
• El planificador (scheduler): determina las tareas a ejecutarse.
• El despachador (dispatcher): controla la asignación de tiempo de ejecución a las tareas.
75.40 Algoritmos y Programación I
Curso Prof. Servetto
9
Arranque del sistema operativo
Memoria Principal
ROM
Almacenamiento
en Discos
Memoria Principal
ROM
Almacenamiento
en Discos
RAM
RAM
Paso 1:
La máquina comienza ejecutando el programa Boot loader
(calzador) de la memoria ROM. El sistema operativo está
almacenado en la memoria secundaria.
Paso 2:
El programa Boot loader dirige la transferencia del sistema
operativo a la memoria principal y luego le transfiere el
control.
75.40 Algoritmos y Programación I
Curso Prof. Servetto
10
Arranque del sistema operativo
• Se produce mediante un proceso llamado “calce” (boot strapping) cada vez que se
enciende la computadora.
• La CPU está diseñada de manera que cada vez que se enciende, el contador de programa
se inicializa con una dirección determinada. En esa dirección debe comenzar el
“programa calzador” (boot loader), y como la memoria principal o RAM es volátil, la
porción de memoria para este programa se construye con celdas especiales no volátiles
(por ejemplo de memoria flash), y se denomina memoria de sólo lectura o ROM (readonly memory) porque su contenido puede leerse pero no alterarse.
• Además del programa calzador, la ROM contiene otros programas para actividades
básicas de entrada/salida (BIOS –basic input-output system) antes de que comience el
programa calzador o para reportar errores en la carga del sistema operativo. Los
programas en la ROM se denominan firmware.
75.40 Algoritmos y Programación I
Curso Prof. Servetto
11
Coordinación de actividades
• El sistema operativo coordina la ejecución de programas (de
aplicación, utilidades o unidades del propio sistema operativo)
considerando a la actividad de ejecutar un programa como un
proceso y asociándole un estado de proceso (copia de los registros
internos de la CPU en un instante de tiempo, también llamada
“entorno volátil”).
• El planificador (scheduler) y el despachador (dispatcher) se encargan
de mantener el registro de procesos y supervisar la ejecución de los
mismos.
75.40 Algoritmos y Programación I
Curso Prof. Servetto
12
Coordinación de actividades
El planificador
• Mantiene en la RAM una tabla de procesos en la que mantiene
información sobre sus estados, las páginas que les asigna el
manejador de memoria, la prioridad, y la indicación de si están listos
o esperando la ocurrencia de un evento externo como la finalización
de una operación de acceso a memoria secundaria, la presión de una
tecla en el teclado o el arribo de un mensaje de otro proceso.
• Cada vez que se solicita la ejecución de un programa, crea una
entrada para el proceso que origina en la tabla de procesos, y cada
vez que un proceso finaliza se encarga de eliminar su entrada en la
tabla.
75.40 Algoritmos y Programación I
Curso Prof. Servetto
13
Coordinación de actividades
El despachador
• Para permitir el tiempo compartido y la multitarea (posibilidad de que un mismo usuario ejecute
varios programas simultáneamente), se instrumenta lo que genéricamente se llama
multiprogramación: se divide el tiempo en pequeños segmentos llamados tajadas (time slices),
durante los cuales el despachador va turnando la asignación de la CPU a los procesos listos según
un sistema de prioridades.
• Cada vez que el despachador asigna una tajada de tiempo a un proceso, inicia un circuito
temporizador que indica la finalización del intervalo mediante una señal llamada interrupción,
que provoca la copia el entorno volátil del proceso interrumpido y devuelve el control de la CPU al
despachador.
• La computadora tiene un sistema de interrupciones manejado por el despachador, para
coordinar las acciones de la máquina con su entorno. Por ejemplo, un movimiento del mouse o la
presión de una tecla en el teclado generan señales de interrupción. Las señales de interrupción
tienen asignada una prioridad según su origen para que las tareas más importantes se realicen
primero.
75.40 Algoritmos y Programación I
Curso Prof. Servetto
14
Seguridad
• En el más amplio sentido, la responsabilidad del sistema operativo por la seguridad se
manifiesta de múltiples formas, dos de las cuales son la confiabilidad del propio sistema
y la protección de su integridad (prevención de ataques internos mediante modos de
ejecución privilegiados para sus propias funciones y restricción de instrucciones a
procesos comunes).
• Otra función de seguridad es proteger los recursos de la computadora de accesos no
autorizados, estableciendo cuentas de usuario con procedimientos de verificación de
identidad para acceder al sistema. Todo sistema debe tener al menos un usuario
administrador, con permisos especiales vedados a otros usuarios.
• Algunos sistemas operativos permiten a los administradores establecer controles de
auditoria para detectar comportamientos destructivos, ya sea intencionales o
accidentales.
75.40 Algoritmos y Programación I
Curso Prof. Servetto
15
Redes e Internet
Fundamentos. Internet. La “World Wide Web”. Seguridad.
75.40 Algoritmos y Programación I
Curso Prof. Servetto
16
Fundamentos
• La necesidad de compartir información y recursos (impresoras, capacidad de
almacenamiento masivo, etc.) entre computadoras diferentes condujo a sistemas
de computadoras conectadas llamados redes de trabajo (networks).
• Las redes se pueden clasificar:
• Según el alcance, en LAN (local area networks –redes de área local), MAN (metropolitan área
networks –redes de área metropolitana) o WAN (wide area networks –redes de área amplia).
• Según el acceso, en abiertas, cuando son de dominio público, o cerradas, cuando son de
dominio privado (proprietary).
• Según la topología o patrón de conexión, dos de las más populares son la topología de bus,
en la que las máquinas se conectan a una línea común o colectiva, y la topología de estrella,
en la que una máquina sirve de punto central al que se conectan las demás.
75.40 Algoritmos y Programación I
Curso Prof. Servetto
17
Topologías
• La topología de bus se popularizó en los años 90 por un conjunto de
estándares conocidos como Ethernet. Generalmente, las redes bus se
organizan conectando grupos de computadoras cercanas a
dispositivos centrales de enlace (hubs) conectados a un bus
principal, que retransmiten las señales que reciben (amplificadas, si
fuera necesario) a todas las computadoras que tengan conectadas.
• La configuración de estrella tuvo su origen en los años 70 a partir de
grandes computadoras centrales que atendían a muchos usuarios,
cuyas terminales evolucionaron hasta convertirse en computadoras
en sí mismas. Actualmente, esta topología se usa para redes
inalámbricas en las que las computadoras centrales se denominan
puntos de acceso o AP (access points).
75.40 Algoritmos y Programación I
Curso Prof. Servetto
18
Protocolos
• Son las reglas que conducen las actividades en una red, como la transmisión de mensajes entre
computadoras.
• En las redes bus basadas en los estándares Ethernet, el protocolo que rige la transmisión de
mensajes se denomina CSMA/CD (Carrier Sense, Multiple Access with Collision Detection –
monitoreo de transportador, acceso múltiple con detección de colisiones): las máquinas esperan
a transmitir hasta que el bus esté en silencio, y si al transmitir detectan una colisión, esperan un
período breve de duración aleatoria para volver a intentarlo.
• En las redes inalámbricas, la política es tratar de evitar colisiones en vez de detectarlas: CSMA/CA
(Carrier Sense, Multiple Access with Collision Avoidance –monitoreo de transportador, acceso
múltiple con evasión de colisiones). El protocolo de la IEEE más popular de este tipo se conoce
como WiFi. La evasión de colisiones puede no impedirlas, cuando el monitoreo del transportador
(ondas FM) implica que cada computadora es capaz de escuchar a todas las demás, lo cual no
siempre es posible (problema de terminal escondida); otra alternativa es usar al punto de acceso
como intermediario para la coordinación de transmisiones.
75.40 Algoritmos y Programación I
Curso Prof. Servetto
19
Combinación de redes
La conexión de redes existentes para formar un sistema extendido de
comunicación puede ser:
• De redes del mismo tipo. Por ejemplo, las redes bus basadas en los
protocolos Ethernet se pueden conectar mediante distintos dispositivos
conocidos como repetidores (repeaters), puentes (bridges) y desvíos
(switches) de manera que sus buses conformen un único y largo bus.
• De redes de distintas características, como redes WiFi con redes Ethernet.
Las redes deben conectarse de manera que constituyan una red de redes,
conocida como internet. La conexión entre redes para formar una internet se
realiza mediante dispositivos llamados enrutadores (routers), que son
computadoras de propósito específico para retransmitir mensajes.
75.40 Algoritmos y Programación I
Curso Prof. Servetto
20
Repetidores, puentes y
desvíos
Los repetidores pasan las señales
entre dos buses, usualmente con
alguna forma de amplificación, sin
considerar el significado de las
señales.
Los puentes conectan dos buses pero
no necesariamente pasan todos los
mensajes: sólo los destinados a
computadoras del otro lado del
puente.
Los desvíos son esencialmente
puentes con múltiples conexiones,
que permiten conectar más de dos
buses.
75.40 Algoritmos y Programación I
Curso Prof. Servetto
21
Enrutadores
Conectan redes permitiendo que cada una
mantenga sus características internas.
Cada máquina debe tener una dirección única
en la internet, además de una dirección local en
su propia red. Para transmitir un mensaje a una
máquina en una red distante, la emisora debe
incluir en el mensaje la dirección de internet de
la destinataria y enviarlo a su enrutador local.
Los puntos de conexión de una red con la
internet suelen denominarse portales
(gateways), y pueden implicar tan sólo al
enrutador, o, en el caso de redes WiFi, al
conjunto del punto de acceso con el enrutador,
normalmente empaquetados en una única
unidad.
75.40 Algoritmos y Programación I
Curso Prof. Servetto
22
Comunicación entre procesos
• Hay procesos ejecutándose dentro de una misma computadora o en
computadoras distintas de una red que necesitan comunicarse para
cumplir su cometido. Por ejemplo, desde un navegador en una
computadora se puede acceder a páginas web que se encuentran en otra
máquina de la red.
• Una convención para comunicación entre procesos es el llamado modelo
cliente/servidor: un proceso, el servidor, provee servicios a muchos otros,
clientes. Un ejemplo de proceso servidor sería un manejador de bases de
datos.
• Otro modelo es el P2P (peer-to-peer –igual a igual): procesos que se
comunican de a pares. Por ejemplo, películas vía internet, juegos en red,
etc.
75.40 Algoritmos y Programación I
Curso Prof. Servetto
23
Sistemas distribuidos
Consisten de unidades de software que se ejecutan como procesos en
diferentes computadoras. Se distinguen:
• Computación grupal (cluster computing): muchas computadoras
independientes trabajan juntas para proveer servicios como si fueran una
única gran máquina. Se caracterizan por su alta disponibilidad y por el balance
de carga. Por ejemplo los buscadores web.
• Computación en red (grid computing): involucra el desarrollo de software
para distribuir datos y algoritmos entre las máquinas de una red para resolver
problemas de mucha complejidad.
• Computación en la nube (cloud computing): uso/alquiler de computadoras
virtuales en Internet. Por ejemplo Google Docs y Google Apps.
75.40 Algoritmos y Programación I
Curso Prof. Servetto
24
Internet
Arquitectura
Es una internet, es decir, un conjunto de redes conectadas, cada una
construida y mantenida por organizaciones llamadas ISP (Internet Service
Providers –proveedoras de servicio de Internet). Las ISP se clasifican
jerárquicamente según su rol en la estructura general de Internet:
• ISP nivel 1 (tier-1 ISPs): WAN internacionales de alta velocidad y capacidad
típicamente operadas por grandes compañías de comunicaciones. Constituyen el
segmento principal o red troncal de Internet.
• ISP nivel 2 (tier-2 ISPs): redes regionales generalmente operadas por compañías de
comunicaciones. Junto con las ISP nivel 1 proveen la infraestructura de
comunicaciones de Internet.
• ISP de acceso (access ISPs): redes independientes, a veces llamadas intranets,
operadas por compañías que proveen acceso a Internet a usuarios individuales.
75.40 Algoritmos y Programación I
Curso Prof. Servetto
25
Internet
Direcciones
• Toda internet requiere un sistema de direccionamiento que asigne una
dirección única a cada computadora del sistema. En Internet, esas
direcciones se conocen como IP (Internet Protocol addresses), y son
bloques de 32 bits (aunque se está migrando a direcciones de 128 bits –
IPv6) en las que cada byte se representa en notación decimal y se delimita
con un punto. Por ejemplo 192.207.177.5 equivale a
11000000110011111011000100000101.
• Para comodidad de los usuarios, Internet tiene un sistema de
direccionamiento alternativo en el que las máquinas se identifican por
nombres mnemónicos, basado en el concepto de dominios: regiones de
Internet operadas por una institución que se registra con un nombre único
de dominio en la ICANN (Internet Corporation for Assigned Names and
Numbers).
75.40 Algoritmos y Programación I
Curso Prof. Servetto
26
Internet
Direcciones
• A los nombres de dominio se agrega un sufijo separado
por un punto, llamado dominio de nivel superior o TLD
(top-level domain) que refleja la clasificación del
dominio.
TLD
Clasificación de
la institución que
registra el
dominio
• Además de los TLD generales, hay también TLD de dos
letras para países específicos, llamados TLD código de
país (country-code TLDs).
com
comercial
edu
educativa
gov
gubernamental
• Las instituciones que registran un nombre de dominio
pueden extenderlo con prefijos sucesivos separados por
un punto, llamados subdominios, y que representan
desde redes dentro de la jurisdicción del dominio hasta
llegar al primer prefijo que es el nombre de una
máquina.
info
general
museum
museo
net
ISP
org
sin fines de lucro
75.40 Algoritmos y Programación I
Curso Prof. Servetto
…
27
Internet
Direcciones
• En Internet la información se transmite por medio de direcciones IP, y
estas direcciones no tienen nada que ver con las mnemónicas. SI
desde una máquina se quiere mandar un mensaje a otra por su
dirección mnemónica, la aplicación que se utilice debe convertirla a
su equivalente IP.
• La conversión de direcciones se realiza con la ayuda de servidores de
nombres (name servers), que son esencialmente directorios que
proveen servicios de traducción de direcciones a clientes.
• El conjunto de servidores de nombres de Internet se denomina DNS
(domain name system).
75.40 Algoritmos y Programación I
Curso Prof. Servetto
28
Internet
Aplicaciones tradicionales
Correo electrónico
• Para tener una cuenta de correo electrónico un usuario debe registrarse en un servidor de
correo (mail server) establecido en un dominio; por ejemplo, gmail.com, yahoo.com.ar,
live.com.ar, fi.uba.ar, etc.
• Cuando un usuario envía un email desde su máquina, éste se transfiere a su cuenta en su
servidor de correo, y el servidor lo retransmite a la cuenta del destinatario, ya sea dentro del
mismo servidor o a otro servidor distinto. El protocolo para estas transmisiones puede ser
SMTP (Simple Mail Transfer Protocol), para mensajes de texto en ASCII, o MIME
(Multipurpose Internet Mail Extensions), para convertir datos no ASCII a una forma
compatible con SMTP.
• Para consultar los mensajes en un servidor los protocolos más populares son POP3 (Post
Office Protocol version 3), para descargar y organizar mensajes en la máquina del receptor
con una aplicación cliente de correo electrónico, como Outlook Express, o IMAP (Internet
Mail Access Protocol), para almacenar y acceder a los mensajes directamente en el servidor.
75.40 Algoritmos y Programación I
Curso Prof. Servetto
29
Internet
Aplicaciones tradicionales
FTP (File Transfer Protocol –protocolo de transferencia de archivos)
• Utilizado por navegadores web como un medio muy eficiente para transferir archivos en un
esquema cliente servidor.
Telnet y Secure Shell (SSH)
• Telnet es un protocolo para acceder a computadoras en forma remota en un esquema cliente
servidor. Su desventaja es que la comunicación no es segura porque se transmite sin encriptar.
• Secure Shell ofrece seguridad al encriptar las transmisiones y también la autenticación de los
interlocutores, es decir, la garantía a cada uno de que el otro es quien dice ser.
VoIP (Voice over Internet Protocol)
• Consiste de dos procesos en diferentes máquinas que transmiten datos de audio vía el modelo
P2P.
Transmisión de Radio (webcasting)
• Transmisión de sonido en tiempo real por propagación P2P o por multicast (delegación de
distribución a enrutadores).
75.40 Algoritmos y Programación I
Curso Prof. Servetto
30
La Web
• La World Wide Web es un sistema de distribución de documentos de
hipertexto o hipermedia interconectados y accesibles vía Internet.
• Con un navegador web (proceso cliente), un usuario visualiza sitios
web (máquinas con un proceso servidor) compuestos de páginas web
que pueden contener texto u otros contenidos multimedia, y se
interconectan mediante hiperenlaces (hyperlinks).
• Ejemplos de navegadores web son Google Chrome, Mozilla Firefox, Internet
Explorer, Opera, Safari.
• Ejemplos de servidores web son Apache, Cherokee, IIS (Internet Information
Services, de Microsoft).
75.40 Algoritmos y Programación I
Curso Prof. Servetto
31
La Web
Estándares - World Wide Web Consortium (W3C)
• URL (Uniform Resource Locators –localizador uniforme de recursos):
direcciones únicas en la web para localizar y recuperar documentos.
• HTTP (HyperText Transfer Protocol –protocolo de transferencia de
hipertexto): especifica cómo se comunican el navegador y el servidor
entre ellos.
• HTML (Hypertext Markup Language –lenguaje de etiquetado de
hipertexto): usado para definir la estructura y contenido de
documentos de hipertexto.
• XML (eXtensible Markup Language –lenguaje extensible de
etiquetado): usado para definir la estructura y contenido de archivos
de datos en formato de texto.
75.40 Algoritmos y Programación I
Curso Prof. Servetto
32
Seguridad
Formas de ataque
• Hay numerosas formas en las que una computadora puede ser
atacada vía conexiones de red, muchas de ellas mediante software
malicioso (malware).
• Hay dos tipos de malware:
• Se transfiere a una computadora para que se ejecute en la misma: virus,
gusanos (worms), troyanos (Trojan horses), y software espía (spyware).
• Software que se ejecuta en otras computadora: ataques de denegación de
servicios o DoS (denial of service), que implican sobrecarga de mensajes.
• Otra forma de ataque que no involucra software, opuesta a la
obtención de información vía spyware, consiste en solicitarla
directamente en forma engañosa (phishing).
75.40 Algoritmos y Programación I
Curso Prof. Servetto
33
Seguridad
Protecciones y curas
• Una técnica de prevención primaria consiste en el filtrado de tráfico que
pasa a través de un punto de la red mediante un programa llamado muro
de fuego (firewall): impide la salida de mensajes a ciertas direcciones
destino o bloquea el ingreso de mensajes con orígenes sospechados.
También se puede usar en computadoras individuales.
• Otra herramienta preventiva con connotaciones de filtrado es el servidor
proxy. Actúa como intermediario entre un cliente y un servidor con el
objeto de proteger al cliente de acciones adversas del servidor. Por
ejemplo, puede chequear mensajes o archivos en busca de virus.
• Otro medio de defensa y cura de invasiones de malware es el software
antivirus.
75.40 Algoritmos y Programación I
Curso Prof. Servetto
34