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)하는 단계를 통해 메모리를 해제레퍼런스 카운팅: 한 객체를 참조하는 변수의 수를 추적하는 방법: 많은 시간이나 연산이 필요한 작업의 결과를 저장해두는 것
👉 일시적인 데이터를 저장하기 위한 목적으로 존재하는 고속의 데이터 저장 공간