sistema operativo: interactuar con el usuario y usar eficaz y eficientemente los
recursos de hardware que tiene asignado
funciones definidas del sistema operativo --> gestion de procesos, procesadores y
sus nucleos, gestion de memoria
, gestion entrada y salida(de datos), gestion de archivos y directorios(administra
los datos), seguridad y proteccion(software antivirus,
actualizaciones), comunicacion y sincronizacion(coordina procesos y que recursos
utilizar)
clase 2
clase 3
clase 4
clase 5
3 elementos fundamentales de la arquitectura de un sistema operativo:
- Kernel o nucleo
- Shell (interprete) --> es un ambiente donde una persona humana puede lanzar
comandos con una sintaxis especifica y alguien los interpreta
y los envia al kernel o nucleo. (pueden ser 1 o muchos pero 1 solo es el principal)
- Capa de gestion --> ej: Gestion de procesos, Gestion de memoria, Gestion de E/S,
Gestion del Sist. Archivos, Seguridad y Proteccion
Comunicacion y sincronizacion.
- Gestion de procesos --> es la interlocutora entre el nucleo del sistema operativo
y los programas de usuario, ademas es la interlocutora
del nucleo y los procesos internos al sistema operativo.
- Gestion de memoria --> es el modulo del sistema operativo que se encuentra
solamente de la memoria principal (Memoria RAM).
- Gestion de sistemas de archivos --> Son procesos que se encargan de el manejo de
archivos y directorios (tienen informacion/datos)
dependiendo del sistema operativo y la gestion de sist de archivos que tiene ese
sistema operativo, los datos se van a ordenar de manera
distinta (formato de disco)
toda unidad de almacemaniento tanto interna como externa tiene que tener un formato
para poder interrelacionarse con un sistema operativo
Darle formato a una unidad es ordenar o poner un marco de orden para que los datos
los pueda guardar ese sistema operativo.
formatos --> FAT32, NTFS(compatible con mac, windows y linux)
- Genera una interfaz del sistema de archivos (entre el hardware (discos fisicos) y
los software de usuarios)
-
- Ordenar la informacion en las unidades de almacenamiento (formatos)
- Los datos en la unidad de almacenamiento de manera fisica se guarda en bloques,
se enumeran de manera secuencial (lo hace la gestion de archivos)
- Los datos a nivel fisico en nuestros discos se escriben en bloques(tiene cantidad
limitada de memoria)
Un modelo tipico es abstraer el dispositivo como un array de bloques de datos de
tama;o fijo, ej: write_block(block_id, data[])
- Para programas de usuarios/necesidades de los usuarios:
- La interfaz de E/S del nucleo tiene un nivel de abstraccion demasiado bajo para
las necesidades y expectativas de los usuarios.
- Los usuarios trabajn con este tipo de entidades:
- Aplicaciones(programas ejecutables)
- Documentos de texto
- Base de datos
- Fotos, videos, canciones
- A un usuario (o a un programador) no podemos decirle que para leer un documento
tenga que ordenarle al sistema: "busca en el disco los bloques 357, 87 y 13"
- El sistema operativo ofrece una entridad abstracta mas proxima a los conceptos
que maneja el usuario --> Archivo/fichero/file
- Un archivo es un objeto identificable mediante un nombre, que guarda
informacion persistente. Ej: "mifoto.jpg", "apuntes-fso.docx", "winword.exe"
- Persistente = no volatil = duradera
- Sobre un archivo se pueden realizar diversas operaciones: crear, leer,
escribir, eliminar, etc.
En un archivo, como identifico el tipo de dato que contiene? mediante la
extension .jpg, .docx, etc.
- Atributos de un archivo (ayudan a identificar al archivo al sistema operativo):
- Ademas del contenido, cada arvhico tiene unos atributos que describen sus
caracteristicas:
- Nombre (Cadena de caracteres)
- Tipo de archivo (ncecesario en sistemas que reconocen distintos tipos)
- Localizacion en el dispositivo de almacenamiento
- Tama;o
- Informacion de proteccion: permisos, usuarios autorizados, etc.
- Fecha y horas de creacion, modificacion, ultimo acceso, etc
- Version (en sistemas que manejan historial de versiones)
- Cada SO establece un conjunto estandar de atributos para sus archivos, y
limitaciones sobre ellos (ej. longitud maxima del nombre)
- El directorio (forma de relacionar los archivos):
- Caso de uso:
- Un usuario quiere trabajar con el documento "tema5.pptx". Como sabe el SO que
ese archivo existe? Donde esta ubicado en el disco?
- Un usuario quiere saber que archivos contiene un disco (obtener un inventario
de los nombres de esos archivos).
- El SO debe manejar una estructura con el catalogo de los archivos -->
directorio o tabla de contenidos.
- El directorio debe estar almacenado en el disco.
- (por eficiencia, se puede tener una copia en ram mientras se trabaja con el).
- Cada entrada en el directorio contiene los atributos de un archivo y su
localizacion en el disco.
- Operaciones basicas sobre un directorio:
- Buscar un arvhico por nombre.
- Listar el contenido del directorio.
- Crear un archivo vacio.
- Eliminar un archivo.
- Renombrar un archivo.
- Copiar/mover un archivo de un directorio a otro.
- Guardar una version de un archivo
- Directorios: modelos estructurales:
- Unico nivel (no hay subdirectorios)
- Dos niveles
- Arbol
- Grafo aciclico (enlaces)
- Grafo general (enlaces sin restricciones)
- Directorio de nivel unico:
- Todos los archivos se guardan en un directorio principal (volume table of
contents)
- Limitaciones
- No se adapta bien a sistemas multiusario. Ej. conflictos de nombres, permisos
de acceso, etc.
- Directorio de dos niveles:
- El directorio principal no contiene archivos, solo subdirectorios. Estos a su
vez contienen los archivos.
- Los directorios se pueden usar para separar cuentas de usuario, aplicaciones,
archivos del sistema, etc.
- Aparece el concepto de ruta (path), ej. user1:data
- Ventajas: mejor organizacion de los archivos; se pueden definir permisos por
cada directorio; se evitan conflictos de nombres... (se puede mejora)
- Directorio con estructura de arbol (es muy utilizado/estructura de arbol
jerarquico. ej. LINUX):
- Generalizacion recursiva del concepto de "subdirectorio"
- Un directorio puede contener archivos y otro directorios
- "ruta" (pathname) --> localiza un objeto dentro del arbol (ej. /programs/p/find)
- Conceptos utiles:
- directorio de trabajo
- rutas absolutas o relativas
- Como interpretamos la eliminacion de un directorio? Borramos todo su subarbol?
- Sistemas de archivos (file systems):
El termino "sistema de archivos" tiene dos usos:
- Asi se llama el modulo del sistema operativo que se encarga de ofrecer todas
las funcionalidades realcionadas con archivos y directorios.
- Tambien se llama asi a la estructura de informacion que se crea en el
almacenamiento secundario (disco) para almacenar los archivos y directorios.
elementos/unidades de almacenamiento (disco duros, disco externo, pendrive)
un sistema operativo se dise;a para un tipo de hardware en especifico, no se
deberia instalar cualquier sistema operativo en cualquier lado.
un programa de usuario no habla directamente con el nucleo del sistema operativo y
tampoco el interprete habla directamente.
el sistema operativo es un software, es completamente software.
Clase 6
- Operaciones sobre archivos: Abrie y cerrar
- La mayor parte de las operaciones sobre un archivo F requieren manejar la
informacion que hay en la entrada en el directorio asociada a F,
mas todos sus atributos.
- Si por cada operacion tuvieramos que ir al directorio para localizar los
atributos del archivo, seria muy ineficiente.
- Solucion: operaciones para abrir y cerrar archivo
- Abrir un archivo F: se guarda en memoria principal la informacion de control
del archivo.
- Cerrar F: se liberan los recursos de F en memoria principal.
- Ej: en los sistemas Unix, cada proceso tiene una tabla de archivos abiertos.
El descriptor de archivo que devuelve open() no es mas el
indice en esa tabla que se ha reservado para el nuevo archivo.
- Tipos y estructuras de archivos:
- La informacion guardada puede ser de muchos tipos: ejecutables, textos, fotos,
bases de datos...
- Como reconoce el SO que tipo de informacion contiene el archivo?
- En Windows --> se usan las ultimas letras del nombre como indicador del tipo.
(ej: Unidades "Disco local (C:)")
- En Mac (versiones antiguas) --> unos atributos marcan el tipo de archivo.
- En Unix --> el SO no reconoce tipos de archivos.
- Todos los SO deben reconocer al menos un formato de archivo: la de un archivo
ejecutable.
- Metodos de acceso:
Los SO ofrecen distintas formas de acceder a los bloques de informacion que hay
dentro del archivo.
ACCESO SECUENCIAL:
- Metafora: el archivo es una cinta secuentcial. Solo se puede avanzar o
retroceder.
- Abrimos el archivo en un punto, y las lecturas/escrituras secesivas se van
realizando a partir del ultimo punto en el que nos quedamos.
- Es el modelo basico de Unix y Windows (open --> read --> read --> ...)
ACCESO DIRECTO:
- Metafora: el archivo es un array de bloques de acceso aleatorio.
- Cada operacion de lectura/escritura indica la posicion dentro del arvhico sobre
la que se quiere trabajar.
- En Unix, se implementa con Iseek().
ACCESO INDEXADO (ISAM):
- Metafora: el archivo es una tabla de una base de datos.
- El archivo consiste en una tabla con registros, ordenanos segun una clave (ej.
fichas de personas ordenadas por apellidos o DNI).
- Cada operacion de lectura se puede hacer buscando por clave, o por numero de
orden. Cada operacion de escritura mantiene el archivo bien ordenado.
- El SO asocia a cada archivo una o varios arcihvos indices para mantener la
ordenacion de forma eficiente. Estos indices estan ocultos al usuario.
- Soportado en sistemas antiguos (ej. IBM OS/360, OpenVMS). Actualmente se
implemnta fuera del nucleo.