본문 바로가기
반응형

책/혼공 컴퓨터구조+운영체제33

컴퓨터 구조 - 명렁어 사이클,인터럽트, 예외,하드웨어 인터럽트, 인터럽트 서비스 루틴 CPU가 하나의 명령어를 처리하는 과정에는 정해진 흐름이 있고 그 흐름을 반복하며 명령어들을 처리해 나간다. 하나의 명령어를 처리하는 정형화된 흐름을 명령어 사이클이라고 한다. CPU는 정해진 흐름에 따라 명령어를 처리해 나가지만 간혹 이 흐름이 끊어지는 상황이 발생한다. 이를 인터럽트라고 한다. 명령어 사이클 프로그램은 수많은 명령어로 이루어져 있고 CPU는 이 명령어들을 하나씩 실행한다. 이때 프로그램 속 각각의 명령어들은 일정한 주기가 반복되며 실행되는데 이 주기를 명령어 사이클(instruction cycle)이라고 한다. 즉 프로그램 속 각각의 명령어들은 명령어 사이클이 반복되며 실행한다. 01 인출 사이클(fetch cycle) 메모리에 있는 명령어를 CPU로 가져오기 02 실행 사이클(exe.. 2023. 11. 22.
컴퓨터 구조 - 레지스터(프로그램 카운터, 명령어 레지스터, 메모리 주소 레지스터등), 스택 주소 지정방식, 변위 주소 지정 방식 프로그램 속 명령어와 데이터 실행 전후로 반드시 레지스터에 저장된다. 따라서 레지스터에 저장된 값만 잘 관찰해도 프로그램의 실행 흐름을 파악할 수 있다. 다시 말해 레지스터 속 값을 유심히 관찰하면 프로그램을 실행할 때 CPU내에서 무슨 일이 벌어지고 있는지 어떤 명령어가 어떻게 수행되는지 알 수 있다. 그러므로 레지스터만 잘 관찰해도 프로그램의 자세한 실행 과정을 알 수 있다. 상용화된 CPU속 레지스터들은 CPU마다 이름, 크기, 종류가 매우 다양하다. 대부분의 CPU들이 공통적으로 가지고 있는 레지스터들에 대해 알아보자 01 프로그램 카운터(PC, Program Counter) 기능 : 메모리에서 가져올 명령어의 주소, 즉 메모리에서 읽어 들일 명령어의 주소를 저장하고 다음에 실행될 명령어의 위치를.. 2023. 11. 19.
컴퓨터 구조 - ALU,플래그,제어장치 ALU 01 받아들이는 정보 레즈스터로부터 피연산자를 받아들여 데이터를 일시적으로 저장하고 제어장치로부터 제어 신호를 받아들이면서 어떤 종류의 연산을 수행할지에 대한 정보를 담는다. 그리고 그 결괏값을 레지스터에 보낸다. 결괏값은 숫자가 될 수도 있고 문자가 될 수도 있고 주소가 될 수도 있다. 02 내보내는 정보 CPU가 메모리에 접근하는 속도는 레지스터에 접근하는 속도보다 훨씬 느립니다. ALU가 연산할 때 마다 결과를 메모리에 저장한다면 당연하게도 CPU는 메모리에 자주 접하게 되고 이는 CPU프로그램 실행 속도를 늦출 수 있다. 그래서 ALU의 결괏값을 메모리가 아닌 레지스터에 우선 저장하는 것이다. 플래그 연산 결과에 대한 부가 정보이다. 이렇게 내보내진 정보는 플래그 레지스터라고 하는 특수한 .. 2023. 11. 18.
컴퓨터 구조 - C언어 컴파일 과정(전처리, 컴파일, 어셈블러,링커) +) 목적파일, 실행파일 C언어 컴파일 과정 1. 전처리기 C 언어에서 전처리기는 소스 코드를 컴파일하기 전에 특정한 변환 및 처리 작업을 수행하는 도구이다. 전처리기 명령은 # 기호로 시작하며 주로 소스 코드의 특정 부분을 조건부 컴파일하거나 매크로로 대체하는 등의 작업을 수행한다. 01 헤더 파일 포함(#include) 외부에서 선언된 헤더 파일을 현재 소스코드에 포함시킨다. 이를 통해 다양한 라이브러리나 다른 소스 코드 파일에서 선언된 내용을 현재 파일에서 사용할 수 있다. #include 02 매크로 정의(#define) 매크로는 코드 중복을 방지하고 가독성을 향상시키기 위해 사용된다. #define PI 3.14159 03 조건부 컴파일 (#if, #ifdef, ...) 조건부 컴파일 지시문은 컴파일 영역을 지정하거나 .. 2023. 11. 12.
컴퓨터 구조 - 명령어의 구조(연산코드, 오퍼랜드),명령어 주소 지정 방식 종류 저급언어는 명령어들로 이루어져있다는데 명렁어는 어떻게 생겼을까? 명령어의 구조 무엇을 대상으로, 무엇을 수행하라 명령어는 연산코드와 오퍼랜드로 구성되어있다. 1. 연산 코드(Opcode) = 연산자 명령어가 수행할 동작 또는 연산을 담고 있다. CPU는 이 연산 코드를 해석하여 명령어가 어떤 동작을 수행해야 하는지 이해한다. 연산코드의 종류 및 생김새(고유한 이진패턴)는 CPU마다 다르다. 주요 연산 코드의 종류를 알아보자 01 데이터 전송(Data Transfer) MOVE : 데이터를 한 위치에서 다른 위치로 복사하거나 이동한다. 일반적으로 레지스터 간의 데이터 이동 또는 메모리에서 레지스터로 데이터 이동에 사용된다. STORE : 메모리를 저장한다. 레지스터에 있는 데이터를 메모리 주소에 저장할때 .. 2023. 11. 9.
컴퓨터 구조 - 고급언어(컴파일언어,인터프리터언어)와 저급언어(기계어, 어셈블리어) 고급 언어로 작성된 소스코드가 실행되려면 반드시 저급 언어 즉 명령어로 변환되어야 한다. 저급언어(low-level programming language) 컴퓨터가 이해하고 실행하는 언어 01 기계어(machine-code) 컴퓨터가 직접 실행할 수 있는 가장 낮은 수준의 언어이다. 이진 형태로 표현되며 컴퓨터 하드웨어의 명렁어와 데이터를 직접 나타낸다. 가독성을 위해 16진수로 표현하기도 한다. 02 어셈블리어(assembly language) 기계어를 사람이 이애하기 쉽게 번역한 언어이다. 어셈블리어는 각 기계어 명령어에 대응되는 기호를 사용하여 작성한다. 이 언어로 프로그램을 작성하는 것 뿐만 아니라 컴퓨터가 프로그램을 어떤 절차로 작동하는지 근본적인 단계에서부터 하나하나 추적하고 관찰할 수 있기 .. 2023. 11. 2.
반응형