[H]ow can program runnig on CPU (mostly OS) acess other PC hardware? Such as Graphic card, HDD and so?
A resposta completa a esta questão é complexa e difícil de responder em geral. Então, vou tentar respondê-lo em geral, e espero dar-lhe algumas dicas para encontrar informações adicionais para aprender mais. Espero que isso seja útil.
Para os modos protegidos de 32/64 bits usados pelo MS Windows 95 e mais recentes ou o Linux para um processador x86 (IA-32), o software interrompe (como o código de operação INT para x86) vá para a tabela de vetores apropriada Interromper (ou tabela de despacho) que pode direcionar a CPU onde, no SO, o processo deve ir para o manipulador de interrupção (ou Rotina de Serviço de Interrupção, ISR) para manipular a solicitação.
Em x86 modo real , como o MS-DOS, eles podem ser manipulados pelo BIOS que fornece detalhes de implementação específicos de baixo nível para esse sistema / chipset / placa-mãe em particular.
[H]ow can some program stored in RAM acess other computer HW, when CPU can acess only RAM, and reeive interrupts?
Então você não quer a resposta usual mão-ondulada ? Vou tentar responder isso, mas não sou engenheiro de computação nem especialista em arquitetura de computadores.
Existem vários mecanismos, incluindo
- mapeada na memória ou I / O mapeada na porta
- Acesso direto à memória (DMA)
- Processadores IO ("canais" de E / S)
- Unidades de processamento de periféricos
(Src: CS 473 - IO , Universidade Estadual do Novo México , pfeiffer, 2006)
O mais simples é a E / S mapeada na memória, onde um endereço de memória pode ser mapeado para os registros de um dispositivo de hardware (por exemplo, UART ) e a CPU e escrever e / ou ler determinados endereços de memória para acessar o hardware diretamente. Isso é rápido e simples, mas reduz o alcance do endereço de memória do que pode ser usado como RAM.
Os outros são técnicas mais avançadas desenvolvidas para permitir que CPUs modernas e Sistemas Operacionais mais avançados acessem hardware de maneira controlada.
No próprio sistema operacional, eles são normalmente chamados de drivers de dispositivo, pois incluem detalhes específicos sobre os dispositivos de hardware que suportam.
And, does windows use int instructions as well, or is there any new way to communicate with HW?
Sim e sim, mas acho que expliquei isso.