일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 스프링부트 도커 배포
- 자바
- lv0
- 스프링부트 도커
- COS Pro
- index of
- 프로그래머스
- 이진수 변환
- Programmers
- lv2
- 클라이언트
- 큐
- 문자열
- java
- Lv1
- SWEA
- StringTokenizer
- 오름차순 정렬
- 프로그래머스 문자열 정렬
- Queue
- 백준 N과 M 자바
- 스프링부트 도커로 배포
- Stack
- 삼각형의 완성조건
- 프로그래머스 풀이
- 프로그래머스 자바
- 백준
- 스택
- 알고리즘
- 버퍼
- Today
- Total
mun dev
[CS 정리] 2. 컴퓨터의 구조와 성능 향상 본문
■ 하드웨어의 구성
💡 컴퓨터의 구성
- 필수장치: 중앙처리장치, 메인메모리(대부분의 작업이 이루어짐)
- 주변장치: 입력장치, 출력장치, 저장장치
💡 CPU와 메모리
- CPU: 명령어를 해석하여 실행하는 장치로 인간으로 치면 두뇌에 해당
- 메모리: 작업에 필요한 프로그램과 데이터를 저장하는 장소
💡 입출력장치
- 입력장치: 외부의 데이터를 컴퓨터에 입력하는 장치
- 출력장치 : 컴퓨터에서 처리한 결과를 사용자가 원하는 형태로 출력하는 장치
💡 저장장치
- 매모리보다 느리지만 저렴하고 용량이 큼
- 전원의 온·오프와 상관없이 데이터를 영구적으로 저장
- 느린 저장장치를 사용하는 이유는 저장 용량에 비해 가격이 싸기 때문
💡 폰 노이만 구조
- 프로그램은 하드디스크와 같은 저장장치에 담겨 있으나, 폰노이만 구조의 가장 큰 특징은 저장장치에서 바로 실행할 수 없고, 메모리로 가지고 올라와야지만 실행이 가능함
- 모든 프로그램은 메모리에 올라와야 실행할 수 있다
💡 하드웨어 사양 관련 용어
▶ 시스템 버스
메모리와 주변장치를 연결하는 버스로, FSB(Front-Side Bus) 전면 버스라고 함
▶ CPU 내부 버스
CPU내부에 있는 장치를 연결하는 버스로. BSB(Back Side Bus)후면 버스라고 함
▶ CPU와 메모리의 속도
- CPU는 CPU 내부 버스(BSB)의 속도로 작동하고 메모리는 시스템 버스(FSB)의 속도로 작동
- 두 버스의 속도차이로 인하여 작업이 지연되며, 이 문제를 캐쉬로 해결
■ CPU의 구성과 동작
💡 산술논리 연산장치
데이터의 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 산술 연산과 AND, OR과 같은 논리 연산을 수행
💡 제어장치
CPU에서 작업을 지시
💡 레지스터
CPU내에 데이터를 임시로 보관
💡 주요 레지스터의 종류와 특징
레지스터 | 특징 | |
사용자 가시 레지스터 | 데이터레지스터(DR) | CPU가 명령어를 처리하는데 필요한 일반 데이터를 임시로 저장하는 범용 레지스터 |
주소 레지스터(AR) | 데이터 또는 명령어가 저장된 메모리의 주소를 저장 | |
사용자 불가시 레지스터 | 프로그램 카운터 (PC) | 다음에 실행할 명령어의 위치정보( 코드의 행 번호, 메모리 주소)를 저장 |
명령어 레지스터(IR) | 현재 실행 중인 명령어를 저장 | |
메모리 주소 레지스터(MAR) | 메모리 관리자가 접근해야 할 메모리의 주소를 저장 | |
메모리 버퍼 레지스터(MBR) | 메모리 관리자가 메모리에서 가져온 데이터를 임시로 저장 | |
프로그램 상태 레지스터(PSR) | 연산결과(양수, 음수)를 저장 |
💡 주요 레지스터의 종류와 특징
버스 | 특징 |
제어버스 | 제어장치와 연결된 버스로, CPU가 메모리와 주변장치에 제어신호를 보내기 위해 사용한다. 매모라와 주변장치에서도 작업이 완료되거나 오류가 발생하면 제어신호를 보내기 때문에 양방향이다 . |
주소버스 | 메모리 주소 레지스터와 연결된 버스로, 메모리나 주변장치에 데이터를 읽거나 쓸 때 위치 정보를 보내기 위해 사용하며 단방향이다. |
데이터 버스 | 메모리 버퍼 레지스터와 연결된 버스로, 데이터의 이동이 양방향으로 이루어진다. |
■ 메모리의 종류와 부팅
💡 휘발성 메모리
▶ DRAM(Dynamic RAM)
저장된 0과 1의 데이터가 일정 시간이 지나면 사라지므로 일정시간 마다 다시 재생시켜야함
▶ SRAM(Static RAM)
전력이 공급되는 동안에는 데이터를 보관할 수 있어 재생할 필요가 없음
▶ SDRAM(Synchronous Dynamic Random Access Memory)
클록틱(펄스)가 발생할 때 마다 데이터를 저장하는 동기 DRAM
💡 비휘발성 메모리
▶플래시 메모리(Flash Memory)
디지털 카메라, MP3 플레이어, USB 드라이버 같이 전력이 없어도 데이터를 보관하는 저장장치
▶ SSD
가격이 비싸지만 빠른 데이터 접근 속도, 저전력, 내구성 때문에 많이 사용
💡 롬의 종류
▶ 마스크 롬 (Mask ROM)
데이터를 지우거나 쓸 수 없음
▶ PROM(Programmable ROM)
전용 기계를 이용하여 데이터를 한 번만 저장할 수 있음
▶ EPROM(Erasable Programmable ROM)
데이터를 여러 번 쓰고 지울 수 있음
■ 버퍼
- 속도에 차이가 있는 두 장치 사이에서 그 차이를 완화하는 역할을 하는 장치
- 일정량의 데이터를 모아 옮김으로써 속도의 차이를 완화
💡 스풀
- CPU와 입출력장치가 독립적으로 동작하도록 고안된 소프트웨어적인 버퍼
■ 캐시
- 매모리와 CPU간의 속도 차이(BSB와 FSB의 속도 차이)를 완화하기 위해 메모리의 데이터를 미리 가져와 저장해두는 임시장소
- 필요한 데이터를 모아 한꺼번에 전달하는 버퍼의 일종으로 CPU가 앞으로 사용할 것으로 예상되는 데이터를 미리 가져다 놓음
💡 즉시쓰기(Write through)
- 캐시에 있는 데이터가 변경되면 이를 즉시 메모리에 반영하는 방식
- 메모리와의 빈번한 데이터 전송으로 인해 성능이 느려짐
- 메모리의 최신 값이 항상 유지되기 때문에 갑작스러운 정전에도 데이터를 잃어버리지 않음
💡 지연쓰기(Write back)
- 캐시에 있는 데이터가 변경되면 이를 즉시 메모리에 반영하는 것이 아니라 변경된 내용을 모아서 주기적으로 반영하는 방식
- 카피백이라고도 함
- 메모리와 데이터 전송 횟수가 줄어들어 시스템의 성능을 향상할 수 있음
■ 저장장치의 계층 구조
💡 개념
- 속도가 빠르고 값이 비싼 저장장치를 CPU 가까운 쪽에 두고, 값이 싸고 용량이 큰 저장장치를 반대쪽에 배치하여 적당한 가격으로 빠른 속도와 큰 용량을 동시에 얻는 방법
💡 이점
- CPU와 가까운 쪽에 레지스터나 캐시를 배치하여 CPU가 작업을 빨리 진행할 수 있음
- 메모리에서 작업한 내용을 하드 디스크와 같이 저렴하고 용량이 큰 저장장치에 영구적으로 저장할 수 있음
💡 저장장치의 계층구조
■ 인터럽트
💡 폴링방식(polling)
- CPU가 직접 입출력 장치에서 데이터를 가져오거나 내보내는 방식
- CPU 입출력장치의 상태를 주기적으로 검사하여 일정한 조건을 만족 할 때 데이터를 처리
- CPU가 명령어 해석과 실행이라는 본래 역할 외에 모든 입출력까지 관여해야 하므로 작업 효율이 떨어짐
💡 인터럽트 방식(Interrupt)
- 입출력 관리자가 대신 입출력을 해주는 방식
- CPU의 작업과 저장장치의 데이터 이동을 독립적으로 운영함으로써 시스템의 효율을 높임
- 데이터의 입출력이 이루어지는 동안 CPU가 다른 작업을 할 수 있음
💡 직접 메모리 접근(Direct Memory Access, DMA)
- 입출력 관리자가 CPU의 허락 없이 메모리에 접근할 수 있는 권한
- 메모리는 CPU의 작업 공간이지만, 데이터 전송을 지시받은 입출력 관리자는 직접 메모리 접근 권한이 있어야만 작업을 처리할 수 있음
💡 메모리 매핑 입출력(Memory Mapped I/O, MMIO)
- 메모리의 일정 공간을 입출력에 할당하는 기법
■ 병렬 처리
💡 병렬 처리(Parallel processing)
- 동시에 여러 개의 명령을 처리하여 작업의 능률을 올리는 방식
▶ 파이프라인 기법
하나의 코어에 여러 개의 스레드(thread)를 이용하는 방식
▶ 슈퍼스칼라 기법
듀얼 코어 CPU를 이용해 2개의 작업을 동시에 처리하는 방식
'CS > 운영체제' 카테고리의 다른 글
[얄팍한 코딩사전] - 프로세스는 뭐고 스레드는 뭔가요? (0) | 2023.02.23 |
---|---|
[우아한 테크] - 10분 테크톡 배럴의 가상 메모리 (0) | 2023.02.23 |
[CS 정리]1. 운영체제 개요 (0) | 2022.08.26 |