동아리/전체 활동

[8기 기초] 2주차

bento 2023. 9. 24. 23:05

자료구조

: 여러 데이터들의 묶음을 저장하고, 사용하는 방법을 정의한 것

여기서 데이터(Data)란 문자, 숫자, 소리, 그림, 영상 등 실생활을 구성하고 있는 모든 값 > 데이터 자체로는 정보가 될 수 없음

데이터의 효율적인 관리 및 사용을 위해 자료구조가 필요!

 

- 단순 구조: 자료 값 사용 위해 True/False, 정수, 실수, 문자 및 문자열 같이 컴퓨터가 기본적으로 제공하는 자료형

Ex) 2진수, 정수, 실수, 문자, 문자열

- 선형 구조: 자료를 구성하는 데이터를 순차적으로 나열 시킨 형태 자료들 간의 관계가 1:1인 자료

Ex) 배열, 연결 리스트 ,덱 , 스택 ,큐

- 비선형 구조: 하나의 자료 뒤에 여러 개의 자료가 존재할 수 있는 것을 의미 계층 구조나 망 구조로 이뤄짐

Ex) 그래프, 트리

파일 구조: 서로 관련 있는 필드로 구성된 레코드 집합인 파일에 대한 자료구조 보조 기억 장치에 데이터가 실제로 기록되는 형태 메모리에 한번에 올릴 수 없는 대용량을 다룸

Ex) 순차 파일, 색인 파일, 직접 파일

 

스택

: 데이터 삽입과 추출이 한쪽방향만 가능한 구조(후입선출-LIFO)

 

: 데이터 삽입과 추출이 양방향으로 가능한 구조(선입선출-FIFO)


컴퓨터구조

: 컴퓨터가 효율적으로 작동할 수 있도록 하드웨어 및 소프트웨어의 기능을 고안하고 구성하는 방법

 

- 컴퓨터의 기능 구조에 대한 설계: 컴퓨터가 연산을 효율적으로 하기 위해 어떤 기능들이 컴퓨터에 필요한지 고민하고, 설계하는 분야

Ex) 폰 노이만 구조, 하버드 구조, 수정된 하버드 구조 등

폰 노이만 구조

- CPU 기능에 대한 설계: 명령어 집합구조(Instruction Set Architecture)라고 불리며 CPU가 처리해야 하는 명령어를 설계하는 분야

Ex) ARM, MIPS, AVR, 인텔의 x86 및 x86-64 등

- CPU의 하드웨어적 설계: 마이크로 아키텍처(Micro Architecture)라고 불리며 정의된 명령어 집합을 효율적으로 처리할 수 있도록, CPU의 회로를 설계하는 분야


중앙처리장치(CPU)

: 컴퓨터의 두뇌 프로그램 연산 처리 및 시스템 관리

프로세스의 코드를 불러오고, 실행하고, 결과를 저장하는 모든 과정 수행

 

CPU 구성

  • 산술논리장치(Arithmetic Logic Unit, ALU): 산술/논리 연산을 처리
  • 제어장치(Control Unit): CPU 제어
  • 레지스터(Register): CPU에 필요한 데이터를 저장

기억장치

: 컴퓨터가 동작하는데 필요한 여러 데이터를 저장하기 위해 사용

 

- 주기억장치: 프로그램 실행과정에서 필요한 데이터 임시 저장

ex) 램(Random-Access Memory, RAM)

- 보조기억장치: 운영 체제, 프로그램 등과 같은 데이터를 장기간 보관

ex) 하드 드라이브(Hard Disk Drive, HDD), SSD(Solid State Drive)


버스(BUS)

: 컴퓨터 부품과 부품 사이 or 컴퓨터와 컴퓨터 사이 신호 전송 통로

 

  • 데이터 버스(Data Bus): 데이터 이동
  • 주소 버스(Address Bus): 주소 지정
  • 제어 버스(Control Bus): 읽기/쓰기 제어

명령어 집합구조 (Instruction Set Architecture, ISA)

https://i.stack.imgur.com/AvG0R.jpg

  • 명령어 집합
  • 레지스터 집합
  • 메모리 구조 정의

모든 컴퓨터가 동일한 수준의 연산 능력을 요구하지 않고 컴퓨팅 환경도 다양하기 때문에 다양한 명령어 집합구조가 개발됨


  • Intel x86-64

인텔의 64비트 CPU 아키텍처

32비트 모델보다 훨씬 더 많은 양의 가상 메모리와 물리적 메모리 지원 > 더 많은 양의 데이터 저장 가능

 

n비트 아키텍쳐

‘64비트 아키텍처', '32비트 아키텍처’

> 64와 32 CPU가 한번에 처리할 수 있는 데이터 크기

> WORD : CPU가 이해할 수 있는 데이터 단위라는 의미

 

 

레지스터: CPU가 데이터를 빠르게 저장하고 사용할 때 이용하는 보관소

  • Intel x64 아키텍처의 레지스터

• 범용 레지스터(General Register)

주용도는 있으나, 그 외의 다양한 용도로 사용될 수 있는 레지스터, x86-64에서 각각의 범용 레지스터는 8바이트 저장 가능

부호 없는 정수를 기준으로 2^64 - 1까지의 수를 나타낼 수 있음

• 세그먼트 레지스터(Segment Register)

cs, ss, ds, es, fs, gs 총 6가지 세그먼트 레지스터 존재, 각 레지스터의 크기; 16비트

현대의 x64에서 cs, ds, ss 레지스터는 코드 영역과 데이터, 스택 메모리 영역을 가리킬 때 사용하며, 나머지 레지스터는 운영체제 별로 용도를 결정할 수 있도록 범용적인 용도로 제작

 

• 명령어 포인터 레지스터(Instruction Pointer Register, IP)

CPU가 어느 부분의 코드를 실행할지 가리킴

x64 아키텍처의 명령어 레지스터는 rip이며, 크기는 8바이트

 

• 플래그 레지스터(Flag Register)

프로세서의 현재 상태를 저장하고 있는 레지스터

RFLAGS라고 불리는 64비트 크기의 플래그 레지스터 존재(실제로는 약 20여개의 비트만 사용)

728x90