eh um pouco mais complexo que isso meu amigo!
de uma olhada no manual do 68040 e chore: se vc setar um ponteiro (registro de endereco) e mandar ele acessar em uma pagina marcada como read only, a instrucao vai simplesmente parar no meio antes de gravar qq coisa! se for uma instrucao complexa, como um move16, ele vai fazer um dump dos pipelines do processador na stack e chamar uma trap do sistema operacional. o sistema operacional vai olhar e decidir o que fazer. se for um pagina de codigo ou pagina de outro processo, o trap vai simplesmente abortar a execucao e limpar o lixo. mas se for uma pagina de memoria valida, mas compartilhada entre duas aplicacoes, ele vai duplicar a pagina p/ o processo que quer escrever e entao mapear pela mmu de modo que pareca ser a mesma pagina original. vai retornar da trap e, magicamente o processador vai recuperar aquele dump dos pipelines e continuar exatamente de onde estava, efetivando a escrita em uma pagina agora valida.
entao a coisa nao eh um mero flag, o negocio eh bem mais complexo e, eventualmente, tem que pesar se tanta complexidade vale a pena!
quanto a atomicidade, lembre-se que os semaforos sao usados apenas nos cruzamentos! no resto da quadra vc pode acelerar a vontade. entao, no caso do processador rodando multiplas threads, os cores soh vao se engavetar quando o timer de escalonamento de processo disparar. os semaforos vao evitar q eles escalonem as mesmas threads e daih eles saem andando na boa.
se for pensar q um processador de 1GHz pode escalonar com conforto a 1KHz e, digamos, que vc gaste 1000 clocks p/ escalonar, vc tem um impacto de 1000 em 1 milhao, ou seja, tem 0.1% de impacto na performance.
em termos de impacto SMP ainda eh bem vantajoso!
mastk escreveu:Atomicidade só acontece em sistema uniprocessados, diferente disse, esteja preparado para um overhead terrivel com semaforos.
E mais engraçado é o para que serve a MMU se não é usada? Um ponteiro maluco pode cagar tuda a memoria (a MMU deveria bloquear, mas na pratica tem virus que funcionam apartir disse, se não estou engando), que tudo o que o Linux vai fazer é levantar um Flag, putz...