1. 자료 구조(Data Structure)란? 다수의 자료(data)를 담기 위한 구조 데이터의 수가 많아질수록 효율적인 자료 구조가 필요하다. ==> ex) 학생 수가 1,000,000명 이상인 학생 관리 프로그램 따라서 자료 구조의 필요성에 대해서 이해할 필요가 있다. 성능 비교: 자료구조/알고리즘의 성능 측정 방법에 대해 이해할 필요가 있다. 데이터를 효과적으로 저장하고, 처리하는 방법에 대해 바르게 이해할 필요가 있다. 자료구조를 제대로 이해하지 못하면 불필요하게 메모리와 계산을 낭비할 여지가 있다. 2. 자료 구조의 종류 선형 구조 (linear data structure) 하나의 데이터 뒤에 다른 데이터가 하나 존재하는 자료구조 데이터가 연속적(순차적)으로 연결되어 있다. 배열 (Array)..
1. CPU의 구성 요소 세 가지 ALU (산술논리연산장치): 연산을 수행하는 장치 (계산을 담당하는 회로) 레지스터로부터 피연산자(연산의 대상)을 받아들이고 제어 장치로부터 제어 신호(연산할 작업)를 받아들인다. 연산의 결과를 레지스터, 플래그 레지스터에 저장한다. ==> 플래그 레지스터: 연산의 결과에 대한 부가 정보 > 부호 플래그 - 연산한 결과의 부호를 나타낸다. > 제로 플래그 - 연산 결과가 0인지 여부를 나타낸다. > 캐리 플래그 - 연산 결과 올림수나 빌림수가 발생했는지 여부를 나타낸다. > 오버플로우 플래그 - 오버플로우가 발생했는지 여부를 나타낸다. > 인터럽트 플래그 - 인터럽트가 가능한지 여부를 나타낸다. > 슈퍼바이저 플래그 - 커널 모드로 실행 중인지, 사용자 모드로 실행 중인..
1. 이진수와 2의 보수법 이진법(이진수) 이진법: 0과 1로 모든 수를 표기하는 방법 이진수: 0과 1만으로 표현된 수 1을 넘어가는 시점에 자리올림 숫자가 너무 길어진다는 단점 십육진법(십육진수) 십육진법: 1~9와 A~F로 모든 수를 표기(A==10, B==11, C==12, D==13, E==14, F15) 15(F)를 넘어가는 시점에 자리 올림 십진법 보다 이진수를 표현하기가 좋다. (2의 4제곱이므로) 2의 보수법 0과 1만으로 음수를 표현하는 방법 중 하나 어떤 수 n을 그보다 큰 2의 n제곱에서 뺀 값 모든 0과 1을 뒤집은 뒤, 1을 더한 값으로도 표현 가능 CPU 내부의 정보, 플래그(flag) 플래그: CPU가 명령어를 실행하는 과정에서 참고할 정보의 모음 음수 플래그가 세팅 되어 있..
1. 소스 코드에서 명령어로 컴퓨터는 명령어를 이해한다. 소스 코드는 실행되기 전 명령어(+데이터)로 변환되어 실행된다. 소스 코드: 사람(개발자)가 이해하기 편한 언어 (고급 언어) 명령어와 데이터: 컴퓨터가 이해하기 편한 언어 (저급 언어) 즉, 고급 언어로 작성된 소스 코드는 내부적으로 저급 언어로 구성된 명령어와 데이터로 변환된다. 저급 언어의 두 종류 기계어 (machine code) 어셈블리어 (assembly language) : 기계어를 사람이 이해하기 편하게 변환시킨 언어 고급 언어에서 저급 언어로 변환되는 대표적 방식 컴파일 소스 코드 전체가 컴파일러에 의해 검사, 목적 코드로 변환 C/C++, Rust 대표적인 컴파일러는 gcc, clang, Visual Studio, etc 인터프리..
프로그램을 이루는 두 정보(0과 1로 이루어진 정보) 명령어: 컴퓨터를 동작시키는 실질적인 정보 데이터: 명령어의 대상 (재료) 컴퓨터의 네 가지 핵심 부품 CPU: 명령어 해석, 실행 담당하는 장치 메인 메모리 & 캐시 메모리: 실행 중인 프로그램 저장하는 장치(전원이 꺼지면 삭제) 보조기억장치: 보관할 프로그램을 저장하는 장치(전원이 꺼져도 저장 유지) 입출력장치: 컴퓨터 내외부와 정보를 주고받는 장치