0% encontró este documento útil (0 votos)
16 vistas9 páginas

Introducción a Sistemas Operativos Linux

Cargado por

kardonasus
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
16 vistas9 páginas

Introducción a Sistemas Operativos Linux

Cargado por

kardonasus
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Universidad de Oriente

Facultad de Telecomunicaciones, Informática y Biomédica.


Sede Julio Antonio Mella
Departamento Educación. Informática

Carrera: Nivel de Educación Superior de Ciclo Corto Administración de Redes y


Seguridad Informática.
Curso: 2024 Período: I Año: 2 Modalidad: CPE
Asignatura: Sistemas Operativo.
Clase encuentro III
Tema I: Introducción a los Sistemas Operativos. Sistema Operativos Linux
Temática:. Conceptos asociados al CPU, criterios y algoritmos de programación,
sincronización de proceso y semáforos. Estructura de tabla de páginas, segmentación,
reemplazo de página. Memoria Virtual, paginación.
Sistema Operativo Windows y GNU/Linux. Gestión de procesos. Administración de
usuarios, grupos y asignación de permiso. Shell scripting
Objetivos.
1. Caracterizar los componentes fundamentales del Sistemas Operativos teniendo en
cuenta su estructura.
2. Identificar los diferentes tipos de sistemas de ficheros que implementan los
Sistemas Operativos.
Sistema de habilidades
1. Explicar los componentes fundamentales del sistema operativo Linux, teniendo en
cuenta la estructura de sus distribuciones.
2. Utilizar el sistema de archivo del sistema operativo Linux.
3. Caracterizar el respaldo y recuperación de datos del sistema operativo Linux.
4. Utilizar los mecanismos de respaldo de información para la recuperación de datos
en el sistema operativo Linux.
Bibliografía.
Abraham Silberschatz Yale University, Peter Baer Galvin Corporate Technologies, Inc y
Greg Gagne Westminster Collage, Operating System. Concepts Essentials. Editorial Hohn
Wiley & Sons. INC, 2011.
Wiliam Satallings Operating System.Internals and Desing Principles. 5ta edición, 20005

1
Pedro de Miguel Anasagati y Fernando Pérez Costoya, Sistemas Operativos, España,
2016
Conceptos asociados al CPU, criterios, algoritmos de programación y
sincronización de proceso y semáforos.
El CPU es el componente principal de un computador, encargado de procesar
instrucciones y datos, realizar cálculos y coordinar el funcionamiento de todos los
componentes del sistema. Los conceptos asociados al CPU se refieren a todos los
elementos y términos relacionados con esta parte crucial de una computadora.
Algunos de estos conceptos son:
Arquitectura del CPU:
La arquitectura del CPU se refiere a su diseño interno y cómo están organizados sus
componentes. Incluye elementos como la unidad de control, la unidad aritmético-lógica, los
registros, las unidades de ejecución, entre otros.
Núcleos:
Los núcleos son unidades de procesamiento independientes dentro de un CPU. Los CPU
pueden tener uno o varios núcleos. Los CPU con múltiples núcleos pueden ejecutar
múltiples hilos de instrucciones simultáneamente, lo que mejora el rendimiento en tareas
que pueden ser paralelizadas.
Frecuencia de reloj:
La frecuencia de reloj del CPU es la velocidad a la que ejecuta las instrucciones, medida
en hercios (Hz), megahercios (MHz) o gigahercios (GHz). Una frecuencia de reloj más alta
indica una mayor velocidad de procesamiento, aunque no siempre se traduce
directamente en un mejor rendimiento debido a otros factores como la eficiencia del diseño
del CPU.
Caché:
La caché es una memoria de acceso rápido utilizada para almacenar datos e instrucciones
que se utilizan con frecuencia. Hay diferentes niveles de caché (L1, L2, L3) que varían en
tamaño y proximidad al núcleo del CPU. Una caché más grande y rápida puede mejorar el
rendimiento al reducir la latencia de acceso a los datos.
Instrucciones del CPU:
Son las órdenes que el CPU ejecuta para llevar a cabo operaciones específicas. Pueden
ser instrucciones de aritmética, lógica, transferencia de datos, control de flujo, entre otras.
Registro:

2
Los registros son pequeñas áreas de almacenamiento dentro del CPU utilizadas para
almacenar datos temporalmente durante la ejecución de instrucciones. Los registros son
extremadamente rápidos y se utilizan para realizar operaciones aritméticas, lógicas y de
transferencia de datos de manera eficiente.
Pipeline de instrucciones:
El pipeline de instrucciones es una técnica utilizada en los CPU modernos para mejorar el
rendimiento al permitir que varias instrucciones se ejecuten simultáneamente en diferentes
etapas del procesador. Esto aumenta la eficiencia al aprovechar al máximo los recursos
del CPU.
Superscalaridad: es una característica de algunos CPU que les permite ejecutar múltiples
instrucciones en paralelo dentro de un solo ciclo de reloj. Esto se logra mediante la
utilización de unidades de ejecución múltiples y un hardware sofisticado para detectar y
ejecutar instrucciones de manera independiente.
Criterios de planificación de procesos: Son reglas o directrices utilizadas por los
sistemas operativos para decidir el orden en que los procesos se ejecutarán en el CPU.
Los criterios se refieren a reglas o condiciones específicas que se utilizan para tomar
decisiones sobre la asignación de recursos del sistema. Estos criterios son fundamentales
para la gestión eficiente de los recursos del sistema, como la asignación de tiempo de
CPU, la priorización de procesos, la asignación de memoria y la planificación de E/S
(entrada/salida).
Por ejemplo, en la planificación de la CPU, los criterios pueden incluir políticas de
planificación como el tiempo compartido (round-robin), la prioridad de procesos, la
planificación basada en colas de prioridad, entre otros. Estos criterios determinan cómo se
asigna el tiempo de la CPU entre los diferentes procesos en ejecución.
En la gestión de memoria, los criterios pueden incluir políticas de asignación de memoria
como la segmentación, paginación, y paginación por demanda. Estos criterios determinan
cómo se asigna y gestiona la memoria disponible entre los diferentes procesos y
aplicaciones que se ejecutan en el sistema.
En resumen, los criterios en un sistema operativo son reglas o condiciones que guían la
toma de decisiones sobre la asignación de recursos del sistema para garantizar un
funcionamiento eficiente y equitativo del sistema.
Los algoritmos de programación se refieren a los conjuntos de reglas y procedimientos
que controlan cómo se asignan los recursos del sistema a los procesos y tareas que se

3
ejecutan en él; son fundamentales para garantizar la eficiencia, equidad y estabilidad del
sistema operativo.
Algunos ejemplos comunes en sistemas operativos:
Algoritmo de planificación de CPU, Algoritmo de asignación de memoria, Algoritmo de
planificación de Entrada/Salida, Algoritmo de planificación de disco, Algoritmo de
detección y prevención de interbloqueos (deadlocks). Estos algoritmos son cruciales para
el funcionamiento eficiente y seguro de un sistema operativo, ya que afectan directamente
el rendimiento, la utilización de recursos y la capacidad de respuesta del sistema ante las
demandas de los usuarios y las aplicaciones. La elección de un algoritmo adecuado
depende de varios factores, como las características del sistema, los requisitos de las
aplicaciones y las preferencias de diseño del desarrollador del sistema operativo.
Sincronización de procesos:
La sincronización de procesos se refiere a la coordinación y gestión de múltiples procesos
que comparten recursos comunes para evitar problemas como las condiciones de carrera,
la inanición y los deadlocks.
En entornos multitarea, varios procesos pueden ejecutarse simultáneamente y acceder a
recursos compartidos, lo que puede llevar a resultados impredecibles o incorrectos si no
se coordina adecuadamente su acceso.
La sincronización de procesos implica la implementación de mecanismos que garanticen
que los procesos accedan a los recursos compartidos de manera ordenada y segura,
evitando situaciones de competencia o inconsistencia en los datos.
Semáforos:
Los semáforos son una de las herramientas más comunes para la sincronización de
procesos. Fueron introducidos por Dijkstra en 1965.
En el contexto de la programación, un semáforo es un tipo especial de variable que se
utiliza para controlar el acceso a recursos compartidos por varios procesos.
Los semáforos pueden tener dos tipos: binarios (solo dos valores posibles, 0 y 1) y
contadores (pueden tener múltiples valores). Los semáforos binarios se conocen como
semáforos de tipo mutex y se utilizan principalmente para garantizar la exclusión mutua.
Los procesos pueden realizar operaciones de espera (wait) y señal (signal) en semáforos.
La operación wait disminuye el valor del semáforo y bloquea el proceso si el valor es 0,
mientras que la operación signal aumenta el valor del semáforo.

4
Los semáforos son útiles para sincronizar procesos, asegurando la exclusión mutua y
previniendo condiciones de carrera al controlar el acceso a recursos compartidos.

Estructura de tabla de páginas:


En sistemas operativos que emplean el esquema de memoria virtual, la estructura de tabla
de páginas es utilizada para realizar la traducción de direcciones virtuales a direcciones
físicas. Consiste en una tabla, generalmente implementada como una estructura de datos
jerárquica, que mapea las direcciones virtuales de un proceso a las direcciones físicas
correspondientes en la memoria principal.
Segmentación:
Es una técnica de gestión de memoria que divide un programa en segmentos lógicos o
unidades lógicas más pequeñas, como segmentos de código, datos, pila, etc. Cada
segmento tiene su propio tamaño y tipo. Este enfoque es útil para manejar la complejidad
de programas grandes y facilitar la reutilización de código. La segmentación puede
combinarse con la paginación para formar sistemas de memoria virtual más avanzados.
Reemplazo de página:
En un sistema operativo que utiliza paginación, el reemplazo de página se refiere al
proceso de seleccionar qué página residente en memoria principal debe ser reemplazada
cuando se necesita espacio para cargar una nueva página desde el almacenamiento
secundario (como el disco). Se utilizan algoritmos de reemplazo de página, como el
algoritmo de reemplazo de página FIFO (Primero en entrar, primero en salir), LRU (Menos
Recientemente Utilizado), etc., para tomar esta decisión de manera eficiente, optimizando
el uso de la memoria y minimizando la tasa de fallos de página.
Memoria Virtual:
La memoria virtual es una técnica que permite a un sistema operativo utilizar más memoria
de la que físicamente tiene disponible. Funciona al usar un espacio en disco como
extensión de la memoria RAM física. Cuando la memoria RAM se llena, partes de los
datos y programas en ejecución se transfieren a la memoria virtual en el disco, liberando
así espacio en la RAM para otros procesos. La memoria virtual es transparente para los
programas en ejecución, que creen que tienen acceso a toda la memoria necesaria. Sin
embargo, el uso excesivo de memoria virtual puede llevar a una ralentización del sistema
debido al tiempo que se tarda en acceder a los datos en el disco en comparación con la
RAM.

5
La memoria virtual (que se describe en el capítulo 3) proporciona la habilidad de ejecutar
programas más extensos que la memoria física de la computadora, llevando y trayendo
pedazos entre la RAM y el disco. Pasó por un desarrollo similar, ya que apareció primero
en las mainframes, después avanzó a las minis y a las micros. La memoria virtual también
permitió la capacidad de ligar dinámicamente un programa a una biblioteca en tiempo de
ejecución, en vez de compilarlo. MUL-TICS fue el primer sistema operativo en tener esta
capacidad. Con el tiempo, la idea se propagó descendiendo por toda la línea y ahora se
utiliza ampliamente en la mayoría de los sistemas UNIX y Windows.
En todos estos desarrollos vemos ideas que se inventaron en un contexto y más adelante
se descartaron cuando cambió el contexto (la programación en lenguaje ensamblador, la
mono programación, los directorios de un solo nivel) sólo para reaparecer en un contexto
distinto, a menudo una década más tarde. Por esta razón, en este libro algunas veces
vemos ideas y algoritmos que pue-den parecer atrasados en comparación con las PC de
hoy en día con capacidades de gigabytes, pero que pronto pueden volver en las
computadoras incrustadas y las tarjetas inteligentes.
Paginación:
La paginación es una técnica utilizada por los sistemas operativos para gestionar la
memoria virtual. Consiste en dividir la memoria física y virtual en bloques fijos de tamaño
uniforme llamados páginas. De esta manera, tanto la memoria física como la virtual se
dividen en páginas del mismo tamaño. Cuando un programa intenta acceder a una
dirección de memoria, el sistema operativo traduce esta dirección en una dirección física
mediante una tabla de páginas. Si la página que contiene la dirección solicitada no está en
la memoria RAM, se produce un fallo de página y el sistema operativo la carga desde el
disco a la RAM. La paginación permite un uso más eficiente de la memoria y facilita la
gestión de la memoria virtual.
Gestión de procesos.
Fork la única manera de crear un nuevo proceso en POSIX. Crea un duplicado exacto del
proceso original, incluyendo todos los descriptores de archivos, registros y todo lo demás.
Después de fork, el proceso original y la copia (el padre y el hijo) se van por caminos
separados. Todas las variables tienen valores idénticos al momento de la llamada a fork,
pero como los datos del padre se copian para crear al hijo, los posteriores cambios en uno
de ellos no afectarán al otro (el texto del programa, que no se puede modificar, se
comparte entre el padre y el hijo). La llamada a fork devuelve un valor, que es cero en el

6
hijo e igual al identificador del proceso (PID) hijo en el padre. Mediante el uso del PID
devuelto, los dos procesos pueden ver cuál es el proceso padre y cuál es el proceso hijo.
En la mayoría de los casos, después de una llamada a fork el hijo tendrá que ejecutar
código
distinto al del padre. Considere el caso del shell: lee un comando de la terminal, llama a
fork para crear un proceso hijo, espera a que el hijo ejecute el comando y después lee el
siguiente comando cuando el hijo termina. Para esperar a que el hijo termine, el padre
ejecuta una llamada al sistema waitpid, la cual sólo espera hasta que el hijo termine
(cualquier hijo, si existe más de uno).
Waitpid puede esperar a un hijo específico o a cualquier hijo anterior si establece el primer
parámetro a
Cuando waitpid se completa, la dirección a la que apunta el segundo parámetro (statloc)
se establece al estado de salida del hijo (terminación normal o anormal, con el valor de
exit).. Ahora considere la forma en que el shell utiliza a fork. Cuando se escribe un
comando, el shell crea un nuevo proceso usando fork. Este proceso hijo debe ejecutar el
comando de usuario. Para ello utiliza la llamada al sistema execve, la cual hace que toda
su imagen de núcleo completa se sustituya por el archivo nombrado en su primer
parámetro. (En realidad, la llamada al sistema en sí es exec, pero varios procedimientos
de biblioteca lo llaman con distintos parámetros y nombres ligeramente diferentes. Aquí
trataremos a estas llamadas como si fueran llamadas al sistema.).
Administración de usuarios, grupos y asignación de permiso.
El acceso a los diferentes archivos en un sistema Unix/Linux, plantea un nivel de
estructura avanzado, en el sentido que, la funcionalidad y principalmente la seguridad, a
todos los niveles, es el principal objetivo del Sistema.
Al ser, primordialmente, un sistema multiusuario, la integridad de los datos, así como la
debida reserva sobre las acciones permitidas a cada uno de los usuarios dentro del
Sistema, deben de estar reguladas de tal forma que la comunicación con el núcleo, sea
fluida.
Asimismo, la comunicación con el exterior, en gran medida estará protegida por esta
estructura, tanto por lo que sale como por lo que entra al Sistema.
Esta estructuración, digamos jerarquía, es una de las principales consecuencias de que
sea complicado que se pueda escribir código malicioso sobre el Sistema. Por supuesto

7
que no es infalible, hemos de tener cuidado con determinadas asignaciones, que
permitirían importantes agujeros en la seguridad.
El sistema de permisos en Unix/Linux tiene muchos elementos y funcionalidades,
existiendo varias formas de implementarlos como veremos a continuación.
Unix establece para cada archivo una asignación combinada entre el propietario (usuario)
del fichero, el grupo al que pertenece el usuario y el resto de usuarios.
Esto se representa para su identificación con la convención:
u: usuario (propietario)
g: grupo al que pertenece el usuario
o: otros (others) el resto
Se utiliza a de (all) para designar todos los usuarios.
Nota. Siempre que se liste un fichero, la asignación de permisos aparecerá en este orden
(u g o).
El Sistema de ficheros asigna tres bits para cada elemento de esta representación, por lo
que en total tendremos nueve (9) bits. Así:
u---
g---
o---
GNU/Linux Intermedio
Este grupo de tres bits para cada elemento, se utiliza para implementar los permisos de
lectura, escritura y ejecución, cuya representación nemotécnica es: r read (lectura) Si un
usuario tiene otorgado este permiso podrá, si se trata de un directorio, listar su contenido
en el caso de un archivo simple, leer su contenido.
W: write (escritura) Este permiso activado permite modificar el archivo que lo posee, en
caso de ser un directorio, se podrán modificar y borrar ficheros contenidos en su interior.
X: eXecute (ejecución) Teniendo este permiso activado, podrá ejecutar los ficheros desde
la línea de comandos. En caso de ser un directorio, el usuario que lo posea tendrá acceso
a las funciones de lectura-escritura.
Así, si hacemos un listado con el comando ls -l de cualquier archivo, por ejemplo del
archivo pares.py, obtendremos:
$ ls -l pares.py
-rw -r--r-- 1 gustavo gustavo 130 2007-02-17 00:53 pares.py vemos que, de acuerdo con lo
establecido anteriormente, este archivo tiene permiso de lectura- escritura (rw) para el

8
propietario ( u ), sólo permiso de lectura (r) para el grupo ( g ) y sólo lectura (r) para el
resto ( o ).

También podría gustarte