2022.08.01(Mon)
[TIL] Day67
[SEB FE] Day68
: 컴퓨터가 처리할 수 있는 형태로 데이터와 명령을 받아들이는 물리적 장치
✔️ 키보드, 마우스, 스캐너, 태블릿 …
: 처리된 데이터를 사람이 이해할 수 있는 형태로 출력하는 물리적인 장치
👉 결과를 화면에 보여주는 장치
✔️ 모니터, 프린터
CPU
): 연산을 수행하고, 기억장치에 기억되어 있는 명령어들을 수행하는 컴퓨터 시스템의 핵심 부품
➰ 명령어란? 시스템이 특정 동작을 수행시키는 작은 단위
Op-code
): 각 명령어 실행 동작을 구분하여 표현Operand
): 명령어 실행에 필요한 자료 & 실제 자료 저장 위치 의미🌊 명령 수행 과정
Fetch Instruction
; FI
): 메모리에서 명령 가져옴Decode Instruction
; DI
): 명령 해석Execute Instruction
; EI
): 명령 수행Wrtie Back
; WB
): 수행 결과 기록ALU
)캐시/메모리로부터 읽어온 데이터는 레지스터에 저장 → 산술 연산 수행
CU
)프로그램에 따라 명령과 제어 신호 생성→각종 장치 동작 제어
- 프로그램 계수기(
program counter
): 프로그램 수행 순서 제어- 명령 레지스터(
instruction register
): 현재 수행 중인 명령어 내용 임시 기억- 명령 해독기(
instruction decoder
): 명령 레지스터에 수록된 명령 해독 → 수행될 장치에 제어신호 보냄
🫧 제어 장치 구현 방식
Hardwired | Micro Program |
---|---|
- Harwired Circuit에 의해 제어신호가 생성되도록 HW 구성 - 상태계수기 & PLA(Programmable Logic Array) 회로로 구성 | 발생 가능한 제어 신호들의 조합을 미리 구성 → ROM에 저장 → 필요시 신호 발생시키는 SW 방식 |
고속 처리 & expensive | 속도 ⬇️ & cheap |
RISC에 적용 | CISC에 적용 |
🌊 명령어 처리 방식
RISC
(Reduced Instruction Set Computer
)CISC
(Complex Instruction Set Computer
): CPU 내부 메모리(기억장치)로서 CPU에서 사용하는 데이터를 일시적으로 저장하는 장소
IR
(Instruction Register
): 현재 수행 중에 있는 명령어 부호를 저장하고 있는 레지스터PC
(Program Counter
): 명령이 저장된 메모리 주소를 가리키는 레지스터AC
(Accumulator
): 산술/논리 연산 결과를 임시로 기억하는 레지스터
Memory
): 데이터나 프로그램을 보관하기 위한 기억 장치
- 정보를 저장해 두었다가 필요할 때 읽어들이는 저장소로 사용
- 시스템 활성화된 상태에서 그 값 기억 But, 시스템 OFF → ShutDown (값 지워짐)
RAM
(Random Access Memory)
ROM
(Read Only Memory): 대부분 읽을 수만 있는 장치로 구성되어 있으며, 전원 OFF → 내용 보존
🌊 Memory 성능
액세스
(ns; nano second)리프레시 시간
: 일정 시간마다 메모리를 재충전해줘야 하는 시간메모리 액세스 시간
: 데이터 읽어오라는 명령을 받고 ~ 데이터를 읽기 시작하기까지의 시간사이클 시간
(리프레시 시간 + 메모리 액세스 시간)주기억 장치를 보조하기 위한 장치
- 기억된 내용을 읽는 속도 Slow But, 대용량 기억 가능
- 현재 사용하지 않는 프로그램 저장
- 시스템 OFF → 기억하고 있는 값 휘발 ❌
자기 디스크
: 원판 표면 철 입자 방향(N/S극)으로 0, 1 표현광 디스크
(Optical disc, OD): 빛의 반사를 이용해 자료를 읽어내는 저장 매체플래시 메모리
: 전자적으로 데이터를 지우고 쓸 수 있는 비휘발성 메모리로 충격에 강하며 휴대용 기기로 사용: 메인 메모리(slow)와 CPU(fast) 간의 데이터 속도 향상을 위한 중간 버퍼 역할
🌊 캐시 메모리 성능 결정 요소
Hit Ratio율
⬆️ → 캐시 성능에 영향Cache Hit
: 필요 데이터가 캐시 메모리 내에 들어와 있는 경우
Cache Miss
: 접근하고자 하는 데이터가 없을 경우
👉 Hit Ratio
: 원하는 데이터가 캐시에 있을 확률
요소 | 내용 |
---|---|
Cache 크기 | 캐시 메모리 size가 크면 → Hit Ratio율과 반비례 |
인출 방식 (Fetch Algorithm) | - 요구 인출(Demand Fetch): 필요시 요구하여 인출하는 방식 - 선 인출(Pro-Fetch): 예상되는 데이터를 미리 인출하는 방식 |
쓰기 정책 (Wrtie Policy) | - Write-Through: 주기억 장치와 캐시에 동시에 쓰는 방식. 캐시와 메모리 내용 항상 일치 (구성 방법 단순) - Write-Back: 데이터 변경만 캐시에 기록하는 방식 (복잡) |
교체(Replace) 알고리즘 | Cache Miss 발생시 기존 메모리와 교체하는 방식 ex. FIFO, LRU, Random, Optimal Belady’s MIN … |
사상(Mapping) 기법 | 주기억장치 블록을 적재할 캐시 내의 위치 지정 방법 ex. direct, associative, set associative maaping … |
🌊 OS 기능
시스템 자원 관리
응용 프로그램 관리: 응용 프로그램이 실행되고, 시스템 자원을 사용할 수 있도록 권한 & 사용자 관리
➰ 응용 프로그램
: 운영체제를 통해 컴퓨터에게 일을 시키는 것
→ 컴퓨터 조작 가능 권한을 운영체제로부터 부여받아야 함 → 기능 이용 가능
➰ System Call
: 응용 프로그램이 시스템 자원을 사용할 수 있도록, 운영체제 차원에서 다양한 함수를 제공하는 것
스케줄링
: 어떤 자원을 누가, 언제, 어떤 방식으로 사용할지 결정해주는 것: 프로그램이 실행 중인 상태로 CPU가 해당 명령어를 하나씩 수행하고 있는 상태
👉 실행 중인 하나의 애플리케이션
✋ 크롬 브라우저 2개 실행 → 2개 프로세스 생성 즉, 하나 애플리케이션이 다중 프로세스 생성하기도 함
유저 메모리 영역 관리
(Virtual Address Descriptors)Handle Table
독립적인 메모리 공간
자원 소유 단위
: 해당 프로세스가 접근하고자 하는 파일, I/O 장치들에 대해서 프로세서 단위로 할당받아 관리되어야 함디스패칭 단위
= Thread
: 한 프로그램이 운영체제로부터 CPU 자원을 일정 기간동안 할당받아 명령어를 실행하는 것Run
): 프로세스가 프로세서를 차지하여 서비스를 받고 있는 상태Ready
): 실행될 수 있도록 준비되는 상태Waiting
): CPU 사용이 아닌 입출력을 기다리는 상태Processor
vs Process
🫧 Processor
CPU
의미🫧 Process
: 특정 목적을 수행하기 위해 나열된 작업 목록을 의미
👉 메모리에 적재되어 프로세서에 의해 실행 중인 프로그램
: CPU를 통해서 명령어가 수행되는 객체 단위
✋ 하나의 프로세스 내에는 반드시 1개 이상의 스레드 존재! → 같은 프로세스에 있는 자원 & 상태 공유
가상 CPU
: 인터프리터, 컴파일러에 의해 내부적으로 처리되는 가상 코드수행 코드
: Thread Class에 구현되어 있는 run()
Method code처리 데이터
: Thread에서 처리하는 데이터call stack
존재call stack
: 실행 중인 서브루틴을 저장하는 자료 구조: 단일 스레드만으로 직렬 처리하는 프로그래밍 방법 - ex. JS
👉 한 프로세스는 오직 한 프로세서에서만 수행 가능
👍 Single Thread 장점
🫧
문맥 교환
(Context switching
)
- 여러 개의 프로세스가 하나의 프로세서를 공유할 때 발생하는 작업
- 다른 Task(
Process
,Thread
)가 시작할 수 있도록 이미 실행 중인 Task를 멈추는 것
👎 Single Thread 단점
Cluster
모듈 이용 → 여러 프로세스 사용 가능: 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것
👉 여러 개의 CPU를 사용하여 여러 프로세스를 동시에 수행하는 것을 의미
👍 Multi-Thread 장점
👎 Multi-Thread 단점
시분할
Concurrency
(동시성, 병행성): 여러 개의 스레드가 시분할 방식으로 동시에 수행되는 것처럼 착각Parallelism
(병렬성): 멀티 코어 환경에서 여러 개의 스레드가 실제로 동시에 수행: 유니코드 협회가 제정하는 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준
✨ 인코딩(부호화): 어떤 문자나 기호를 컴퓨터가 이용할 수 있는 신호로 만드는 것
🫧 문자열 세트 / 문자셋(charset): 인코딩 & 디코딩 기준
: 영문 알파벳을 사용하는 대표적인 문자 인코딩 (7bit
로 모든 영어 알파벳 표현)
✋ 유니코드는 ASCII를 확장한 형태
: 가변 길이 인코딩으로써, Byte
순서 고정
: 코드 그대로 Byte
로 표현 가능, Byte
순서 다양
16bits
(2bytes
)로 표현2byte
: 웹 상에서 디지털 이미지를 저장하는 데에 가장 많이 쓰이는 이미지 파일 포맷 형식 (= 래스터(점 방식))
: 이미지를 수학적인 공식으로 표현
Bitmap(Raster) | Vector | |
---|---|---|
기반 기술 | pixel 기반 | 수학적으로 계산된 Shape 기반 |
특징 | 색상 조합이 다양한 이미지에 적합 | 로고, 일러스트와 같이 제품에 적용되는 이미지에 적합 |
확대 | 확대 적합 ❌ | 품질 저하 없이 모든 크기로 확대 가능 해상도 영향 ❌ |
크기에 따른 파일 용량 | 큰 크기 이미지 → 큰 파일 사이즈 | 큰 크기 벡터 그래픽 → 작은 파일 사이즈 유지 가능 |
상호 변환 | 백터로 변환하는데 오래걸림 | 쉽게 래스터 이미지로 변환 가능 |
파일 포맷 | jpg, gif, png, bmp, psd | svg, ai |
: 프로그램에서 더 이상 사용하지 않는 메모리를 자동으로 정리하는 것
ㄴ ex.Java
,C#
,JavaScript
트레이싱
: 한 객체에 flag를 두고, 가비지 컬렉션 사이클마다 flag에 표시 후 삭제하는 mark and sweep
방법in-use flag
를 두고, 사이클마다 메모리 관리자가 모든 객체를 추적해서 사용 중인지 아닌지를 표시(mark
). 그 후 표시되지 않은 객체를 삭제(sweep
)하는 단계를 통해 메모리를 해제레퍼런스 카운팅
: 한 객체를 참조하는 변수의 수를 추적하는 방법: 많은 시간이나 연산이 필요한 작업의 결과를 저장해두는 것
👉 일시적인 데이터를 저장하기 위한 목적으로 존재하는 고속의 데이터 저장 공간