CS 14

[CS] 운영체제의 핵심인 커널과 시스템 콜

운영체제의 핵심, 커널 Application과 컴퓨터 부품간 연결 Apllication 실행에 필요한 여러가지 핵심 서비스 제공 (리소스 접근, 관리, 보안 등) 커널 서비스 `프로세스 관리` - 실행중인 프로그램 = 프로세스 라 하는데요. 작업 관리자를 통해 실행중인 프로그램을 확인할 수 있습니다. - 다양한 프로세스를 관리합니다. (IO 주로 사용하는 프로세스, CPU만 사용하는 프로세스, 당장 실행가능한 프로세스, 당장 실행 불가능 프로세스 등) `리소스 접근 및 할당` - 프로세스에 필요한 리소스 할당 CPU : CPU 스케쥴링에 따라 관리 메모리 : 동적 메모리할당, 가상메모리 할당 등 (자세한 내용은 향후 정리 예정) 입출력장치 : 인터럽트 서비스 루틴 제공 (하드웨어 인터럽트 요청시) `파일..

CS 2024.04.20

[CS] 운영체제 개념과 학습 이유

대표적인 운영체제 PC : 윈도우, macOS, 리눅스 스마트폰 : 안드로이드, iOS 개념 실행할 프로그램에 필요한 리소스를 할당하고, 응용프로그램(Application)이 올바르게 실행될 수 있도록 돕는다 메모리의 `커널(kernel) ` 공간 사용 역할 `리소스 할당 및 관리` - Application과 하드웨어 장치 간의 필요한 리소스 할당 및 관리 - 예) 두개의 프로그램이 동시에 프린터 출력 요청 시 : A에서 먼저 프린터 사용하게 하고 B는 대기. A종료후 B출력 `메모리 공간 관리` - 실행될 Application을 메모리의 사용자 영역에 로딩하고, 더이상 실행되지 않는 Application은 삭제함 운영체제 왜 필요한가? 일반적으로 운영체제 관리하, 개발자는 효율적으로 개발할 수 있는데요..

CS 2024.04.20

[CS] 캐시 메모리 특징 및 동작원리

캐시메모리 등장 배경 1. CPU의 연산속도가 CPU가 메모리에 접근하는 속도보다 빠른 문제 2. 용량과 비용 문제 - CPU에 가까울수록 메모리 접근 속도는 빠르지만, 용량은 적고, 가격은 비싸짐 이러한 두가지 문제점을 해결하기 위해 등장한게 `캐시메모리`입니다. 캐시 메모리 CPU와 메모리 사이에 위치하면서 메모리의 데이터를 미리 복사하여 임시저장 메모리에 접근하는 속도가 빠르다 레지스터보다는 용량이 크다 출처 컴퓨터 내부 여러개의 캐시 메모리를 살펴보면 L1, L2 : CPU 내부에 존재하는 캐시 메모리 L3 : CPU 외부 속도 : L1 > L2 > L3 용량 : L3 > L2 > L1 캐시메모리는 CPU가 메모리로부터 가져올 데이터를 어떻게 예측하는걸까? `참조 지역성의 원리`에 입각하여 캐시메..

CS 2024.04.19

[CS] 메모리 주소 체계와 MMU

실제 메모리 주소 체계는 2가지로 구분할 수 있습니다. 1. 물리주소 2. 논리주소 주소 체계를 구분하는 이유? 프로그램이 실행되고 삭제되면서 주소가 달라지기 마련입니다. 심지어 같은 프로그램을 실행할때, 오늘 실행한 주소값과 내일 실행한 주소값이 다를 수 있습니다. 주소 체계 `물리 주소` : 메모리 입장에서 하드웨어상 주소. `논리 주소` : CPU와 실행 중인 프로그램 입장에서 바라본 주소. 모든 실행 중인 프로그램의 0번지부터 시작함 논리주소 측면에서 프로그램1, 프로그램2는 0부터 시작하는 자신만의 논리주소를 가질 수 있습니다. 그리고 CPU는 해당 논리주소를 받아들이고, 해석하고, 연산합니다. 다만, 실제 메모리에 접근하기 위해서 물리주소로 변환해야 하는데 이때 MMU 개념이 필요합니다. MM..

CS 2024.04.17

[CS] 우리가 메모리라고 부르는 RAM과 종류

우리가 실행하는 대부분의 프로그램 은 `RAM`에 저장되어 있고, 일반적으로 메모리라고 부릅니다. 주기억 장치는 크게 RAM과 ROM으로 구분할 수 있습니다. RAM Random Access Memory의 약자로, 프로그램을 실행하거나 데이터를 처리하는 동안 임시로 필요한 정보를 저장하는 공간 `휘발성 메모리` : 전원을 끄면 RAM 저장된 내용(명령어+데이터)이 모두 날아감 크기 : 기가바이트(Gigabyte, GB) RAM 용량클수록 많은 프로그램을 동시에 실행할 수 있음 구분 주기억장치 (RAM) 보조기억장치 (SSD, HDD 등) 전원 종료시 메모리 휘발성 비휘발성 CPU 접근 여부 O X 저장되는 데이터 특성 실행할 대상 보관할 대상 RAM의 종류 DRAM(Dynamic RAM) : 데이터의 크..

CS 2024.04.17

[CS] 명령어와 파이프라이닝 간 함의 : CISC, RISC

2024.04.15 - [CS] - [CS] 효율적인 명령어 분배 : 명령어 파이프라인 명령어와 파이프라이닝 간 함의 모든 CPU가 이해할 수 있는 명령어가 똑같지 않고, CPU가 읽고 해석하고 실행하기에 최적화되지 않기도 합니다. 그래서 효율적으로 동작할 수 있게 즉, 파이프라이닝에 최적화된 명령어로 설계할 수 있어야 하는데요. ISA `ISA` : Instruction Set Architecture의 줄임말로, CPU가 이해할 수 있는 명령어들의 집합 구조 (= `CPU 언어`) CPU제조사마다 ISA 설계 원칙이 다릅니다. (Intel Vs. ARM) ISA가 다르면 1) CPU끼리 서로의 명령어를 이해할 수 없습니다. 2) HW 구조도 달라질 수 있습니다. → 명령어를 해석하는 제어장치 로직, 사..

CS 2024.04.15

[CS] 효율적인 명령어 분배 : 명령어 파이프라인

효율적인 명령어 분배 클럭속도, 멀티코어, 멀티스레드 뿐만 아니라, 명령어를 효율적으로 분배하여 CPU 동작간 불필요한 loss 줄여 성능을 높이는 방법 중 하나입니다. 이를 위해서 명령어 병렬 처리기법에 대해 알아볼 필요가 있습니다. 명령어 파이프라인 `슈퍼스칼라` : CPU 내부에 여러개의 명령어라인을 포함한 구조 (순차적 처리) 명령어 파이프라이닝 명령어를 순차적으로 진행하되, 겹치는 부분이 없게하여 동시에 처리 가능 장점 : 효율적 비순차적 명령어 처리 CPU 성능 향상에 크게 기여, 대부분 CPU가 차용함 데이터 의존성과 무관할 경우, 순서를 바꿔 실행함으로써 명령어 파이프라인이 멈추는 것을 방지하는 기법 명령어와 데이터간 의존관계를 잘 파악해야 합니다. 위 그림 기준, 살펴보겠습니다. M3는 ..

CS 2024.04.15

[CS] CPU 성능과 연관된 용어 : 클럭, 코어, 스레드

왜 해당 정보들을 알아야할까요? 컴퓨터 성능을 높이기 위해선 CPU 설계가 중요하고, 제목의 용어들은 CPU 사양과 밀접한 관련이 있습니다.CPU 구매자 입장에서 다나와 사이트만 검색해봐도 어떤 용어가 중요한지 한눈에 파악 가능합니다. 클럭 일반적으로 클럭 신호에 컴퓨터 부품들이 동작을 합니다. 그래서 클럭속도 = CPU 동작 속도로 간주되기도 합니다. (참조) 단위 : Hz 다만, 클럭속도'만' 빠르게 한다고 해서 CPU 성능이 기하급수적으로 빨라지진 않습니다. (발열과 같은 트레이드오프가 생길 수 있음) CPU 클럭속도 확인 (출처) 인텔 i7 기준, CPU 클럭 속도는 아래와 같습니다. 고성능을 요구하는 시점에 클럭 속도를 높이고, 아닐땐 낮추는 등 유연하게 동작을 합니다. 기본 클럭(Base) :..

CS 2024.04.14

[CS] 실행 흐름을 파악할 수 있는 레지스터의 종류

레지스터가 중요한 이유 CPU와 메모리 간, 데이터/명령어 송수신할때 반드시 `레지스터`에 저장됨 레지스터의 값만 잘 트래킹해도 프로그램 실행 흐름을 파악할 수 있음 레지스터 종류 프로그램 카운터(`PC`) : 메모리에서 가져올 명령어의 주소 명령어 레지스터 : 메모리에서 읽어들인 명령어를 저장 → 제어장치가 명령어 레지스터의 명령어를 해석하여, 제어 신호를 발생시킴 메모리 주소 레지스터(`MAR`) : 메모리의 주소를 저장 (@주소 버스) 메모리 버퍼 레지스터(`MBR` or `MDR`) : 메모리와 주고받을 값을 저장 (@데이터 버스) 범용 레지스터 : 메모리 주소와 데이터 모두를 저장 (MAR + MBR 모두 커버) 플래그 레지스터 : CPU 상태에 대한 부가적인 정보 저장 스택 포인터(`SC`) ..

CS 2024.04.14

[CS] 명령어 구조 알아보기

명령어 구조 `연산코드` : 연산자 (명령어가 수행해야할 연산) `오퍼랜드` : 피연산자 (연산에 사용될 데이터 또는 데이터가 저장된 메모리 주소값) 연산코드 (operation code) 오퍼랜드 (operand) 더하기 숫자 120 숫자 100 저장하기 숫자 20 메모리주소 xx 연산코드 CPU마다 연산코드가 다른데, 대부분의 CPU가 공통적으로 처리하는 네가지 연산은 아래와 같습니다. 산술/논리 연산 : ADD, SUBSTACT, DIVIDE, OR, AND, NOT, COMPARE(true or false) 제어 흐름 변경 : JUMP, CALL, RETURN 데이터 전송 : MOVE, STORE, PUSH, POP, LOAD(FETCH) 입출력 제어 : INPUT(READ), OUTPUT(WRI..

CS 2024.04.12