[CORE-003][입문] CPU·메모리·저장장치가 맡는 일 이해하기 > IT 기술 공유

본문 바로가기
사이트 내 전체검색

IT 기술 공유

[CORE-003][입문] CPU·메모리·저장장치가 맡는 일 이해하기

페이지 정보

profile_image
작성자 기술팀장
댓글 0건 조회 250회 작성일 26-08-30 06:34

본문

[이번 수업]

컴퓨터가 계산할 때 CPU·메모리·저장장치가 어떻게 일을 나누는지 배웁니다. Python 예제로 계산, 작업 중 데이터, 파일 보존의 차이를 확인합니다.

[선수지식]

CORE-001의 입력·처리·출력과 CORE-002의 비트·바이트를 먼저 읽고 Python 3를 준비하세요.

[학습목표]

1. CPU·메모리·저장장치의 기본 역할을 설명한다.
2. 코어 수, RAM 용량, 저장공간을 서로 바꿔 말하지 않는다.
3. 프로그램의 계산·작업 데이터·파일 보존을 세 장치와 연결한다.

[핵심개념]

CPU는 프로그램의 명령어를 가져와 해석하고 계산·비교·이동 같은 동작을 실행하는 처리 장치입니다. 명령어 집합, 즉 ISA는 소프트웨어가 사용할 수 있는 명령과 레지스터 같은 규칙입니다. 코어는 독립적으로 명령을 가져와 실행할 수 있는 처리 단위이며,

메모리는 실행 중인 코드와 데이터를 CPU가 접근하도록 올려 두는 작업 공간입니다. 보통 PC의 주 메모리는 RAM이며 전원을 끄면 내용이 유지되지 않는 휘발성 메모리입니다.

저장장치는 파일과 운영체제를 전원이 꺼진 뒤에도 보존하는 공간입니다. SSD와 HDD가 대표적입니다. 저장 완료 메시지를 받았어도 장치·운영체제·프로그램의 캐시 정책과 갑작스러운 전원 차단을 고려해야 하므로 중요한 데이터는 백업과 복구 시험이 필요합니다. NVMe는 저장 매체 자체의 이름이 아니라 호스트 소프트웨어가 비휘발성 메모리와 통신하는 인터페이스 규격입니다.

메모리가 부족하다고 SSD를 추가해도 RAM이 직접 늘지는 않으며, 저장공간이 넉넉해도 CPU 계산이 자동으로 빨라지지 않습니다. 병목은 CPU 계산, 메모리 용량·대역폭, 저장장치 입출력 중 어디에서 시간이 걸리는지 측정해 판단합니다.

[따라하기]

roles.py에 다음을 저장하세요. 임시 폴더를 사용하므로 기존 파일을 덮어쓰지 않고 종료할 때 자동 정리됩니다.

from pathlib import Path
from tempfile import TemporaryDirectory

numbers = list(range(10))
calculation = sum(numbers)
memory_data = bytearray(b"nalcoding")

with TemporaryDirectory() as folder:
    path = Path(folder) / "lesson.bin"
    stored = path.write_bytes(memory_data)
    loaded = path.read_bytes()

    print("calculation", calculation)
    print("memory_bytes", len(memory_data))
    print("stored_bytes", stored)
    print("same_data", loaded == memory_data)

Windows는 py roles.py, macOS·Linux는 python3 roles.py로 실행합니다. 예상 결과는 다음과 같습니다.

calculation 45
memory_bytes 9
stored_bytes 9
same_data True

sum 계산은 CPU가 명령을 실행하는 예입니다. numbers와 memory_data는 실행 중 메모리에 있는 객체입니다. len은 데이터 길이이며 Python 객체 전체의 실제 RAM 사용량은 아닙니다. write_bytes는 데이터를 임시 파일에 기록하고 read_bytes는 다시 읽습니다. 세 운영체제 모두 같은 결과가 나지만 임시 폴더의 실제 위치는 다를 수 있습니다.

[흔한 실수]

첫째, 저장공간 부족과 메모리 부족을 같은 문제로 봅니다. 둘째, CPU 사용률이 높다는 이유만으로 무조건 CPU를 교체합니다. 셋째, 파일에 쓰기를 요청한 순간 영구 보존됐다고 생각합니다.

[보안 주의]

예제는 본인 컴퓨터의 임시 폴더에서만 실행하세요. 실제 프로그램에서는 사용자가 준 파일명을 그대로 경로에 붙이지 말고 허용된 폴더 안인지 검사해 경로 이탈을 막습니다. 비밀번호·토큰 같은 비밀정보는 평문 파일이나 로그에 저장하지 않습니다. 파일 권한을 최소화하고 중요한 데이터는 암호화, 별도 백업, 복구 시험을 함께 준비합니다. 출처를 모르는 파일은 읽거나 실행하지 마세요.

[직접 해볼 과제]

코드의 range(10)을 range(1000000)으로 바꾸고 실행 시간을 재세요. 이어 memory_data 크기와 저장할 바이트 수를 각각 늘려 보며 CPU 계산, 메모리, 저장장치 입출력 중 무엇이 변했는지 표로 기록하세요. 본인 소유의 임시 폴더만 사용하고 생성 파일은 정리합니다.

[확인문제]

1. CPU와 주 메모리는 각각 어떤 일을 하나요?
2. SSD 용량을 늘려도 RAM 용량이 직접 늘지 않는 이유는 무엇인가요?
3. 예제에서 memory_data와 lesson.bin은 언제까지 유지되나요?

[다음 학습]

다음 글은 CS-003 함수와 입력·출력입니다. CORE 트랙에서는 CORE-004 문자·이미지·소리가 데이터가 되는 방법으로 이어집니다.

[공식 참고 자료]

RISC-V 비특권 ISA 소개
https://docs.riscv.org/reference/isa/v20260120/unpriv/intro.html

Linux 물리 메모리 모델
https://docs.kernel.org/mm/memory-model.html

NVM Express 기본 규격
https://nvmexpress.org/specification/nvm-express-base-specification/

Python 내장 자료형 bytearray
https://docs.python.org/3/library/stdtypes.html#bytearray

Python pathlib 파일 읽기·쓰기
https://docs.python.org/3/library/pathlib.html#reading-and-writing-files

Python tempfile 임시 파일과 폴더
https://docs.python.org/3/library/tempfile.html

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

회사명 : 회사명 / 대표 : 대표자명
주소 : OO도 OO시 OO구 OO동 123-45
사업자 등록번호 : 123-45-67890
전화 : 02-123-4567 팩스 : 02-123-4568
통신판매업신고번호 : 제 OO구 - 123호
개인정보관리책임자 : 정보책임자명

접속자집계

오늘
1,047
어제
5,103
최대
16,772
전체
772,101
Copyright © 소유하신 도메인. All rights reserved.