capitulo i: inteligencia artificialbiblioteca.uns.edu.pe/saladocentes/archivoz/publicacio... · web...

140
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

Upload: others

Post on 03-Jan-2020

4 views

Category:

Documents


0 download

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