
컴퓨터 구조
- 중앙 처리 장치(CPU)
- 제어 장치: 모든 장치를 제어하고 통제, 감독
- 연산 장치: CPU의 연산 담당
- 레지스터: CPU의 임시 기억 장소 역할
- 기억 장치
- 내부 기억 장치: CPU가 직접 접근하여 저장된 데이터를 꺼내 오고 넣을 수 있는 부분
- 외부 기억 장치: CPU가 직접 접근할 수 없는 보조 기억 장치
- 시스템 버스: 컴퓨터의 구성 요소를 서로 연결하고 데이터를 전달하기 위한 경로로, 제어 버스, 주소 버스, 데이터 버스로 구성.
프로그램이 메모리에 적재되는 순서
- 실행할 프로그램 코드가 메모리에 로드되며, 이를 프로세스라 함. 운영체제에 의해 프로세스는 RAM의 일부 공간을 할당받음. 이 코드 영역에는 컴파일된 기계어가 들어감.
- 프로그램의 전역 변수, 정적 변수, 상수가 저장되는 영역이 생성되며 이를 데이터 영역이라 함.
- 런타임 동안 사용자의 동적 할당(힙 영역) 영역이 발생. 개발자가 메모리 공간 관리 가능
- 컴파일 타임 동안 함수의 호출과 관계되는 지역변수와 매개변수가 저장되는 정적 할당(스택 영역) 발생. 프로그램이 자동으로 사용하는 임시 메모리 영역
소스코드가 실행되는 순서
- 수행되어야 하는 동작이 담긴 명령들이 코드 영역 안으로 들어감
- 레지스터가 코드 영역에서 실행될 부분을 가리키면 해당 순서대로 프로그램 실행
- 작성된 코드에 따라 순서대로 스택에 쌓였다가 완료되면 사라지는 과정 반복
자료구조
1. 선형 자료구조
- 선형 리스트: 배열 타입으로 정의되는 자료구조. 속성이 같은 데이터를 그룹으로 관리할 때 편리
- 연결 리스트: 데이터를 저장할 때 저장 공간과 함께 그 다음에 나올 데이터가 저장된 공간을 가리키는 주소 값을 동시에 가짐. 수정 및 삭제가 잦은 경우 사용
- 스택(Stack): LIFO 구조의 자료구조. 선입후출.
- 큐(Queue): FIFO 구조의 자료구조. 선입선출.
2. 비선형 자료구조
- 트리: 데이터를 노드와 엣지로 표현한 계층적 자료구조.
- 그래프: 노드, 엣지로 이루어진 자료구조로, 부모 노드와 자식 노드라는 개념이 존재하지 않음.