개념
컴퓨터 시스템 구성
컴퓨터 시스템은 하드웨어, 소프트웨어, 데이터, 사용자로 구성된다. 하드웨어는 물리 장치, 소프트웨어는 하드웨어를 제어하거나 문제를 해결하는 프로그램이다.
- 하드웨어: CPU, 메모리, 저장장치, 입출력장치
- 시스템 소프트웨어: 운영체제, 컴파일러, 드라이버
- 응용 소프트웨어: 문서 작성, 웹 브라우저, 게임
CPU
CPU는 명령어를 해석하고 실행하는 중앙처리장치다. 제어장치가 명령어 흐름을 관리하고, ALU가 산술/논리 연산을 수행하며, 레지스터가 임시 데이터를 저장한다.
- 제어장치: 명령어 해석, 제어 신호 생성
- ALU: 덧셈, 뺄셈, AND, OR 같은 연산
- 레지스터: PC, IR, MAR, MBR 등
명령어 실행 사이클
CPU는 명령어를 가져오고 해석한 뒤 실행한다. 이 과정이 프로그램이 끝날 때까지 반복된다.
- Fetch: 메모리에서 명령어 인출
- Decode: 명령어 해석
- Execute: 연산, 분기, 데이터 이동 수행
- Write Back: 결과를 레지스터나 메모리에 저장
레지스터
레지스터는 CPU 내부의 가장 빠른 저장 공간이다. 용량은 작지만 명령어 실행에 직접 사용된다.
- PC: 다음 실행할 명령어 주소
- IR: 현재 실행 중인 명령어
- MAR: 접근할 메모리 주소
- MBR/MDR: 메모리에서 읽거나 쓸 데이터
메모리 계층 구조
속도가 빠른 저장장치는 비싸고 용량이 작다. 따라서 자주 쓰는 데이터는 CPU 가까이에 두고, 큰 데이터는 느린 저장장치에 둔다.
- 속도: 레지스터 > 캐시 > RAM > SSD/HDD
- 용량: SSD/HDD > RAM > 캐시 > 레지스터
- 목적: 속도와 비용의 균형
캐시와 지역성
캐시는 CPU와 RAM 사이의 속도 차이를 줄인다. 프로그램은 최근 사용한 데이터나 그 주변 데이터를 다시 사용할 가능성이 높다는 지역성을 가진다.
- 시간 지역성: 최근 사용한 데이터를 다시 사용
- 공간 지역성: 접근한 주소 근처를 사용
- 캐시 히트: 캐시에 데이터 있음
- 캐시 미스: RAM에서 가져와야 함
운영체제
운영체제는 컴퓨터 자원을 관리하고 사용자 프로그램이 하드웨어를 편리하고 안전하게 사용할 수 있게 해준다.
- 프로세스 관리
- 메모리 관리
- 파일 시스템 관리
- 입출력 장치 관리
- 보안과 권한 관리
커널과 사용자 모드
커널은 운영체제의 핵심 부분으로 하드웨어 자원을 직접 제어한다. 일반 프로그램은 사용자 모드에서 실행되어 시스템을 보호한다.
- 커널 모드: 하드웨어 직접 접근 가능
- 사용자 모드: 제한된 권한
- 시스템 콜: 사용자 모드에서 커널 기능 요청
프로세스
프로세스는 실행 중인 프로그램이다. 코드, 데이터, 힙, 스택 같은 독립적인 메모리 공간과 실행 상태를 가진다.
- New: 생성
- Ready: CPU 대기
- Running: 실행
- Waiting: 입출력 등 대기
- Terminated: 종료
스레드
스레드는 프로세스 내부의 실행 흐름이다. 같은 프로세스의 코드, 데이터, 힙을 공유하고 각자 스택과 레지스터 상태를 가진다.
- 생성/전환 비용이 프로세스보다 작음
- 데이터 공유가 쉬움
- 하나의 오류가 프로세스 전체에 영향을 줄 수 있음
CPU 스케줄링
스케줄링은 여러 프로세스 중 어떤 것에 CPU를 줄지 결정하는 작업이다. 목적은 CPU 이용률, 처리량, 응답 시간, 대기 시간의 균형이다.
- FCFS: 먼저 온 순서
- SJF: 짧은 작업 우선
- Round Robin: 시간 할당량 기준 순환
- Priority: 우선순위 기준
동기화와 임계구역
여러 스레드나 프로세스가 공유 자원에 동시에 접근하면 경쟁 상태가 발생할 수 있다. 이를 막기 위해 임계구역과 동기화 기법을 사용한다.
- 뮤텍스: 하나만 접근
- 세마포어: 정해진 개수만 접근
- 데드락: 서로 자원을 기다리며 멈춤
- 기아: 특정 작업이 계속 밀림
인터럽트
인터럽트는 CPU가 현재 작업을 중단하고 먼저 처리해야 할 사건을 처리하도록 하는 신호다.
- 현재 상태 저장
- 인터럽트 서비스 루틴 실행
- 상태 복구
- 원래 작업 재개
시스템 콜
시스템 콜은 사용자 프로그램이 운영체제 커널의 기능을 사용하기 위한 공식 인터페이스다.
- 파일 열기/읽기/쓰기
- 프로세스 생성/종료
- 메모리 할당
- 네트워크 송수신
가상 메모리
가상 메모리는 프로그램마다 독립적인 주소 공간을 제공하고, 필요한 부분만 물리 메모리에 올려 RAM을 효율적으로 쓰게 한다.
- 페이지: 가상 메모리 단위
- 프레임: 물리 메모리 단위
- 페이지 테이블: 주소 변환 정보
- 페이지 폴트: 필요한 페이지가 RAM에 없음
파일 시스템
파일 시스템은 데이터를 파일과 디렉터리 형태로 저장하고 관리한다. 이름, 위치, 크기, 권한 같은 메타데이터도 함께 관리한다.
- 파일 생성/삭제/읽기/쓰기
- 디렉터리 구조
- 접근 권한
- 저장 공간 할당
네트워크 기초
네트워크는 여러 장치가 데이터를 주고받는 구조다. IP는 주소, TCP/UDP는 전송 방식, DNS는 도메인 변환, HTTP/HTTPS는 웹 통신에 사용된다.
- IP: 장치 주소
- TCP: 신뢰성 있는 연결 지향
- UDP: 빠른 비연결
- DNS: 도메인 → IP
- HTTPS: 암호화된 HTTP