República Bolivariana de Venezuela
Ministerio del Poder Popular para la Defensa
Universidad Nacional Experimental Politécnica de la Fuerza Armada
Nacional Bolivariana
Núcleo Puerto Cabello – Estado Carabobo
Ingeniería de Sistemas – Semestre #6
Sistemas Operativos
INTRODUCCIÓN Y CONCEPTOS BASICOS DE LOS SO.
Integrantes de equipo: Docente:
Mike Espinola – C.I: V-27.754.194 Ing. Elvis Vanegas
Yasson Espinoza – C.I: V-28.001.097
Aida Ortega – C.I: V-27.102.373
Cecilio Reyes – C.I: V-27.502.622
Página |1
Índice
Introducción………………………………………………………………………………2
Software, hardware y firmware………………………………………………………..3
¿Qué es un sistema operativo? ………………………………………………………4
Evolución histórica de los sistemas operativos…………………………………...4
La reentrancia…………………………………………………………………………….6
Proceso…………………………………………………………………………………….7
Exclusión mutua…………………………………………………………………………7
SPOOL……………………………………………………………………………………..8
Kernel………………………………………………………………………………………8
Microprogramación……………………………………………………………………...9
Estructura de un sistema operativo………………………………………………….9
Objetivo y funcionalidad de las partes que forman un SO……………………..10
Funcionamiento de un sistema operativo…………………………………………12
Servicios de un sistema operativo………………………………………………….17
Características de los sistemas operativos……………………………………….18
Tipos de sistemas operativos………………………………………………………..18
Aspectos que afectan al diseño de los sistemas operativos…………….…….18
Conclusión………………………………………………………………………………21
Bibliografía………………………………………………………………………………22
Página |2
Introducción
La simbiosis entre el hardware y el software ha hecho que el uso de los sistemas de
software sea indispensable para la sociedad moderna, ya que nos ayuda a realizar
miles de tareas que hace unas décadas podría haber costado tiempo, dinero y
recursos.
En la actualidad casi todo aparato electrónico posee un sistema operativo, Pc,
laptop, teléfono móvil, relojes inteligentes, el sistema gps de los autos actuales, casi
cualquier aparato genera una interfaz con la que el usuario puede interactuar, todo
esto gracias al que se podría llamar precursor de los sistemas operativos con
interfaz graficas amables al usuario UNIX, de este sistema han derivado muchos
otros que tomaron mucho auge gracias a que se basaron en el diseño de este tales
como Windows y GNU/Linux.
Un sistema operativo es un conjunto de programas que permite manejar la memoria,
disco, medios de almacenamiento de información y los diferentes periféricos o
recursos de nuestra computadora, como son el teclado, el mouse, la impresora, la
placa de red, entre otros.
Los periféricos utilizan un driver o controlador y son desarrollados por los fabricantes
de cada equipo. Encontramos diferentes sistemas operativos como Windows, Linux,
MAS OS, en sus diferentes versiones. También los teléfonos y tablets poseen un
sistema operativo el más famoso y usado actualmente es Android.
En el presente escrito se presentan los conceptos básicos y una introducción a lo
que es un sistema de software, temas interesantes como el significado de “sistema
operativo”, su evolución histórica, estructura, tipos de sistemas operativos,
exclusión mutua, SPOOLING, lo que es el Kernel que se podría traducir como el
corazón del sistema operativo, además también se mencionan los componentes y
el funcionamiento de cada parte de un sistema operativo cubriendo todo lo que es
el modelo funcional, estructural y procesal. Todos estos contenidos se abordan de
la manera más objetiva posible, intentando no dejar vacíos que generen confusión.
Página |3
Conceptos básicos de sistemas operativos
¿Que son hardware, software y firmware?
El hardware hace referencia a todos los componentes materiales y físicos de un
dispositivo, es decir, aquellos que se pueden ver y tocar. El monitor, el ratón,
la CPU, el teclado o la memoria RAM son algunos ejemplos de aquellas partes que,
en su conjunto, forman el hardware. Este término tiene su origen etimológico en el
inglés, donde “hard” significa “duro” y “ware”, “cosas”, por lo que se podría definir
incluso como “las partes duras de una computadora”. Se distinguen dos tipos:
Interno: se encuentra dentro de la torre del ordenador, como los cables, los
circuitos, la unidad central de procesamiento o los dispositivos de almacenamiento.
Periféricos: están situados en el exterior de la torre del ordenador. Entre ellos
tenemos los periféricos de entrada, que dan información al sistema, como el ratón
o el teclado; los periféricos de salida, que muestran las operaciones realizadas en
el ordenador, como por ejemplo el monitor o la impresora; y los periféricos de
entrada-salida, que realizan las dos funciones anteriores, como los USB.
El software es la parte digital del ordenador, es decir, el conjunto de instrucciones,
programas y reglas informáticas que el equipo requiere para funcionar. No tiene, por
consiguiente, una existencia física, sino que es intangible e inmaterial, como los
programas para el procesamiento de textos o el sistema operativo. Este término fue
acuñado por el matemático John Wilder Tukey en 1958 para referirse a los
programas que hacían trabajar a las calculadoras electrónicas. El software se
clasifica en:
Software de sistema: conjunto de programas que permiten al usuario
comunicarse con el sistema en sí. Son los sistemas operativos, los
controladores de dispositivos y los programas utilitarios para el
mantenimiento de la computadora.
Software de aplicación: programas diseñados para que el usuario
desarrolle una tarea específica, como escribir. Los procesadores de texto, las
hojas de cálculo, el antivirus o el reproductor de películas son algunos
ejemplos.
Software de programación: herramientas empleadas por el informático
para escribir nuevos programas gracias a un lenguaje específico.
El firmware, también conocido como soporte lógico inalterable, es el programa
básico que controla los circuitos electrónicos de cualquier dispositivo. Este
programa o software es una porción de código encargada de controlar qué es lo que
Página |4
tiene que hacer el hardware de un dispositivo, y el que se asegura de que el
funcionamiento básico es correcto.
El firmware puede ser calificado tanto como parte del hardware como del s oftware
de un dispositivo. Es parte del hardware porque siempre está integrado en la
electrónica, pero no deja de ser un programa informático, por lo que también es
software. Así pues, es prácticamente uno de los principales puntos de unión entre
ambos.
¿Qué es un sistema operativo?
El conjunto de programas informáticos que permite la administración eficaz de los
recursos de una computadora es conocido como sistema operativo o software de
sistema. Estos programas comienzan a trabajar apenas se enciende el equipo, ya
que gestionan el hardware desde los niveles más básicos y permiten además la
interacción con el usuario.
Cabe destacar que los sistemas operativos no funcionan sólo en las computadoras.
Por el contrario, este tipo de sistemas se encuentran en la mayoría de los
dispositivos electrónicos que utilizan microprocesadores: el software de sistema
posibilita que el aparato cumpla con sus funciones (por ejemplo, un teléfono móvil
o un reproductor de DVD), estos aparatos tienen hardware, software y firmware
trabajando en conjunto.
Evolución histórica de los sistemas operativos
Los sistemas operativos son desde hace algunas décadas una herramienta
indispensable para múltiples tareas en múltiples ámbitos de la sociedad moderna,
estos han avances sin precedentes en los últimos años, añadiendo muchas
ventajas, que van desde optimización de memoria hasta rapidez de procesos. Los
sistemas operativos no has sido así siempre ya que los primeros apenas ejecutaban
unos pocos programas y ya, a continuación, se dará un recorrido histórico de los
sistemas operativos:
1940:
La informática tal y como se le conoce hoy día, surgió a raíz de la II Guerra Mundial,
en la década de los 40. En esos años no existía siquiera el concepto de "Sistema
Operativo" y los programadores interactuaban directamente con el hardware de las
computadoras trabajando en lenguaje máquina (esto es, en binario, programando
únicamente con 0s y 1s).
1950:
El concepto de Sistema Operativo surge en la década de los 50. El primer Sistema
Operativo de la historia fue creado en 1956 para un ordenador IBM 704, y
básicamente lo único que hacía era comenzar la ejecución de un programa cuando
el anterior terminaba.
Página |5
1960:
En los años 60 se produce una revolución en el campo de los Sistemas Operativos.
Aparecen conceptos como sistema multitarea, sistema multiusuario, sistema
multiprocesadores y sistema en tiempo real.
1970:
Además del Atlas Supervisor y el OS/360, los años 1970 marcaron el inicio de UNIX,
a mediados de los 60 aparece Multics, sistema operativo multiusuario - multitarea
desarrollado por los laboratorios Bell de AT&T y Unix, convirtiéndolo en uno de los
pocos SO escritos en un lenguaje de alto nivel. En el campo de la programación
lógica se dio a luz la primera implementación de Prolog, y en la revolucionaria
orientación a objetos, Smalltalk.
En los años 70 se produce un boom en cuestión de ordenadores personales,
acercando estos al público general de manera impensable hasta entonces. Esto
hace que se multiplique el desarrollo, creándose el lenguaje de programación C
(diseñado específicamente para reescribir por completo el código UNIX).
1980:
Con la creación de los circuitos LSI (integración a gran escala), chips que contenían
miles de transistores en un centímetro cuadrado de silicio, empezó el auge de los
ordenadores personales. En éstos se dejó un poco de lado el rendimiento y se buscó
más que el sistema operativo fuera amigable, surgiendo menús, e interfaces
gráficas. Esto reducía la rapidez de las aplicaciones, pero se volvían más prácticos
y simples para los usuarios. En esta época, siguieron utilizándose lenguajes ya
existentes, como Smalltalk o C, y nacieron otros nuevos, de los cuales se podrían
destacar: C++ y Eiffel dentro del paradigma de la orientación a objetos, y Haskell y
Miranda en el campo de la programación declarativa. Un avance importante que se
estableció a mediados de la década de 1980 fue el desarrollo de redes de
computadoras personales que corrían sistemas operativos en red y sistemas
operativos distribuidos. En esta escena, dos sistemas operativos eran los
mayoritarios: MS-DOS (Micro Soft Disk Operating System), escrito por Microsoft
para IBM PC y otras computadoras que utilizaban la CPU Intel 8088 y sus
sucesores, y UNIX, que dominaba en los ordenadores personales que hacían uso
del Motorola 68000.
1990:
En la década de los 90 hace su aparición Linux, publicándose la primera versión del
núcleo en septiembre de 1991, que posteriormente se uniría al proyecto GNU, un
sistema operativo completamente libre, similar a UNIX, al que le faltaba para
funcionar un núcleo funcional. Hoy en día la mayoría de la gente conoce por Linux
al Sistema Operativo que realmente se llama GNU/Linux.
Página |6
Windows NT es una familia de sistemas operativos producidos por Microsoft, de la
cual la primera versión fue publicada en julio de 1993. Para esta década también
fue publicado el sistema operativo Solaris.
Solaris es un sistema operativo de tipo Unix desarrollado desde 1992 inicialmente
por Sun Microsystems y actualmente por Oracle Corporation como sucesor de
SunOS. Es un sistema certificado oficialmente como versión de Unix. Funciona en
arquitecturas SPARC y x86 para servidores y estaciones de trabajo.
2000:
SymbOs, MorphOS, Darwin, Mac OS, Haiku y OpenSolaris son algunos de los
sistemas operativos lanzados en esta década.
2010:
Illumos
Illumos es un proyecto de software libre derivado de OpenSolaris. Fue anunciado
por conferencia web desde Nueva York el 3 de agosto de 2010. El nombre del
proyecto es un neologismo procedente del latín "Illum" (la luz) y de "OS" (operating
system, sistema operativo).
Se trata del código base a partir del cual cualquiera podrá crear su propia
distribución de software basada en el sistema operativo OpenSolaris. Pero Illumos
no es una distribución, ni una bifurcación (fork), al menos por el momento, en la
medida que no pretende separarse del tronco principal, sino un derivado de la
"consolidación" OS/Net (más conocida como ON), que consiste básicamente en el
código fuente del kernel (SunOS), los drivers, los servicios de red, las bibliotecas
del sistema y los comandos básicos del sistema operativo.
OpenIndiana
OpenIndiana es un sistema operativo tipo Unix liberado como software libre y de
código abierto. Es una bifurcación de OpenSolaris concebida después de la compra
de Sun Microsystems por parte de Oracle y tiene como objetivo continuar con el
desarrollo y la distribución del código base de OpenSolaris. El proyecto opera bajo
el patrocinio de la Illumos Foundation (Fundación Illumos). El objetivo declarado del
proyecto es convertirse en la distribución de OpenSolaris de facto instalada en
servidores de producción donde se requieren soluciones de seguridad y errores de
forma gratuita.
La reentrancia
En informática, un programa informático o subrutina se llama re-entrada si puede
ser interrumpido en medio de su ejecución y volver a llamarse de forma segura ("re-
entrar") antes de que las invocaciones anteriores completen su ejecución. La
interrupción puede ser causada por una acción interna como un salto o llamada, o
Página |7
por una acción externa como una interrupción o señal. Una vez que la invocación
re-entrante completa, las invocaciones anteriores reanudarán su ejecución de forma
correcta.
El lenguaje C esta elegantemente orientado hacia la reentrancia, ya que las
variables locales se almacenan en un registro de activación de la pila cada vez que
se invoca a la función, pero esto no ocurre con todos los lenguajes.
¿Qué es un 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.
Otra información que permite al sistema operativo su planificación.
Esta definición varía ligeramente en el caso de sistemas operativos multihilo, donde
un proceso consta de uno o más hilos, la memoria de trabajo (compartida por todos
los hilos) y la información de planificación. Cada hilo consta de instrucciones y
estado de ejecución.
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. El mecanismo por el cual un proceso crea otro proceso se
denomina bifurcación (fork). Los nuevos procesos son independientes y no
comparten memoria (es decir, información) con el proceso que los ha creado.
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.
¿Qué es exclusión mutua?
Consiste en que un solo proceso excluye temporalmente a todos los demás para
usar un recurso compartido de forma que garantice la integridad del sistema.
Esto se usa en programación concurrente para evitar que entre más de un proceso
a la vez en la sección crítica. La sección crítica es el fragmento de código donde
puede modificarse un recurso compartido.
Página |8
Spooling
Es el proceso informático en el cual un ordenador almacena datos de forma
temporal, para ser usado posteriormente.
El spooling proporciona un lugar de espera (buffer) donde los datos pueden estar
hasta que el dispositivo (generalmente más lento) los procesa. Esto permite que la
CPU pueda trabajar en otras tareas mientras que espera que el dispositivo más
lento acabe de procesar el trabajo.
Kernel
El Kernel o núcleo, es una parte fundamental del sistema operativo que se encarga
de conceder el acceso al hardware de forma segura para todo el software que lo
solicita, el Kernel es una pequeña e invisible parte del sistema operativo, pero la
más importante, ya que sin esta no podría funcionar. Todos los sistemas operativos
tienen un Kernel, incluso Windows 10, pero quizá el más famoso es el Kernel de
Linux, que ahora además está integrado en Windows 10 con sus últimas
actualizaciones.
Este núcleo de los sistemas operativos se ejecuta en modo privilegiado con acceso
especial a los recursos del sistema para poder realizar las peticiones de acceso que
le va pidiendo el software que lo necesita, además como los recursos no son
ilimitados, también hace de arbitro a la hora de asignarlos, decidiendo el orden de
las peticiones recibidas según la prioridad e importancia de estas. Una gestión muy
importante y fundamental que en la mayoría de las ocasiones pasa desapercibida
aún siendo un trabajo esencial para coordinar todo el hardware con el software.
El Kernel o núcleo de un sistema operativo sirve para administrar los recursos de
hardware solicitados por los diferentes elementos de software y hacer de
intermediario decidiendo a que y cuando se concede este acceso evitando así
sobrecarga del sistema, recursos innecesarios y acceso a software malicioso al
propio Kernel y llegar a poder controlar así todo el sistema. De este modo el Kernel
sirve como elemento de seguridad teniendo que pasar por varias capas antes de
poder tener acceso, además tiene que distribuir los recursos de manera eficiente y
ordenada para que el Hardware trabaje junto al Software de la mejor manera
posible.
Aunque usualmente relacionamos un Kernel o un núcleo del sistema operativo a un
PC, también está presente y sirve para hacer funcionar todos los computadores que
podemos encontrar hoy en día, como por ejemplo un ordenador de a bordo de un
coche o un barco, una raspberry PI que ejecuta una versión adaptada de Linux
Debian o los dispositivos móviles con Android e iOS, que también disponen de un
Kernel basado en Linux / Unix.
Página |9
Microprogramación
La microprogramación consiste en definir el control como un programa que
implementa las instrucciones de la máquina en términos de microinstrucciones mas
simples. La idea clave es representar los valores acertados en las líneas de control
simbólicamente, de manera que el microprograma es una representación de las
microinstrucciones, así como el lenguaje ensamblador es una representación del
lenguaje máquina. Al definir la sintaxis de un lenguaje ensamblador, se eligen los
diferentes campos que formarán cada instrucción (opcode, registros, y
desplazamientos o datos inmediatos); de la misma manera, la representación de las
microinstrucciones incluirá un conjunto de campos cuya función este relacionada.
Estructura de un sistema operativo
La estructura interna de los sistemas operativos pueden ser muy diferentes, ya que
se debe tener en cuenta las metas de los usuarios (fácil uso, confiable, rápido, etc.)
y las del sistema (fácil de diseñar, implementar y mantener, eficiente, etc.).
Tres posibles diseños de la estructura de un sistema serian las siguientes:
Sistema monolítico
Estos sistemas no tienen una estructura definida, sino que son escritos como una
colección de procedimientos donde cualquier procedimiento puede invocar a otro.
Ejemplos de estos sistemas pueden ser MS-DOS o Linux (aunque incluye algo de
capas). Es importante tener en cuenta que ningún sistema es puramente de un tipo.
Sistema en capas
El diseño se organiza en una jerarquía de capas, donde los servicios que brinda una
capa son consumidos solamente por la capa superior. La capa 0 es del Hardware y
la N es la de los procesos de Usuario.
P á g i n a | 10
Estos sistemas tienen como ventaja que son modulares y la verificación se puede
hacer a cada capa por separado (son más mantenibles). Sin embargo el diseño es
muy costoso y es menos eficiente que el sistema monolítico ya que pierde tiempo
pasando por cada capa.
Sistema en micronúcleo
La idea consiste en tener un núcleo que brinde los servicios mínimos de manejo de
procesos, memoria y que provea la comunicación entre procesos. Todos los
restantes servicios se construyen como procesos separados del micronúcleo, que
ejecutan en modo usuario.
Estos sistemas tienen como ventaja un diseño simple y funcional, que aumenta la
portabilidad y la escalabilidad. Para agregar un nuevo servicio no es necesario
modificar el núcleo, y es más seguro ya que los servicios corren en modo usuario.
Objetivo y funcionalidad las partes que componen un SO
Componentes de un sistema operativo
Administración de procesos
Administración de memoria
Subsistema de Entrada/Salida
Administración de Almacenamiento secundario
Subsistema de archivos
Sistema de protección
Administración de procesos
Para comenzar debemos saber que es un proceso. Un proceso es un programa en
memoria + CPU + acceso a dispositivos + otros recursos. Notemos que un proceso
necesita de ciertos recursos (como CPU, memoria, archivos, dispositivos de E/S,
etc.) para realizar su tarea. Podemos ver entonces que un proceso es una entidad
activa, mientras que un programa una entidad pasiva.
Sabiendo entonces que es un proceso, podemos decir entonces que el sistema
operativo es el encargado de su administración. Es el encargado de proveer
servicios para que cada proceso pueda realizar su tarea. Entre los servicios se
encuentran:
Crear y destruir procesos
Suspender y reanudar procesos
Proveer mecanismos para la sincronización y comunicación entre procesos
Proveer mecanismos para prevenir dead-locks o lograr salir de ellos.
P á g i n a | 11
Administración de memoria
La memoria es un área de almacenamiento común a los procesadores y
dispositivos, donde se almacenan programas, datos, etc. El sistema deberá
administrar el lugar libre y ocupado, y será el encargado de las siguientes tareas:
Mantener que partes de la memoria están siendo usadas, y por quien.
Decidir cuales procesos serán cargados a memoria cuando exista espacio
de memoria disponible, pero no suficiente para todos los procesos que
deseamos.
Asignar y quitar espacio de memoria según sea necesario.
Subsistema de Entrada/Salida
El sistema operativo deberá ocultar las características es pecíficas de cada
dispositivo y ofrecer servicios comunes a todos. Estos servicios serán, entre otros:
Montaje y desmontaje de dispositivos
Una interfaz entre el cliente y el sistema operativo para los device drivers.
Técnicas de cache, buffering y spooling.
Device drivers específicos
Administración de almacenamiento secundario
Dado que la memoria RAM es volátil y pequeña para todos los datos y programas
que se precisan guardar, se utilizan discos para guardar la mayoría de la
información. El sistema operativo será el responsable de:
Administrar el espacio libre
Asignar la información a un determinado lugar
Algoritmos de planificación de disco (estos algoritmos deciden quien utiliza
un determinado recurso del disco cuando hay competencia por él)
Subsistema de archivos
Proporciona una vista uniforme de todas las formas de almacenamiento,
implementando el concepto de archivo como una colección de bytes. El Sistema
Operativo deberá proveer métodos para:
Abrir, cerrar y crear archivos
Leer y escribir archivos
P á g i n a | 12
Sistema de protección
Antes que nada, tener en cuenta que por protección nos referimos a los mecanismos
por los que se controla el acceso de los procesos a los recursos. En un sistema
multiusuario donde se ejecutan procesos de forma concurrente se deben tomar
medidas que garanticen la ausencia de interferencia entre ellos. Estas medidas
deben incorporar la posibilidad de definir reglas de acceso, entre otras cosas.
Funcionamiento de un sistema operativo
Arranque:
Centrándonos en el caso más común de un ordenador personal o un servidor
centralizado. Suceden cuatro fases antes de que el sistema esté disponible para
sus usuarios:
1. Arranque inicial desde la ROM.
2. Continuación del arranque desde la memoria secundaria.
3. Carga e iniciación del sistema operativo.
4. Carga e iniciación de servicios externos al sistema operativo.
Arranque inicial desde la ROM
Casi toda la memoria principal es volátil, por lo que al encender la máquina
no contiene nada (o su contenido no es significativo). La secuencia de
actividades iniciales en las máquinas más comunes es la siguiente: Lo
primero que la CPU ejecuta es un programa grabado en la zona ROM (o
EEPROM, nota 3, página 6), que consta de tres partes:
1. Comprobación del correcto funcionamiento del hardware: la CPU, toda la
memoria principal (incluida la ROM), buses, periféricos, etc. En caso de
errores informa mediante un código sonoro (con pitidos) y/o un código
numérico (con un visualizador). También lee una pequeña memoria de
tecnología CMOS alimentada por una batería que conserva, entre otras
cosas, la hora. Esta parte se llama «POST» (Power-On Self Test).
Solamente si no hay errores se pasa a la segunda.
2. El cargador inicial, o cargador de arranque (bootstrap loader), un
programa cuya función es cargar en la memoria un sector del dispositivo
de arranque. Pero antes, opcionalmente (pulsando alguna tecla en los
primeros instantes), presenta una interfaz de texto en la que se pueden
cambiar algunos parámetros. Entre ellos, determinar en qué orden se
deben buscar los dispositivos que puedan contener un sector de arranque
válido: disco, CD, memoria USB, red...
P á g i n a | 13
3. Algunos programas sencillos para servicios básicos de bajo nivel, como
leer y escribir caracteres. Los sistemas operativos modernos no utilizan
estos servicios, pero esto ha dado lugar al nombre con que se conoce al
contenido de la ROM: «BIOS» (Basic Input/Output System). La BIOS ha
sido un estándar de facto desde los años 1980. Actualmente está siendo
desplazado por otro, «UEFI» (Unified Extensible Firmware Interface), que
supera algunas limitaciones del diseño de la BIOS.
Continuación del arranque desde la memoria secundaria
Normalmente, el disco está «particionado», es decir dividido lógicamente en
un pequeño número de partes («particiones») con las que el sistema
trabajará como si fuesen discos diferentes. Y cada partición está
«formateada» para un determinado sistema de ficheros. En el caso de BIOS,
lo único que carga en la memoria el cargador inicial (que podemos llamar
«etapa 0» del arranque) es un sector del disco, el primero (el sector 0),
llamado MBR (Master Boot Record) que contiene una tabla de particiones y
un programa que continúa con el proceso de arranque («etapa 1»). La tabla
de particiones tiene datos sobre los sectores en los que comienzan y
terminan las particiones y una indicación sobre la partición en la que puede
encontrarse la continuación del programa de arranque («etapa 2»).
MBR, particiones y etapas del arranque
P á g i n a | 14
El disco /dev/sda está dividido en cuatro particiones. La primera, en la que
se montará el sistema de ficheros raíz, es conocida al sistema operativo
como /dev/sda1. La segunda, /dev/sda2, que se montará en el subdirectorio
/boot, está reservada para los programas que finalizan el arranque y para el
sistema operativo «nativo» (otros sistemas operativos estarán en sus propias
particiones). Hay también una partición swap que no se monta: es la que
utiliza el SGM en las operaciones de intercambio (página 46). Finalmente, la
partición /dev/sda3 puede estar formateada para un sistema Windows
(sistema de ficheros FAT o NTFS).
La figura también muestra la secuencia de etapas del arranque. El programa
de arranque inicial grabado en ROM carga en la memoria el MBR. Se ejecuta
la etapa 1, que esencialmente es un cargador que conoce la ubicación de la
etapa 2 (en este caso, en /dev/sda2) y la carga en memoria. La ejecución de
la etapa 2, si hay varios sistemas operativos, presenta un menú al usuario
para que escoja uno (normalmente, con un límite de tiempo: si se sobrepasa,
el programa opta por defecto por uno establecido en la configuración). A partir
de ahí, se inicia la carga del sistema operativo.
Carga e iniciación del sistema operativo
El gestor de arranque termina cargando en la memoria el sistema operativo
a partir de la dirección 0 (donde empiezan los «vectores de interrupción»).
Antes de que realmente esté «operativo» el sistema tiene que dar valores
iniciales a sus estructuras de datos y copiar algunos datos del disco en la
memoria. Por ejemplo, para las tablas de ficheros abiertos y de inodes en
memoria hay espacio reservado; estas tablas deben estar inicialmente
vacías, pero la memoria puede tener contenidos arbitrarios en estos espacios
(por ejemplo, los dejados por la etapa 2 del arranque). Hay que rellenarlos
con ceros, o algún código que indique que no hay nada.
Los datos que hay que copiar del disco son metadatos sobre el sistema de
ficheros, que se encuentran en uno o varios sectores del disco, al principio
de cada una de las particiones: el superbloque. La siguiente figura 2 muestra,
simplificadamente, la organización de una partición en un sistema de ficheros
Unix. Después del superbloque hay espacio reservado para los inodes de los
ficheros que se vayan creando y el resto de la partición son bloques que
pueden asignarse para los datos de los ficheros y para los bloques indirectos.
P á g i n a | 15
Metadatos y datos de una partición
Los metadatos del superbloque son:
Informaciones generales sobre la partición, como el número de
bloques, el número de sectores por bloque y el número de inodes.
El mapa de bits de inodes, formado por tantos bits como inodes estén
previstos. Cada bit se corresponde con un inode de la partición: si es
«0» indica que el inode está libre, y si es «1», que está asignado a
algún fichero. Los primeros inodes siempre estarán ocupados
(corresponden a los ficheros y directorios existentes, a los periféricos
reconocidos, etc.)
El mapa de bits de bloques, con tantos bits como bloques tenga la
partición, con idéntica función respecto de los bloques del disco: «0»
indica que el bloque está disponible, y «1» que está asignado a algún
fichero (o que es un bloque indirecto). Estos metadatos se cargan
inicialmente en la memoria, y se mantienen permanentemente en ella
para que los programas del sistema de gestión de ficheros no tengan
que acceder al disco y puedan ejecutarse más rápidamente. El
superbloque del disco se actualiza periódicamente (o dependiendo de
la frecuencia con la que se modifica el superbloque en memoria) y, en
todo caso, al apagar el sistema.
Carga e iniciación de servicios externos al sistema operativo
Terminadas las operaciones iniciales, el sistema operativo queda cargado en
memoria y está disponible para atender a las llamadas y, como veremos enseguida,
a las peticiones de los periféricos. Ahora bien, ¿de dónde proceden las llamadas?
P á g i n a | 16
De algún proceso que ejecuta el programa que las contiene. Pero en este momento
no hay ningún otro programa cargado en memoria, ni ningún proceso creado (salvo
algunos demonios propios del sistema, como el planificador). Terminada la
inicialización, el sistema operativo carga en memoria un programa que normalmente
reside en sbin/init y crea un proceso para él que va a ser el ancestro común de todos
los procesos posteriores. Tiene pid = 1 y es un demonio que permanece en memoria
(normalmente bloqueado) hasta que se apaga el sistema.
La función de init es lanzar nuevos servicios: servicios de red, acceso al sistema
gráfico, etc. Concentrémonos en un caso sencillo, en el que el único servicio
consiste en repartir inicialmente el sistema entre cuatro terminales con un intérprete
de órdenes (shell) para cada uno. La siguiente figura resume gráficamente lo que
ocurre. Con más detalle:
• init incluye cuatro llamadas FORK para crear cuatro procesos hijos. Cada uno de
los hijos pide (con la llamada EXEC) la ejecución de un programa, /sbin/getty, que
escribe en un terminal (cuyo número, entre 0 y 3, se le pasa como parámetro a
EXEC) los caracteres «login:» y queda a la espera de que un usuario teclee algo.
Si inicialmente no hay nadie en ninguno de los cuatro terminales el sistema se queda
esperando, con cinco procesos bloqueados: init y los cuatro getty. Una situación
más común es la que se ve en un laboratorio: en lugar de getty se inicia un conjunto
de procesos que proporcionan el entorno gráfico y un gestor de pantalla (display
manager) que pide el nombre y la contraseña desde una ventana.
Creación de cuatro terminales
P á g i n a | 17
• Cuando en un terminal se escribe un nombre se activa su proceso getty bloqueado,
que sigue con una EXEC para ejecutar el programa /bin/login, pasándole como
parámetro el nombre recibido del usuario. Este programa empieza haciendo algo
parecido a getty: escribe «password:» en el terminal y queda esperando a que el
usuario teclee su contraseña. Cuando tal cosa ocurre se comparan el nombre y la
contraseña con los almacenados en el fichero de contraseñas (/etc/passwd, o
/etc/shadow), y
◦ si no hay coincidencia, el proceso termina con EXIT y, como muestra la
figura anterior, init (que «se despierta», porque había quedado bloqueado por
una WAIT) vuelve a llamar a getty sobre ese mismo terminal;
◦ si la hay, el usuario ha quedado autenticado, y login ejecuta una EXEC para
cargar al intérprete, «shell» en la figura (como normalmente hay varios
intérpretes a elegir, su nombre en realidad puede ser «tcsh» o «bash», etc).
Además, el proceso, que hasta ahora tenía uid y gid de «root» cambia a los
correspondientes del usuario.
• El intérprete escribe la invitación (prompt) y queda a la espera de una orden.
• Cuando la orden sea «logout» el intérprete hará la llamada EXIT que «despierta»
al padre, init.
Estos «terminales» pueden ser físicos o virtuales. Las distribuciones de Linux, por
ejemplo, instaladas en un ordenador personal, que no tiene más que un terminal
(pantalla y teclado), ofrecen hasta ocho terminales virtuales (tty1 a tty7), pudiéndose
cambiar de uno a otro con una combinación de teclas: Alt-F1, Alt-F2, etc.
Servicios de un sistema operativo
El sistema brindará un entorno de ejecución de programas donde se dispondrá de
un conjunto de servicios. Los servicios principales serán:
Ejecución de programas (el SO deberá ser capaz de cargar un programa a
memoria y ejecutarlo. El programa deberá poder finalizar, de forma normal o
anormal)
Operaciones de E/S (el SO deberá proveer un mecanismo de acceso ya que
por eficiencia y protección los usuarios no accederán directamente al
dispositivo)
Manipulación del Sistema de archivos (se deberá tener acceso al sistema
de archivos y poder, como mínimo, leer, escribir, borrar y crear)
Comunicación entre procesos (los procesos deberán poder comunicarse,
ya sea que estén en el mismo computador o el diferentes)
Manipulación de errores (el sistema deberá tomar decisiones adecuadas
ante eventuales errores que ocurran, como fallo de un dispositivo de
memoria, fallo en un programa, etc.)
P á g i n a | 18
Características de los sistemas operativos
1. Conveniencia: Un Sistema Operativo hace más conveniente el uso de una
computadora y/o dispositivo electrónico
2. Eficiencia: El SO permite que los recursos de la computadora y/o
dispositivo se usen de manera correcta y eficiente.
3. Habilidad para evolucionar: Un SO debe de ser capaz de aceptar nuevas
funciones sin que tenga problemas al ejecutarse.
4. Encargado de administrar el hardware: El SO debe de ser eficaz,
recibiendo las señales provenientes de los periféricos y Hardware en
general.
5. Relacionar dispositivos: Cuando el SO detecta otro sistema operativo
conectado en sí mismo.
6. Algoritmos: Un SO hace el uso de la computadora o dispositivo más
racional y eficiente.
Tipos de sistemas operativos
Sistema operativo en tiempo real (RTOS): los sistemas operativos en tiempo real
se utilizan para controlar maquinaria, instrumentos científicos y sistemas
industriales.
Una parte muy importante de un RTOS es administrar los recursos de la
computadora para que una operación particular se ejecute exactamente en la misma
cantidad de tiempo, cada vez que ocurre.
Usuario único, tarea única: como su nombre lo indica, este sistema operativo está
diseñado para administrar la computadora de modo que un usuario pueda hacer
una cosa a la vez.
Usuario único, multitarea: este es el tipo de sistema operativo que la mayoría de
la gente usa en sus computadoras de escritorio y portátiles en la actualidad.
Windows de Microsoft y las plataformas MacOS de Apple son ejemplos de sistemas
operativos que permitirán que un solo usuario tenga varios programas en
funcionamiento al mismo tiempo.
Multiusuario: un sistema operativo multiusuario permite que muchos usuarios
diferentes aprovechen los recursos de la computadora simultáneamente.
Los sistemas operativos Unix, VMS y mainframe, como MVS, son ejemplos de
sistemas operativos multiusuario.
Aspectos que afectan el diseño de un sistema operativo
Los siguientes son algunos aspectos que pueden llegar a afectar el diseño del SO.
P á g i n a | 19
La reentrancia puede afectar al diseño de un sistema operativo, la reentrancia
consiste en un programa que puede ser utilizado simultáneamente por varios
usuarios al mismo tiempo.
Consiste en dos partes:
Un código puro (parte no modificable).
Un área de memoria para cada uno de los procesos de usuario.
Interrupciones: Es un evento que altera la secuencia normal de funcionamiento del
procesador.
Actividades llevadas a cabo luego de la interrupción:
1. El SO toma el control de computador.
2. El SO guarda el estado del proceso interrumpido.
3. Se inhabilitan las interrupciones.
4. El SO analiza la interrupción.
5. Se procesa la interrupción. (rutina manejadora).
6. Se reestablece el estado del proceso interrumpido.
7. Se habilitan la interrupciones.
8. El procesador continua la ejecución del proceso.
Procesadores de E/S:
Procesador de propósito especial dedicado al control de las operaciones de
E/S, independientemente del C.P.U.
Ejecutan instrucciones (comandos) agrupados en programas denominados
“Programas de canal”.
P á g i n a | 20
Relojes:
Interval Time (Cronometro de intervalos)
o Después de cierto intervalo de tiempo, el reloj genera una interrupción
como señal de aviso al procesador.
o Es útil en sistemas multiusuarios para evitar que un trabajo
monopolice el C.P.U.
Tiempo y Hora
o Mantiene la hora y el calendario en el sistema.
SPOOL: (Simultaneous Peripheral Operations on Line)
Como ya se menciono antes el SPOOLING o SPOOL consiste en interponer un
dispositivo de alta velocidad entre un programa en ejecución y un dispositivo de baja
velocidad relacionado con la E/S del programa.
Ejemplo: una impresora.
Emulación.
Es una técnica que permite que un computador se comporte como si fuera
otro.
Los programas en lenguaje máquina de la máquina “emulada” pueden
ejecutarse en forma directa en la maquina anfitriona.
Los fabricantes de equipos, usan esta técnica cuando presentan nuevos
sistemas.
Microprogramación.
Implica a programas formados por microinstrucciones (primitivas).
Cada instrucción en lenguaje máquina que puede ser ejecutada por el
procesador, tiene su correspondiente microprograma.
Es implementada en memoria ROM.
P á g i n a | 21
Conclusión
Un Sistema operativo (SO), es software básico que controla una computadora. El
Sistema Operativo es en sí mismo es un programa de computadora. Sin embargo,
es un programa muy especial, quizá el más complejo e importante en una
computadora. El SO despierta a la computadora y hace que reconozca a la CPU, la
memoria, el teclado, el sistema de vídeo y las unidades de disco haciendo que todo
esto trabaje en conjunto, logrando la simbiosis entre software, hardware y firmware.
Además, proporciona la facilidad para que los usuarios se comuniquen con la
computadora y sirve de plataforma a partir de la cual se corran programas de
aplicación.
Podemos concluir muchas cosas sobre los sistemas operativos, pero no le harían
justicia a la maravilla que son. Son un entramado de líneas de código puestas de
forma lógica, cada una cumple su función y hacen de algo complejo algo amable y
eficiente para un usuario con la finalidad de ofrecer múltiples herramientas.
Tanto hardware como software y firmware trabajan en conjunto para realizar
determinadas acciones, el hardware son básicamente las partes duras del sistema
computacional (tarjeta madre, RAM, tarjeta gráfica, periféricos, etc…) mientras que
el software es la parte intangible del sistema (IDEs, reproductores multimedia,
programas office, etc…), aquello que no existe en un plano físico pero que es muy
necesario a la hora de manejar el hardware. Y por último el firmware viene siendo
una pieza muy importante del sistema computacional, es básicamente hardware con
software preinstalado un ejemplo de esto seria la BIOS de las computadoras.
Para concluir podríamos mencionar alguna parte con especial importancia dentro
de lo que son los sistemas operativos. El kernel o núcleo de los sistemas operativos
son una parte muy importante de los sistemas operativos ya que proporciona
permisos de ejecución en todos los niveles del sistema operativo, nada se mueve
por el hardware sin que el kernel lo permita. Tiene también como trabajo conceder
acceso a todos los periféricos que tengamos conectados e interactuar con el
software que los solicite, aunque no sean los usuales con los que trabajamos. Por
ejemplo si ocasionalmente conectamos un móvil para usarlo como webcam con
DroidCam, este Kernel se encarga de conceder los permisos necesarios al software
para gestionar y poder tener la imagen y el audio para poder usarla en algún
software de videoconferencia o reuniones si por ejemplo teletrabajamos desde casa
o cualquier otro lugar. El Kernel es el encargado de hacer funcionar básicamente
todo, tiene que ser capaz de arrancar, por ejemplo, un PC desde que lo encendemos
hasta que vemos visible el escritorio, todo esto comunicándose con los elementos
hardware que dispone el PC y que también son necesarios para hacerlo funcionar,
una vez que tengamos el escritorio deberá ser capaz de hacer funcionar los
programas que nosotros queramos abrir y hacerlos funcionar en nuestro PC.
P á g i n a | 22
Bibliografía
https://es.wikipedia.org/wiki/Reentrancia_(inform%C3%A1tica)#:~:text=En%20infor
m%C3%A1tica%2C%20un%20programa%20inform%C3%A1tico,invocaciones%2
0anteriores%20completen%20su%20ejecuci%C3%B3n.
https://lsi2.ugr.es/~jagomez/sisopi_archivos/Reentrancia.htm
https://www.monografias.com/trabajos40/sistema-operativo-proceso/sistema-
operativo-proceso.shtml
https://webprogramacion.com/44/sistemas-operativos/exclusion-mutua.aspx
https://es.wikipedia.org/wiki/Exclusi%C3%B3n_mutua_(inform%C3%A1tica)#:~:tex
t=Los%20algoritmos%20de%20exclusi%C3%B3n%20mutua,puede%20modificars
e%20un%20recurso%20compartido.
https://www.ecured.cu/Spooling
https://www.ecured.cu/Kernel
http://cotana.informatica.edu.bo/downloads/Sistemas%20Operativos.pdf