Funciones del sistema operativo
El Sistema Operativo es responsable de las siguientes funciones.
1) planificador (tiempo asignado a los programas),
2) administrador de memoria (asignación de espacio a programas)
3) sincronizador (evitar conflictos para un recurso al mismo tiempo)
4) protección (evitar conflictos por memoria)
Curso CS
Una breve introducción a los sistemas operativos.
Introducción rápida a varios temas
Programación
Concurrencia y sincronización
Gestión de la memoria
Memoria virtual
Manos en tutoriales
Tutoriales de Desarrollo de SO
Programación de Algo
Básicamente utiliza el tiempo IO programando otra tarea
El cambio de un hilo a otro (A -> B) puede ocurrir cuando
a) A esta completa
b) A está bloqueado en IO
c) La interrupción del temporizador se adelanta a la fuerza
- ¿Podría enumerar a todos los proveedores de MOOC como Udacity, edX y Coursera?
- ¿La educación en línea me conseguirá un “buen” trabajo?
- ¿Cómo fue tu primera semana en el MBA Bootcamp?
- ¿Cuáles son los cursos en Coursera u otros MOOCs para estudiar derecho cibernético?
- ¿Está saturado el mercado de sistemas de gestión de aprendizaje?
Cómo funciona el programador
Dentro del planificador de Linux
Sincronización
La sincronización es necesaria ya que el proceso necesita intercambiar información usando una región compartida en la memoria. Sin embargo, no se puede acceder a esta región compartida de ninguna manera. Necesitaban ser accedidos correctamente.
secuencia. Imagine que el saldo bancario se actualiza mediante dos procesos diferentes. Necesidad de coordinar el acceso entre hilos.
La parte del programa donde se accede a la memoria compartida se llama región crítica. Las regiones críticas deben ser accedidas en exclusión mutua.
1) No puede haber dos procesos simultáneamente en la misma región crítica
2) Ningún proceso que se ejecute fuera de la región crítica debe bloquear otro proceso
3) Ningún proceso debe esperar siempre en CS
4) No se pueden hacer suposiciones sobre la velocidad / número de CPU
Estos se denominan exclusión mutua, progreso, espera acotada, independencia de velocidad.
Aproximaciones a la exclusión mutua
algunos enfoques
a) Deshabilitar las interrupciones en la sección crítica
b) Bloquear variables
c) Alteración estricta
Todos estos no son satisfactorios … debido a la espera ocupada
así que usa el mecanismo de dormir y despertar. El proceso en lugar de la espera ocupada se pone en una cola. Esto lleva al concepto de semáforos.
Gestión de la memoria
La memoria se divide en Segmentos, por lo que compartir código / datos es fácil. La proteccion es posible
Si bien la segmentación es buena en el sentido de que proporciona flexibilidad para cargar programas en cualquier lugar de la memoria. Sin embargo, todavía sufre de fragmentación externa.
es decir, hay muchos agujeros en la memoria que no son lo suficientemente grandes para ser asignados a cualquier proceso
Para evitar esto, se introduce Paging. Con la paginación, toda la memoria se divide en páginas de tamaño fijo. Aunque no hay desperdicio debido a la fragmentación externa, puede haber desperdicio dentro de una página. Esto se llama fragmentación interna.
En principio es similar al almacenamiento en caché (totalmente asociativo). Las páginas a las que se hace referencia se cargan en la RAM, las demás se guardan en el disco (Demand Paging)
Ahora, lo que sucede, cuando no hay espacio en la RAM, una de las páginas debe ser desalojada. Esto lleva al concepto de algoritmos de reemplazo de página.
El método más sencillo es utilizar FIFO. La página que se cargó más temprano es desalojada. Pero, ¿qué pasa si esa página es la de acceso frecuente? Esta política no es buena. Belady mostró en FIFO, que aumentar el tamaño de la memoria no conduce necesariamente a la reducción de errores de página. Aunque esto ocurre en los casos excepcionales, no podemos aumentar la memoria y esperar que las fallas de la página se reduzcan (el anamol de Belady no ocurre en los algoritmos LIFO)
Sistema de archivos y operaciones de disco
estructura de puntero de inodo
Página en Odu
Programación de discos
Programación de discos
Sistemas Operativos – Resumen de Algoritmos
* Banquero. Algoritmo utilizado para evitar el interbloqueo.
* Reemplazo de la página. Selección de la página de la víctima en condiciones de poca memoria.
Algoritmos de programación de discos.
* Ascensor. Algoritmo de programación de discos que funciona como un ascensor.
* La búsqueda más corta primero. Algoritmo de programación de discos para reducir el tiempo de búsqueda.
Procesamiento de algoritmos de sincronización.
* Peterson. Permite que dos procesos compartan un recurso de un solo uso sin conflicto, usando la memoria compartida para la comunicación. Puede ser generalizado.
* El algoritmo de la panadería de Lamport. Mejore la robustez de múltiples procesos de manejo de subprocesos mediante la exclusión mutua.
* Dekker. Otro algoritmo de programación concurrente, como el de Peterson.
Algoritmos de programación
* Horario de round-robin. El algoritmo más simple, asigna segmentos de tiempo a cada proceso sin prioridad.
* El trabajo más corto siguiente (o primero). Ejecuta a continuación el proceso de espera con el menor tiempo de ejecución, no es preventivo.
* Tiempo restante más corto. Una versión de la siguiente programación de trabajo más corto que termina el proceso en ejecución antes de elegir otra tarea.