Cohe
2장 컴퓨터의 구조와 성능 향상 본문
728x90
반응형
컴퓨터의 기본 구성
하드웨어 구성
- 컴퓨터의 구성
- 필수장치: 중앙처리장치, 메인메모리(대부분의 작업이 이루어 짐)
- 주변장치: 입력장치, 출력장치, 저장장치
- 용어 통일
- 메인메모리 → 메모리
- 보조저장장치 → 저장장치
- 중앙처리장치 → CPU
- CPU와 메모리
- CPU : 명령어를 해석하여 실행하는 장치로 인간으로 치면 두뇌에 해당
- 메모리
- 작업에 필요한 프로그램과 데이터를 저장하는 장소
- 바이트 단위로 분할되어 있으며 분할 공간마다 주소로 구분
- 입출력장치
- 입력장치 : 외부의 데이터를 컴퓨터에 입력하는 장치
- 출력장치 : 컴퓨터에서 처리한 결과를 사용자가 원하는 형태로 출력하는 장치
- 저장장치
- 메모리보다 느리지만 저렴하고 용량이 큼
- 전원의 온·오프와 상관없이 데이터를 영구적으로 저장
- 느린 저장장치를 사용하는 이유는 저장 용량에 비해 가격이 싸기 때문
- 종류
- 자성 이용 장치: 카세트테이프, 플로피디스크, 하드디스크 등
- 레이저 이용 장치: CD, DVD, 블루레이디스크 등
- 메모리 이용 장치: USB 드라이버, SD 카드, CF 카드, SSD 등
- 메인보드
- CPU와 메모리 등 다양한 부품을 연결하는 커다란 판
- 다양한 장치들을 버스(bus)로 연결 함. 버스는 데이터가 지나다니는 통로
- 그래픽카드, 사운드카드, 랜카드 등이 기본으로 장착되어 있기도 하고, 성능을 향상하기 위해 따로 장착하기도 함
폰노이만 구조
- Stored Program 방식이라고도 함
- 프로그램이 실행되기 위해 메모리에 저장되어야 하고, 중앙 처리 장치(CPU)가 이를 읽어 들여 명령어를 실행하는 방식으로 동작하는 구조
💡 모든 프로그램은 메모리에 올라와야 실행할 수 있다.
기초 용어 정리
- 클록과 헤르쯔
- CPU의 속도와 관련된 단위
- 클록이 일정 간격으로 틱tick을 만들면 거기에 맞추어 CPU 안의 모든 구성 부품이 작업함
- 틱은 펄스pulse 또는 클록틱clock tick이라고도 부름
- 헤르츠(Hz) :클록틱이 발생하는 속도를 나타내는 단위
- 1초에 클록틱이 한 번이면 1Hz, 1,000번이면 1kHz(1,000Hz)
- 시스템 버스와 CPU 버스
- 시스템 버스(system bus)는 메모리와 주변장치를 연결하는 버스로, 메인보드의 동작 속도를 의미하며 FSB(Front-Side Bus) 혹은 전면 버스라고 부름
- CPU 버스는 CPU 내부의 다양한 장치를 연결하는 것으로 BSB(Back Side Bus)
- BSB 속도는 CPU 클록과 같고 FSB보다 훨씬 빠름 혹은 후면 버스라 부름
- 산술논리 연산장치(Arithmetic and Logic Unit; ALU)
- 데이터의 덧셈, 뺄셈, 곱셈, 나눗셈 같은 산술 연산과 AND, OR 같은 논리 연산을 수행
- 제어장치(control unit)
- CPU에서 작업을 지시하는 부분
- 레지스터(register)
- 작업에 필요한 데이터를 CPU 내부에 보관하는 곳
CPU와 메모리
CPU의 구성과 동작
- CPU의 명령어 처리 과정
- CPU에서는 산술논리 연산장치, 제어장치, 레지스터들이 협업하여 작업 처리
- 레지스터의 종류
- 데이터 레지스터(data register; DR): 메모리에서 가져온 데이터를 임시 보관. 일반 레지스터 또는 범용 레지스터라고 부름
- 주소 레지스터(address register; AR): 데이터 또는 명령어가 저장된 메모리의 주소를 저장하는 레지스터
- 프로그램 카운터(program counter; PC): 다음에 실행할 명령어의 주소를 기억했다가 제어장치에 알려줌. 명령어 포인터(instruction pointer)라고도 함
- 명령어 레지스터(instruction register; IR): 현재 실행 중인 명령어를 저장
- 메모리 주소 레지스터(memory address register; MAR): 데이터를 메모리에서 가져오거나 보낼 때 주소를 지정하는 데 사용
- 메모리 버퍼 레지스터(memory buffer register; MBR): 메모리에서 가져오거나 옮겨갈 데이터를 임시로 저장. 항상 메모리 주소 레지스터와 함께 동작함
- CPU 비트의 의미
- 32bit CPU, 64bit CPU에서 32bit, 64bit는 CPU가 한 번에 처리할 수 있는 데이터의 최대 크기
- 32bit CPU는 메모리에서 데이터를 읽거나 쓸 때 한 번에 최대 32bit를 처리할수 있으며 레지스터 크기도 32bit, 버스 대역폭도 32bit
- 버스의 대역폭(bandwidth)은 한 번에 전달할 수 있는 데이터의 최대 크기로 CPU가 한 번에 처리할 수 있는 데이터의 크기와 같음
- 버스의 대역폭, 레지스터의 크기, 메모리에 한 번에 저장할 수 있는 데이터의 크기는 항상 같음
- CPU가 한 번에 처리할 수 있는 데이터의 최대 크기를 워드(word)라고 하며 32bit CPU에서 1워드는 32bit, 64bit CPU에서 1워드는 64bit
메모리의 종류와 부팅
- 휘발성 메모리(volatility memory)
- DRAM(Dynamic RAM)
- 저장된 0과 1의 데이터가 일정 시간이 지나면 사라지므로 일정 시간마다 다시 재생시켜야 함
- SRAM(Static RAM)
- 전력이 공급되는 동안에는 데이터를 보관 할 수 있어 재생할 필요가 없음
- SDRAM(Synchronous Dynamic Random Access Memory)
- 클록틱(펄스)이 발생할 때마다 데이터를 저장하는 동기 DRAM
- DRAM(Dynamic RAM)
- 비휘발성 메모리(non-volatility memory)
- 플래시 메모리(flash memory) : 디지털카메라, MP3 플레이어, USB 드라이버같이 전력 없어도 데이터 보관
- SSD(Solid State Drive) : 가격이 비싸지만 빠른 데이터 접근 속도, 저전력, 높은 내구성으로 많이 사용
- 롬의 종류
- 마스크 롬(mask ROM): 데이터를 지우거나 쓸 수 없음
- PROM(Programmable ROM): 전용 기계를 이용하여 데이터를 한 번만 저장할 수 있음
- EPROM(Erasable Programmable ROM): 데이터를 여러 번 쓰고 지울 수 있음
- 메모리 보호
- 현대의 운영체제는 시분할 기법을 사용하여 여러 프로그램을 동시에 실행하므로 사용자 영역이 여러 개의 작업 공간으로 나뉘어 있음
- 메모리를 보호하기 위해 CPU는 현재 진행 중인 작업의 메모리 시작 주소를 경계 레지스터(bound register)에 저장하고 현재 진행 중인 작업이 차지하고 있는 메모리의 크기(마지막 주소까지의 차이)를 한계 레지스터(limit register)에 저장
- 사용자 작업이 진행되는 동안 두 레지스터의 주소 범위를 벗어나는지 하드웨어 측면에서 점검함으로써 메모리 보호
- 부팅
- 컴퓨터를 켰을 때 운영체제를 메모리에 올리는 과정
컴퓨터 성능 향상 기술
버퍼
- 버퍼
- 속도에 차이가 있는 두 장치 사이에서 그 차이를 완화하는 역할을 하는 장치
- 일정량의 데이터를 모아 옮김으로써 속도의 차이를 완화
- 스풀
- [예] 스풀러
- 인쇄할 내용을 순차적으로 출력하는 소프트웨어로 출력 명령을 내린 프로그램과 독립적으로 동작
- [예] 스풀러
- 캐시
- 메모리와 CPU 간의 속도 차이(BSB와 FSB의 속도 차이)를 완화하기 위해 메모리의 데이터를 미리 가져와 저장해두는 임시 장소
- 캐시 히트cache hit : 캐시에서 원하는 데이터를 찾는 것으로, 그 데이터를 바로 사용
- 캐시 미스cache miss : 원하는 데이터가 캐시에 없으면 메모리로 가서 데이터를 찾음
- 캐시 적중률cache hit ratio
- 캐시 히트 되는 비율로 일반적인 컴퓨터의 캐시 적중률은 약 90%
- L1 캐시와 L2 캐시
- 캐시는 명령어와 데이터의 구분 없이 모든 자료를 가져오는 일반 캐시, 명령어와 데이터를 구분하여 가져오는 특수 캐시로 구분
- 일반 캐시: 메모리와 연결되기 때문에 L2(Level 2) 캐시라고 부름
- 특수 캐시: CPU 레지스터에 직접 연결되므로 L1(Level 1) 캐시라고 부름
저장장치의 계층 구조
- 속도가 빠르고 값이 비싼 저장장치를 CPU 가까운 쪽에 두고, 값이 싸고 용량이 큰 저장장치를 반대쪽에 배치해 적당한 가격으로 빠른 속도와 큰 용량을 동시에 얻는 방법
인터럽트
- 폴링(polling) 방식
- CPU가 직접 입출력장치에서 데이터를 가져오거나 내보내는 방식
- CPU가 입출력장치의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 데이터를 처리
- CPU가 명령어 해석과 실행이라는 본래 역할 외에 모든 입출력까지 관여하므로 작업 효율 떨어짐
- 인터럽트(interrupt) 방식
- 입출력 관리자가 대신 입출력을 해주는 방식
- CPU의 작업과 저장장치의 데이터 이동을 독립적으로 운영함으로써 시스템의 효율을 높임
- 데이터의 입출력이 이루어지는 동안 CPU가 다른 작업을 할 수 있음
- 인터럽트 : 입출력 관리자가 CPU에 보내는 완료 신호
- 인터럽트 번호
- 많은 주변장치 중 어떤 것의 작업이 끝났는지를 CPU에 알려주기 위해 사용하는 번호
- 윈도우 운영체제에서는 IRQ라 부름
- 인터럽트 벡터
- 여러 개의 입출력 작업을 한꺼번에 처리하기 위해 여러 개의 인터럽트를 하나의 배열로 만든 것
- 인터럽트 방식의 동작 과정
- CPU가 입출력 관리자에게 입출력 명령을 보낸다.
- 입출력 관리자는 입출력 명령을 실행한다.
- 입출력이 완료되면 입출력 관리자는 완료 신호를 CPU에 보낸다.
직접 메모리 접근
직접 메모리 접근(Direct Memory Access; DMA)
- 입출력 관리자가 CPU의 허락 없이 메모리에 접근할 수 있는 권한
- 메모리는 CPU 작업 공간이지만, 데이터 전송을 지시받은 입출력 관리자는 직접 메모리 접근 권한이 있어야만 작업을 처리할 수 있음
멀티 프로세싱
멀티코어 시스템
- 멀티 프로세서 시스템(multi processor system)
- 컴퓨터의 성능을 높이기 위해 프로세서를 여러 개 설치하여 사용하는 시스템
- 프로세서마다 레지스터와 캐시를 가지며, 모든 프로세서가 시스템 버스를 통하여 메인메모리를 공유
- 장점: 많은 작업을 동시에 실행시킬 수 있음
- 멀티코어(multi-core) 시스템
- 기존 시스템을 유지한 채 멀티 프로세싱을 할 수 있게 하는 시스템
- 하나의 칩(chip)에 CPU의 핵심이 되는 코어(core)를 여러 개 만들어 여러 작업을 동시에 처리
- 듀얼코어(dual core)는 CPU의 주요 기능을 담당하는 코어가 2개, 쿼드코어(quad core)는 4개
CPU 멀티 스레드
- 명령어 병렬 처리(instruction parallel processing)
- 하나의 코어에서 여러 개의 명령어를 동시에 처리하는 것
- CPU 멀티스레드(multithread)
- 여러 개의 스레드를 동시에 처리하는 방법
- 스레드(thread)란 CPU가 처리할 수 있는 작업의 단위
- 현대의 CPU
- 하나의 칩에 멀티코어와 명령어 병렬 처리 기능을 한꺼번에 구현
- 코어가 4개이지만 명령어 병렬 처리로 논리적인 코어의 수가 8개처럼 보임
- CPU 관련 통용 법칙
① 무어의 법칙(Moore’s law)- CPU 속도가 24개월마다 2배 빨라진다는 법칙
- 요즘에는 CPU 처리 속도를 올리는 대신 멀티코어를 장착해 CPU를 여러 개 사용하는 것과 같은 효과를 얻음
- 하나의 코어에서 여러 개의 명령어를 동시에 실행하는 멀티스레드 기술도 많이 사용
- 주변장치의 향상 없이 CPU 속도를 2GHz에서 4GHz로 늘리더라도 컴퓨터 성능이 2배 빨라지지는 않는다는 법칙
- CPU 속도를 올려도 메모리를 비롯한 주변장치가 CPU 발전 속도를 따라가지 못해 컴퓨터의 전반적인 성능은 CPU 성능 향상에 못미침
- 싱글코어 대신 듀얼코어를 사용하더라도 CPU 내 다른 부품의 병목 현상으로 CPU 성능이 2배가 되지 않음
728x90
반응형
'운영체제' 카테고리의 다른 글
4장 CPU 스케줄링 (1) | 2024.01.10 |
---|---|
3장 프로세스와 스레드 (0) | 2024.01.10 |
1장 운영체제의 개요 (1) | 2024.01.10 |
12장 네트워크와 분산 시스템 (1) | 2023.06.07 |
11장 파일 시스템 (0) | 2023.06.07 |