추상 기계
추상기계(抽象機械, abstract machine)는 컴퓨터 하드웨어나 소프트웨어의 이상적인 모형이다. 흔히 추상 컴퓨터(abstract computer)라고도 한다. 컴퓨터의 동작을 추상화하는 것은 컴퓨터 과학 같은 이론적 분야 뿐 아니라 공학에서도 널리 사용한다. 보통 추상기계를 다룰 때는 이산시간에서 모형화한다.
계산 이론에서는 추상기계를 사고실험에 사용하여 계산 가능성이나 알고리즘의 복잡도를 추정한다. (계산 복잡도 이론 참고). 일반적인 추상기계는 입력과 출력, 그리고 입력을 출력으로 변환시키는 명령등으로 구성된다. 추상기계의 가장 유명한 예는 튜링 기계이다.
추상기계의 조금 더 복잡한 형태는 완전한 명령어 집합, 프로세서 레지스터 및 메모리 구조까지 모두 갖추고 있다. 추상기계 중에서 실제 컴퓨터의 형태와 매우 유사한 것으로는 원하는 메모리에 랜덤 액세스가 가능한 RAM 모형이 있다.
흔히 하드웨어로 만들어지지 않은 마이크로프로세서의 설계를 추상기계라고 부르는 경우가 있다. 소프트웨어 시뮬레이션 용도로 만든 추상기계, 혹은 인터프리터가 존재하는 추상기계는 가상기계라고 부른다.
추상기계를 이용하면, 필요한 컴퓨터 모형을 실제로 만들지 않더라도, 실행 시간이나 메모리 같은 컴퓨터 자원이 얼마나 필요한지 예측할 수 있다.