본문 바로가기
컴퓨터&네트워크

컴퓨터 하드웨어

by 파란하랑 2024. 8. 12.

프로세서
프로세서

프로세서

 

CPU는 컴퓨터의 뇌라고 봐도 무방하며 메모리에서 명령을 반입하여 실행한다. 모든 CPU에서의 기본적인 사이클은 메모리에서 명령을 반입하고 이를 해석하여 명령의 종류, 오퍼랜드를 확인하고 이를 실행한다. 그리고 연이어 다음 명령을 삽입, 해석, 실행하는 것이다.

 

각 CPU는 자기가 실행할 수 있는 명령들의 집합을 갖고 있다. 명령이나 데이터를 가져오기 위해서 메모리를 접근하는 시간이 명령을 실행하는 시간보다 훨씬 길기 때문에 모든 CPU는 중요한 변수들과 임시 결과들을 보관할 수 있는 레지스터들을 갖고 있다. 두 개의 워드를 더해서 그 결과를 레지스터나 메모리에 저장하는 것과 같은 명령을 하기도 한다.

 

변수와 임시 결과를 저장하기 위한 일반 레지스터와 별도로 대부분의 컴퓨터들은 프로그래머가 볼 수 있도록 구비되어 있는 특별한 레지스터들도 가지고 있다. 이들 중 하나가 패치해야 하는 다음 명령의 메모리 주소를 포함하는 프로그램 카운터이다. 그 명령이 패치되고 나면 프로그램 카운터는 다음 명령을 가리키도록 조정된다.

 

또 다른 레지스터는 메모리에 있는 현재 스택의 최상위를 가리키는 스택 포인터다. 스택은 진입은 했지만 아직 종료되지 않은 프로시저별로 하나의 프레임을 갖는다. 프로시저의 스택 프레임은 입력 인자, 지역 변수 그리고 레지스터에 두지 않는 임시 변수들을 포함한다.

 

운영체제는 모든 레지스터들에 대해 인식하고 있어야 한다. CPU를 시간 다중화할 경우 운영체제는 실행하고 있는 프로그램을 멈추게 하고 다른 프로그램을 시작하게 된다. 실행하고 있는 프로그램을 멈추게 할 때마다 운영체제는 나중에 프로그램이 다시 할 때를 대비해서 모든 레지스터들을 저장해 둬야 한다.

 

많은 최근 CPU들은 한 번에 한 개 이상의 명령들을 실행시킬 수 있도록 구성되어 있다. CPU에 패치, 디코드 그리고 실행하는 유닛을 각각 별도로 두어 명령 n을 실행하고 있는 동안 동시에 명령 n+1을 디코드하고 있고 명령 n+2는 패치하고 있을 수 있다. 이러한 구조를 파이프라인이라고 한다. 대부분의 파이프라인 설계는 바로 앞 명령이 조건 분기 명령이었다고 해도 일단 명령이 파이프라인으로 패치되고 나면 끝까지 실행되도록 되어 있다.

 

임베디드 시스템에서 사용하는 아주 단순한 것을 제외하면 대부분의 CPU는 커널 모드와 사용자 모드라는 두 개의 모드를 지원한다. 커널 모드에서 실행하는 동안 CPU는 자기 명령 집합에 있는 모든 명령들을 다 실행할 수도 있고 하드웨어의 모든 기능도 사용할 수 있다. 운영체제가 커널 모드에서 실행하므로 하드웨어에 대한 완전한 접근이 가능하게 된다.

 

사용자 프로그램은 사용자 모드에서 실행되며, 명령들의 일부만 실행할 수 있고 하드웨어 기능도 일부만 사용할 수 있게 되어 있다. 사용자 모드에서는 일반적으로 I/O와 메모리 보호와 관련된 명령들은 허락되지 않는다. 그리고 커널 모드로 진입하기 위해 PSW의 비트를 조작하는 것도 허용 안 된다.

 

운영체제로부터 서비스를 받으려면 사용자 프로그램은 커널로 트랩을 걸어서 운영체제를 활용하도록 하는 시스템 호출 요청이 필요하다. 트랩이라는 명령이 사용자 모드에서 커널 모드로 변환되면서 운영체제를 시작한다. 작업이 끝나면 제어권은 사용자 프로그램으로 돌아오게 되며, 시스템 호출을 요청한 명령 바로 다음 명령이 수행되게 된다.

 

컴퓨터에는 시스템 호출을 실행하기 위한 트랩 명령 외에도 다른 명령들이 있다. 다른 트랩들의 대부분은 0으로 나누거나 부동소수점 연산의 언더플로우 현상 등과 같은 상황을 알리기 위해 하드웨어에서 발생시키는 것들로 보면 된다. 이러한 경우에 운영체제가 제어권을 획득하고 트랩의 원인에 따라 어떤 일을 할지 결정한다.

 

어떤 경우에는 오류를 그냥 무시하기도 하고 어떤 경우에는 오류와 함께 프로그램을 강제로 종료시키기도 한다. 프로그램이 어떤 조건들에 대해서 자기가 처리하고 싶다는 의사를 밝히는 경우에는, 제어권이 프로그램에게 전달되어 프로그램이 원하는 작업을 할 수 있도록 조치할 수도 있다.

'컴퓨터&네트워크' 카테고리의 다른 글

통신 프로토콜  (0) 2024.08.13
클라이언트-서버 시스템  (0) 2024.08.12
다양한 정보통신망  (0) 2024.08.12
프로그래밍 언어  (0) 2024.08.11
운영 체제의 진화 과정-2  (0) 2024.08.11