Pontos de Inflexão e Concavidade - Matemática
Por: Hugo.bassi • 7/5/2018 • 849 Palavras (4 Páginas) • 309 Visualizações
...
o arquivo não vai poder ser lido nem modificado.
Foi utilizada vfs_fstat, que é uma system call utilizada para preencher os campos de uma struct kstat através de um file descriptor, só através desse recurso seria possível descobrir os major e minor numbers do dispositivo chamado no write. Para obter o PID da aplicação que chama a system call write utilizamos a system call “sys_getpid”, comparando-a com a variável global que possui o valor do processo que foi bloqueado pela system call que criamos.
Em nossas pesquisas, constatamos que todos os dispositivos, para sua identificação, possuem um major number, que o categoriza, e um minor number, que faz a identificação do tipo do dispositivo dentro dessa categoria. Depois de inúmeras pesquisas, notamos que o primeiro disco SCSI corresponde ao major number, e também engloba a categoria SATA, esse major number possui valor 8. Então, temos que MAJOR NUMBER é igual a 8, e MINOR NUMBER vai de 0 a 15, com isso, podemos afirmar que esse dispositivo é correspondente ao hard disk.
Por esse motivo utilizamos MAJOR(sb.dev) == 8 e MINOR(sb.dev) <= 15 em nossa verificação if.
O campo dev é do tipo dev_t e está presente na estrutura kstat, que é preenchida pela system call vfs_fstat. Esse campo faz a identificação do dispositivo, e possui o major e o minor number.
Após todos esses passos, atualizamos os components do sistema operacional, incluindo o gcc compiler através dos quarto commandos a seguir:
• sudo apt-get install gcc
• sudo apt-get install libncurses5-dev
• sudo apt-get update
• sudo apt-get upgrade
Feito isso, configuramos o kernel atual (antigo) com as configurações do kernel modificado, através do comando “sudo make menuconfig” e compilamos o kernel através do comando “sudo make” na pasta do diretório do kernel atual.
O processo de compilação tem uma faixa de tempo considerável, pois o kernel possui uma boa quantidade de arquivos .c. Após a compilação, atualizamos o kernel do Linux através do comando “sudo make modules_install install” e reiniciamos o computador já com o kernel modificado e com nossa system call implementada com o comando “sudo shutdown –r now”.
Para realizar o teste da system call que criamos, basta chamar a função syscall , tendo como parâmetro o número da system call que criamos de qualquer programa em C, juntamento com os parâmetros consequentes.
No nosso caso: syscall(351,PID).
...