컴퓨터의 뇌라고 할 수 있는 CPU (중앙처리장치 : Central Processing Unit)는 주 기억장치인 메모리에서 명령어를 읽어 들이고 이를 해석하여 수행하는 작업을 맡는다. CPU의 주요 구성 요소로는 산술 및 논리 연산을 수행하는 ALU(Arithmetic Logic), 명령어의 순서와 수행을 제어하는 제어 유닛, 그리고 중간 결과와 작업 상태를 저장하는 레지스터가 있다.
ALU와 제어장치
ALU는 다양한 산술 및 논리 연산을 처리합니다. 레지스터를 통해 입력받은 피연산자와 제어 유닛으로부터 받은 명령에 따라 ALU는 연산을 수행하며, 그 결과는 다시 레지스터에 저장되어 필요에 따라 메모리에 전송됩니다.( 이렇게 레지스터를 활용하는 이유는 레지스터는 CPU에 내장되어 있기 때문에 CPU밖에 있는 메모리 보다 데이터 전송 속도가 상대적으로 빠릅니다.)
ALU가 받아들이는 정보 -> 레지스터로부터 피연산자, 제어장치로부터 제어신호
ALU가 내보내는 정보 -> 플래그, 연산결과
여기서 플래그란 연산결과에 대한 추가적인 상태 정보를 나타내는데 이것은 연산결과가 양수인지 음수인지, 또 연산결과가 연산결과를 담을 레지스터 용량을 초과(오버플로우)했는지 등의 정보를 나타냅니다. 이 플래그는 플래그 레지스터라는 곳에 저장됩니다.
플래그 목록 표로 정리 ~~~~~~~~~~~~
제어장치는 다양한 하드웨어 구성 요소들을 조율하고 관리하는 역할을 합니다.
제어신호가 받아들이는 정보 -> 클럭신호, 레지스터로부터 명령어 레지스터에서 명령어를 받아옴, 플래그 레지스터에서 플래그를 받아옴
제어신호가 내보내는 정보
여기서 클럭이란 컴퓨터에서 특정한 간격으로 반복되는 신호를 의미하며, 클럭 신호는 제어장치가 타이밍을 맞추고 다른 컴퓨터 부품들과 동기화를 유지하는데 필수적인 역할을 합니다. 클럭 속도는 컴퓨터의 전체적인 성능에서 중요한 역할을 하지만, 컴퓨터마다 클럭속도는 다릅니다. 무작적 클럭 속도가 빠르다고 해서 모든 작업의 속도가 빨라지는 것도 아닙니다.
명령어 레지스터는 CPU가 해석해야 할 명령어를 저장하고, 이를 제어장치에 전달하여 제어장치는 이를 해석하고 필요한 제어신호를 발생시킵니다. 이때, 플래그 값을 참조하여 제어 신호를 생성합니다.
레지스터
레지스터는 CPU내부의 작은 임시 저장장치 입니다. 프로그램 속 명령어와 데이터는 실행 전후로 레지스터에 저장됩니다.
명령어 사이클과 인터럽트
2023.08.08 - [CS] - [컴퓨터구조] 소스 코드와 명령어
Q )
인터럽트 발생 시 처리 과정을 설명해보세요
A)
1. 실행 중인 프로그램을 중단합니다.
2. 실행중이었던 프로그램 상태를 보관합니다.
3. 인터럽트 처리 루틴을 실행합니다.
4. 인터럽트 서비스 루틴을 실행합니다.
5. 인터럽트 요청 신호가 발생했을 때 보관한 PC의 값을 복원하여 이전 실행 위치로 돌아옵니다.
6. 이어서 프로그램을 진행합니다.
Q)인터럽트가 무엇인가요?
A) 인터럽트란, CPU가 프로그램을 실행하고 있을 때 예기치 못한 상황이 발생하여 실행중인 프로세스를 잠시 멈추거나 다른 급한 일을 처리해야 하는 상황을 가리킵니다. 보통 인터럽트가 발생하면 실행중인 프로세스를 멈추고 인터럽트를 처리한 후 다시 멈췄던 프로세스로 돌아와 이어서 실행합니다.
Q)내부/외부 인터럽트는 어떤 상황들이 있는지 말해보세요 (이 책에서는 외부 인터럽트인 하드웨어 인터럽트만 다룸)
A)내부 인터럽트는 하드웨어 고장, 실행할 수 없는 명령어, 명령어 실행 오류, 사용권한 위배등이 있습니다.
여기서 하드웨어 고장은 컴퓨터 고장이나 비트오류가 있고 명령어 실행 오류의 예시로는 나누기 0 을 하는등의 경우입니다.
외부 인터럽트는 보통 외부 입출력장치에 의해 발생하는데 , 입출력장치는 CPU에 비해 느리기 때문에 인터럽트를 걸어주지 않는다면 CPU는 입출력장치가 입출력이 완료됬는지 주기적으로 확인해야합니다. 하지만, 인터럽트가 있다면 입출력 작업동안 CPU는 다른일을 할 수 있게 되어 효율적입니다. 대표적으로 컴퓨터 종료, 타이머 인터럽트 (타이머가 일정 시간 간격으로 인터럽트 요청), 입출력 인터럽트(입출력장치가 입출력 완료를 알리기 위해 인터럽트 요청) 등이 있습니다.
시스템 콜
본 글은 인프런의 [혼자공부하는 컴퓨터 구조 + 운영체제 ] 인강을 참고하였습니다.
이전 글
2023.08.08 - [CS/운영체제] - [컴퓨터구조] 소스 코드와 명령어
'CS > 운영체제' 카테고리의 다른 글
[운영체제] 프로세스와 스레드 (0) | 2023.08.19 |
---|---|
[운영체제] 운영체제 기초 (0) | 2023.08.19 |
[컴퓨터구조]입출력장치 [I/O device] (0) | 2023.08.18 |
[컴퓨터구조]CPU의 성능향상기법 (0) | 2023.08.14 |
[컴퓨터구조] 소스 코드와 명령어 (0) | 2023.08.08 |