Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ensayo Primer Capitulo Libro SO Modernos
Ensayo Primer Capitulo Libro SO Modernos
Nombres:
Carlos Eduardo Villalba Perdomo
Kevin David Rocha Bautista
Camilo Andrés Rodríguez Martínez
Juan Felipe Ladino
Universidad de Cundinamarca
Facultad de ingeniería
Ingeniería de sistemas
Fusagasugá
2020
Ensayo primer capitulo
Nombres Estudiantes:
Carlos Eduardo Villalba Perdomo
Kevin David Rocha Bautista
Camilo Andrés Rodríguez Martínez
Juan Felipe Ladino
Universidad de Cundinamarca
Facultad de ingeniería
Ingeniería de sistemas
Fusagasugá
2020
INTRODUCCIÓN
Se lleva a cabo la lectura del primer capítulo del libro sistemas operativos modernos en la
clase de sistemas operativos, para tener el conocimiento del inicio de los sistemas, historia,
composición, evolución y características para así poder realizar un ensayo en el que
podamos redactar todo lo que pudimos aprender de este. Daremos una breve explicación
sobre los sistemas operativos vista desde dos puntos: como administrador de recursos y
como maquina extendida.
JUSTIFICACION
Nuestro estudio acerca del primer y segundo capítulo del libro SISTEMAS OPERATIVOS
MODERNOS, nos permiten analizar que los sistemas operativos tienen dos enfoques: SO
como una maquina extendida y como administrador de recursos. También mirar todas las
generaciones de SO desde 1995 con los tubos al vacío ya hasta la fecha con la llegada de
las computadoras personales. Además, tener un claro concepto acerca de los componentes
del hardware de la computadora como los procesadores, memorias, discos, etc. Luego mirar
los tipos de SO que hay en el mundo tales como: mainframe, servidores, multiprocesadores,
integrados y otros. Del mismo modo tener en claro conceptos básicos de los sistemas
operativos que en el diario vivir se ven reflejados. Por último, echar un vistazo al temario
de llamadas al sistema, estructura de los SO, mundo según C, unidades métricas y demás.
OBJETIVOS:
Objetivo General:
Definir que son los sistemas operativos vista desde dos puntos: como administrador
de recursos y como maquina extendida.
Objetivos Específicos:
Determinar que es un Sistema Operativo.
Identificar las generaciones y los tipos de Sistemas Operativos.
Detallar conceptos del hardware de la computadora.
Determinar que son las llamadas al Sistema.
Comprender la estructura de los Sistemas Operativos.
Indagar sobre el mundo según lenguaje C.
Al día de hoy, un equipo de trabajo (computadora) está compuesta por gran variedad de
componentes denominados “hardware”, básicos como memoria ROM o memoria interna, la
cual es la encargada de guardar archivos, requeridos para el funcionamiento (drivers o
controladores) y a su vez, el sistema operativo como tal y cualquier otro archivo que sea
requerido mientras su capacidad lo permita, también existe la memoria RAM, la cual es la
memoria virtual, en la cual se almacenan datos o instrucciones que posteriormente serán
usadas, incluye un procesador el cual definirá la velocidad de respuesta de nuestro equipo,
tarjeta gráfica, a su vez incluirá más componentes que permitirán la interacción con el
comprador como monitor, teclado, ratón, impresoras, etc.
Los componentes “hardware” por si solos no pueden ser administrados, en ese caso se hace
necesario los componentes “software” y es ahí donde entran los sistemas operativos, cuyo
trabajo es realizar un modelo simple e interactivo; y podríamos definirlo en la siguiente
frase como “es que el que les da vida a nuestros componentes” pero ¿Únicamente
trabajamos con una capa de sistema operativo?
En realidad, con lo que los usuarios interactúan en programa se denomina Shell, basado en
el texto (código), y para hacer uso interactivo de este GUI (Graphical User Interface;
Interfaz gráfica de usuario), esta ultima la cual no hace parte en si del sistema operativo,
pero se incluye para que el mismo lleve a cabo su trabajo, no cabe recalcar que los
verdaderos conectores (clientes por decirlo así) del sistema operativo son los programas de
aplicación, los que tratan directamente con el mismo.
Las computadoras modernas trabajan ahora con un mismo concepto divido en dos partes:
1. Con el multiproceso, es un concepto y función algo compleja, dada sin ningún
control y con más de un programa ejecutando órdenes a la vez, tendríamos un
equipo por decirlo así “loco” imprimiendo procesos, el resultado un caos. Para
realizar esto correctamente se guardan las instrucciones de salida en búferes, cuando
un programa termina su salida, previamente almacenada, el otro programa puede
continuar generando más salida sin aun estar enviándose como tal a las líneas de
ejecución momentáneamente, hasta que se dé la orden.
2. El multiplex ajé, consiste en compartir recursos de dos maneras distintas: tiempo y
espacio, cuando pasa en tiempo, distintos programas o usuarios toman turnos para
utilizarlo (recurso), cuando es en espacio, cada uno obtiene una parte del recurso.
El hardware está ampliamente relacionado con un sistema operativo ya que este es el que
administra sus recursos, pero para entender este también es necesario conocer ampliamente
sus componentes. Una computadora promedio se compone de:
Se puede decir que:
1. El procesador es el cerebro de la computadora, como función obtener la primera
instrucción de memoria, decodificarla para determinar su tipo y operandos,
ejecutarla y después obtener, decodificar y ejecutar las instrucciones subsiguientes.
El ciclo se repite hasta que el programa termina. De esta forma se ejecutan los
programas.
La primera generación de computadoras se caracterizó por utilizar tubos al vacío para lleva
a cabo su funcionamiento, el inconveniente con dichos tubos es que solían recalentarse
demasiado lo cual implicaba estar realizando cambios constante mente y operaban por
medio de tarjetas perforadas, ya en 1955 apareció el transistor quien fue el que revoluciono
el funcionamiento haciendo así, más confiable, reduciendo su tamaño y generando menor
consumo de electricidad, también fueron llegando nuevos lenguajes que se fueron
incorporando y pasaron a recibir el nombre de lenguajes de alto nivel y a su vez se empezó
a implementar el proceso por lotes, en 1965 llego la tercera generación de computadores la
cual la caracterizaron los circuitos integrados y la multiprogramación , los computadores
nuevamente se redujeron en tamaño , consumían menos y tenían un mejor rendimiento y la
multiprogramación la cual se caracteriza por que dos o más procesos pueden alojarse en la
memoria principal y ser ejecutados concurrentemente por el procesador o CPU , ya en 1980
con el desarrollo de los circuitos llegaron las computadoras personales los cuales se
empezaron a comercializar de forma masiva Una computadora personal suele estar
equipada para cumplir tareas comunes, permite navegar por Internet, estudiar, escribir
textos y realizar otros trabajos de oficina o educativos, como editar textos y bases de datos,
a ocho demás de actividades de ocio, como escuchar música, ver videos, jugar, etc.
Dentro de las operaciones más básicas y la vez más complejas de nuestra PC encontramos
los procesos. Siempre que le pidamos a nuestra computadora que haga algo, los procesos
asumirán el trabajo y de esta manera el microprocesador dará ejecución al plan que realice
el sistema operativo a través del proceso.
Un proceso es un concepto manejado por el sistema operativo que consiste en el conjunto
formado por:
Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador. Su
estado de ejecución en un momento dado, esto es, los valores de los registros de la CPU
para dicho programa.
Su memoria de trabajo, es decir, la memoria que ha reservado y sus contenidos.
Los procesos son creados y destruidos por el sistema operativo, así como también este se
debe hacer cargo de la comunicación entre procesos, pero lo hace a petición de otros
procesos.
En los sistemas operativos multihilo es posible crear tanto hilos como procesos. La
diferencia estriba en que un proceso solamente puede crear hilos para sí mismo y en que
dichos hilos comparten toda la memoria reservada para el proceso.
Modelo de dos estados.
El modelo de estados más simple es el de dos estados. En este modelo, un proceso puede
estar ejecutándose o no. Cuando se crea un nuevo proceso, se pone en estado de No
ejecución. En algún momento el proceso que se está ejecutando pasará al estado No
ejecución y otro proceso se elegirá de la lista de procesos listos para ejecutar para ponerlo
en estado Ejecución.
Un espacio de direcciones define un intervalo de direcciones discretas, cada una de las
cuales puede corresponder a un host de red, un dispositivo periférico, un sector de disco,
una celda de memoria u otra entidad lógica o física.
Para que los programas informáticos guarden y recuperen los datos almacenados, cada
unidad de datos debe tener una dirección en la que pueda localizarse individualmente, o
bien el programa no podrá encontrar y manipular los datos. El número de espacios de
direcciones disponibles dependerá de la estructura de dirección subyacente.
Los espacios de direcciones se crean combinando suficientes calificadores identificados de
manera única para hacer que una dirección no sea ambigua. Para la dirección física de una
persona, el espacio de direcciones sería una combinación de ubicaciones. Algunos
elementos de un espacio de direcciones pueden ser iguales, pero si cualquier elemento en la
dirección es diferente de las direcciones en dicho espacio, hará referencia a diferentes
entidades.
Los archivos se utilizan para toda la entrada y salida de información del sistema operativo,
para estandarizar el acceso al software y al hardware.
La entrada se produce cuando se modifica el contenido de un archivo o se graba en él. La
salida se produce cuando se lee el contenido de un archivo o se transfiere a otro archivo.
Por ejemplo, para crear una copia impresa de un archivo, el sistema lee información del
archivo de texto y graba esa información en el archivo que representa la impresora.
Tipos de archivos:
Los tipos de archivos reconocidos por el sistema son normal, directorio o especial. No
obstante, el sistema operativo utiliza muchas variaciones de estos tipos básicos.
Administración de archivos:
Existen muchas formas de trabajar con los archivos del sistema. Normalmente debe crear
un archivo de texto con un editor de texto.
Los enlaces son conexiones entre un nombre de archivo y un número de referencia de nodo
de índice, la representación interna de un archivo. Puesto que las entradas de directorio
contienen nombres de archivos emparejados
Gestión de Entradas y Salidas:
Gestión de Entrada y Salida: esto representa los intercambios de información desde el
procesador o incluso al acceso directo de la memoria. Esta actividad de entrada y salida se
realiza gracias a la relación que hay entre el sistema operativo con los diversos periféricos,
así administrar y controlar los estados y recursos que tienen cada uno de estos mediante los
controladores de dispositivos
Dispositivos o periféricos: son aparatos solidos e independientes que van conectados a la
unidad central de la computadora. Existen diversos tipos de dispositivos con funciones
diferentes
Dispositivos de entrada: tienen la tarea de introducir información, órdenes, comandos e
instrucciones para que la computadora lo procese con el sistema operativo.
La función principal de un Sistema Operativo es la de tomar todos los recursos físicos de un
sistema y brindarlos de manera virtual, esto es logrado por medio de una abstracción del
hardware.
Es importante en definir claramente las diferencias entre estos dos conceptos:
La seguridad es algo que manejamos en todos los aspectos de nuestras vidas, y por
experiencia se sabe que no depende de una sola persona, si no que está fuertemente ligada
con todo lo que lo rodea, por esto la seguridad no solo es manejada por el sistema operativo
si no que es necesario un refuerzo como otro software que comúnmente denominamos
“antivirus”. Un sistema operativo como administrador de los recursos cumple funciones
muy importantes en la instrumentación de la seguridad. En la actualidad los conceptos e
ideas tenidos sobre la seguridad han ido cambiando mucho, esto porque se entró a una era
donde es posible los accesos remotos a los equipos, donde se busca que todo proceso sea
más fácil de realizar.
Un sistema de seguridad debe cumplir con unos requisitos:
Confidencialidad: Acceso solo a usuarios autorizados
Integridad: Modificación solo por usuarios autorizados
Disponibilidad: Recursos solamente disponibles para usuario autorizado
La seguridad se clasifica en:
Externa: protección contra desastres y contra intrusos
Operacional: básicamente nos determina que acceso se permite al usuario.
Una de las obligaciones de un sistema seguro es permanecer en constante vigilancia,
verificando y validando las posibles amenazas, esto lo hacen con uso de contraseñas,
controles de acceso
Las LLAMADAS AL SISTEMA es un método o función que puede invocar un proceso
para solicitar un cierto servicio al sistema operativo. Dado que el acceso a ciertos recursos
del sistema requiere la ejecución de código en modo privilegiado, el sistema operativo
ofrece un conjunto de métodos o funciones que el programa puede emplear para acceder a
dichos recursos. En otras palabras, el sistema operativo actúa como intermediario,
ofreciendo una interfaz de programación, que el programa puede usar en cualquier
momento para solicitar recursos gestionados por el sistema operativo.
Algunos ejemplos de llamadas al sistema son las siguientes:
Write, que se emplea para escribir un dato en un cierto dispositivo de salida, tales
como una pantalla o un disco magnético.
Read, que es usada para leer de un dispositivo de entrada, tales como un teclado o
un disco magnético.
Open, que es usada para obtener un descriptor de un fichero del sistema, ese fichero
suele pasarse a write.
Close, que se emplea para cerrar un descriptor de fichero.
Este tipo de llamadas al sistema permiten realizar "actividades" relacionadas con los
programas que están en espera para ejecución o que se están ejecutando, es decir, cuando
son un proceso; cada sistema operativo tiene sus formas de invocar dichas llamadas, en el
caso de los sistemas operativos bajo el núcleo Linux estas se pueden invocar desde el Shell
o interprete de comandos y desde el lenguaje C. Las llamadas más comunes de este tipo
son:
Fork (): Esta es una llamada a sistema para el control de procesos que al ser
invocada genera un proceso hijo, como una copia del proceso en donde fue
invocada la llamada, este hijo es casi exactamente igual a su padre
Getpid (): Es una llamada para el control de procesos que retorna el pid del proceso
que la invoco.
Getppid (): Es una llamada para el control de procesos que retorna el pid del padre
del proceso que la invoca.
La familia de llamadas exec… (…): La familia exec... () es un conjunto de
funciones que en esencia realizan la misma actividad ya que solo difieren en la
forma de pasar sus argumentos, son utilizadas para poner en ejecución un proceso
determinado, la característica es que las instrucciones del proceso que las invoca
son sustituidas por las instrucciones del proceso indicado
Wait (): Al ser invocada, suspende el proceso que la invocó para que su proceso hijo
termine de ejecutar su código (es decir, espera a su hijo) o hasta que el proceso
invocador reciba una señal de terminación de proceso.
Waitpid (…): La función de esta llamada es la misma que la de la función wait(...),
la diferencia radica en que el primer argumento es el pid del hijo que se quiere
esperar, el segundo argumento es el puntero a la variable entera en la cual se
almacenara el estado (este también puede ser NULL), y el tercer argumento es un
entero que representa una opción.
Luego de este, tenemos los sistemas por capas el cual surgió con la llegada del sistema
THE, el cual consta un sistema simple de procesamiento por lotes y tenia 6 capas las cuales
son:
1. Asignación del procesador y multiprogramación
2. Administración de memoria y tambor
3. Comunicación operador-proceso
4. Administración de la entrada y salida.
5. Programas de usuario.
6. El operador.
Después llega el mecanismo de los anillos, su principal ventaja es que se puede extender
fácilmente por estructuras de subsistemas de usuario, mientras que las capas de realidad de
THE era sólo una ayuda diseña debido a que las partes del sistema estaban enlazadas entre
sí y sólo se podía ejecutar un programa.
Mas adelante encontramos los Microkernels, En ese tiempo se encontraba una variedad de
errores en los anteriores sistemas y aquí surge la cifra va aproximadamente de que por cada
línea de código había 10 errores, Es allí donde surge el Microkernel, su idea principal es
lograr una alta confiabilidad al dividir el sistema operativo en módulos pequeños y bien
definidos, donde un sistema se ejecuta el Kernel y el resto se ejecuta como en procesos de
usuario ordinarios. En el siguiente esquema miraremos que esos dispositivos controladores
se ejecutan como procesos de usuarios separados, por ejemplo:
Después de que surge este modelo empieza a surgir un concepto de máquinas virtuales las
cuales son sistemas de procesamiento por lotes, Esas máquinas dieron su inicio ya que
surgió un problema donde los trabajadores querían la capacidad de trabajar de manera
interactiva en
una terminal, tanto dentro como fuera de IBM, decidieron escribir sistemas de tiempo
compartido para este sistema. Gracias a esto se da inició a una variedad de sistemas que
seguirán mejorando cada vez más.
Luego de todos estos avances se empieza a salir las maquinas virtuales de java que de una
manera algo mas distinta tiene como objetivo ejecutar programas de Java, que hasta el día
de hoy nosotros las utilizamos, en seguida surge la Enokernels que, en pocas palabras en
vez de clonar la máquina actual, como se hace con las máquinas virtuales, otra estrategia es
particionarla;
en otras palabras, a cada usuario se le proporciona un subconjunto de los recursos. Así,
una máquina virtual podría obtener los bloques de disco del 0 al 1023, la siguiente podría
obtener
los bloques de disco del 1024 al 2047 y así sucesivamente.
EL MUNDO SEGÚN C.
Como sabemos las mayorías de programas están basado en lenguaje C o también en C++,
ya que es un entorno el cual nos permite desarrollar sistemas operativos.
Por último, tenemos el modelo del tiempo de ejecución, en este momento cuando ya se ha
enlazado el archivo binario del sistema operativo, la computadora puede reiniciarse
con el nuevo sistema operativo. Una vez en ejecución, puede cargar piezas en forma
dinámica que no se hayan incluido de manera estática en el binario, como los drivers de
dispositivos y los sistemas de archivos. Hay que aclara que en casi todos los casos el código
del sistema operativo es ejecutado directamente por el hardware, sin intérprete y sin
compilación justo-a-tiempo, como se da el caso con Java.
INVESTIGACIÓN ACERCA DE LOS SISTEMAS OPERATIVOS:
La ciencia computacional es un campo que avanza con rapidez y es difícil predecir hacia
dónde va, Ya que día a día se van desarrollando nuevas ideas y por ende esto contribuye un
aporte para el desarrollo y la implementación de futuros productos los cuales dan un
impacto masivo en la industria y en los usuarios dependiendo del sistema que estos estén
implementando y las novedosas ideas que aporten a la industria, Por ejemplo, cuando el
presidente Eisenhower estableció la Agencia de Proyectos Avanzados de Investigación
(ARPA) del Departamento de Defensa en 1958, trataba de evitar que el Ejército
predominara sobre la Marina y la Fuerza Aérea en relación con el presupuesto de
investigación. No estaba tratando de inventar Internet. Pero una de las cosas que hizo
ARPA fue patrocinar cierta investigación universitaria sobre el entonces oscuro tema de la
conmutación de paquetes, lo cual condujo a la primera red experimental de conmutación de
paquetes, ARPANET, Entró en funcionamiento en 1969. Poco tiempo después, otras redes
de investigación patrocinadas por ARPA estaban conectadas a ARPANET, y nació Internet,
que en ese entonces era utilizada felizmente por los investigadores académicos para
enviarse correo electrónico unos con otros durante 20 años.
La investigación de los sistemas operativos ha producido grandes cambios en los sistemas
prácticos, un ejemplo es el anterior con relación al internet, donde podemos apreciar que
todos los sistemas de procesamiento se organizaban por lotes hasta que el M.I.T. inventó el
tiempo compartido interactivo a principios de la década de 1960. Todas las computadoras
eran basadas en texto, hasta que Doug Engelbart inventó el ratón y la interfaz gráfica de
usuario en el Stanford Research Institute a finales de la década de 1960.
DESCRIPCIÓN GENERAL SOBRE EL RESTO DE ESTE LIBRO:
Desde el punto de vista del programador, el propósito principal de un sistema operativo es
proveer ciertas abstracciones clave, siendo las más importantes los procesos y hilos, los
espacios de direcciones y los archivos.
Dado que la CPU conmuta rápidamente entre un proceso y otro, la velocidad a la que un
proceso ejecuta sus cálculos no es uniforme y tal vez ni siquiera sea reproducible si se
ejecutan los mismos procesos de nuevo. Por ende, al programar los procesos debe asumirse
esta variación de velocidad. Por ejemplo, considere un proceso de E/S que inicia una
unidad de cinta magnética para restaurar los archivos respaldados, ejecuta un ciclo de
inactividad 10,000 veces para permitir que obtenga la velocidad adecuada y después emite
un comando para leer el primer registro. Si la CPU decide conmutar a otro proceso durante
el ciclo de inactividad, el proceso de la cinta tal vez no se ejecute de nuevo sino hasta que el
primer registro se encuentre más allá de la cabeza de lectura. Cuando un proceso tiene
requerimientos críticos de tiempo real como éste, es decir, cuando deben ocurrir eventos
específicos dentro de un número especificado de milisegundos, es necesario tomar medidas
especiales para asegurar que ocurran. Sin embargo, por lo general la mayoría de los
procesos no se ven afectados por la multiprogramación subyacente de la CPU o las
velocidades relativas de distintos procesos. Por el contrario, en Windows una sola llamada
a una función de Win32 (CreateProcess) maneja la creación de procesos y carga el
programa correcto en el nuevo proceso. En Windows como en UNIX cada proceso que se
cree se puede decir que es totalmente independiente del otro ya que si en un proceso se
requiere hacer una modificación, una vez realizada esta modificación, esta no será visible
para el otro proceso ya que van en direcciones distintas.
Conclusión:
En conclusión, determinamos que los sistemas operativos se dividen en dos: SO como
administrador de recursos que como fin tiene administrar todas las partes del sistema de
forma eficiente y SO como maquina extendida, su función es proveer a los usuarios
contemplaciones que sean más aceptables de usar como procesos, archivos, espacios de
direcciones, etc. Aprendimos sobre la historia de los sistemas operativos desde su inicio
con reemplazo de los sistemas de operador hasta los sistemas modernos de
multiprogramación, Analizando sistemas de procesamiento por lotes, multiprogramación y
de la computadora personal. También aprendimos Que las computadoras están compuestas
por procesadores, memorias, dispositivos de entrada y salida.