컴퓨터 구조 설계 및 구현
1. 명령어 집합 구조(ISA)
- CISC vs RISC
- CISC: 복잡한 명령어, 다양한 주소 지정 모드. 코드 밀도 ↑, 디코더 복잡도 ↑
- RISC: 단순 명령어, 고정 길이, 레지스터 기반 연산. 파이프라이닝 최적화 용이
- 레지스터 파일
- 범용 레지스터(GPR), 특수 레지스터(PC, SP, FLAGS)
- 읽기/쓰기 포트 설계, 데이터 경로(Data Path) 구성
- 데이터 경로 & 제어 유닛
- 데이터 경로: ALU, 레지스터, 멀티플렉서, 셔플 네트워크
- 제어 유닛: 하드와이어드 vs 마이크로프로그램 제어
2. 파이프라이닝 & 병렬화
- 기본 파이프라인 단계
- 명령어 인출(IF)
- 명령어 해독(ID)
- 실행(EX)
- 메모리 접근(MEM)
- 쓰기백(WB)
- 해저드 처리
- 구조적 해저드: 자원 충돌 → 다중 포트, 버퍼 추가
- 데이터 해저드: RAW/WAR/WAW → 포워딩, 스톨 삽입
- 제어 해저드: 분기 예측, 지연 슬롯
프로그램 번역 및 실행
1. 컴파일러 & 어셈블러
- 컴파일러 단계: 어휘 분석 → 구문 분석 → 의미 분석 → 최적화 → 코드 생성
- 어셈블러: 어셈블리 코드 → 머신 코드로 변환, 심볼 테이블 관리
2. 링커 & 로더
- 정적 링크: 라이브러리 심볼 결합 → 단일 실행 파일
- 동적 링크: 런타임 심볼 결합 → 공유 라이브러리(.so/.dll)
- 로더: 실행 파일 메모리 맵핑 → 프로그램 카운터 초기화
3. 인터프리터 & JIT
- 인터프리터: 소스 코드를 한 줄씩 해석 실행 → 디버깅 용이, 성능 ↓
- JIT 컴파일: 런타임 최적화 코드 생성 → 성능↑, 런타임 비용 존재
프로세스 관리 및 스케줄링
1. 프로세스 vs 스레드
- 프로세스: 독립된 메모리 공간, 무거운 컨텍스트 스위칭
- 스레드: 동일 프로세스 내 경량 실행 단위, 공유 메모리
2. 스케줄링 알고리즘
| 알고리즘 | 특징 | 장단점 |
|---|
| FCFS | 순서대로 처리 | 간단하지만 실행 시간 편차 큼 |
| SJF (비선점) | 실행 시간이 짧은 순서 | 최적 평균 대기시간, 긴 작업 기아 발생 |
| SRTF (선점 SJF) | 남은 시간이 가장 짧은 순서 | 기아 최소화, 선점 비용 발생 |
| RR (Round Robin) | 시간 할당(퀀텀) 단위로 순환 | 응답시간 공정, 문맥교환 빈번 |
| 다단계 큐, MLFB | 우선순위 및 피드백 큐 복합 | 복잡하지만 다양한 워크로드 대응 가능 |
3. 컨텍스트 스위칭
- 저장/복원: 레지스터, PC, 스택 포인터, 프로세스 제어 블록(PCB)
- 오버헤드 최소화: 여유 CPU 캐시 관리, 경량 스레드 사용
메모리 관리 및 입출력 관리
1. 메모리 계층 구조
- 레지스터 → 캐시(L1, L2, L3) → 주기억장치(RAM) → 보조기억장치(HDD/SSD)
- 캐시 정책: 쓰기-쓰루 vs 쓰기-백, LRU/LFU 교체 알고리즘
2. 가상 메모리
- 페이지 기반: 페이지 테이블, TLB
- 스와핑: 페이지 교체 알고리즘(LRU, FIFO, Clock)
- 단편화: 내부 단편화 vs 외부 단편화
3. 입출력 관리
- 장치 드라이버: 폴링 vs 인터럽트 vs DMA(Direct Memory Access)
- I/O 스케줄링: FCFS, SSTF, Elevator(LOOK/SCAN)
- 버퍼링 & 캐싱: 블록 단위 전송 최적화, 버퍼 캐시 관리
동기화 문제
1. 경쟁 조건(Race Condition)
- 문제: 공유 자원 동시 접근 시 결과 예측 불가
- 예시: 두 스레드가 같은 카운터 변수 동시 증가
2. 상호 배제(Mutual Exclusion)
- 락(Lock)/뮤텍스(Mutex): 임계 구역 보호
- 세마포어(Semaphore): 카운팅, 이진 세마포어
- 모니터(Monitor): 조건 변수(Condition Variable) 포함
3. 교착 상태(Deadlock)
- 필요 조건: 상호 배제, 점유-대기, 비선점, 순환 대기
- 해결 전략: 예방, 회피(은행원 알고리즘), 탐지 & 회복
4. 기아(Starvation)
- 원인: 우선순위 편향
- 해결: 에이징(Aging) 기법으로 대기 시간에 따라 우선순위 상승
위 내용을 바탕으로 컴퓨터 구조부터 운영체제 핵심 요소까지 전체 흐름을 이해하고, 설계·구현·운영 시 고려해야 할 주요 기법과 알고리즘을 정리해 보세요.