educación, informática y demás

1. Sistemas informáticos. Definición y componentes

Un Sistema es un conjunto de elementos que interaccionan entre sí para proporcionar una funcionalidad compleja o elaborada que se obtiene de la conjunción de las funcionalidades individuales de cada elemento.

Sistema informático: Conjunto de elementos que interacciónan entre sí para tratar, procesar, almacenar, recuperar.. información.

Todo sistema informático tiene Entrada(s) y Salida(s) de información.

Los sistemas informáticos tienen tres tipos de componentes fundamentales:

Hardware. Son los componentes físicos de los sitemas informáticos. Se pueden ver o tocar: son tangibles. Son los componentes que permiten al sistema informático interactuar con el «mundo real». Permiten la entrada y salida de datos con el exterior.

Software. Componente lógico: no se puede tocar, es intangible. El software son las aplicaciones o programas que se ejecutan en los sistemas informáticos. Un programa es un conjunto ordenado de instrucciones que al ejecutarlo en secuencia realiza alguna función. El programa es ejecutado por el hardware del sistema informático, en concreto por la CPU la que se encargará de analizar cada instrucción y mandar las órdenes necesarias al resto de componentes hardware del sistema para que se lleve a cabo la operación de la instrucción ejecutada. De esta forma, un componente lógico dice qué tienen que hacer el resto de componentes lógicos y físicos del sistema.

Información. La información es el principal activo de los sistemas informáticos. Todo sistema informático trabaja con información. Básicamente las operaciones que se pueden realizar con la información en un sistema informático son:

  • Almacenamiento y recuperación de información. Ya sea almacenada en una memoria secundaria o auxilar o enviándola a través de la red para que se almacene en un servidor «en la nube»
  • Enviar / Recibir información. Es un tipo especial de operación de almacenamiento y recuperación de la información. Al final, es lo mismo quie almacenar y recuperar, porque estamos guardando la uinformación en algún sitio y/o la estamos recuperando. La diferencia es que no tenemos porque saber dónde se guarda o de donde procede físicamente dicha información. Por ejemplo, cuando almacenamos información en un servicio de almacenamiento en la nube como Google Drive o Dropbox; no sabemos dónde se guardan los datos.. en algún servidor, pero no sabemos dónde se guardan realmente.
  • Procesar información. Los sistemas informáticos también son capaces de modificar y procesar la información para obtener información nueva. Por ejemplo, si almacenamos la fecha de nacimiento de una persona un sistema informático puede calcular, procesar la información que tiene, su edad.

Todas estas operaciones realmente son llevadas a cabo gracias al Software, que es el que trabaja a nivel lógico con la información. Sin embargo, como ya sabemos o intuimos, el software sin el hardware que es el que da la base física del sistema, no puede hacer nada. Es decir, nos encontramos en el escenario que habíamos comentado al inicio: un sistema informático tiene tres componentes fundamentales: Hardware, Software e Información.

Software

El software es el conjunto de todos los programas que se pueden ejecutar en un sistema informático.

Un programa es un conjunto de instrucciones ordenadas que al ejecutarse en secencia, es decir una detrás de otra en el orden en el que aparecen, realiza una función concreta. Algunos ejemplos de programas pueden ser: libreoffice writer, notepad, explorer, etc.

¿Cómo se ejecutan esas instrucciones?. Para ejecutar esas instrucciones el hardware del sistema tiene que ser capaz de reconocerlas. Las instrucciones de un programa se tienen que expresar en un lenguaje capaz de ser ejecutado, comprendido, por la CPU. El lenguaje que utilizan las CPU se denomina código máquina y está compuesto por cadenas de 0s y 1s que indican a la CPU qué operación hay que realizar así como los operandos, sin son necesarios, con los que debe trabajar.

Cada CPU tiene un código máquina propio compuesto por el conjunto de instrucciones que es capaz de reconocer. A este conjunto de instrucciones que una CPU es capaz de reconocer y ejecutar se le denomina juego de instrucciones.

Por ejemplo, en la arquitectura de orednadores PC existen dos grandes fabricantes de microprocesadores: AMD e Intel. Podemos utilizar cualquiera de estos microprocesadores en nuestros sistemas informáticos y ejecutar los mismos programas. Esto es así porque los juegos de instrucciones de ambos fabricantes tienen un conjunto de instrucciones comunes. Sin embargo, cada microprocesador tiene su propio juego de instrucciones que no comparten.

Para ejecutar un programa en un sistema informático hay que cargar este programa en memoria principal y después indicar a la CPU la dirección de memoria dónde se almacena la primera instrucción de dicho programa y que comience la ejecución.

¿Quíen se encarga de realizar esta tarea? El sistema operativo. Entre otras muchas funciones el sistema operativo se encarga de proporcionar acceso a los recursos del sistema a las aplicaciones que se ejecuten en él, así como ejecutarlas cuando el usuario quiera hacerlo.

Caso práctico – Ejecución de programas

Vamos a ejecutar un programa en nuestro sistema. Para ello, vamos a utilizar primero el explorador de Windows – herramienta del sistema que nos sirve para navegar por los sistemas de ficheros conectados a nuestro sistema informático en Windows.

Podemos lanzarlo vamos a utilizar un acelerador de teclado: WND+E. Vamos a movernos al directorio Windows que está en la unidad C: Este directorio almacena gran parte del sistema operativo Windows.

Vamos a buscar un fichero llamado Write.

Ahora hacemos doble clic sobre ´dicho fichero con el botón principal o izquierdo.

Programa Wordpad lanzado desde el Explorador de Windows

Al hacer doble clic hemos indicado al sistema operativo que queremos interactuar con el fichero Write. Como este fichero es un fichero ejecutable – contiene un programa expresado en código máquina – y además tiene extensión .EXE – extensión que indica al sistema operativo que el fichero contiene un ejecutable en código máquina – el sistema operativo se encarga de llevar a cabo todo el proceso necesario para ejecutarlo.

Este proceso, cómo mínimo, carga el programa en memoria y busca los recursos necesarios del sistema para que éste pueda ejecutarse. Por ejemplo, creará un nuevo proceso para que el programa se ejecute (veremos todo esto más adelante).

Vamos a repetir el proceso pero esta vez vamos a utilizar el interprete de comandos que proporciona Windows. Para ello vamos a abrir una terminal o consola de comandos o símbolo del sistema. Siguiendo con los aceleradores de teclado, vamos a pulsar la tecla WND+R – Run o ejecutar.

Aparecerá un cuadro de dialogo que espera que indiquemos el nombre del programa a ejecutar. Vamos a escribir cmd y pulsamos Enter. No hace falta que pulsemos con el ratón el botón aceptar, basta con que pulsemos Enter puesto que el botón aceptar es el botón marcado por defecto. Si nos fijamos en la interfaz de usuario el botón aceptar aparece marcado de manera especial: rodeado de un rectángulo azul.

Desde la terminal podemos ejecutar cualquier programa lo único que tenemos que hacer es indicar al interprete de comandos que programa queremos ejecutar. Para ello, si no es un comando interno del sistema y no está dentro del PATH (ya veremos más adelante qué es el PATH) tendremos que indicar la ruta en la que se encuentra almacenado el programa.

Ejecutando desde terminal con la ruta absoluta del fichero ejecutable
Worpad ejecutado

Da la casualidad de que el directorio C:\Windows está dentro del PATH. Esto significa que si escribimos el nombre de una aplicación o ejecutable que esté en este directorio el interprete de comandos la ejecutará.

El directorio C:\Windows está en el PATH así que el interprete de comandos se encarga de buscar el fichero ejecutable write dentro de todos los directorios que forman parte del PATH automáticamente

Por ejemplo, vamos a ejecutar el programa notepad. Para ello escribimos notepad y pulsamos Enter.

Se ejecuta el programa notepad.exe

Vamos a comprobar que realmente el fichero write.exe y el fichero notepad.exe están dentro del directorio C:\Windows. Para ello vamos a utilizar un nuevo comando, el comando DIR

El comando DIR muestra información de ficheros y contenido de directorios. Para usarlo tan solo tenemos que escribir dir en la terminal y nos mostrará el contenido del directorio actual.

De esta forma le indicamos al comando DIR que queremos que nos muestre el contenido del directorio C:\Windows.

No obstante, con este comando se muestra todo el contenido y nos dificulta encontrar en pantalla la información que estamos buscando. De primera, podemos ver que existe un fichero llamado write.exe, sin embargo para encontrar notepad.exe tenemos que movernos por la ventana. Para dos ficheros, no pasa nada, pero si quermeos mostrar información concreta de algun tipo de fichero y tenemos gran cantidad de ficheros en un directorio esta opción no es la más adecuada.

«Salto de fe». Para mostrar solo los ficheros ejecutables vamos a utilizar un comodín que nos permita decirle al comando DIR que muestre solo los ficheros con extensión EXE.

Ahora solo se mostrarán aquellos ficheros que están en el directorio C:\Windows que cumplan con el patrón que hemos indicado: *.EXE. El asterisco indica que el nombre del fichero puede ser cualquiera – literalmente * significa cualquier conjunto de 0 o más caracteres. Al poner .EXE al final, estamos diciendo que queremos mostrar información de cualquier fichero cuyo nombre termine en .EXE, es decir tenga extensión .EXE.

Caso práctico – Ficheros ejecutables: código máquina

Hemos visto que para que un programa pueda ser ejecutado por la CPU tiene que estar expresado en código máquina. Sabemos que el código máquina son cadenas 0s y 1s con las instrucciones del juego de instrucciones de la CPU que las ejecutará.

Vamos a mostrar el contenido de uno de esos ficheros ejecutables que hemos lanzado desde la terminal. En concreto C:\Windows\write.exe. Para mostrar el contenido de un fichero en pantalla podemos utilizar el comando TYPE. Type muestra el contenido del fichero que se le pase por parámetro en pantalla. Así que vamos a ejecutar TYPE C:\Windows\write.exe.

Contenido del fichero write.exe en pantalla

Como vemos parece que el fichero es demasiado corto por lo que se muestra en pantalla. Sin embargo, el fichero contiene mucha más información. Ha dejado de mostrarse en pantalla por que el comando type habrá encontrado algún caracter especial que indique el fin del fichero de texto o algún caracter especial que no es capaz de manejar.

Tened en cuenta que tanto el texto en particular, así como cualquier información en general y las instrucciones se representan de la misma forma: como cadenas de 0s y 1s.

Vamos a abrir el fichero con notepad++.

Nos encontramos con un contenido que es ilegible. Esto es así porque tanto type como notepad++ tratan de representar la información almacenada en el fichero write.exe como si fuera un fichero de texto plano. Sin embargo, write.exe no almacena información con código ASCII o UTF-8, sino que almacena código máquina.

Para mostrar el contenido del fichero como instrucciones necesitaríamos un programa que interpretara dicha información como código máquina.

«https://onlinedisassembler.com»

https://onlinedisassembler.com

Programa almacenado

Vamos a empezar hablando de las memorias. Una memoria es un dispositivo que permite almacenar y recuperar información. La información que almacena puede ser instrucciones de un programa o datos que utilizará algún programa.

Si queremos ejecutar un programa lo tenemos que cargar en memoria principal, las instrucciones del programa una tras otra en el mismo orden en el que están escritas en el programa.

Ahora se indica a la CPU cuál es la dirección de memoria donde está la primera instrucción del programa. La CPU se encargará de ejecutar en secuencia, una detrás de otra, las instrucciones de dicho programa. Para ello, le pide a la memoria que le proporcione la instrucción a ejecutar a través de señales de control.