capitulo i: inteligencia artificialbiblioteca.uns.edu.pe/saladocentes/archivoz/publicacio... · web...
TRANSCRIPT
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
I N D I C E
Página
Presentación
UNIDAD I: INTRODUCCION A LA INGENIERIA DE SISTEMAS
Capítulo I: Introducción.
1.1 ¿Que es ingeniería? 3
1.2 ¿Que es sistema? 5
1.3 ¿Qué es ingeniería de sistemas? 6
1.4 ¿Qué es ciencia? 6
1.5 ¿Qué es tecnología? 7
1.6 Diferencia entre ciencia y tecnología 7
1.7 La tecnología y la ingeniería en el mundo actual 8
1.8 La labor del ingeniero en la transferencia tecnológica 8
1.9 ¿Qué es informática? 9
1.10 ¿Qué es computación? 9
Capítulo II: Estructura del computador. 2.1 Origen y evolución de los computadores. 11
2.2 Perspectivas y aplicaciones. 16
2.3 Futuras generaciones de ordenadores. 16
2.4 Representación numérica: Bits y representación binaria. 17
2.5 Memorias y dispositivos de almacenamiento. 21
2.6 Arquitectura de computadores 23
2.7 Representación de la información 26
2.8 Algebra de Boole: Proposiciones y conectores lógicos. 28
Capítulo III: Teoría general de sistemas.
3.1 El enfoque científico. 33
3.2 Características básicas del método de la ciencia. 34
3.3 Limitaciones del método científico. 35
3.4 Repercusión del método científico en la realidad. 36
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
3.5 Surgimiento: Orígenes del enfoque sistemas. 36
3.6 Leyes de la termodinámica. 38
3.7 Entropía en la información. 38
3.8 Ciencias de los sistemas. 39
3.9 Ciencias de la complejidad. 39
3.10 Sociedad de investigación 40
3.11 Complejidad y modelos 41
3.12 Impacto actual y futuro. 42
Capítulo IV: Los Sistemas Operativos. 4.1 Elementos de un sistema operativo 43
4.2 Que es un sistema operativo 43
4.3 El sistema operativo como administrador de recursos 44
4.4 El sistema operativo como interfaz 44
4.5 El primer sistema operativo. 49
4.6 El sistema operativo y la arquitectura del computador 50
4.7 Multiprogramación 53
4.8 Tiempo compartido 54
4.9 Computadoras personales 54
4.10 Sistemas paralelos 55
4.11 Sistemas distribuidos 55
4.12 Sistemas de tiempo real 56
4.13 Componentes típicos de un sistema operativo 56
4.14 Procesos 59
4.15 Concurrencia 60
4.16 Interbloqueo 60
4.17 Gestión de la memoria 62
4.18 Seguridad 63
4.19 El sistema operativo por dentro 65
Capítulo V: Algoritmos.
5.1 Resolución de problemas con computadoras 68
5.2 Algoritmos 68
5.3 Fases en la resolución de problemas 69
5.4 Herramientas de programación 73
5.5 Tipos de datos 83
Lic. Luis E. Ramirez Milla 2
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
5.6 Identificadores 84
5.7 Operadores utilizados en programación 86
5.8 Operadores de entrada/salida 88
5.9 Lenguajes de programación 90
REFERENCIAS BIBLIOGRAFICAS. 96
Lic. Luis E. Ramirez Milla 3
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
PRESENTACION
El propósito del presente modulo es servir como guía a los estudiantes que cursan la
asignatura Introducción a la Ingeniería de Sistemas. El material presentado es
apropiado para el desarrollo de la primera unidad, describiendo en forma detallada
términos que forman parte de la formación integral del futuro ingeniero de sistemas.
El presente modulo esta estructurado en cinco capítulos, cada uno de los cuales se
detallan a continuación:
Capitulo I, describe el marco introductorio a la ingeniería en su conjunto, definiendo
términos y elementos relacionados a la tecnología en la realidad.
Capitulo II, describe la evolución que ha sufrido la computadora desde sus inicios,
así como su configuración interna.
Capitulo III, describe la filosofía sobre la cual descansa la teoría general de
sistemas.
Capitulo IV, describe al sistema operativo desde el punto de vista de su arquitectura
y los procesos que comprende.
Capitulo V, describe el marco introductorio a la resolución de problemas haciendo
uso del computador.
Finalmente se incluyen las referencias bibliográficas.
Lic. Luis E. Ramirez Milla 4
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
UNIDAD I
Introducción a La ingeniería de sistemas
Lic. Luis E. Ramirez Milla 5
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
CAPITULO I
1.1 ¿Que es Ingeniería?
Es la profesión que aplica conocimientos y experiencias para que mediante
diseños, modelos y técnicas resuelva problemas que afectan a los seres vivos
con creatividad e ingenio, cuidando aspectos sociales y del medio ambiente.
La ingeniería es la profesión en la que el conocimiento de las matemáticas y
ciencias naturales, obtenido mediante estudio, experiencia y práctica, se aplica
con juicio para desarrollar formas de utilizar, económicamente, los materiales y
las fuerzas de la naturaleza para beneficio de la humanidad y del ambiente.
Objetivos de la Ingeniería:
Formular planes de largo alcance y objetivos para vincular los proyectos
Individuales.
Desarrollar los objetivos y planes particulares. (Conocer las necesidades
actuales de la empresa y preveer las futuras para estar preparados.
Tener siempre nuevas ideas, métodos y dispositivos (tecnología
moderna).
El Ingeniero
Las personas que se dedican a la ingeniería reciben el nombre de
ingenieros. La palabra viene del latín ingeniosus.
Su función principal es la de realizar diseños o desarrollar soluciones
tecnológicas a necesidades sociales, industriales o económicas.
Para ello, el ingeniero debe identificar y comprender los obstáculos más
importantes para poder realizar un buen diseño.
Algunos de los obstáculos son los recursos disponibles, las limitaciones
físicas o técnicas, la flexibilidad para futuras modificaciones y adiciones y
Lic. Luis E. Ramirez Milla 6
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
otros factores como el coste, la posibilidad de llevarlo a cabo, las
prestaciones y las consideraciones estéticas y comerciales.
Mediante la comprensión de los obstáculos, los ingenieros deducen
cuáles son las mejores soluciones para afrontar las limitaciones
encontradas cuando se tiene que producir y utilizar un objeto o sistema.
Funciones del Ingeniero
Investigación: Busca nuevos conocimientos y técnicas.
Desarrollo: Emplea nuevos conocimientos y técnicas.
Diseño: Especificar soluciones.
Producción: Transformación de materias primas en productos.
Construcción: Llevar a la realidad la solución de diseño.
Operación: Proceso de manutención y administración para optimizar
productividad.
Ventas: Ofrecer servicios, herramientas y productos.
Administración: Participar en solución de problemas.
Ética profesional
Los ingenieros deben reconocer que vida, seguridad, salud y bienestar de
la población dependen de su juicio.
No se deben aprobar planos o especificaciones que no tengan un diseño
seguro.
Se deben realizar revisiones periódicas de seguridad y confiabilidad.
Prestar servicios productivos a la comunidad.
Comprometerse a mejorar el ambiente.
Los ingenieros deben prestar servicios en sus áreas de competencia.
Deben emitir informes públicos. Se debe expresar la información en forma
clara y honesta.
Deben crear su reputación profesional sobre el mérito de sus servicios.
No usar equipamiento fiscal o privado para uso personal.
Acrecentar honor, integridad y dignidad de la profesión.
Lic. Luis E. Ramirez Milla 7
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Debe continuar con el desarrollo profesional (Continuar la educación)
Apoyar a sociedades profesionales.
Utilizar el Ingenio para resolver problemas.
Ser consciente de su responsabilidad en su trabajo.
1.2 ¿Qué es sistema?
Se muestra a continuación la definición de Sistema propuesta por varios
autores:
L. Von Bertalanffy (1968):
"Un sistema es un conjunto de unidades en interrelación."
Ferdinand de Saussure (1931):
"Sistema es una totalidad organizada, hecha de elementos solidarios que no
pueden ser definidos más que los unos con relación a los otros en función de
su lugar en esa totalidad."
Estándar X3.12-1970 (ANSI), Estándar 2382/V, VI (ISO) Vocabulary for
Information Processing:
"Sistema es una colección organizada de hombres, máquinas y métodos
necesaria para cumplir un objetivo específico."
Propiedades de un sistema
ESTRUCTURA:
Definida por los elementos que conforman el sistema y las interrelaciones
entre ellos.
EMERGENCIA:
Son propiedades que afloran, producto de una estructura determinada.
Lic. Luis E. Ramirez Milla 8
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
COMUNICACIÓN:
Indica el grado y la forma de interrelación entre los elementos de un sistema
CONTROL:
Consecuencia de la comunicación. Permite la regulación y supervivencia del
sistema.
1.3 ¿Qué es Ingeniería de Sistemas?
Es la aplicación de esfuerzos científicos y de ingeniería para:
Transformar una necesidad de operación en una descripción de
parámetros de rendimiento del sistema y una configuración del sistema a
través del uso de un proceso iterativo de definición, síntesis, análisis,
diseño, prueba y evaluación;
Integrar parámetros técnicos relacionados para asegurar la compatibilidad
de todos los interfaces de programa y funcionales de manera que optimice
la definición y diseño del sistema total;
Integrar factores de fiabilidad, mantenibilidad, seguridad, supervivencia,
humanos y otros en el esfuerzo de ingeniería total a fin de cumplir los
objetivos de coste, planificación y rendimiento técnico.
Es un conjunto de metodologías para la resolución de problemas mediante
el análisis, diseño y gestión de sistemas.
Es el conjunto de recursos humanos y materiales a través de los cuales se
recolectan, almacenan, recuperan, procesan y comunican datos e
información con el objetivo de lograr una gestión eficiente de las
operaciones de una organización.
1.4 ¿Qué es ciencia?
Es un proceso de adquisición y refinado de conocimiento, así como, la
organización de dicho conocimiento.
Lic. Luis E. Ramirez Milla 9
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Es el conocimiento producto de una práctica humana con reglas establecidas,
cuya finalidad es obtener por diversos medios un conjunto de reglas o leyes
universales, generalmente de índole matemática, que dan cuenta del
comportamiento de un sistema y predicen cómo actuará dicho sistema en
determinadas circunstancias.
La ciencia experimental se ocupa exclusivamente del estudio del universo
natural, ya que por definición todo lo que puede ser detectado o medido forma
parte de él.
Los científicos se ajustan, en su investigación, a un cierto método, el método
científico, un proceso para la adquisición de conocimiento empírico.
La ciencia puede a su vez diferenciarse en ciencia básica y aplicada, siendo
esta última la aplicación del conocimiento científico a las necesidades humanas
y al desarrollo tecnológico.
1.5 ¿Qué es tecnología?
Es la propiedad para aplicar los conocimientos de la Ciencia en los procesos de
producción.
“La Tecnología sería así el lazo de unión de las ideas científicas y la aplicación
práctica de dichas ideas.”
1.6 Diferencias entre ciencia y tecnología
Ciencia TecnologíaOrientada al conocimiento Orientada a las necesidades
Parte de la búsqueda del conocimiento Parte de la utilidad
Soluciona interrogantes Soluciona problemas prácticos
Inquisidora Constructiva
Nuevo conocimiento como producto del
análisis
Nuevo objeto tecnológico como producto
de la síntesis
1.7 La tecnología y la ingeniería en el mundo actual
Lic. Luis E. Ramirez Milla 10
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Estamos viviendo la era de la información. Los medios de comunicación bajo los
efectos de los cambios tecnológicos han ido cambiando. La comunicación hoy
día ocupa un lugar predominante y es considerada un factor esencial en todas
las organizaciones. Al convertirse la información en un elemento esencial los
métodos de control y recuperación están cambiando y facilitando el acceso a
ella como consecuencia de las innovaciones tecnológicas.
La ingeniería está en plena transformación y depende, como nunca antes, de
actividades diversas. En las viejas épocas, las señales del desarrollo tecnológico
pasaban por el humo de las chimeneas, el rugir de los altos hornos, el
repiqueteo de los telares, el crujido de las prensas. La situación es otra en
nuestros días; el desarrollo emprende caminos alternativos y es valorado por las
industrias de servicios, la utilización masiva de aparatos electrónicos y las
comunicaciones vertiginosas por satélites, cables de fibra óptica, señales
inalámbricas que en extraño silencio transmiten enormes caudales de
información.
1.8 La labor del Ingeniero en la Transferencia tecnológica
¿Puede un ingeniero terminar su formación universitaria y encontrar trabajo
rápidamente? Ciertamente sí, pues es un profesional muy requerido en el
mercado, en todas las especialidades. Pero ¿cómo puede un ingeniero
diferenciarse del resto de sus colegas y lograr hacerse un nicho en el
competitivo mundo laboral? Porque ingenieros hay muchos, por lo que cada uno
debiera aspirar a hacerse de un sello diferenciador.
El mundo de hoy es dinámico, global e incierto. De un día para otro puede
cambiar la política de una empresa, puede quebrar una prestigiosa
transnacional o puede desatarse una crisis financiera mundial. En un contexto
tal, todo profesional debe ser capaz de adaptarse al mundo actual,
perfeccionarse y anticiparse a los cambios, identificar las nuevas oportunidades,
Lic. Luis E. Ramirez Milla 11
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
y reinventarse permanentemente para ofrecer al mercado una oferta profesional
original y única.
1.9 ¿Qué es informática?
Es la ciencia que se encarga del tratamiento automático de la información. Este
tratamiento automático es el que ha propiciado y facilitado la manipulación de
grandes volúmenes de datos y la ejecución rápida de cálculos complejos.
La informática estudia lo que los programas son capaces de hacer (teoría de la
computabilidad), de la eficiencia de los algoritmos que se emplean (complejidad
y algorítmica), de la organización y almacenamiento de datos (estructuras de
datos, bases de datos) y de la comunicación entre programas, humanos y
máquinas (interfaces de usuario, lenguajes de programación, procesadores de
lenguajes...), entre otras cosas.
En sus inicios, la informática facilitó los trabajos repetitivos y monótonos,
especialmente en el área administrativa, debidos a la automatización de esos
procesos.
1.10 ¿Qué es computación?
La Computación es la disciplina que busca establecer una base científica para
resolver problemas mediante el uso de dispositivos electrónicos y sistemas
computacionales.
La Computación es el estudio de métodos algorítmicos para representar y
transformar la información, incluyendo su teoría, diseño, implementación,
aplicación y eficiencia.
La Computación se define como el conjunto de conocimientos científicos y
técnicos (bases teóricas, métodos, metodologías, técnicas, y tecnologías) que
Lic. Luis E. Ramirez Milla 12
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
hacen posible el procesamiento automático de los datos mediante el uso de
computadores.
El concepto fundamental de la Computación es el concepto de algoritmo.
Computación e Informática
Informática es un vocablo inspirado en el francés informatique, formado a su
vez por la conjunción de las palabras information y automatique, para dar
idea de la automatización de la información que se logra con los sistemas
computacionales.
Esta palabra se usa principalmente en España y Europa. Computación se
usa sobre todo en América y proviene de cómputo (o cálculo).
Lic. Luis E. Ramirez Milla 13
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
CAPITULO II
2.1 Origen y evolución de los computadores
La historia conocida de los artefactos que calculan o computan, se remonta a
muchos años antes de Jesucristo.
El ÁbacoUsa cosas para contar, ya sea los dedos, piedras, conchas, semillas. El otro es
colocar esos objetos en posiciones determinadas. Sirve hasta el día de
hoy, para realizar complejos cálculos aritméticos
La PascalinaLa primera máquina de calcular mecánica, un precursor del ordenador digital,
fue inventada en 1642 por el matemático francés Blaise Pascal. Utilizaba una
serie de ruedas de diez dientes que representaba un dígito del 0 al 9.Las ruedas
estaban conectadas de tal manera que podían sumarse números haciéndolas
avanzar el número de dientes correcto.
Lic. Luis E. Ramirez Milla 14
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
La máquina analíticaElaborada en el siglo XIX el británico Charles Babbage. Tenía las
características de un ordenador moderno. Incluía un flujo de entrada en forma
de paquete de tarjetas perforadas, una memoria, un procesador y
una impresora.
Generación de las computadoras
Primeros ComputadoresLos computadores analógicos comenzaron a construirse a principios
del siglo XX. Los primeros modelos realizaban los cálculos mediante ejes y
engranajes giratorios.
Computadores electrónicosEn 1944 aparece la primera computadora, al modo actual, que se
pone en funcionamiento. El Dr. Howard Aiken, la presenta con el nombre de
Mark I.
Primera Generación (1958)
Sistemas constituidos por tubos de vacío, desprendían bastante
calor y tenían una vida relativamente corta.
Máquinas grandes y pesadas. Alto consumo de energía.
Almacenamiento de la información en tambor magnético interior.
Su costo era muy elevado
Lic. Luis E. Ramirez Milla 15
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Ingresaban los datos y programas en código especial por medio de
tarjetas perforadas
Se construyo la UNIVAC
Salieron a la venta la IBM 701 y IBM 650
Segunda Generación (1959-1964)
Transistor como componente principal. Disminución del tamaño.
Disminución del consumo de energía y de la producción del calor.
Mayor rapidez (ms.)
Instrumentos de almacenamiento: cintas y discos.
Mejoran los dispositivos de entrada y salida. Aumenta la
confiabilidad
Los lenguajes de programación mejoraron y se convirtieron en
comerciales como el COBOL
Lic. Luis E. Ramirez Milla 16
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Tercera Generación (chips)(1964-1971)
Circuito integrado. Menor consumo de energía.
Reducción de espacio. Aumento de fiabilidad y flexibilidad.
Mayor capacidad de almacenamiento. Rapidez en la respuesta.
Generalización de lenguajes de programación de alto nivel.
Compatibilidad para compartir software entre diversos equipos
Rompe con la tradición de las computadoras grandes y en su
lugar salen las minicomputadoras.
Se crea las macrocomputadoras también conocidas como
Mainframes
Uso creciente de discos magnéticos.
Cuarta Generación (1971-1982)
Se minimizan los circuitos, aumenta la capacidad de
almacenamiento.
El microprocesador: controla las funciones del ordenador.
Memorias Electrónicas: resultan más rápidas.
Sistema de tratamiento de base de datos
Reducen el tiempo de respuesta. Aparece el Multiproceso.
Gran expansión del uso de las Computadoras.
Lic. Luis E. Ramirez Milla 17
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Teleproceso
Se crean las computadoras personales
Generación posterior y la Inteligencia Artificial (1982-)
Mayor velocidad y Mayor miniaturización de los elementos.
Aumenta la capacidad de memoria.
Lenguajes de programación: PROGOL (Programming Logic) y
LISP (List Processing).
Máquinas activadas por la voz.
Características de procesamiento similares a las secuencias de
procesamiento Humano.
Multiprocesador (Procesadores interconectados).
Sistemas expertos y redes de comunicaciones.
Lic. Luis E. Ramirez Milla 18
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
2.2 Perspectivas y Aplicaciones.
Las características de las arquitecturas que han aparecido recientemente en el
mercado de los computadores, tales como: arquitecturas multimedia, EPIC,
hyperthreading, técnicas para reducción del consumo de potencia,
HyperTransport, permiten profundizar en la mejora de prestaciones que éstas
características suponen para las aplicaciones y su estudio en los aspectos
relativos a la optimización de código teniendo en cuenta las características de la
arquitectura y la microarquitectura. Todo esto además también permitirá abordar
en consecuencia la problemática del desarrollo de compiladores con capacidad
de optimización.
2.3 Futuras generaciones de computadores.
La tecnología de los microprocesadores y de la fabricación de circuitos
integrados está cambiando rápidamente.
En la actualidad, los microprocesadores más complejos contienen unos 10
millones de transistores. Se prevé que en el 2020 los microprocesadores
avanzados contengan más de 50 millones de transistores, y unos 800 millones
en el 2030.
Las técnicas de litografía también tendrán que ser mejoradas. En los próximos
años, el tamaño mínimo de los elementos de circuito será inferior a 0,2
micras.
Con esas dimensiones, es probable que incluso la luz ultravioleta de baja
longitud de onda no alcance la resolución necesaria.
Otras posibilidades alternativas son el uso de haces muy estrechos de
electrones e iones o la sustitución de la litografía óptica por litografía
que emplee rayos X de longitud de onda extremadamente corta.
Se cree que el factor limitante en la potencia de los microprocesadores
Lic. Luis E. Ramirez Milla 19
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
acabará siendo el comportamiento de los propios electrones al circular por
los transistores.
Cuando las dimensiones se hacen muy bajas, los efectos cuánticos debidos a
la naturaleza ondulatoria de los electrones podrían dominar el
comportamiento de los transistores y circuitos. Puede que sean necesarios
nuevos dispositivos y diseños de circuitos a medida que los
microprocesadores se aproximan a dimensiones atómicas.
Para producir las generaciones futuras de microchips se necesitarán técnicas
como la epitaxia por haz molecular, en la que los semiconductores se
depositan átomo a átomo en una cámara de vacío ultraelevado, o la
microscopía de barrido de efecto túnel, que permite ver e incluso desplazar
átomos individuales con precisión.
2.4 Representación numérica: Bits y representación binaria.
Existen diversas representaciones numéricas.
Sin duda, las más fáciles y cómodas de utilizar para fines matemáticos, son las
que se representan mediante bases numéricas. Las representaciones numéricas
que utilizan bases, son posicionales. Es posible representar una misma cantidad
numérica, en diferentes bases.
Bases numéricas
La base mas común y natural de utilizar es la base 10, la que corresponde a los
números decimales. En esta base estamos acostumbrados a realizar todas
nuestras operaciones de cálculo.
Por ejemplo...
Lic. Luis E. Ramirez Milla 20
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
El número 7523810 puede ser representado de la forma general, de la siguiente
forma:
7 ∗ 104 + 5 ∗ 103 + 2 ∗ 102 + 3 ∗ 101 + 8 ∗ 100.
Números Binarios
En el mundo digital, se utilizan generalmente representaciones que tienen solo 2
estados discretos (0 o 1, on u off, etc...). Para ello se utilizan los números
binarios {0,1} cuya base es 2.
Por ejemplo...
Si se tiene 10011102 corresponde a:
1 ∗ 26 + 0 ∗ 25 + 0 ∗ 24 + 1 ∗ 23 + 1 ∗ 22 + 1 ∗ 21 + 0 ∗ 20 = 781
En la computación son muy útiles además las bases octal (8) y hexadecimal
(16). La utilidad de estas bases, se debe a que pueden representar información
binaria de manera compacta (8 y 16 bits).
Conversión de Bases Numéricas
Para la conversión desde la base decimal, a otra base, se realizan divisiones
sucesivas de los cocientes, por la base a la cual se transformara. Rescatando en
cada paso los restos de las divisiones.
Por ejemplo...
Convertir 23410 a la base octal.
234 8
Lic. Luis E. Ramirez Milla 21
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
29 23 5 →23410 = 3528
0 3
Esta idea se puede extender además para números fraccionarios.
En este caso es necesario tratar la parte entera y la parte decimal, por separado.
Por ejemplo.
Convertir 23,437510 a la base binaria.
23 2 0,4375 2
11 1 0,875 2
5 1 1,750 2 →23,437510 = 10111,01112
2 1 1,500 2
1 0 1,000 2
0 1
Para realizar una conversión desde cualquier base a la base decimal, es
necesario aplicar la formula general propuesta anteriormente:
Por ejemplo...Convertir 724,348 a la base decimal.
7 ∗ 82 + 2 ∗ 81 + 4 ∗ 80 + 3 ∗ 8−1 + 4 ∗ 8−2 = 468,4375
Forma general de expresar un número en función de su base
k1k2k3 . . . km = k1 ∗ B m−1 + k2 ∗ B m−2 + · · · + kn-1∗ B1 + km∗ B0
Lic. Luis E. Ramirez Milla 22
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
donde B =base y ki = la cifra i .
Las cifras ki pueden ser dígitos entre 0 y B − 1.
La base mas común y natural de utilizar es la base 10, la que corresponde a los
números decimales. En esta base estamos acostumbrados a realizar todas
nuestras operaciones de cálculo.
Aritmética de los computadores
Los computadores tienen como unidad de almacenamiento, solo la capacidad
de distinguir entre 2 estados (on u off, 0 o 1, etc..).
Los computadores pueden realizar operaciones aritméticas, por lo que requieren
de algún dispositivo de hardware para almacenar los números que se estén
operando. Estos dispositivos se denominan registros. Los registros tienen un
ancho en bits, definido por la arquitectura. Actualmente los procesadores utilizan
registros de 32 o 64 bits.
El registro
Un registro se representa por un conjunto de bits (generalmente 8, 16, 32 o 64).
Un ejemplo de un registro de 16 bits esta dado por:
1 1 0 0 1 0 1 1 0 0 0 1 1 0 1 1
Por convención, los grupos de 8 bits (b) se denominan bytes (B).
Podemos darnos cuenta, que si un número debe ser almacenado en un registro,
entonces el tamaño máximo de este numero esta limitado por el ancho del
registro.
Lic. Luis E. Ramirez Milla 23
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Con solo 16 bits el número más grande representable por un registro es:
216 − 1 = 65535.
Sin embargo, ¿Cuando hemos utilizado nuestros computadores normales (de 32
bits), hemos podido trabajar con números mayores a 232 − 1?
2.5 Memorias y dispositivos de almacenamiento.
El propósito del almacenamiento es guardar datos que la computadora no esté
usando. El almacenamiento tiene tres ventajas sobre la memoria:
Hay más espacio en almacenamiento que en memoria.
El almacenamiento retiene su contenido cuando se apaga el computador
El almacenamiento es más barato que la memoria.
El medio de almacenamiento más común es el disco magnético. El dispositivo
que contiene al disco se llama unidad de disco (drive). La mayoría de las
computadoras personales tienen un disco duro no removible. Además
usualmente hay una o dos unidades de disco flexible, las cuales le permiten usar
discos flexibles removibles. El disco duro normalmente puede guardar muchos
más datos que un disco flexible y por eso se usa disco duro como el archivero
principal de la computadora. Los discos flexibles se usan para cargar programas
nuevos, o datos al disco duro, intercambiar datos con otros usuarios o hacer una
copia de respaldo de los datos que están en el disco duro.
Una computadora puede leer y escribir información en un disco duro mucho más
rápido que en el disco flexible. La diferencia de velocidad se debe a que un
disco duro está construido con materiales más pesados, gira mucho más rápido
que un disco flexible y está sellado dentro de una cámara de aire, las partículas
de polvo no pueden entrar en contacto con las cabezas.
Lic. Luis E. Ramirez Milla 24
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
La memorización consiste en la capacidad de registrar sea una cadena de
caracteres o de instrucciones (programa) y tanto volver a incorporarlo en
determinado proceso como ejecutarlo bajo ciertas circunstancias.
El computador dispone de varios dispositivos de memorización:
La memoria ROM
La memoria RAM
Las memorias externas. Un aspecto importante de la memorización es la
capacidad de hacer ese registro en medios permanentes, básicamente los
llamados "archivos" grabados en disco.
El acumulador
La principal memoria externa es el llamado "disco duro", que está conformado
por un aparato independiente, que contiene un conjunto de placas de plástico
magnetizado apto para registrar la "grabación" de los datos que constituyen los
"archivos" y sistemas de programas. Ese conjunto de discos gira a gran
velocidad impulsado por un motor, y es recorrido también en forma muy veloz
por un conjunto de brazos que "leen" sus registros. También contiene un circuito
electrónico propio, que recepciona y graba, como también lee y dirige hacia
otros componentes del computador la información registrada.
Indudablemente, la memoria externa contenida en el disco duro es la principal
fuente del material de información (data) utilizado para la operación del
computador, pues es en él que se registran el sistema de programas que dirige
su funcionamiento general (sistema operativo), los programas que se utilizan
para diversas formas de uso (programas de utilidad) y los elementos que se
producen mediante ellos (archivos de texto, bases de datos, etc.).
Unidades de Memoria
BIT: puede tener valores de 0 y 1, es decir sistema binario
BYTE: son 8 Bits.
Lic. Luis E. Ramirez Milla 25
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
KILOBYTE (KB) = 2 **10 bytes
MEGABYTE (MB) = 2 ** 10 Kilobyte = 2 ** 20 Bytes
GIGABYTE (GB) = 2** 10 Megabyte = 2** 30 Bytes
TERABYTE (TB) =2**10 Gigabyte = 2**40 Bytes
2.6 Arquitectura de computadores.
La Arquitecturas de Computadores es parte de los Sistemas Digitales y
constituye el fundamento de los llamados Sistemas de Computación.
Los computadores constituyen sin duda el área de mayor dinamismo e
innovación con un crecimiento espectacular desde su introducción alrededor del
año 1940. Los computadores han cambiado la sociedad y lo seguirán haciendo.
¿Por que estudiar Arquitecturas?
Conocer la arquitectura de un sistema permite construir Software de
mayor desempeño.
Ubicuidad de los procesadores: electrodomésticos, PDA, celulares etc...
Desarrollo de sistemas embebidos.
Desarrollo de procesadores propios.
La arquitectura esta determinada por los atributos de un sistema que son
visibles para un programador.
Por ejemplo...
Conjunto de instrucciones.
Número de Bits utilizados.
Mecanismos E/S.
Direccionamiento de memoria.
etc..
Lic. Luis E. Ramirez Milla 26
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Evolución tecnológica
Los Procesadores han aumentado su velocidad a tasas increíbles, debido
principalmente a la disminución del tamaño de sus componentes.
Aumento del tamaño y velocidad de las memorias; y la velocidad del
sistema E/S.
El desempeño relativo por unidad de costo tiene un crecimiento
explosivo.
Ley de Moore: “El desarrollo de las tecnologías de fabricación permite que el numero de
transistores integrados en los microprocesadores se duplique cada 18 meses.”
Organización
La organización tiene referencia a las unidades funcionales y sus
interconexiones. No tiene un impacto para un programador, por lo que
cambios en ella son transparentes al momento de la implementación. Sin
embargo es necesario tenerla en cuenta.
Por ejemplo...
Detalles del hardware interno.
Lic. Luis E. Ramirez Milla 27
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Señales de control
Tecnología de memoria utilizada.
Aspectos que intervienen en la arquitectura de un sistema
Tecnología.
Aplicaciones.
Sistemas Operativos.
Lenguajes de Programación
Procesadores
Los procesadores sufren un incremento anual de su frecuencia cercano
al 20 %.
La capacidad lógica de los procesadores tiene un incremento de un 30 %
anual.
Memoria Ram
Las memorias de acceso aleatorio (RAM) han ido aumentando en
capacidad, llegando a un 60% por año.
No así su velocidad de acceso la que solo alcanza un crecimiento de un
10 % anual.
Almacenamiento
Los discos duros tienen un crecimiento anual cercano al 60 %.
La información que se genera en todo el mundo aumenta a un ritmo de un
30 % anual.
2.7 Representación de la Información.
Lic. Luis E. Ramirez Milla 28
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
En el mundo que vivimos estamos rodeados de información, se dice la llamada
“Sociedad de la información”. Pero, ¿Que es la información?
Definición de Información
Datos: Representación simbólica de un atributo o característica. Un dato
por si solo no dice nada.
Información: Conjunto de datos procesados que nos permiten realizar
operaciones o tomar decisiones.
Información analógica e Información Digital
Comúnmente la información es procesada de 2 maneras: analógica y
digitalmente.
¿Cual es la diferencia entre información digital e información analógica?
La representación de la información esta dada por señales. Por lo que
existen señales analógicas y señales digitales.
Una señal se puede considerar como una función en el tiempo g (t ). Una
función g (t ) continua en el tiempo se dice que es una señal analógica.
Por su parte, una señal digital es una función discreta (niveles).
Lic. Luis E. Ramirez Milla 29
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Señales Analógicas:
Audio.
Instrumentos con agujas.
Señales Digitales:
TTL.
instrumentos con indicadores numéricos.
En la naturaleza todo es analógico, ya que físicamente todo es continuo.
Los computadores realizan sus operaciones sobre información digital.
Es posible convertir la información analógica en información digital y
viceversa (ADC y DAC).
¿Es mejor la información digital?
Se evitan errores debidos a cambios físicos, como la temperatura,
humedad, etc.
Se evitan los errores acumulativos.
2.8 Algebra de Boole: Proposiciones y conectores lógicos.
En 1815 George Boole propuso una herramienta matemática llamada Algebra
de Boole. Luego en 1938 Claude Shannon propuso que con esta algebra es
posible modelar los llamados Sistemas Digitales.
Lic. Luis E. Ramirez Milla 30
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
El Algebra de Boole es un sistema matemático que utiliza variables y operadores
lógicos. Las variables pueden valer 0 o 1. Y las operaciones básicas son OR (+)
y AND (·).
Luego se definen las expresiones de conmutación como un finito de variables y
constantes, relacionadas mediante los operadores (AND y OR).
En la ausencia de paréntesis, se utilizan las mismas reglas de precedencia, que
tienen los operadores suma (OR) y multiplicación (AND) en el algebra normal.
Algebra booleana bivalente
Una algebra de Boole Bivalente se define sobre un conjunto de dos elementos
B={0,1}, con reglas para los operadores binarios + y . de la siguiente manera:
x y x.y x+y x x
0 0 0 0 0 1
0 1 0 1 1 0
1 0 0 1
1 1 1 1
Algebra de Boole: Leyes
1) Conmutatividad:
X + Y = Y + X
X · Y = Y · X
2) Asociatividad:
X + (Y + Z ) = (X + Y ) + Z
X · (Y · Z ) = (X · Y ) · Z
3) Distributividad:
Lic. Luis E. Ramirez Milla 31
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
X + (Y · Z ) = (X + Y ) · (X + Z )
X · (Y + Z ) = (X · Y ) + (X · Z )
4) Elementos Neutros (Identidad):
X + 0 = X
X · 1 = X
5) Complemento:
X + X = 1
X · X = 0
6) Dominación:
X + 1 = 1
X · 0 = 0
7) Idempotencia:
X + X = X
X · X = X
8) Doble complemento:
X = X
9) Absorción:
X + X · Y = X
X · (Y + X ) = X
10) De Morgan:
A · B = A + B
A + B = A · B
Lic. Luis E. Ramirez Milla 32
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Teorema de la Simplificación
A + A · B = A + B
A · (A + B ) = A · B
Expresiones de conmutación: Definiciones
Literal: Es toda ocurrencia de una variable, ya sea complementada o sin
complementar, en una expresión de conmutación.
Por ejemplo, en la expresión de conmutación:
A · B + C · A + D + B · 1
A, B , C y D son Variables.
A, B , C , A, D y B son Literales.
1 es una Constante.
Expresión Dual: Esta expresión se obtiene, intercambiando las operaciones
AND por OR (y viceversa), e intercambiando las constantes 0 por 1 y 1 por 0 en
la expresión de conmutación.
Por ejemplo, para la expresión de conmutación:
(A · B ) + (C · D ) + 0
La Expresión Dual es:
(A + B ) · (C + D ) · 1
Funciones Booleanas
Lic. Luis E. Ramirez Milla 33
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Una variable binaria puede tomar el valor 0 o 1. Una función de Boole es una
función formada con variables binarias, dos operadores binarios OR y AND, el
operador NOT, el paréntesis y el signo igual. Para un valor dado de variables, la
función puede ser 0 o 1. Considérese por ejemplo la función de Boole:
F1 = x y z
La función F1 es igual a 1 si x=1 y y=1 y z=1; de otra manera F1=0. Una función
de Boole puede ser representada por medio de una tabla de verdad.
Tabla de verdad para: F1 = x y z
Una función de Boole puede ser transformada de una expresión algebraica a un
diagrama lógico compuesto de compuertas AND, OR y NOT
Diagrama lógico para: F1 = x y z
Lic. Luis E. Ramirez Milla 34
z
xy F
1
x y z F1
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 0
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Ejercicios: Simplifique la siguiente función de Boole al mínimo numero de
literales y elabore su diagrama de compuertas respectivo.
1. x + x y
2. x ( x + y )
3. x y z + x y z + x y
4. x y + x z + y z
Lic. Luis E. Ramirez Milla 35
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
CAPITULO III
Teoría general de sistemas.
Surgió de los trabajos Ludwing Von Bertalanffy. La teoría general de sistemas no
busca solucionar problemas.
Son formulaciones conceptuales que pueden crear condiciones de aplicación en la
realidad empírica.
3.1 El enfoque científico
Es la herramienta intelectual más elaborada que ha tenido el ser humano.
Este método se basa en el positivismo, el cual es definido por el diccionario de la
lengua española como “Un sistema filosófico que admite únicamente el método
experimental y rechaza toda noción a priori y todo concepto universal y absoluto”.
Predomina un esquema de pensamiento en vez de buscar la explicación de las
cosas en lo mágico y lo sobrenatural, privilegiaba el empleo de la razón, a través
de un proceso deductivo y mediante la observación.
La ciencia es una manera para adquirir conocimientos del mundo verificable
públicamente, la cual se caracteriza por la aplicación del pensamiento racional a
la experiencia, experiencia que se deriva de la observación de los experimentos
diseñados deliberadamente, siendo el objetivo la expresión concisa de las leyes
que gobiernan las regularidades del universo, las cuales se expresan
matemáticamente de ser posible.
Antiguamente, los campos del saber dominados por hombres de grandes dote.
Pero esto resulta casi impracticable a partir de 1800, debido al avance de la
ciencia y al deseo de profundizar en esta, entonces fue necesario dividir la
ciencia en partes (Biología, Física, Química, etc).
Lic. Luis E. Ramirez Milla 36
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
3.2 Características básicas del método de la ciencia
Las tres características que definen el patrón de actividad de la ciencia son:
reduccionismo, repetibilidad y refutación.
Entonces diremos que podríamos reducir la complejidad de la variedad del
mundo real con experimentos cuyos resultados se validan mediante su
repetibilidad, y podríamos erigir conocimientos a través de la hipótesis.
Reduccionismo Asume que para cualquier fenómeno que estudiemos podremos dividirlo en sus
partes elementales siendo las conclusiones a las que lleguemos, las mismas
que si hubiésemos analizado el problema en su totalidad.
“Es a través de la reducción que el científico trata de tener un completo dominio
acerca de la investigación que esta llevando a cabo, de tal manera que los
resultados obtenidos en el experimento sean el producto de sus acciones y no
de interacciones complejas de las cuales no esta consciente”
Repetibilidad Se refiere a la repetición de los fenómenos para establecer una ley, según la
cual podamos inferir sus comportamientos futuros. El conocimiento científico es
conocimiento público, no tenemos otra opción, sino aceptar lo que se puede
demostrar repetidamente en los experimentos.
“El científico moderno considera la inducción como el proceso esencial para la
adquisición de conocimiento, además sostiene que no puede sostenerse
ninguna generalización, a menos que sea comprobada una y otra vez por
nuevos y más experimentos, es decir si resiste los embates de un proceso de
inducción”.
Lic. Luis E. Ramirez Milla 37
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Refutabilidad Es una manera de generación de conocimiento, mediante la negación de la
verdad. Esto se origina de la imposibilidad de probar todo mediante la inducción.
“Una hipótesis refutada es un resultado experimental mas valioso que aquel en
el cual la hipótesis sobrevive a la verificación; de ahí que el experimentalista
deba intentar destruir su hipótesis, buscándole la verificación mas severa que se
le puede ocurrir”
3.3 Limitaciones del método científico.
El principal problema del método científico, esta en su capacidad para hacer
frente a la complejidad, debido a que esta asume que los componentes del todo
son los mismos cuando se les examina individualmente como cuando asumen su
rol en un todo (reduccionismo).
Otro de los problemas que enfrenta la ciencia, es la repetibilidad, lo cual es
imposible dentro del contexto sociocultural, debido a la diversidad de factores
que actúan en un mismo instante en una porción de la realidad, y al mismo
tiempo porque lo que sucede en los sistemas sociales es siempre una mezcla de
efectos planeados y no planeados. Los sistemas sociales revelaran tendencias
en vez de leyes.
No solo la complejidad que encontramos en el mundo real es un problema, sino
que hay que saber que herramienta intelectual haremos uso en tal o cual
problema. La ciencia, debido a su enfoque reduccionista en la solución de estos,
trata de aplicar un esquema que funciona bien en niveles inferiores de
complejidad, a niveles superiores, tenemos así, que el método de la ciencia se ha
encontrado con problemas en los sistemas socio-culturales, al tratar de aplicar su
enfoque en solucionar problemas de este tipo.
Lic. Luis E. Ramirez Milla 38
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
3.4 Repercusión del método científico en la sociedad
A conducido al surgimiento de una sociedad individualista, competitiva y
materialista.
La formación bajo el paradigma de la ciencia se nos ha dado desde la niñez,
ya sea en el hogar o en la escuela primaria. Luego viene la secundaria y la
universidad, y el esquema de aprendizaje sigue siendo el mismo:
reduccionismo, replicación y refutación.
El adulto, producto de este esquema educativo, es una persona que tiene un
escaso sentido del trabajo: “esquema calculativo”.
3.5 Surguimiento: Orígenes del enfoque sistemas
La aparición del enfoque de sistemas tiene su origen en la incapacidad
manifiesta de la ciencia para tratar problemas complejos”.
Complejidad
El problema de la complejidad es especialmente patente en las ciencias
sociales, que deben tratar con un gran número de factores humanos,
económicos, tecnológicos y naturales fuertemente interconectados. En este
caso la dificultad se multiplica por la imposibilidad de llevar a cabo
experimentos y por la propia intervención del hombre como sujeto y como
objeto (racional y libre) de la investigación.
La mayor parte de los problemas con los que tratan las ciencias sociales son
de gestión: organización, planificación, control, resolución de problemas,
toma de decisiones,... En nuestros días estos problemas aparecen por todas
partes: en la administración, la industria, la economía, la defensa, la sanidad,
etc.
Lic. Luis E. Ramirez Milla 39
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Pensamiento total
Así, el enfoque de sistemas aparece para abordar el problema de la
complejidad a través de una forma de pensamiento basada en la totalidad y
sus propiedades que complementa el reduccionismo científico.
Algunos conceptos
Sistema.Un conjunto de elementos dinámicamente relacionados para alcanzar un
objetivo, operando sobre datos/energía/materia para proveer
información/energía/materia.
Sistema abierto (entropia).Que rebate el del sistema cerrado, en el cual no existía ninguna
interconexión con el entorno (sistemas aislados), el mismo que genera
desorden y la posibilidad de ser medido.
Equifinalidad.El mismo que permite explicar como bajo diversas condiciones iniciales es
posible llegar al mismo estado final.
Neguentropia.No existe en la termodinámica, por ende no se puede hablar de esto en esta
ciencia, en donde se puede definir es en los sistemas sociales, y se define
como la energía negativa o no generación de entropía
Sinergia.El todo es mayor que la simple suma de sus partes.
Homeostasis.Tendencia de los sistemas a adaptarse con el fin de alcanzar un equilibrio
interno frente a los cambios.
Lic. Luis E. Ramirez Milla 40
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
3.6 Leyes de la Termodinámica
Estas leyes se encuentran relacionadas con los intercambios de energía y con la
tendencia de sus flujos, especialmente de la energía calórica.
Ley Cero
También llamada “EQUILIBRIO TERMODINAMICO”, la cual hace referencia que
entre cuerpos colocados a una misma temperatura uno al lado del otro, sus
temperaturas permanecen constantes debido a que no existe un flujo de energía
entre ellos.
Segunda Ley
Llamada también “CONSERVACIÓN DE LA ENERGIA” en cualquier clase de
sistema sea abierto o cerrado, la energía total del sistema se debe conservar,
permitiéndose solo en ella transformaciones, esto nos indica la existencia de un
flujo de energía debido a diferencias de temperaturas en los cuerpos que
componen el sistema.
3.7 Entropía en la Información
La entropía también se manifiesta en la información, los mensajes son
comunicados desde una fuente hasta un receptor dentro de un sistema social,
pero en el transcurso puede sufrir eventuales alteraciones, como deformaciones
interrupciones o accidentes; existiendo la probabilidad de que el mensaje en la
información tienda a desorganizarse.
Información y Organización
Mientras la entropía es una medida de desorden, la información es una
medida de organización.
Lic. Luis E. Ramirez Milla 41
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
De lo que se ha señalado, tenemos que para que un sistema se pueda
operar dentro de cierto equilibrio, es necesaria una limitación de las
comunicaciones, los sistemas sociales deben tener una red selectiva de
comunicación.
3.8 Ciencias de los sistemas
El enfoque de sistemas ha dado lugar a estudios teóricos y aplicados. Entre los
primeros se encuadran algunos de los citados anteriormente: la Cibernética y la
Teoría de Sistemas Generales, de los Sistemas Dinámicos, de los Sistemas
Auto-organizativos, de la Información y de las Jerarquías. Todos ellos se
pueden englobar bajo la denominación genérica de Ciencias de los Sistemas.
Los estudios aplicados son por su parte aquellos que emplean el enfoque
sistémico para la resolución de problemas, y entre ellos se encuentran la
Ingeniería de Sistemas, la Gestión de Sistemas, la Investigación Operativa o la
Dinámica de Sistemas.
3.9 Ciencias de la complejidad
En los últimos tiempos se está extendiendo el uso del término Ciencias de la Complejidad para referirse a todas las disciplinas que hacen uso del enfoque
de sistemas.
En general, las Ciencias de la Complejidad comparten bastantes de las
siguientes características:
Han sido establecidas por grupos interdisciplinarios de investigadores
interesados en explorar los aspectos invariantes de la complejidad y la
sistemicidad fuera de las fronteras establecidas entre los distintos campos
del saber.
Lic. Luis E. Ramirez Milla 42
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Hacen hincapié en el estudio de la estructura (interconexión entre
componentes) y su importancia en el comportamiento de los sistemas.
Esta estructura puede conllevar aspectos de paralelismo o circularidad
(realimentación).
Destacan el carácter de totalidad o unidad global de los sistemas objeto de
estudio.
Manejan aspectos no materiales de los sistemas, en particular aquellos
que tiene que ver con información, comunicación u organización. Los
conceptos de complejidad e incertidumbre suelen ser básicos.
Suelen tratar con sistemas abiertos, aquellos que intercambian materia,
energía o información con el entorno. En este contexto son especialmente
importantes la interacción con el observador y la toma de decisiones.
El ordenador es la herramienta fundamental de las ciencias de la
complejidad debido a su capacidad para modelar y simular sistemas
complejos.
3.10 Sociedad de investigación
Von Bertalanffy propone los fundamentos de una Teoría de Sistemas
Generales y en 1954 se crea la Sociedad para la Investigación de Sistemas
Generales.
El programa de la sociedad era el siguiente:
Investigar el isomorfismo de conceptos, leyes y modelos en varios
campos, y promover transferencias útiles de un campo a otro.
Favorecer el desarrollo de modelos teóricos adecuados en aquellos
campos donde faltaran.
Lic. Luis E. Ramirez Milla 43
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Reducir en lo posible la duplicación de esfuerzo teórico en campos
distintos.
Promover la unidad de la ciencia, mejorando la comunicación entre los
especialistas.
El objetivo último de Von Bertalanffy, el desarrollo y difusión de una única
meta-teoría de sistemas formalizada matemáticamente, no ha llegado a
cumplirse. En su lugar, de lo que podemos hablar es de un enfoque de sistemas o un pensamiento sistémico que se basa en la utilización del
concepto de sistema como un todo irreducible.
3.11 Complejidad y modelos
“Si se habla de sistemas, se tiene que hablar de modelos”
El enfoque de sistemas implica la conceptualización de lo que es la
realidad en términos de totalidades.
Para conceptualizar estas totalidades es necesario hacer elaboraciones
mentales complejas, lo que requiere tener los instrumentos intelectuales
para que esas representaciones mentales puedan ser claramente
expresadas.
“Un modelo no es otra cosa que la representación de la realidad; es una
abstracción, una simplificación de la misma”
Modelos físicos. Son representaciones físicas de la realidad (ejm.
maquetas, reducciones a escalas).
Modelos abstractos. Son representaciones de tipo verbal, matemático o
gráfico (planos, dibujos).
Lic. Luis E. Ramirez Milla 44
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
3.12 Impacto actual y futuro
Las nuevas leyes dictadas por los gobiernos exigen cambios radicales en la
definición de las funciones y en el uso de las tecnologías que emplean dichas
compañías, con la finalidad de que sus actividades productivas y comerciales
dañen lo menos posible la ecología y los recursos no renovables del planeta.
Las empresas tendrán que aprender a interactuar en economías abiertas, de
alta competencia y en la que conceptos de creatividad, habilidad y flexibilidad
serán las que moverán las economías mundiales.
¿Y ahora que?
El aporte del pensamiento sistémico implica una serie de cambios, bastantes
profundos, en las ideologías imperantes, las corrientes filosóficas en vigencia,
la forma de manejar nuestras organizaciones, el entendimiento y la
comunicación entre los seres humanos de diversas culturas, el respeto al
hombre por si mismo y a su hábitat, en un proceso de armonía e integración;
respetando y rediseñando la tecnología que maneja actualmente, hacia una
que permita el desarrollo humano sin afectar negativamente el de sus
semejantes ni el hábitat en el cual vive.
Lic. Luis E. Ramirez Milla 45
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
CAPITULO IV
4.1 Elementos de un Sistema Informático
Hardware (lo tangible)
Software (programas, lo intangible)
Software del sistema
Aplicaciones
Personas (usuarios del sistema)
Usuarios
Programadores
4.2 ¿Que es un Sistema Operativo?
Es un programa que sirve de intermediario entre los usuarios y el hardware
Pertenece al software del sistema
Objetivos:
Ejecutar las aplicaciones de los usuarios
Administrar eficientemente los recursos de la máquina àEficiencia
Facilitar la interacción con el computador à Usabilidad
Es un administrador de recursos como si fuera un gobierno del hardware
programa de control
ojo, no realiza trabajo productivo
Es una interfaz con el hardware
añade características no existentes en el hardware
oculta características inconvenientes del hardware
máquina extendida
El SO controla y coordina el uso del hardware entre los distintos programas
para diversos usuarios.
Lic. Luis E. Ramirez Milla 46
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
El SO proporciona un ambiente de ejecución de programas.
En caso de conflictos debe decidir de forma eficiente y justa
Definiciones breves
Un sistema de software cuyo fin es que un sistema informático sea
operativo (utilizable).
Conjunto de programas que gestionan los recursos del sistema, optimizan
su uso y resuelven conflictos.
4.3 El Sistema Operativo como administrador de recursos
Tenemos dos participantes en el sistema: los procesos y los recursos.
Un proceso es un programa en ejecución
Un recurso puede ser real o virtual, físico o lógico
Los procesos compiten por el uso de recursos escasos.
Necesitamos un árbitro imparcial que asigne recursos a los procesos, de
forma justa y eficiente.
El SO debe determinar a quién se le entregan los recursos, qué cantidad
de recursos se conceden, en qué momento y durante cuánto tiempo.
à Políticas de gestión de recursos
Criterios de gestión de recursos:
Optimizar el rendimiento del sistema
Reparto justo à evitar acaparamientos e inanición de procesos
perjudicados
Garantizar la seguridad e integridad de la información
Normalmente, los distintos criterios entran en conflicto
Ej. no se puede maximizar el rendimiento y a la vez dar un reparto
justo
4.4 El Sistema Operativo como interfaz
Lic. Luis E. Ramirez Milla 47
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Es una capa entre el usuario y el hardware.
La interfaz ofrece una máquina extendida que es una abstracción de la
realidad.
Esa abstracción es más cómoda, más conveniente, más usable para el
usuario y para el programador.
Esta interfaz puede ser independiente del hardware: ganamos portabilidad.
Recorrido histórico: Tipos de sistemas
Primeros sistemas
Sistemas por lotes
Mejoras en la gestión de la E/S
Sistemas por lotes multiprogramados
Sistemas de tiempo compartido
Ordenadores personales
Sistemas paralelos: multiprocesadores
Sistemas distribuidos
Sistemas de tiempo real
Lic. Luis E. Ramirez Milla 48
Maquina
desnuda
Proceso 4
Proceso 3
Proceso 2
Proceso 1Maquina extendida
Nivel del SO
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Primeros sistemas
Los primeros sistemas de computación se caracterizaban:
Gran tamaño
Prácticamente sin ningún soporte lógico (tableros enchufables, tarjetas
perforadas,...)
Organización del trabajo: Usuario experto: operador/programador
Un solo usuario en cada momento (tiempo asignado, “listas de
reserva”)
Lic. Luis E. Ramirez Milla 49
???
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Primeras mejoras:
Dispositivos físicos
Lectoras de tarjetas, impresoras y cintas magnéticas
Elementos lógicos: aparece el primer software de sistema,
Ensambladores, compiladores, cargadores
Manejadores de dispositivos
Bibliotecas con subrutinas de uso frecuente
Finalmente aparecieron los primeros compiladores de lenguajes de
alto nivel (FORTRAN, COBOL),
Simplifica la labor de programación pero aumentando la carga de
trabajo del computador
Problemas:
El modo de trabajo hacía que la máquina estuviera parada mucho
tiempo:
Tiempo de puesta a punto (setup time)
Tiempo de corrección manual de errores
Tiempo sobrante por finalización temprana
Equipos muy caros
Sistemas por lotes:
Objetivo: sacar más provecho a la máquina gracias a una mejor
organización del trabajo
Los operadores agrupaban los trabajos por lotes, que eran trabajos con
necesidades similares y que eran ejecutados en la computadora como un
grupo de tareas.
Lic. Luis E. Ramirez Milla 50
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
A medida que la computadora quedaba libre, se ejecutaba un lote.
Primer paso: aparición del operador especialista.
El programador no manipula directamente el equipo.
El programador entrega su trabajo (job) al operador.
El operador somete la tarea al sistema y entrega los resultados al
programador.
El programador corrige sus errores mientras el operador sigue
ejecutando otras tareas.
Resultado: aumento de la productividad.
Segundo paso: agrupar las tareas en lotes que se procesan de forma
automática
Procesamiento por lotes (batch processing)
El operador puede preparar lotes con trabajos que requieren una
misma operación (ej. cargar el compilador)
El operador lanza el lote, y éste se ejecuta sin más intervención
(secuencia automática de trabajos)
Necesario automatizar ciertas acciones comunes
Control de la finalización de tareas
Tratamiento de errores
Carga y ejecución automática de la siguiente tarea
En lugar de dar órdenes al operador, ¿Porqué no dárselas
directamente al computador?
Lic. Luis E. Ramirez Milla 51
?????
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
4.5 El Primer Sistema Operativo.
Es necesario que el computador tenga un pequeño monitor residente (controlador) que realice automáticamente las acciones anteriores. ¿Cómo?
Distinguiendo entre:
Tarjetas de instrucciones de programas de usuarios
Tarjetas de control (Primer lenguaje de control de sistema: $FTN,
$ASM, $RUN, $JOB, $END)
Lenguaje de control de tareas (JCL, Job Control Language) El lote se escribe usando un JCL
Define qué programas hay que cargar, qué datos leer, etc.
Se escribe en tarjetas perforadas, cinta, etc.
Monitor residente
Programa fijo en memoria con rutinas imprescindibles para que el sistema
por lotes funcione: intérprete del JCL,cargador de programas, rutinas de
E/S...
Automatiza tareas del antiguo operador
Es el primer sistema operativo auténtico
Protección Se empiezan a considerar aspectos de protección:
Proteger la memoria ocupada por el monitor residente
Impedir accesos directos a la E/S
Evitar que una tarea deje bloqueado al sistema
Todo ello requiere cierto apoyo del hardware
Lic. Luis E. Ramirez Milla 52
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Algunas interrogantes¿Quién carga el intérprete del lenguaje de control?
¿Cómo se debe actuar en caso de fallo del programa de usuario?
¿Cómo garantizar el uso correcto de los dispositivos de E/S?
¿Cómo los programas realizan las operaciones de E/S?
¿Cómo podemos diferenciar si las instrucciones de E/S son utilizadas por
el usuario o por el monitor residente?
¿Cómo proteger al monitor residente?
¿Cómo garantizar el control del sistema?
4.6 Sistema Operativo (SO) y arquitectura del computador
Los SO y la arquitectura de los computadores se han influido mucho entre ellos
dos:
Los SO se crearon para facilitar el uso del hardware. A medida que se diseñaron
y usaron los SO, se hizo evidente que podrían simplificarse si se modificaba el
diseño del hardware.
A lo largo de la evolución de los SO se observa que los problemas de los SO
han dado pie a la introducción de nuevas características del hardware.
El problema de la E/S
La E/S era muy lenta en comparación con la CPU.
Esto provocaba que la CPU quedara ociosa mucho tiempo esperando por
la terminación de operaciones de E/S.
Algunas técnicas para tratar el problema:
Operación fuera de línea (offline)
Uso de búferes
Spooling
Operación fuera de línea (off-line)
Lic. Luis E. Ramirez Milla 53
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
El computador central dialoga directamente sólo con dispositivos
rápidos.
Un pequeño computador se encarga de las transferencias con
dispositivos lentos.
Resultado: Mejor aprovechamiento del procesador central
Ejecución paralela de cálculos y operaciones de E/S
Se puede incrementar la velocidad utilizando varios satélites.
Para trabajar con offline, no hace falta recompilar los programas
antiguos.
Los trabajos siguen usando los mismos servicios para la E/S. Lo que
cambia es su implementación en el S.O: independencia del dispositivo.
BúferesEsquema de operación de E/S en el que las transferencias de E/S se
realizan a través de un área intermedia de memoria (búfer)
La operación de E/S se realiza sólo cuando el dispositivo está preparado.
Lic. Luis E. Ramirez Milla 54
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
La CPU sólo espera por E/S cuando el búfer está vacío (entrada) o
lleno (salida)
El uso de búferes permite solapar operaciones de E/S de una tarea
con instrucciones de CPU de esa misma tarea
El uso de búferes no resuelve totalmente el problema de la lentitud de
los equipos de E/S
Los búferes sólo sirven para amortiguar picos de alta actividad de E/S.
Su eficacia depende fundamentalmente de la velocidad de los equipos
de E/S y del tipo de tareas en ejecución:
Si la E/S es muy lenta, los búferes de entrada se vacían y los de
salida se congestionan.
Las tareas con muchos requerimientos de E/S (I/O-bound
jobs/CPU-bound jobs) provocaran el mismo efecto
Spooling (Simultaneous Peripheral Operation On-Line)
Este esquema de funcionamiento de operación de la E/S surge
gracias a la aparición de los discos
Se utiliza el disco como un enorme búfer.
El proceso lee/escribe sobre el disco, en lugar del dispositivo de E/S.
Mientras se ejecuta un trabajo, el S.O.:
Lee los datos del siguiente trabajo de la cinta/tarjetas al disco
Lic. Luis E. Ramirez Milla 55
Búfer de Salida
Búfer de entrada
.
.
.
.
.
.
CPU
Memoria Principal
Dispositivo de entrada
Dispositivo de salida
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Imprime la salida del anterior trabajo, del disco a la impresora
Permite solapar la EIS de un proceso ya terminado con las
operaciones en CPU de otro proceso.
Introduce una estructura de control. Fondo de trabajos (job pool): el
lote está en el disco. así que el S.O. puede elegir el trabajo más
adecuado.
4.7 Multiprogramación
El modo de operación offline y el spooling aumentan el rendimiento de la CPU
pero tienen sus limitaciones. En algún momento la CPU quedará ociosa
esperando por alguna operación de E/S.
Al existir la posibilidad de tener varios trabajos en un dispositivo de acceso
directo, como un disco. Es posible la planificación de trabajos.
El SO puede escoger qué trabajo ejecutara a continuación
Cuando un proceso se bloquea al esperar por la E/S, ejecutamos en la CPU
instrucciones de otro proceso.
Los procesos entrelazan su ejecución: concurrencia.
La CPU y la E/S trabajan a la misma vez. Se terminan más trabajos en menos
tiempo
Los sistemas multiprogramados son más complejos:
Lic. Luis E. Ramirez Milla 56
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Cuando la CPU queda libre, ¿a qué proceso elegimos? (planificación de la CPU)
Conflictos por acceso simultáneo a la E/S (planificación de dispositivos)
Varios procesos a la vez en memoria (gestión de memoria) Protección
Solución a situaciones de interbloqueo
4.8 Tiempo compartido (Time Sharing)
Multiprogramación + Interactividad = Tiempo Compartido
Los sistemas por lotes no son interactivos (el usuario no interviene durante la
ejecución de su trabajo)
Con la multiprogramación e interactividad, se replantea su
caracterización: antes era por el agrupamiento de tareas similares
mientras que ahora se caracterizan por la falta de interacción entre los
usuarios y las tareas en ejecución
Idea: la CPU reparte su tiempo entre los distintos procesos.
Cada proceso dispone de una rodaja de tiempo periódica. Si el periodo es lo
bastante pequeño, el usuario no lo percibe.
Con el tiempo compartido se pierde productividad de CPU, pero se gana en
productividad humana
Por tanto con el tiempo compartido se consigue:
Tiempos de respuesta cortos
Los usuarios tienen la impresión de poseer un computador particular
4.9 Computadores personales
La aparición del microprocesador permitió fabricar computadores baratos,
asequibles para el consumo de masas => ordenadores personales (años 80)
Destinados al uso individual y no experto.
Máxima importancia a la facilidad de uso, bajos tiempos de respuesta, etc.
Interfaces de usuario: sistemas WIMP (windows, icons, menus, pointers).
Lic. Luis E. Ramirez Milla 57
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Utilizan tecnología de los grandes S.O., pero prescinden de ciertos servicios
(protección, multiprogramación, etc.)
4.10 Sistemas paralelos -multiprocesadores
Sistemas con más de un procesador. Pueden ejecutar varias instrucciones
simultáneamente (en paralelo).
Sistemas estrechamente acoplados: los procesadores comparten una
memoria común.
Sólo hasta decenas o centenares de procesadores.
Ventajas:
Aumento de velocidad de procesamiento con bajo coste, cierta
tolerancia a fallos
Inconvenientes:
Necesidad de sincronización entre procesos
4.11 Sistemas distribuidos
Múltiples procesadores conectados mediante una red.
Sistemas débilmente acoplados: los procesadores no comparten memoria
ni reloj.
Escalable hasta millones de procesadores (ejm. Internet)
Ventajas: Compartición de recursos dispersos
Ayuda al trabajo cooperativo de equipos humanos
Aumento de velocidad
Fiabilidad (tolerancia a fallos, alta disponibilidad)
Complicaciones: No comparten memoria: la comunicación es más compleja y no se puede
tener un estado global visible por todos los nodos al instante.
Red de comunicaciones no fiable
Lic. Luis E. Ramirez Milla 58
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Heterogeneidad de los nodos
4.12 Sistemas de tiempo real (STR)
Necesarios para poder ejecutar satisfactoriamente tareas que han de
completarse en un plazo prefijado (ejm. sistemas de control industrial,
sistemas multimedia)
Dos tipos:
STR crítico: para tareas que siempre deben cumplir los plazos de
terminación. Adecuados para la industria. Muy simples, incompatibles
con tiempo compartido, memoria virtual, etc.
STR no crítico: intentan cumplir los plazos, pero no los garantizan al
100%. Adecuados para multimedia, etc.
4.13 Componentes típicos de un Sistema Operativo
Gestión de procesos
Un proceso es un programa en ejecución. Para poder ejecutarse, un
proceso necesita tiempo de CPU, una porción de memoria, archivos,
E/S y demás recursos.
Responsabilidades del SO:
Creación y eliminación de procesos
Planificación de procesos: repartir la CPU entre los procesos activos
Lic. Luis E. Ramirez Milla 59
Procesos Memoria Entrada/salida
Redes Proteccion Archivos
Interprete de órdenes
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Sincronización entre procesos
Comunicación entre procesos
Gestión de memoria
La memoria es un recurso escaso por el que compiten los distintos
procesos.
Responsabilidades del SO:
Conocer qué zonas de memoria están libres y cuáles están
ocupadas
Decidir qué procesos hay que cargar cuando haya memoria libre
Reservar y liberar zonas de memoria según se solicite
Memoria virtual: utilizar el almacenamiento secundario como una
extensión de la memoria principal
Gestión de entrada/salida
La E/S es un conjunto de dispositivos muy variados y complejos de
programar.
Objetivos del SO:
Proporcionar una interfaz uniforme para el acceso a los dispositivos
(independencia del dispositivo)
Proporcionar manejadores para los dispositivos concretos
Tratar automáticamente los errores más típicos
Para los dispositivos de almacenamiento, utilizar cachés
Para los discos, planificar de forma óptima las peticiones
Sistema de archivos
Un archivo es un conjunto de datos identificado por un nombre. Los
archivos se almacenan en dispositivos de E/S. Un archivo es un
concepto de alto nivel que no existe en el hardware.
Funciones del SO:
manipulación de archivos: crear. borrar. leer. escribir...
Lic. Luis E. Ramirez Milla 60
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
manipulación de directorios
ubicar los archivos y directorios en los dispositivos de
almacenamiento secundario
automatizar ciertos servicios: copia de seguridad, versiones. etc.
Sistema de proteccion
La protección abarca los mecanismos destinados a controlar el acceso
de los usuarios a los recursos, de acuerdo con los privilegios que se
definan.
Objetivos del SO:
Definir el esquema general de protección: clases de usuarios, clases
de permisos/privilegios, etc.
Definir mecanismos de acceso a los recursos: contraseñas, llaves,
capacidades, etc.
Controlar el acceso a los recursos, denegando el acceso cuando no
esté permitido
Redes
En un sistema distribuido, existen varios ordenadores con sus propios
recursos locales (memoria, archivos, etc.), conectados mediante una
red.
Objetivos del SO:
proporcionar primitivas para conectarse con equipos remotos y
acceder de forma controlada a sus recursos: primitivas de
comunicación (enviar y recibir datos) sistema de ficheros en red
(ejm. NFS) llamada remota a procedimiento (RPC) etc.
Interprete de órdenes
Para que un usuario pueda dialogar directamente con el SO., se
proporciona una interfaz de usuario básica para:
Lic. Luis E. Ramirez Milla 61
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Cargar programas
Abortar programas
Introducir datos a los programas
Trabajar con archivos
Trabajar con redes
Ejemplos: JCL en sistemas por lotes, COMMAND.COM en MS-DOS,
shell en UNIX
4.14 Procesos.
Un proceso es un programa en ejecución. Un proceso necesita recursos para
poder ejecutarse: memoria, dispositivos de E/S, la CPU, etc.
Áreas típicas de la memoria:
Código
Datos (variables globales, memoria dinámica)
Pila (parámetros y variables locales de subrutinas)
Estados de un proceso
A medida que un proceso se ejecuta, cambia de estado:
Nuevo: recién creado por el S.O.
En ejecución: está en la CPU ejecutando instrucciones
Bloqueado: esperando a que ocurra algún evento (ej. una operación de
E/S)
Preparado: esperando a que le asignen un procesador
Terminado: no ejecutará más instrucciones y el SO. le retirará los
recursos que consume
Lic. Luis E. Ramirez Milla 62
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
4.15 Concurrencia.
Definición de diccionario: coincidir en el espacio o en el tiempo dos o más
personas o cosas.
En Informática, se habla de concurrencia cuando hay una existencia simultánea
de varios procesos en ejecución.
Concurrencia existencia simultánea, no implica ejecución simultánea
Paralelismo y concurrencia
El paralelismo es un caso particular de la concurrencia.
Se habla de paralelismo cuando ocurre la ejecución simultánea de
instrucciones
4.16 Interbloqueo.
El problema:Un conjunto de procesos bloqueados, cada uno de ellos esperando por un
recurso que retiene otro proceso de ese conjunto.
Lic. Luis E. Ramirez Milla 63
Nuevo
Preparado Ejecución
Terminado
Bloqueado
AdmitidoPlanificador
Interrupción
Llamada al sistema o excepción
Llamada al sistema de E/S o espera por un evento
Finaliza la operación u ocurre el evento
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Ningún proceso del conjunto puede avanzar
Interbloqueo, bloqueo mutuo, abrazo mortal (deadlock).
¿De quien es la culpa del interbloqueo?
Muchas veces, el interbloqueo no es responsabilidad de las aplicaciones, sino
del sistema de gestión de recursos.
Ejemplo: Los procesos A y B se pueden interbloquear, aunque están escritos
correctamente
Proceso A Proceso B
Pide (escaner) Pide (Impresora)
Pide (Impresora) Pide (escaner)
Usa Impresora y escaner Usa Impresora y escaner
Libera (Impresora) Libera (escaner)
Libera (escaner) Libera (Impresora)
4.17 Gestión de la memoria. Antecedentes
Lic. Luis E. Ramirez Milla 64
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
La memoria física es un conjunto de celdas referenciables por medio de una
dirección lineal (p.ej. de la 00000h a la FFFFFh).
Para que un programa se ejecute, su código y sus datos necesitan estar
cargados en memoria (al menos en parte). En un sistema multitarea, la
memoria ha de repartirse entre los diferentes procesos.
Las rutinas del sistema operativo también deberán residir en memoria, en todo
o en parte. Puede ser que la memoria principal no tenga capacidad suficiente
para todos los procesos en ejecución.
Objetivo principal
Conseguir que varios procesos puedan ejecutarse de forma concurrente,
Evitando los conflictos de uso
Protegiendo al sistema operativo
Aprovechando eficazmente el espacio disponible:
Minimizar la memoria desaprovechada Evitar fragmentación
Memoria ocupada por varias copias de un mismo objeto
Memoria ocupada por las estructuras de datos necesarias
para la operación del gestor de memoria
Carga parcial de programas Sin perjudicar el rendimiento:
Complejidad temporal
Tiempo de acceso a memoria
Un gestor de memoria ideal debería por tanto,
Minimizar la memoria desaprovechada
Tener una complejidad temporal mínima
Presentar un recargo por acceso a memoria mínimo
Además de proporcionar una buena protección y una
compartición flexible
Lic. Luis E. Ramirez Milla 65
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
4.18 Seguridad.
Todo el mundo desea que los Sistemas Operativos sean "seguros", pero en
todos los sistemas operativos hay agujeros de seguridad, otra cosa es
que no se conozcan.
La evolución de la computación y de las comunicaciones en las últimas
décadas:
Ha hecho más accesibles a los sistemas informáticos.
Ha incrementado los riesgos vinculados a la seguridad.
La vulnerabilidad de las comunicaciones de datos es un aspecto clave de la
seguridad de los sistemas informáticos; la importancia de este aspecto es
cada vez mayor en función de la proliferación de las redes de
computadoras.
El nivel de criticidad y de confidencialidad de los datos administrados por
los sistemas informáticos es cada vez mayor:
Ej.: correo personal, transferencia de fondos, control de manufactura,
control de sistemas de armas, control de tráfico aéreo, control de
implantes médicos (marcapasos, etc.).
Los sistemas deben funcionar ininterrumpidamente y sin problemas.
El sistema operativo, como administrador de los recursos del sistema:
Cumple una función muy importante en la instrumentación de la
seguridad.
No engloba a todos los aspectos de la seguridad.
Debe ser complementado con medidas externas al S. O.
La simple seguridad física resulta insuficiente ante la posibilidad de acceso
mediante equipos remotos conectados.
Lic. Luis E. Ramirez Milla 66
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
La tendencia es que los sistemas sean más asequibles y fáciles de usar,
pero la favorabilidad hacia el usuario puede implicar un aumento de la
vulnerabilidad.
Se deben identificar las amenazas potenciales, que pueden proceder de
fuentes maliciosas o no.
El nivel de seguridad a proporcionar depende del valor de los recursos que
hay que asegurar.
Cómo se consiguen evitar los agujeros de seguridad:
Evitando el contacto directo con la máquina: Ya que cuando se puede tener
acceso a ésta, se puede modificar su configuración, tanto por programas
(virus, programas servidores, craqueadores, desensambladores,
buscadores de claves...), como por mecanismos físicos (destrozando la
bios, cortocircuitando, creando sectores defectuosos...).
Si se accede por telnet o por otro servicio de red: Tener un buen sistema
de claves, y que al fichero de claves no se pueda tener acceso de ninguna
forma. Excepto claro el administrador o superusuario. Además si los
usuarios son invitados o anónimos, restringirle al máximo sus derechos, y
como caso extremo hasta la escritura. Aparte de que no puedan ejecutar
los programas que ellos quieran en nuestro sistema. E incluso evitando que
usen los compiladores que pueda haber en el sistema (virus, formateos,
scripts...). Y es más, no poder entrar nadie ni cambiarse a superususario o
administrador, para no tener acceso a toda la máquina jamás.
Cerrar los servicios de red que no se necesiten o evitar el acceso a alguno
de ellos a horas que no está el administrador del sistema.
No olvidarse de un buen firewall.
Sistema de archivos: Hay que tener un buen sistema de archivos, que
controle a través del sistema operativo, el acceso a un fichero. Nada de
Lic. Luis E. Ramirez Milla 67
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
claves independientes de fichero, por que lo único que se consigue es
olvidar las claves o poner la misma en todas, con lo cual es un gran fallo.
Criptografía: Es un método más para proteger partes de ficheros, o el
fichero entero. En principio no lo veo necesario a menos que se traten de
datos muy importantes. Ya que se puede perder la clave y no se podrá
recuperar, como se puede recuperar las de los usuarios del sistema
operativo.
Copias del sistema periódicas: Es necesario que se efectúen copias de
seguridad periódicas, para que ante un posible ataque, y caída del sistema
se pueda restaurar el sistema en un corto espacio de tiempo, no sin antes
mirar los "logs", para intentar corregir el fallo, y atrapar a el/los culpable/s.
4.20 El sistema operativo por dentro.
En informática, el núcleo (también conocido en español con el anglicismo
kernel, de la raíz germánica Kern) es la parte fundamental de un sistema
operativo. Es el software 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,
el núcleo 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 para el programador.
Lic. Luis E. Ramirez Milla 68
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Esquema básico de la interacción entre un Núcleo, el resto del Software (los
programas de aplicación, las bases de datos, etc.) y el Hardware.
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 un 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
proporcionadas 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.
Lic. Luis E. Ramirez Milla 69
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Una visión típica de la arquitectura de computadores como una serie de capas de
abstracción: hardware, firmware, lenguaje de máquina, núcleo, software de sistema
y aplicaciones1
Lic. Luis E. Ramirez Milla 70
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
CAPITULO V
5.1 Resolución de problemas con computadora
La resolución de problemas con computadoras se puede dividir en tres fases:
Análisis del problema
Diseño del algoritmo
Resolución del algoritmo en la computadora
El análisis y el diseño del algoritmo requieren la descripción del problema en
subproblemas a base de refinamientos sucesivos y una herramienta de
programación:
Diagrama de flujo
Diagrama N-S
Pseudocódigo
Durante la tercera etapa se implementa este algoritmo en un código escrito en
un lenguaje de programación, reflejando las ideas obtenidas en las fases de
análisis y diseño.
5.2Algoritmo.
Se deriva de la traducción al latín de la palabra árabe Alkhowarismi, nombre de
un matemático y astrónomo árabe que escribió un tratado sobre manipulación
de números y ecuaciones en el siglo IX.
“Un algoritmo es un método para resolver un problema mediante una serie de
pasos precisos, definidos y finitos”
Características del Algoritmo
Preciso, tiene que indicar el orden de realización en cada paso.
Lic. Luis E. Ramirez Milla 71
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Definido, es decir, si el algoritmo se prueba dos veces, en estas dos
pruebas, se debe obtener el mismo resultado.
Finito, es decir, que el algoritmo tiene que tener un número determinado
de pasos. Debe producir un resultado en un tiempo finito.
5.3Fases para la resolución de problemas
Análisis del Problema
Esta fase requiere una clara definición donde se contemple exactamente lo
que debe hacer el programa y el resultado o solución deseada. Dado que se
busca una solución se precisan especificaciones de entrada y salida.
Para poder definir bien un problema es conveniente responder a las
siguientes preguntas:
1. ¿Qué entradas se requieren? (cantidad y tipo)
2. ¿Cuál es la salida deseada? (cantidad y tipo)
3. ¿Qué método produce la salida deseada?
Diseño del Algoritmo
En la fase de análisis en el proceso de programación se determina que hace
el programa. En la fase de diseño se determina como hace el programa la
tarea solicitada.
Los métodos utilizados para el proceso del diseño se basan en el conocido
divide y vencerás. Es decir la resolución de un problema complejo se realiza
dividiendo el problema en subproblemas y a continuación dividir estos
subproblemas en otros de nivel mas bajo, hasta que sea implementada una
solución en la computadora.
Lic. Luis E. Ramirez Milla 72
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Este método se conoce técnicamente como diseño descendente (top-down) o
modular.
Cada programa bien diseñado consta de un programa principal (el módulo de
nivel mas alto) que llama a subprogramas (módulos) de nivel mas bajo, que a
su vez pueden llamar a otros subprogramas.
Los módulos pueden ser planeados, codificados, comprobados y depurados
independientemente y a continuación combinarlos entre sí.
Este proceso implica la ejecución de estos pasos hasta que el programa se
ha terminado:
Programar un módulo
comprobar el módulo
Si es necesario, depurar el módulo
Combinar el módulo, con el resto de los otros módulos
“El diseño del algoritmo es independiente del lenguaje de programación en el
que se vaya a codificar posteriormente”.
Implementación del Algoritmo
Para implementar un algoritmo en la computadora, se debe ejecutar los
siguientes pasos:
Codificación
Compilación y ejecución
Verificación
Depuración
Documentación
Lic. Luis E. Ramirez Milla 73
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Codificación
Es la escritura en un lenguaje de programación de la
representación de un algoritmo.
Dado que el diseño del algoritmo es independiente del lenguaje
de programación utilizado en su implementación, el código
puede ser escrito con igual facilidad en un lenguaje o en otro.
Compilación y ejecución
Una vez que el algoritmo se ha convertido en un programa fuente,
es preciso introducirlo en memoria mediante el teclado y
almacenarlo posteriormente en un disco. Esta operación se realiza
con un editor de texto, posteriormente el programa fuente se
convierte en un archivo de programa que se guarda en un disco.
El programa fuente debe ser traducido a lenguaje máquina.
Este proceso se realiza con el compilador y el sistema
operativo que se encarga prácticamente de la compilación.
Si al compilar el programa fuente se presentan errores (errores
de compilación), es necesario volver a editar el programa,
corregir los errores y compilar de nuevo. Esto se repite hasta
que ya no se presenten mas errores, obteniéndose el programa
objeto, el cual todavía no es ejecutable directamente.
Al ya no existir errores en el programa fuente se debe instruir al
sistema operativo para que efectué la fase de montaje o enlace,
del programa fuente con las librerías del programa del
compilador. Este proceso de montaje produce un programa
ejecutable.
Cuando se ha creado un programa ejecutable este se puede ya
ejecutar desde el sistema operativo con solo teclear su nombre.
Lic. Luis E. Ramirez Milla 74
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Suponiendo que no existen errores durante la ejecución (errores
en tiempo de ejecución), se obtendrá la salida de resultados
correctos del programa.
Verificación y depuración
Es el proceso de ejecución del programa con una amplia variedad
de datos de entrada, llamados datos de test o prueba como son:
valores normales de entrada, valores extremos de entrada que
comprueben los límites del programa y valores de entrada que
comprueben aspectos especiales del programa. Estos
determinarán si el programa contiene errores o no.
Al ejecutar un programa se pueden producir tres tipos de errores:
Errores de Compilación: Se producen normalmente por un
uso incorrecto de las reglas del lenguaje de programación,
suelen ser errores de sintaxis.
Errores de Ejecución: Se producen por instrucciones que la
computadora puede comprender pero no ejecutar. En estos
casos se detiene la ejecución del programa y se imprime un
mensaje de error. Ejemplo de esto puede ser una división por
cero.
Errores Lógicos: Se producen en la lógica del programa y la
fuente del error suele ser el diseño del algoritmo, son más
difíciles de detectar puesto que el programa puede funcionar y
no producir errores de compilación ni de ejecución pero
regresará resultados incorrectos. En este caso se debe
regresar a la fase de diseño, modificar el algoritmo, cambiar el
programa fuente y compilar y depurar una vez más.
Lic. Luis E. Ramirez Milla 75
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Documentación
La importancia de la documentación debe ser destacada por su
influencia en la etapa final, ya que programas pobremente
documentados son difíciles de leer, mas difíciles de depurar y casi
imposibles de mantener y modificar.
Puede ser interna y externa.
La documentación interna es la contenida en líneas de
comentarios. La documentación externa incluye análisis,
diagramas de flujo y/o pseudocodigos, manuales de usuarios con
instrucciones para ejecutar el programa y para interpretar los
resultados.
La documentación es vital cuando se desea corregir posibles
errores futuros o bien cambiar el programa.
Estos cambios se denominan mantenimiento del programa.
Además es de buena costumbre para todo buen programador,
dejar comentado su código, esto es para que el futuro
programador pueda darle mantenimiento fácilmente a el
programa, o incluso, si es el mismo creador quien debe darle
mantenimiento.
5.4Herramientas de programación.
Las herramientas de programación mas utilizadas comúnmente para diseñar
algoritmos son:
Pseudocodigos
Diagramas N-S
Diagramas de flujo
Lic. Luis E. Ramirez Milla 76
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Siendo el pseudocodigo el más popular por su sencillez y su parecido al
lenguaje humano.
Pseudocodigo
El principal objetivo del pseudocódigo es el de representar la solución a un algoritmo de la forma más detallada posible, y a su vez lo más parecida posible al lenguaje que posteriormente se utilizara para la codificación del mismo.
Las principales características de este lenguaje son: Se puede ejecutar en un ordenador Es una forma de representación sencilla de utilizar y de manipular. Facilita el paso del programa al lenguaje de programación. Es independiente del lenguaje de programación que se vaya a
utilizar. Es un método que facilita la programación y solución al algoritmo
del programa.
Todo documento en pseudocódigo debe permitir la descripción de:
Instrucciones primitivas Instrucciones de proceso Instrucciones de control Instrucciones compuestas Instrucciones de descripción
Estructura a seguir en su realización:
Cabecera: Programa: Modulo: Tipos de datos: Constantes: Variables:
Cuerpo:
Lic. Luis E. Ramirez Milla 77
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Inicio Instrucciones Fin
Para comentar en pseudocódigo se le antepone al comentario dos asteriscos (*)
Ejemplos
* Programa que calcula el área de un cuadrado a partir de un lado dado por teclado.
Programa: area_cuadrado Modulo: main **( también se puede llamar principal) Variables: lado: natural area: natural Inicio Visualizar "Introduce el lado del cuadrado" Leer lado Area lado * lado Visualizar "El área del cuadrado es", area Fin
* Programa que visualice la tabla de multiplicar del numero introducido por teclado
Programa: Tabla multiplicar Modulo: main Variables: t: entero num : entero Inicio Visualizar "Introduce un número" Leer num Desde t=1 hasta t=10 repetir Visualizar num, " X", t, "=", num*t Fin desde
Lic. Luis E. Ramirez Milla 78
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Fin
Una vez que tenemos preparado un diagrama de flujos y un pseudocódigo ya podemos comenzar con la codificación del programa en nuestro computador. A partir de aquí todo varía dependiendo del lenguaje de programación que utilicemos, pero en todos los programas tendremos que definir los tipos de datos que utilizaremos.
Diagramas N-S
El diagrama N-S o también conocido como diagrama de Chapin es una
técnica de especificación de algoritmos que combina la descripción textual,
propia del pseudocódigo, con la representación gráfica del diagrama de
flujo.
El diagrama N-S cuenta con un conjunto limitado de símbolos para
representar los pasos del algoritmo, por ello se apoya en expresiones del
lenguaje natural; sin embargo, dado que el lenguaje natural es muy
extenso y se presta para la ambigüedad, solo se utiliza un conjunto de
palabras, a las que se denomina palabras reservadas. Las palabras
reservadas más utilizadas son:
Inicio Fin Leer Escribir
Mientras Repita Hasta Para
Incrementar Decrementar Hacer Función
Entero Real Caracter Cadena
Lógico Retornar
Los símbolos utilizados en el diagrama de Chapin son corresponden a
cada tipo de estructura. Dado que se tienen tres tipos de estructuras, se
utilizan tres símbolos. Esto hace que los procesos del algoritmo sean más
fáciles de representar y de interpretar.
Estructuras secuenciales
Lic. Luis E. Ramirez Milla 79
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Son aquellas que se ejecutan una después de otra. Se tienen tres tipos
de instrucciones secuenciales: la declaración de variables, asignación,
instrucción Leer e instrucción Escribir.
Ejemplo:
Diseñar un algoritmo para calcular el área y el perímetro de un
rectángulo
Definición del problema
Calcular área y perímetro de un rectángulo
Análisis del problema
Para desarrollar este problema es necesario conocer las
fórmulas para obtener tanto el área como el perímetro de un
rectángulo.
Sea b = base y h = altura, las fórmulas a utilizar son:
Area = b * h
Perímetro = 2 * (b + h)
Datos de entrada: b y h (base y altura)
Datos de salida: área y perímetro
Procesos: área = b * h
Perímetro = 2 * (b + h)
Diseño de la solución
InicioEntero: b, h, a, p
Leer b, ha = b * h
p = 2 (b + h)Escribir "área:", a
Escribir "perímetro:", pFin algoritmo
Estructuras de decisión
Lic. Luis E. Ramirez Milla 80
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Las estructuras de decisión o también llamadas de selección permiten que
el algoritmo tome decisiones y ejecute u omita algunos procesos
dependiendo del cumplimiento de una condición.
Se pueden manejar tres tipos de decisiones: simple, doble y múltiple.
Decisión simple y doble
Una decisión es simple, cuando solo se tiene determinado los pasos a
seguir si el resultado de la condición es verdadero, mientras que si es
falso, la ejecución del algoritmo continúa después de la estructura
condicional.
Una decisión cuando se tiene un curso de acción para el caso que el
resultado de la comparación sea verdadero y otro para cuando sea
falso.
Ejemplo:Se desea un algoritmo para obtener el valor absoluto de un número
Definición del problemaEncontrar el valor absoluto de un número
Análisis del problemaPara encontrar el valor absoluto del número es necesario recordar
que para los enteros positivos el valor es el mismo, mientras que
para los enteros negativos es necesario cambiarlos de signo.
Datos de entrada: número
Datos de salida: valor absoluto
Proceso: número = número * (-1)
Diseño de la solución
Lic. Luis E. Ramirez Milla 81
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Estructuras de repetición
En la solución de algunos problemas es necesario ejecutar repetidas veces
una instrucción o un conjunto de instrucciones. En algunos casos, el
número de repeticiones se conoce con anterioridad, mientras que en otras
depende de cálculos o estados de variables que se dan dentro de la
solución del problema.
Para solucionar este tipo de problemas se utiliza un tipo de estructuras a
las que se conocen como estructuras de repetición, bucles o ciclos.
Un ciclo consiste en un grupo de acciones que se ejecutan repetidas veces
dependiendo del cumplimiento de una condición.
Ejemplo:Un algoritmo para mostrar los números del 1 al 10.
Definición del problemaMostrar listado de números de 1 a 10.
Análisis del problemaDatos de entrada: ninguno
Datos de salida: número
Proceso: ninguno
Diseño de la solución
Lic. Luis E. Ramirez Milla 82
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Diagramas de flujo
Un diagrama de flujo es una forma de representar gráficamente los detalles
algorítmicos de un proceso multifactorial. Se utiliza principalmente en
programación, economía y procesos industriales, pasando también a partir de
estas disciplinas a formar parte fundamental de otras, como la psicología
cognitiva. Estos diagramas utilizan una serie de símbolos con significados
especiales y son la representación gráfica de los pasos de un proceso. En
computación, son modelos tecnológicos utilizados para comprender los
rudimentos de la programación lineal.
Características que debe cumplir un diagrama de flujo
En los diagramas de flujo se presuponen los siguientes aspectos:
Existe siempre un camino que permite llegar a una solución
(finalización del algoritmo).
Existe un único inicio del proceso.
Existe un único punto de fin para el proceso de flujo (salvo del
rombo que indica una comparación con dos caminos posibles).
Desarrollo del Diagrama de Flujo
Las siguientes son acciones previas a la realización del diagrama de flujo:
Lic. Luis E. Ramirez Milla 83
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Identificar las ideas principales a ser incluidas en el diagrama de
flujo. Deben estar presentes el dueño o responsable del proceso,
los dueños o responsables del proceso anterior y posterior y de
otros procesos interrelacionados, otras partes interesadas.
Definir qué se espera obtener del diagrama de flujo.
Identificar quién lo empleará y cómo.
Establecer el nivel de detalle requerido.
Determinar los límites del proceso a describir. Los pasos a seguir
para construir el diagrama de flujo son :
Establecer el alcance del proceso a describir. De esta manera
quedará fijado el comienzo y el final del diagrama. Frecuentemente
el comienzo es la salida del proceso previo y el final la entrada al
proceso siguiente.
Identificar y listar las principales actividades/subprocesos que están
incluidos en el proceso a describir y su orden cronológico.
Si el nivel de detalle definido incluye actividades menores, listarlas
también.
Identificar y listar los puntos de decisión.
Construir el diagrama respetando la secuencia cronológica y
asignando los correspondientes símbolos.
Asignar un título al diagrama y verificar que esté completo y
describa con exactitud el proceso elegido.
Reglas para dibujar un diagrama de flujo.
Los Diagramas de flujo se dibujan generalmente usando algunos símbolos estándares; sin embargo, algunos símbolos especiales pueden también ser desarrollados cuando sean requeridos. Algunos símbolos estándares, que se requieren con frecuencia para diagramar programas de computadora se muestran a continuación:
Lic. Luis E. Ramirez Milla 84
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Inicio o fin del programa
Pasos, procesos o líneas de instrucción de programa de computo
Operaciones de entrada y salida
Toma de decisiones y Ramificación
Conector para unir el flujo a otra parte del diagrama
Cinta magnética
Disco magnético
Conector de pagina
Líneas de flujo
Anotación
Display, para mostrar datos
Envía datos a la impresora
Ejemplo
Diagrama de flujo que encuentra la suma de los primeros 50 números naturales
Lic. Luis E. Ramirez Milla 85
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
5.5Tipos de datos
Todos los datos tienen un tipo asociados con ellos que nos servirá para poder
conocer con que información trabajaremos.
Es decir, cuando ingresemos el sueldo de un trabajador necesitamos que este
contenga decimales, o al solicitar la edad de una persona está tiene que estar
con números enteros, etc. Además la suma entre caracteres no tiene sentido.
La asignación de tipos a los datos tiene dos objetivos principales:
Detectar errores de operaciones aritméticas en los programas
Determinar como ejecutar las operaciones
Tipos de datos comunes
Estos son los tipos de datos mas utilizados en los lenguajes de programación:
Numéricos
Lic. Luis E. Ramirez Milla 86
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Caracteres y
Lógicos
Tipos NuméricosDentro de estos tipos se puede hacer mención de los tipos enteros,
reales o de coma flotante, y de los exponenciales.
Tipos CarácterLos tipos carácter se dividen también en caracteres ASCII, como por
ejemplo: a A & * , etc.. El otro grupo de caracteres son los strings o
cadenas de caracteres, como por ejemplo: "Hola Mundo".
Tipos LógicosLos tipos lógicos solamente pueden tomar los valores verdadero o falso.
5.6Identificadores
Representan los nombres de los objetos de un programa (constantes, variables,
tipos de datos, procedimientos, funciones, etc.).
Es una secuencia de caracteres que puede ser de cualquier longitud,
aunque tiene ciertas reglas que hay que seguir, las cuales son:
Debe comenzar con una letra o "_" y no puede contener espacios
en blanco.
Letras, dígitos y caracteres subrayados ("_") están permitidos
después del primer carácter.
En síntesis un identificador es un método para nombrar a las celdas de
memoria en la computadora, en lugar de memorizarnos una dirección
de memoria.
Se utilizan para nombrar variables, constantes, procedimientos y
funciones.
Constantes
Lic. Luis E. Ramirez Milla 87
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Las constantes son valores que no pueden cambiar en la ejecución del
programa. Recibe un valor en el momento de la compilación del programa y
este no puede ser modificado.
VariablesLas variables son valores que se pueden modificar durante la ejecución de
un programa. Al contrario de las constantes estas reciben un valor, pero este
valor puede ser modificado durante la ejecución o la compilación del
programa.
Sentencia de asignación
Se utiliza para asignar o almacenar valores a variables o constantes. Es una
operación que sitúa un valor determinado en una posición de memoria.
Se demuestra en pseudocódigo con el símbolo <- (Una flecha apuntando
hacia el identificador, donde se desea guardar el valor.). variable <-
expresión
El tipo de expresión debe ser del mismo tipo que el de la variable, en caso
contrario en la fase de compilación se produciría un error de tipos. Aunque a
la fecha existen lenguajes de programación con una potente herramienta
para la conversión de datos (Visual Basic), no es recomendable asignar
valores de un tipo diferente a variables de otro tipo.
Reglas de asignación
Lic. Luis E. Ramirez Milla 88
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Una variable en el lado derecho de una sentencia de asignación debe tener
un valor antes de que la sentencia de asignación se ejecute. Hasta que un
programa le da un valor a una variable, esa variable no tiene valor.
Por ejemplo:
Si x no tiene un valor antes de ejecutar y x+1, se producirá un error
lógico.
En la izquierda de una sentencia de asignación solo pueden existir variables.
Por consiguiente no es valido lo siguiente:
Valor_Neto - Tasas 34015.
Además hay que recordar que la operación de asignación es una operación
destructiva debido a que el valor almacenado en una variable se pierde o se
destruye y se sustituye por el nuevo valor en la sentencia de asignación.
5.7Operadores utilizados en programación
Operadores aritméticosUna expresión es un conjunto de datos o funciones unidos por operadores
aritméticos, los cuales se muestran en la siguiente tabla:
Operador Significado
+ Suma
- Resta
* Multiplicación
/ División
^ Exponenciación
Mod Módulo (residuo)
Lic. Luis E. Ramirez Milla 89
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Operadores lógicosEn ocasiones en los programas se necesitan realizar comparaciones entre
distintos valores, esto se realiza utilizando los operadores relaciones, los cuales
se listan a continuación:
Operador Significado
< Menor que
> Mayor que
<= Menor o igual que
>= Mayor o igual que
= Igual a
<> Distinto o Diferente a
Precedencia de operadoresCuando una expresión aritmética se evalúa, el resultado es un número. Ahora
bien, cuando aparecen dos o mas expresiones aritméticas, qué operaciones se
realizan primero?
Una expresión aritmética en programación tiene una sintaxis de la forma:
x2+1/2
Hay que observar que esta expresión es totalmente diferente a esta otra
(x2+1)/2, por lo que es importante codificar las expresiones aritméticas
correctamente.
Reglas de evaluación Todas las subexpresiones entre paréntesis se evalúan primero.
Las subexpresiones entre paréntesis anidados se evalúan de adentro
hacia afuera, es decir, que el paréntesis mas interno se evalúa primero.
Prioridad de Operaciones: Dentro de una misma expresión o subexpresión,
los operadores se evalúan en el siguiente orden:
Lic. Luis E. Ramirez Milla 90
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
* , / Multiplicación y división
div , mod División y Modulo de enteros
+ , - Suma y Resta
Los operadores en una misma expresión o subexpresión con igual nivel de
prioridad se evalúan de izquierda a derecha
Escritura de formulas
Las fórmulas matemáticas se deben escribir en formato lineal. Esto obliga al
uso frecuente de paréntesis que indiquen el orden de evaluación correcto de las
operaciones.
Por ejemplo, si deseamos codificar la fórmula de Vieta, tendríamos que
escribirla así:
Vamos a escribir el dato solo del valor positivo
(-b+raiz(b*b - 4*a*c))/(2*a)
Donde a, b, c son números reales.
5.8Operaciones de entrada y salida (i/o) datos
Los datos se pueden almacenar en memoria de tres formas diferentes:
Asociados con constantes,
Asignados a una variable con una sentencia de asignación
Una sentencia de lectura.
Siendo el último el más indicado si se desea manipular diferentes datos cada
vez que se ejecuta el programa. Además la lectura de datos permite asignar
Lic. Luis E. Ramirez Milla 91
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
valores desde dispositivos hasta archivos externos en memoria, esto se
denomina operación de entrada o lectura.
Algunos ejemplos de dispositivos de entrada y salida, son:
teclado, monitor, mouse, etc.
La operación de entrada en pseudocódigo se representa de la siguiente manera:
leer(lista de variables)
A medida que se realizan cálculos en el programa, se necesitan visualizar los
resultados. Esta se conoce como operación de escritura o salida.
Esta operación se representa en pseudocódigo de la siguiente manera:
escribir(lista de variables,"Mensaje")
En la instrucción de salida se pueden incluir además mensajes de texto y
variables.
Con lo que hemos visto hasta aquí podemos ya realizar un pequeño ejemplo, el
clásico "Hola Mundo", en pseudocódigo.
Algoritmo Ejemplo
escribir("Hola Mundo")
Fin
Esto imprimirá en pantalla la frase 'Hola Mundo'.
Programación interactiva
En la programación interactiva el usuario del programa puede interactuar con el
programa e introducir datos mientras se ejecuta el programa. Al objeto de
facilitar esta entrada de datos, la computadora debe indicar al usuario el
momento en que debe introducir los datos.
Lic. Luis E. Ramirez Milla 92
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Para ello se deben visualizar mensajes interactivos con indicaciones al usuario.
Ejemplo: Suma de dos números ingresados por el usuario
Algoritmo Suma
Variables
numero1,numero2,total
escribir('Introduce el primer número:')
leer(numero1)
escribir('Introduce el segundo número:')
leer(numero2)
escribir('El total es: ',numero1 + numero2)
Fin
Esto debe visualizar en pantalla lo siguiente:
Introduce el primer número:
89 [Presione luego Enter]
Introduce el segundo número
1 Presione Enter]
El total es: 90
5.9 Lenguajes de programación
Un lenguaje de programación es un conjunto de símbolos y reglas sintácticas y
semánticas que definen su estructura y el significado de sus elementos y
expresiones. Es utilizado para controlar el comportamiento físico y lógico de una
máquina.
Un lenguaje de programación permite a uno o más programadores especificar
de manera precisa sobre qué datos debe operar una computadora, cómo estos
Lic. Luis E. Ramirez Milla 93
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
datos deben ser almacenados o transmitidos y qué acciones debe tomar bajo
una variada gama de circunstancias.
Clasificación de los lenguajes de programación
Los lenguajes de programación se pueden clasificar atendiendo a varios
criterios:
Según el nivel de abstracción
Según el paradigma de programación que poseen cada uno de ellos
lenguaje de ensamblador
Según su nivel de abstracción
Lenguajes de Máquina
Están escritos en lenguajes directamente legibles por la máquina
(computadora), ya que sus instrucciones son cadenas binarias (0 y 1). Da
la posibilidad de cargar (transferir un programa a la memoria) sin
necesidad de traducción posterior lo que supone una velocidad de
ejecución superior, solo que con poca fiabilidad y dificultad de verificar y
poner a punto los programas.
Lenguajes de bajo nivel
Los lenguajes de bajo nivel son lenguajes de programación que se
acercan al funcionamiento de una computadora. El lenguaje de más bajo
nivel por excelencia es el código máquina. A éste le sigue el lenguaje
ensamblador, ya que al programar en ensamblador se trabajan con los
registros de memoria de la computadora de forma directa.
Ejemplo:
Lenguaje ensamblador, sintaxis Intel para procesadores x86
Lic. Luis E. Ramirez Milla 94
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
mov eax,1 ;mueve a al registro eax el valor 1
xor ebx, ebx ;pone en 0 el registro ebx
int 80h ;llama a la interrupción 80h (80h = 128 sistema
Lenguajes de medio nivel
Hay lenguajes de programación que son considerados por algunos
expertos como lenguajes de medio nivel (como es el caso del lenguaje C)
al tener ciertas características que los acercan a los lenguajes de bajo
nivel pero teniendo, al mismo tiempo, ciertas cualidades que lo hacen un
lenguaje más cercano al humano y, por tanto, de alto nivel.
Ejemplo:
/*Lenguaje C*/ /*declaración de las funciones estándares de entrada y salida*/#include <stdio.h> int main(int argc, char **argv){ char *p; /*creamos un puntero a un byte*/ if(argc == 1){ printf("\nIngrese un argumento al programa\n");/*imprimimos
el texto*/ return 1; } p = 0x30000 /*el puntero apunta a 0x30000 */ *p = argv[1][0] /*el primer carácter del primer argumento lo
copiamos a la posición 0x30000 */ return 0;}
El ejemplo es muy simple y muestra a los punteros de C, éstos no son
muy utilizados en lenguajes de alto nivel, pero en C sí.
Lenguajes de alto nivel
Los lenguajes de alto nivel son normalmente fáciles de aprender porque
están formados por elementos de lenguajes naturales, como el inglés. En
BASIC, uno de los lenguajes de alto nivel más conocidos, los comandos
como "IF CONTADOR = 10 THEN STOP" pueden utilizarse para pedir a
Lic. Luis E. Ramirez Milla 95
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
la computadora que pare si el CONTADOR es igual a 10. Esta forma de
trabajar puede dar la sensación de que las computadoras parecen
comprender un lenguaje natural; en realidad lo hacen de una forma rígida
y sistemática, sin que haya cabida, por ejemplo, para ambigüedades o
dobles sentidos.
Ejemplo:
{Lenguaje Pascal} program suma; var x,s,r:integer; {declaración de las variables} begin {comienzo del programa principal} writeln('Ingrese 2 números enteros');{imprime el texto} readln(x,s); lee 2 números y coloca en las variables x y s} r:= x + s; {suma los 2 números y coloca el resultado en r} writeln('La suma es ',r); {imrpime el resultado} readln; end.{termina el programa principal}
Ese es el lenguaje Pascal, muy utilizado por principiantes al aprender a
programar.
Según el paradigma de programación
Un paradigma de programación representa un enfoque particular o
filosofía para la construcción del software. No es mejor uno que otro, sino
que cada uno tiene ventajas y desventajas. Dependiendo de la situación
un paradigma resulta más apropiado que otro.
Atendiendo al paradigma de programación, se pueden clasificar los
lenguajes en:
El paradigma imperativo o por procedimientos es considerado el
más común y está representado, por ejemplo, por el C o por
BASIC.
El paradigma funcional está representado por la familia de
lenguajes LISP (en particular Scheme), ML o Haskell.
El paradigma lógico, un ejemplo es PROLOG.
Lic. Luis E. Ramirez Milla 96
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
El paradigma orientado a objetos. Un lenguaje completamente
orientado a objetos es Smalltalk.
Lenguajes imperativos
Son los lenguajes que dan instrucciones a la computadora, es decir,
órdenes.
Lenguajes Funcionales
Este paradigma concibe a la computación como la evaluación de
funciones matemáticas y evita declarar y cambiar datos. En otras
palabras, hace hincapié en la aplicación de las funciones y composición
entre ellas, más que en los cambios de estados y la ejecución secuencial
de comandos (como lo hace el paradigma procedimental). Permite
resolver ciertos problemas de forma elegante y los lenguajes puramente
funcionales evitan los efectos secundarios comunes en otro tipo de
programaciones.
Lenguajes Lógicos
La computación lógica direcciona métodos de procesamiento basados en
el razonamiento formal. Los objetos de tales razonamientos son "hechos"
o reglas "if then". Para computar lógicamente se utiliza un conjunto de
tales estamentos para calcular la verdad o falsedad de ese conjunto de
estamentos. Un estamento es un hecho si sus tuplas verifican una serie
de operaciones.
Un hecho es una expresión en la que algún objeto o conjunto de objetos
satisface una relación específica. Una tupla es una lista inmutable. Una
tupla no puede modificarse de ningún modo después de su creación.
Un regla if then es un estamento que informa acerca de conjuntos de
tuplas o estamentos relacionados que pueden predecir si otras tuplas
satisfaceran otras relaciones.
Lic. Luis E. Ramirez Milla 97
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
Un estamento que es probado verdadero como resultado de un proceso
se dice que es una inferencia del conjunto original. Se trata por tanto de
una descripción de cómo obtener la veracidad de un estamento dado que
unas reglas son verdaderas.
La computación lógica está por tanto relacionada con la automatización
de algún conjunto de métodos de inferencia.
Lenguajes orientados a objetos
La Programación Orientada a Objetos (POO u OOP según sus siglas en
inglés) es un paradigma de programación que usa objetos y sus
interacciones para diseñar aplicaciones y programas de computadora.
Está basado en varias técnicas, incluyendo herencia, modularidad,
polimorfismo y encapsulamiento. Su uso se popularizó a principios de la
década de 1990. Actualmente son muchos los lenguajes de programación
que soportan la orientación a objetos.
Lic. Luis E. Ramirez Milla 98
Universidad Nacional del Santa E.A.P. de Ingeniería de Sistemas e Informática .
REFERENCIAS BIBLIOGRAFICAS
1. Jaime Martinez Charte. “ORGANIZACIÓN Y ARQUITECTURA DE COMPUTADORAS”. Ed. Addison Wesley longman de mexico. SA. Primera edicion. 2003.
2. Milan Milenkovic. “SISTEMAS OPERATIVOS”. Ed. McGrawHill. México. Segunda edición. 1995.
3. Joyanes Aguilar Luis. “FUNDAMENTOS DE PROGRAMACION”. Ed. McGrawHill. España. Tercera edición. 1999.
4. J. Dirksen. “DIAGRAMAS DE FLUJO”. Ed. Prentice Hall Hispanoamericana. España. Segunda edición. 2001.
Lic. Luis E. Ramirez Milla 99