Skip to content

Commit

Permalink
Merge pull request #3 from Kdreamtomaster/version0.0.0
Browse files Browse the repository at this point in the history
Version0.0.0
  • Loading branch information
Kdreamtomaster authored Dec 12, 2024
2 parents d3c2ff7 + 0adf374 commit 979d75e
Show file tree
Hide file tree
Showing 8 changed files with 473 additions and 96 deletions.
Binary file added .DS_Store
Binary file not shown.
44 changes: 44 additions & 0 deletions CS_basic/HW/Storage/RAID/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
## RAID 0~6 설명

### **RAID 0: 스트라이핑**
- **설명**: 데이터를 여러 디스크에 분산 저장하여 읽기 및 쓰기 성능을 향상시킵니다.
- **장점**: 높은 성능
- **단점**: 데이터 중복이 없어 디스크 하나만 고장 나도 모든 데이터 손실
- **최소 디스크 수**: 2

### **RAID 1: 미러링**
- **설명**: 데이터를 동일하게 두 개 이상의 디스크에 저장하여 데이터 신뢰성을 높입니다.
- **장점**: 높은 데이터 신뢰성
- **단점**: 저장 공간 비효율적 (2배 필요)
- **최소 디스크 수**: 2

### **RAID 2: 비트 수준 스트라이핑과 해밍 코드**
- **설명**: 비트 단위로 데이터를 스트라이핑하고 해밍 코드를 사용하여 오류를 검출 및 수정합니다.
- **장점**: 오류 복구 가능
- **단점**: 구현 복잡, 추가 디스크 필요
- **최소 디스크 수**: 3

### **RAID 3: 바이트 수준 스트라이핑과 전용 패리티**
- **설명**: 바이트 단위로 데이터를 스트라이핑하며, 전용 패리티 디스크를 사용합니다.
- **장점**: 단일 디스크 오류 복구 가능
- **단점**: 패리티 디스크로 인한 병목 현상
- **최소 디스크 수**: 3

### **RAID 4: 블록 수준 스트라이핑과 전용 패리티**
- **설명**: 블록 단위로 데이터를 스트라이핑하며, 전용 패리티 디스크를 사용합니다.
- **장점**: 단일 디스크 오류 복구 가능
- **단점**: 패리티 디스크로 인한 병목 현상
- **최소 디스크 수**: 3

### **RAID 5: 블록 수준 스트라이핑과 분산 패리티**
- **설명**: 데이터를 블록 단위로 스트라이핑하고, 패리티 정보를 모든 디스크에 분산 저장합니다.
- **장점**: 단일 디스크 오류 복구 가능, 병목 현상 감소
- **단점**: 쓰기 성능 저하 가능
- **최소 디스크 수**: 3

### **RAID 6: 블록 수준 스트라이핑과 이중 분산 패리티**
- **설명**: RAID 5와 유사하지만 두 개의 패리티 블록을 추가하여 두 개의 동시 디스크 오류를 견딜 수 있습니다.
- **장점**: 최대 두 개의 디스크 오류 복구 가능
- **단점**: 쓰기 성능 저하, 더 많은 저장 공간 필요
- **최소 디스크 수**: 4

87 changes: 87 additions & 0 deletions CS_basic/HW/Storage/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# 컴퓨터 스토리지 기술 가이드

## 1. 스토리지 기본 개념
- **스토리지의 정의**: 데이터를 저장하고 관리하는 장치나 시스템으로, 데이터의 일시적 및 영구적 보관을 담당합니다.
- **데이터 저장 원리**: 디지털 데이터를 자기적, 전기적 방식으로 기록하며, 다양한 매체에 따라 저장 방식이 다릅니다.
- **스토리지의 중요성**: 데이터의 양과 중요성이 증가함에 따라 효율적인 데이터 저장 및 관리가 필수적입니다.

## 2. 스토리지 종류

### 2.1 물리적 저장 매체
- **하드 디스크 드라이브 (HDD)**
- 작동 원리: 플래터에 데이터를 자기적으로 기록하고 읽는 방식입니다.
- 구조와 구성 요소: 플래터, 스핀들 모터, 읽기/쓰기 헤드 등으로 구성됩니다.
- 성능 특성: 대용량과 저렴한 비용이 장점이나 속도가 느리고 소음이 발생합니다.

- **솔리드 스테이트 드라이브 (SSD)**
- NAND 플래시 메모리 기술: 비휘발성 메모리를 사용하여 데이터를 전기적으로 저장합니다.
- SLC, MLC, TLC, QLC 기술: 셀 당 비트 수에 따라 성능과 내구성이 다릅니다.
- 작동 원리: 플로팅 게이트 트랜지스터를 통해 데이터를 저장하고 읽습니다.

- **광학 저장 장치**
- CD, DVD, Blu-ray: 레이저를 사용하여 디스크 표면에 데이터를 기록합니다.
- 작동 원리와 특징: 주로 미디어 콘텐츠 저장에 사용되며 긴 수명을 가집니다.

- **자기 테이프 저장 장치**
- 백업 및 아카이빙 용도: 대용량 데이터의 장기 보관에 적합합니다.
- LTO 기술: 고용량과 빠른 속도를 제공합니다.

### 2.2 메모리 기반 저장 장치
- **RAM (Random Access Memory)**: 휘발성 메모리로 빠른 데이터 접근이 가능하지만 전원이 꺼지면 데이터가 사라집니다.
- **ROM (Read-Only Memory)**: 비휘발성 메모리로 데이터가 영구히 저장됩니다.
- **캐시 메모리**: CPU와 주 메모리 사이에서 데이터 접근 속도를 높이는 데 사용됩니다.
- **비휘발성 메모리 (NVRAM)**: 전원이 꺼져도 데이터를 유지하는 메모리입니다.

## 3. 스토리지 인터페이스 기술
- **SATA**: 주로 HDD와 SSD 연결에 사용되는 인터페이스로 비교적 저속입니다.
- **SAS**: 서버 환경에서 고속 데이터 전송을 지원하는 인터페이스입니다.
- **NVMe**: PCIe 소켓을 활용하여 높은 속도와 호환성을 제공하는 인터페이스입니다.
- **PCIe**: 고속 데이터 전송을 위한 인터페이스로 NVMe SSD에 주로 사용됩니다.
- **USB 인터페이스**: 범용 직렬 버스로 다양한 장치 연결에 사용됩니다.
- **Thunderbolt**: 고속 데이터 및 영상 전송을 지원하는 인터페이스입니다.

## 4. 고급 스토리지 기술

### 4.1 RAID 기술
- RAID 레벨 (0, 1, 5, 10 등): 성능 향상과 데이터 중복성을 제공합니다.
- 하드웨어 vs 소프트웨어 RAID: 하드웨어 RAID는 전용 컨트롤러를 사용하며, 소프트웨어 RAID는 운영 체제에서 구현됩니다.

### 4.2 분산 스토리지 시스템
- 클러스터 파일 시스템: 여러 서버 간 파일 시스템을 공유하여 확장성과 가용성을 높입니다.
- 분산 블록 스토리지: 블록 단위로 데이터를 분산하여 높은 성능과 내구성을 제공합니다.
- 오브젝트 스토리지: 대규모 비정형 데이터를 효율적으로 관리할 수 있는 구조입니다.

## 5. 스토리지 성능 메트릭스
- IOPS (Input/Output Operations Per Second): 초당 입출력 작업 횟수를 나타내며 성능 평가의 주요 지표입니다.
- 지연 시간 (Latency): 입출력 요청 후 응답까지 걸리는 시간으로 낮을수록 좋습니다.
- 처리량 (Throughput): 단위 시간당 처리 가능한 데이터 양을 나타냅니다.
- 대역폭: 최대 전송 속도를 나타내며 높은 값일수록 좋습니다.
- 액세스 시간: 데이터 접근에 소요되는 총 시간을 의미합니다.

## 6. 최신 스토리지 트렌드
- 3D NAND 기술: 셀을 수직으로 쌓아 집적도를 높이는 기술입니다.
- QLC SSD: 높은 용량과 낮은 비용으로 주목받고 있습니다.
- Optane 메모리: 낮은 지연 시간과 높은 내구성을 제공하는 차세대 메모리 기술입니다.
- 클라우드 스토리지: 인터넷 기반의 유연한 데이터 저장 솔루션입니다.
- 에지 컴퓨팅 스토리지: 분산된 네트워크 환경에서 실시간 데이터 처리를 지원합니다.
- 스토리지 가상화: 물리적 장치를 추상화하여 유연한 자원 관리를 가능하게 합니다.

## 7. 스토리지 관리 및 최적화
- 데이터 압축 기술: 저장 공간 절약 및 전송 효율성을 높입니다.
- 중복 제거 (Deduplication): 불필요한 중복 데이터를 제거하여 효율성을 높입니다.
- 씬 프로비저닝: 필요 시점에 따라 자원을 동적으로 할당하여 최적화합니다.
- 스토리지 티어링: 다양한 성능의 스토리지를 계층화하여 비용 효율성을 높입니다.
- 스토리지 모니터링 도구: 실시간으로 성능 및 상태를 점검하여 문제를 예방합니다.

## 8. 미래 스토리지 기술 전망
- 차세대 메모리 기술: MRAM, RRAM 등 새로운 비휘발성 메모리가 주목받고 있습니다.
- 양자 저장 기술: 양자 컴퓨팅과 결합된 초고속 데이터 처리 가능성이 있습니다.
- DNA 데이터 저장: 생물학적 구조를 활용한 초고밀도 데이터 저장 기술입니다.
- 광학 및 홀로그래픽 저장 기술: 대용량 데이터를 빠르게 처리할 수 있는 차세대 기술입니다.

## 9. 스토리지 보안
- 데이터 암호화: 기밀성을 보장하기 위해 데이터를 암호화합니다.
- 접근 제어: 사용자 권한을 제한하여 보안을 강화합니다.
- 데이터 무결성: 변경이나 손상 없이 데이터를 유지하는 방법을 포함합니다.
- 재해 복구 전략: 시스템 장애 시 신속한 복구를 위한 계획이 필요합니다.

65 changes: 65 additions & 0 deletions CS_basic/OS/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
## 운영체제의 기본 개념

### OS의 정의와 목적
운영체제(Operating System, OS)는 컴퓨터 하드웨어 자원을 관리하고 사용자 및 응용 프로그램이 컴퓨터와 상호작용할 수 있도록 지원하는 소프트웨어입니다. 운영체제는 시스템의 성능을 최적화하고 사용자에게 편리한 인터페이스를 제공하는 것을 주요 목표로 합니다.

### OS의 주요 기능
운영체제는 다음과 같은 주요 기능을 수행합니다:
- **자원 관리**: CPU, 메모리, I/O 장치 등 하드웨어 자원을 효율적으로 관리합니다.
- **프로세스 관리**: 여러 프로세스의 실행을 제어하고 스케줄링합니다.
- **파일 시스템 관리**: 파일의 생성, 삭제, 읽기, 쓰기 등의 작업을 지원합니다.
- **보안 및 보호**: 데이터와 시스템 자원을 보호합니다.
- **네트워크 관리**: 네트워크 연결과 통신을 관리합니다.

### 시스템 콜(System Call)
시스템 콜은 응용 프로그램이 운영체제 커널에게 서비스를 요청하는 인터페이스입니다. 사용자 모드에서 실행되는 프로그램이 커널 모드로 전환하여 커널 기능을 사용할 수 있게 합니다.

## 프로세스 관리

### 프로세스와 스레드의 개념
- **프로세스**: 실행 중인 프로그램의 인스턴스로, 독립적인 메모리 공간을 가집니다. 각 프로세스는 최소 하나의 스레드를 포함합니다.
- **스레드**: 프로세스 내에서 실행되는 작업의 단위로, 같은 프로세스 내에서는 메모리를 공유합니다. 멀티 스레딩은 여러 스레드가 동시에 실행되도록 합니다.

### 프로세스 스케줄링
프로세스 스케줄링은 CPU 시간을 여러 프로세스에 할당하는 방법을 결정하는 과정입니다. 선점형과 비선점형 스케줄링 방식이 있으며, 각 방식은 시스템 성능에 영향을 미칩니다.

### 프로세스 동기화
동기화는 여러 프로세스나 스레드가 공유 자원에 접근할 때 일관성을 유지하도록 하는 기법입니다. 상호 배제(Mutex)와 세마포어(Semaphore) 등이 사용됩니다.

### 데드락(Deadlock)
데드락은 두 개 이상의 프로세스가 서로 자원을 기다리며 무한정 대기하는 상태를 말합니다. 예방, 회피, 탐지 및 회복 방법으로 처리할 수 있습니다.

## 메모리 관리

### 메모리 할당 방식
메모리는 연속 할당과 불연속 할당 방식으로 나뉩니다. 연속 할당은 고정 및 가변 분할 방식으로 나뉘며, 불연속 할당에는 페이징과 세그멘테이션이 있습니다.

### 가상 메모리
가상 메모리는 물리적 메모리보다 큰 프로그램을 실행할 수 있도록 지원하는 기술로, 필요한 부분만 메모리에 적재하여 실행합니다. 이는 물리적 메모리의 한계를 극복하고 효율적인 메모리 사용을 가능하게 합니다.

### 페이징과 세그멘테이션
- **페이징**: 고정 크기의 페이지로 나누어 물리 메모리에 할당하여 외부 단편화를 해결합니다.
- **세그멘테이션**: 가변 크기의 세그먼트로 나누어 논리적 단위로 관리하며 내부 단편화를 해결합니다.

## 파일 시스템

### 파일 시스템 구조
파일 시스템은 데이터를 저장하고 관리하는 구조로, 파일과 디렉토리를 기본 구성 요소로 합니다. 파일은 데이터의 집합이며 디렉토리는 파일을 조직화하는 컨테이너입니다.

### 디렉토리 구조
디렉토리는 계층적 구조(트리 구조)로 구성되며, 루트 디렉토리를 시작으로 하위 디렉토리를 포함할 수 있습니다. 이러한 구조는 파일 시스템 탐색과 관리를 용이하게 합니다.

### 파일 할당 방법
파일 할당에는 연속 할당, 연결 할당, 색인 할당 방법이 있습니다. 각 방법은 디스크 공간 사용과 접근 속도에 영향을 미칩니다.

## 입출력(I/O) 관리

### I/O 시스템의 구조
I/O 시스템은 하드웨어 장치와 소프트웨어 계층 간의 인터페이스를 제공하며, CPU와 I/O 장치 간 데이터 전송을 관리합니다. 이 과정에서 컨트롤러와 버스를 통해 데이터가 전송됩니다.

### 디바이스 드라이버
디바이스 드라이버는 운영체제가 하드웨어 장치를 제어할 수 있도록 하는 소프트웨어입니다. 드라이버는 커널 모듈로서 하드웨어와 응용 프로그램 간 인터페이스를 제공합니다.

### 버퍼링과 캐싱
- **버퍼링**: 데이터를 임시 저장하여 처리 속도 차이를 극복하는 방법입니다.
- **캐싱**: 자주 사용하는 데이터를 빠른 속도의 메모리에 저장하여 접근 시간을 줄이는 방법입니다.
Binary file added Infra/.DS_Store
Binary file not shown.
Loading

0 comments on commit 979d75e

Please sign in to comment.