Java / / 2024. 6. 25. 17:02

컴퓨터 구조론 기초

컴퓨터 과학 기본 개념

 

1. 비트와 바이트

 

비트 (Bit): 컴퓨터에서 가장 작은 정보 단위로, 0 또는 1의 값을 저장. 2진수로 동작하는 컴퓨터의 기초이며, 전기 신호의 상태를 나타냄.

바이트 (Byte): 8개의 비트로 구성되며, 256가지의 값을 표현. 일반적으로 1바이트는 문자 하나를 표현하는 데 사용되며, 컴퓨터에서 데이터의 최소 처리 단위로 사용됨.

비트와 바이트의 관계:

1 바이트 = 8 비트

1 킬로바이트(KB) = 1024 바이트

파일 크기는 바이트 단위로 측정되며, 메모리와 저장 장치의 기본 단위로 사용됨.

 

2. 메모리 단위

 

메모리는 기본적으로 2의 제곱을 기준으로 단위를 나눔.

 

킬로바이트 (KB): 1KB = 1024 바이트

메가바이트 (MB): 1MB = 1024KB = 1,048,576 바이트

기가바이트 (GB): 1GB = 1024MB = 1,073,741,824 바이트

테라바이트 (TB): 1TB = 1024GB = 1,099,511,627,776 바이트

 

메모리 관리에서 중요한 개념은 페이지프레임으로, 운영체제가 메모리를 효율적으로 관리하기 위해 사용하는 단위임.

 

3. 음수 표현 방법

 

2의 보수 (Two’s Complement): 컴퓨터에서 음수를 표현하는 대표적인 방법. 양수의 모든 비트를 반전시키고 1을 더해 음수를 표현.

예시: 8비트 시스템에서 +5는 00000101, -5는 11111011로 표현됨.

이 방식은 덧셈과 뺄셈 연산을 동일한 하드웨어로 처리할 수 있게 하여, 계산을 단순화함.

 

4. 바이트 단위 변환

 

예시: 32GB를 바이트로 변환하는 과정:

32GB × 1024MB/GB = 32,768MB

32,768MB × 1024KB/MB = 33,554,432KB

33,554,432KB × 1024바이트/KB = 34,359,738,368 바이트

 

파일 크기데이터 전송 속도를 계산할 때, 이러한 단위 변환이 필수적.

 

5. 메모리 주소와 표현

 

메모리 주소는 메모리 상의 위치를 나타내는 값으로, 16진수로 표현하는 것이 일반적임.

예: 0xFF는 16진수로 255를 의미.

가상 주소 (Virtual Address): 프로그램이 사용하는 논리적 주소. 운영체제가 관리하는 메모리 맵을 기반으로 함.

물리 주소 (Physical Address): 실제 하드웨어에서 참조하는 주소. 가상 주소는 페이지 테이블을 통해 물리 주소로 변환됨.

 

6. 프로그래밍 언어와 컴파일

 

기계어 (Machine Code): 컴퓨터가 이해할 수 있는 0과 1로 구성된 코드.

자바 (Java): 플랫폼 독립적으로 실행되며, **JVM (Java Virtual Machine)**에서 바이트 코드로 변환되어 실행됨. 다양한 플랫폼에서 동일한 코드로 실행 가능.

C/C++: 플랫폼 종속적으로, 소스 코드는 컴파일되어 특정 운영체제와 하드웨어에 맞게 기계어로 변환됨.

 

7. 자바와 C/C++의 차이

 

자바는 플랫폼 독립적인 언어로, JVM을 통해 실행되며 메모리 관리를 Garbage Collection(GC)으로 처리.

**C/C++**는 성능이 뛰어나지만 플랫폼에 종속적이며, 개발자가 메모리를 직접 관리해야 함.

 

8. 자바 문법과 기초

 

변수 (Variable): 데이터 값을 저장하는 공간. 변수의 선언과 초기화는 중요함.

예: int x = 0; (x라는 이름의 변수를 선언하고 0으로 초기화)

리터럴 (Literal): 코드에 직접 명시된 값. 예를 들어, 5는 정수 리터럴, "Hello"는 문자열 리터럴.

아규먼트 (Argument): 함수 호출 시 전달되는 값. 함수 내부에서 이 값을 받아 처리함.

 

9. 함수와 컴파일

 

함수 (Function): 특정 작업을 수행하는 코드 블록. 자바의 경우, 메서드라는 용어로 더 자주 사용됨.

컴파일 (Compile): 소스 코드를 기계어 또는 바이트 코드로 변환하는 과정. 자바에서는 JIT (Just-In-Time) 컴파일을 통해 실행 시점에서 효율적으로 컴파일됨.

 

10. 심볼 테이블 (Symbol Table)

 

정의: 컴파일러가 변수, 함수, 클래스 등의 심볼 정보를 저장하는 구조.

역할:

심볼 저장 및 검색

타입 검사

메모리 할당 정보 관리

구성 요소:

심볼의 이름, 타입, 범위, 메모리 위치 등의 정보.

 

11. 운영체제와 메모리 관리

 

**운영체제 (OS)**는 프로세스 간 메모리 충돌을 방지하기 위해 가상 메모리를 사용.

**프로세스 (Process)**는 운영체제에서 실행되는 프로그램 단위로, 각 프로세스는 독립적인 가상 메모리 공간을 가짐.

페이징(Paging): 메모리를 고정된 크기의 페이지로 나눠 관리하는 방식. 이를 통해 효율적인 메모리 관리와 가상 주소-물리 주소 변환이 이루어짐.

 

12. 빌드 과정

 

빌드 (Build): 소스 코드를 컴파일하고, 링크하여 실행 가능한 프로그램을 만드는 과정.

컴파일 (Compile): 고수준 언어를 기계어로 변환.

링킹 (Linking): 여러 개의 개별 파일을 결합하여 실행 파일을 생성.

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유