Sistemas Operativos. Apuntos
Enviado por Omar Mendoza • 16 de Diciembre de 2015 • Apuntes • 352 Palabras (2 Páginas) • 116 Visitas
Omar Francisco Cajtic Mendoza[pic 1]
2007-14554
Sistemas Operativos 2
Corto 1
Explique un sistema operativo como una maquina jerárquica.
Es una organización del software, donde una parte del sistema contiene subpartes y esto organizado en forma de niveles. El sistema operativo se divide en pequeñas partes, de tal forma que cada una de ellas está perfectamente definida y con una clara interface con el resto de elementos.
[pic 2]
Dado un puente donde solo puede pasar un carro a la vez. Desarrolle una solución con semáforos tal que una vez un auto de un lado entre al puente, todos los de ese lado pasaran y los del otro lado esperaran hasta que esté libre el puente.
Interacción entre autos lado A | Interacción entre autos lado B |
Puente.EntradaA | Puente.EntradaB |
Delay(x) | Delay(y) |
Puente.SalidaA | Puente.salidaB |
La prioridad de paso se otorga al lado A.
El procedimiento cierra_puente() bloquea el puente para que solo circule en una dirección.
Implementando 5 puntos de entrada
Task Puente is
Entry LlegadaLadoA;
Entry LlegadaLadoB
Entry SalidaLadoA;
Entry SalidaLadoB;
Task Body Puente is
autosA, autosB: integer
Direccion: (norte, sur)
PuenteCerrado: Boolean
begin
autosA := 0;
autosB := 0;
direccion := SUR; // preferencia al azar
PuenteCerrado, carros_esperando : false;
cierra_puente(false);
loop
begin
select
accept llegada_carro;
or
when autosB = 0 and autosA < 2 =>
accept entrada_carro do
if not puente_cerrado then
cerrar_puente(true);
end
puente_cerrado := true;
carros_esperando = true;
or
when carrosA = 0 and carross_esperando = 0 and
llegada_barco'count = 0 and (autosB = 0 or
direccion = SUR) =>
accept LlegadaLadoA do
if puente_cerrado then
...