Ajuda esquema de escalonamento

Galera,estou com uma grande dificuldade em entender como que funciona estes exercícios.

se alguém puder me ajudar, com //*
de como eu faço.ou se aguem tiver algum exemplo,já seria de grande ajuda
Desde já agradeço a todos.Exercicios_Pre_P1.pdf (133,2 KB)

Veja: https://pt.wikipedia.org/wiki/Algoritmo_do_banqueiro
Eu considerei uma explicação simples, inclusive menciona o problema de trade-off.

Recomendação: para algorítimos “famosos”, o ideal é pesquisar na web, pois normalmente eles vem acompanhados de exemplos elaborados, como neste caso.

Tente resolver e depois poste o que fez, se tiver alguma dificuldade.
Antecipando, você pode usar ArrayList ou LinkedList para percorrer os processos.

1 curtida

Olá Obrigada pela ajuda:)
acho que eu não entendi muito o exercício o 1 e o 2.
Minha dúvida seria ,o que é para fazer.
Desculpe mas sou novata nesta matéria e realmente preciso de uma força,sobre o que é para desenrolar no 1 e 2 exercício.

O que vi, foi apenas conteúdo do wikipedia, onde percebi que:

FCFS é o famoso FIFO, ou seja use LinkedList, pois o primeiro processo que chega é o primeiro a ser atendido.

SJF, ao meu ver, seria a verificação de qual processo consome menos recurso, ele seria o primeiro a ser atendido.

Ambos são não preemptivos, ou seja, quando os processos iniciarem, não podem ser interrompidos.

O uso de threads vai ser mais trabalhoso, pois envolve sincronização é difícil de explicar mas é legal.

Para Threads, veja:

Assista das aulas 93 a 96 é bem legal o uso delas, mas precisa praticar bastante, para compreender o funcionamento.

Eu não lembro qual o vídeo, mas ele explica o problema da sincronização, onde objetos que compartilham o mesmo elemento devem esperar sua vez para acessar um recurso (lembra o escalonamento FIFO/FCFS no exemplo).

Assim, você vai perceber, que para o escalonamento/“agendamento de tarefas”, o uso de thread vai se essencial, pois os processos não tem que saber sobre a situação de seus pares.

Se houver algum erro, em minhas orientações, vou ficar devendo, pois levaria um tempo que não disponho para estudar SO.

Veja:


Aguarde por outros participantes knowledge sobre o tema.
Cobre seu professor pois assim, você vai saber se estaria no caminho certo.

Té+

1 curtida

Mais agradeço muito a ajuda,tipo eu não tenho a quem recorrer é somente a vocês O problema cara é que meu prof ele joga o conteúdo la e tipo foda se ,a maioria das pessoas que estão lá ,já tem o técnico e esta parte específica mesmo que eu não consegui entender
Como veria o escalonamento daqueles algoritmos usando thread e semaforo com aqueles tempos de processo

Pelo que eu entendi, o escalonamento é um agendamento de tarefas.
Se escolher FIFO, quem chegar primeiro, vai ter acesso aos recursos solicitados.
Se escolher SJF, quem consumir menos recursos vai ter acesso aos recursos primeiro.

Imagine a fila de um caixa, onde o recurso é dinheiro e as pessoas os “processos” (grosso modo).
Quem chega primeiro tem acesso ao recursos/dinheiro enquanto houver no caixa eletrônico.
Veja, o atendimento é First In, First Out/ FIFO/FCFS (tudo a mesma coisa - chega 1º, recebe 1º se houver cash)

Agora imagine que você tenha 100 reais e tem que comprar o máximo de itens, assim, você vai procurar os itens, +baratos, ou seja, que consomem menos recursos (usa SFC - sua lista de prioridades é baixo consumo de recursos).

Ambos os processos não podem ser interrompidos (não preemptivos).
Seria basicamente o seguinte, entrou na FIFO só sai quando quiser, não pode ser interrompido, o mesmo para o SJF.

Um processo preemptivos é aquele que pode ser reiniciado de onde parou.
Ex.: você inicia um processo: construir uma casa, se faltar recurso, você para a obra, quando tiver recursos, continua a obra de onde parou.

Pior.: alguém entra em um hospital, e precisa receber tratamento contínuo por duas horas, ou seja, o processo não pode ser interrompido, pois se faltar recurso o paciente morre.

Pode parecer estranho tais exemplos para SO, entretanto, a analogia é válida.

Basicamente, o escalonamento já foi definido, sendo ele FCSF(FIFO) e SJF(menor consumo).

Como eu entendo as atividades:
Para Fifo:
I) chegou 1º, se tiver recursos leva;

Para o menor consumo, você teria que:
I) pegar cada processo;
II) pegar cada requisição dos processos e somar os custos;
III) ordenar os processos pelo menor custo. (vide sort, comparable e comparator em java)

Para ambos os escalonamentos acima:

I) usar o algoritmo do banqueiro e distribuir os recursos, enquanto dispuser;
II) se um processo solicitar recursos e o banqueiro(sistema/memória) não dispuser, dizer que a operação é insegura(retorna false);
III) se retorna false, o processo deve ser cancelado ou colocado em fila de espera;
IV) retornou true, o processo deve ser iniciado e vai segurar os recursos enquanto estiver ativo;
V) depois que o processo encerrar suas atividades, ele deve liberar os recursos alocados.

Para o semáforo, vai ter que ver o conceito dele, no sentido bloqueado e desbloqueado, libera recurso, aguarda recurso.
Veja: https://pt.wikipedia.org/wiki/Sistema_operacional_de_tempo-real#Sem.C3.A1foros_bin.C3.A1rios

Quanto aos tempos, veja os vídeos que indiquei, pois ele usa um timer aleatório, poderia ser 1, segundo, ou um dia, o importante é que enquanto o timer estiver ativo, simbológicamente significa que os recursos estão alocados.

Quando o timer encerrar, simbológicamente significa que o processo encerrou, ,ai o banqueiro/Momoria/SO recebe os recursos de volta e os processo que estavam na fila, podem iniciar suas tarefas caso hája recurso disponível.

Está é minha interpretação, mas não posso dizer que é 100%, pois teria que dedicar +tempo.
Basicamente é um sistema de agendamento, que distribui recursos de acordo com o tipo de estratégia de distribuição adotada.

Leia as fontes que indiquei, bem como os vídeos.
Lembre, o timer é uma simbologia, para um processo em execução.
Enquanto estiver em execução, os recursos, estão ocupados.
Tem um ciclo ai:
(semáforo) Tem recurso -> libera recurso -> inicia processo -> fim processo -> libera Recurso/restabelece recurso.
Não Tem recurso -> cancela processo, ou vai pra fila, é uma decisão do SO (“qual o critério de cancelamento do SO?”).

Esta matéria só vai cair pra mim no final do curso, pois entrei no segundo período de ADS, por isso, a ajuda é deficitária.

Procure trabalhar com o nível conceitual, pois saber o que deve ser feito é tão importante quanto saber como deve ser feito.

Novamente: esperar por participantes know how sobre o tema.

Bons estudos e bola pra frente.

1 curtida

Obrigada pela ajuda,
preciso de um milagre hahahhaha
ja vai sentindo o drama,pq minha cabeça esta explodindo ja.
mais agradeço vc,pela ajuda

1 curtida

Pare, descanse e vá dormir, a saturação não permite o raciocínio adequado.

As questões 3 e 4 quatro são as mais simples = 50% da nota.
A questão 1 é mais simples que a 2.
Pergunte ao seu professor, se o a relação de dificuldade estaria correta, se ele não te sacanear…, creio que ele confirme.

Do boi morto, o coro.
Em concursos, primeiro se responde o que é fácil para garantir a melhor pontuação, depois o que é mais difícil para garantir a vaga.(Lembra SJF, menor custo = prioridade)

Prefiro suspense :smile_cat:, não gosto de novelas e afins. :cry:

1 curtida

sim,vou tentar,pior que a prova é sexta a entrega desses exercicios tbm,meio que estou perdida. Mais bola para frente