컴퓨터 과학 기본 개념
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): 여러 개의 개별 파일을 결합하여 실행 파일을 생성.
'Java' 카테고리의 다른 글
Access Modifiers, Reference Types, and Abstract Classes (0) | 2024.07.03 |
---|---|
Interface, Superclass, and Call by Value (0) | 2024.07.03 |
자바 프로그래밍 핵심 개념 이해하기 (0) | 2024.07.01 |
C/C++ 프로그래밍 기초: 포인터, 반복문, 클래스, 그리고 Java의 데이터 타입 (2) | 2024.07.01 |
컴퓨터 디지털 논리 회로와 관련 개념 정리 (0) | 2024.06.26 |