[OS] 컴퓨터구조: 하드웨어
운영체제를 본격적으로 공부하기 위해서는 컴퓨터 아키텍쳐(컴퓨터 구조)를 잘 알아야 하며, 이 게시글에서는 컴퓨터의 하드웨어적 내용을 요약한다.
1. 컴퓨터의 계층 구조
- 응용 프로그램 ↔ 운영체제 ↔ 하드웨어
- 사용자는 응용프로그램 통해 컴퓨터 활용
- 응용프로그램은 하드웨어 직접 접근 X
- 반드시 OS를 통해서만 가능하다.
- 하드웨어는 OS의 배타적 독점적 지배를 받는다.
이런 설계의 배경에는 추상화가 있다.
2. 컴퓨터 하드웨어 구성
- 필수 장치: CPU, 메모리
- CPU: 명령어를 해석/실행하는 장치(Patch - Decode - Execute)
- 메모리: 명령어 및 필요한 데이터를 저장하는 곳
- 나머지 주변 장치: 입출력장치, 저장장치
컴퓨터의 모든 장치는 최종적으로 메인보드와 연결되며, 메인보드 자체에 각종 장치/기능들(LAN card, Sound card)이 포함되기도 한다.
2.1. 버스(BUS)
메인보드에 연결된 각 장치들은 메인보드 내 버스(BUS)를 통해 통신한다.
- CPU 내부 버스 (Back-Side Bus)
- 시스템 버스 (Front-Side Bus)
- I/O 버스
- 데이터 버스
- 주소 버스
- 제어 버스
2.2. 폰 노이만 구조
프로그램은 보통 저장장치에 파일 형식으로 저장되어 있고, CPU가 이것을 실행하려면 메인 메모리에 적재되어 있어야 한다.
- 메인 메모리가 유일한 작업 공간
- 메모리 관리는 매우 중요한 이슈
3. 클럭, 버스의 동작방식
- 컴퓨터 장치는 Clock 단위로 작업함
- Clock: 장치들의 작동을 동기화해주는 주기적인 타이밍 신호
- Clock Generator가 생성해 줌
3.1. CPU가 메모리에 데이터를 입출력하는 과정
- 제어 버스로 Read/Write 모드 결정
- 주소 버스에 입출력하고자 하는 메모리 주소 적어 둠
- 다음 클럭 사이클(Next clock cycle)에 데이터 버스로 해당 데이터가 입출력 됨
4. 병목현상
- 읽을 데이터 크기 > 버스의 크기1 일 때 발생
- 데이터를 여러 클럭에 나눠 읽을 수밖에 없음
- 메모리에 갑자기 많은 입출력이 동시에 발생하면?
- 늦게 요청된 작업의 입출력은 앞 처리를 기다려야만 함
메모리가 CPU보다 느리므로, 메모리는 항상 병목에 시달릴 수 밖에 없다. 따라서 병목현상을 극복하기 위해서는 특별한 설계가 필요한데, 크게 물리적 설계, 구조적 설계가 있다.
4.1. 병목 극복법: 물리적 설계
- 메모리 클럭 ↑, 클럭 낭비 ↓
- DDR: Double Data Rate
- 클럭 웨이브에서 상승 엣지와 하강 엣지를 모두 데이터 처리에 할당한다.
- DDR: Double Data Rate
- 듀얼 채널 구성
- 메모리 꽂는 슬롯에 칸 별로 색이 칠해진 이유
- 병렬화를 통해 한번에 더 많은 데이터에 접근한다.
- CPU와 가깝게 위치시켜 이동시간을 아낌
4.2. 병목 극복법: 구조적 설계
- 버퍼(Buffer)2를 도입하기
- 속도 차이가 있는 두 장치 사이에서 차이를 완하하는 역할을 한다.
- 일정량의 데이터를 모아 옮김으로 차이를 완화
- 스풀(Spool): 버퍼의 SW적 구현 형태
ex
프린터
5. 메모리
5.1. 메모리 계층 구조
- 캐시(Cache): 메모리 ↔ CPU 간 속도 차이 완화를 위해서 메모리에서 앞으로 사용이 예상3되는 데이터를 미리 가져 와서 임시 저장해두는 장소
- CPU에 대한 버퍼
- 메모리의 메모리
- CPU는 메모리 접근이 필요할 때, 캐시를 우선 방문하여 데이터에 접근한다.
5.2. 메모리의 종류
- 휘발성 메모리, 비휘발성 메모리
- Random Access Memory(RAM), Read Only Memory(ROM)
- Sequential access memory (ex: 자기테이프)
각주
이 포스팅은 작성자의 CC BY-NC 4.0 라이선스를 준수합니다.