오늘 학습 내용 ✅
- 컴퓨터 하드웨어 구조
- 프로세스와 스레드
- 스케줄링과 동기화
- 가상 메모리 관리
- 파일 시스템
시작전 확인
- 1. nvm 설치 (설치 후 터미널 껏다 켜기)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh
- 2. Node.js 설치
nvm install --lts
- 3. 버전 확인
node -v / npm -v
1강
운영체제와 컴퓨터 하드웨어
- 컴퓨터에 포함된 CPU나 메모리, 입출력 기기 등이 사용자에 기대에 맞게 역할을
- 수행할 수 있도록 도와주는 창구역할을 하는 시스템 소프트웨어
- 이러한 역할 때문에 운영체제를 가리켜 '플랫폼 스프트웨어'라고 부르기도 함
- 사용 기기나 목적에 따라 필요한 운영체제의 유형이 다르기 때문에 운영체제의 종류 또한 다양함
대표적인 역할
- 프로세스 관리
- 메모리 관리
- 메모리의 역할: 파일이나 프로그램 데이터 등을 저장
- 파일 시스템 관리
구조

시스템 콜(System Call)
역할: 프로그램이 OS에게 정식으로 부탁하는 통로
- 사용자 프로그램은 직접 CPU·메모리·디스크 같은 하드웨어를 건드릴 수 없음
- 보안 때문에 운영체제만 접근 가능
- 그래서 프로그램이 뭔가 작업하려면 OS에게 "해줘!"라는 요청 필요
예시
- 파일 열기 →
open() 시스템 콜 / 화면 출력 → write() 시스템 콜
- 프로세스 생성 →
fork() 시스템 콜 / 네트워크로 데이터 보내기 → send() 시스템 콜
커널(Kernel)
역할: 운영체제의 핵심 두뇌
- 시스템 콜을 받아서 실제로 처리함
- CPU 스케줄링, 메모리 관리, 파일 시스템 운영, 네트워크 관리 등
특징
- OS 중 가장 중요한 부분, 항상 메모리에 상주
- 높은 권한(커널 모드)에서 실행 → 모든 자원 접근 가능
드라이버(Device Driver)
역할: 커널과 하드웨어를 연결하는 통역사
- 커널은 수천 종류의 하드웨어 세부 명령을 알 수 없음
- 그래서 각 하드웨어 제조사가 만든 드라이버가 중간에서 번역해줌
- 즉, “커널이 요청한 작업을 실제 기계 명령으로 바꿔주는 통역사”
예시
- 그래픽 카드 드라이버 (NVIDIA) | 키보드/마우스 드라이버
- 프린터 드라이버 | SSD/NVMe 드라이버
컴퓨터 하드웨어의 구성

cpu 구성

ALU(Arithmetic and logical unit)
- 산술 연산(+ / -) / 논리연산(and / or)
CU(Control unit)
- cpu로 들어온 명령(11000111011000)을 해석
- 해석한 명령을 ALU에게 보냄
Register Set
- CPU내에 존재하는 작은 메모리 공간
- CPU내부에서 임시적으로 데이터를 보관하는 장소
주요 레지스터 종류
- 프로그램 카운터 (PC(Program Counter)) → 다음 실행할 명령어의 주소
- 인스트럭션 레지스터 (IR(Instruction Register)) → 현재 실행 중인 명령어
- 어드레스 레지스터 (Address Register) → 메모리 주소를 저장하는 레지스터
- 버퍼 레지스터 (Buffer Register)
- 메모리에서 읽어온 데이터나, 메모리에 보낼 데이터를 잠시 저장하는 레지스터
- 플래그 레지스터 (Flag Register) → CPU 연산 결과의 상태를 나타내는 레지스터
- 스택 포인터 (SP(Stack Pointer)) → 스택의 최상단
클럭 펄스(Clock Pulse)

- CPU에 구성하는 요소요소에 제공되는 규칙적인 신호 (CPU는 클럭펄스에 맞춰서 일을 함)
- 컴퓨터의 동작은 클럭 펄스에 기반을 둔 채 이루어 짐
프로그램의 실행과정
-
폰 노이만 구조

-
실행과정
- 프로그램 코드 → 어셈블리 코드 → 바이너리 코드


- 데이터의 이동은 시스템 버스를 통함
- 데이터 버스 : 데이터 이동을 위해 필요한 버스
- 컨트롤 버스 : CPU가 원하는 바를 메모리에 전달하기 위한 버스
- 어드레스 버스 : 주소값을 이동하기 위해 필요한 버스

인터럽트
과제 🔥
1. CPU의 구성요소 ALU, CU, 그리고 레지스터 각각의 역할을 간략하게 정리
ALU (Arithmetic Logic Unit) — 산술·논리 연산 장치
- CPU에서 계산을 실제로 수행하는 장치
- 덧셈, 뺄셈, 곱셈, 나눗셈 같은 산술 연산
- AND, OR, NOT, XOR 같은 논리 연산
- 두 값 비교 (<, >, == 같은 조건비교)
CU (Control Unit) — 제어 장치
- CPU의 지휘자·감독관 → CPU 전체를 조율하는 컨트롤 센터
- 명령어를 해석(Instruction Decode)
- 어디에서 데이터를 가져올지 지시
- ALU에게 언제 계산할지 지시
- 레지스터·메모리·입출력 장치들에게 “이거 해” 라고 명령
- 하는 일 순서 예시
- 메모리에서 명령어 1개 가져옴 (Fetch)
- 명령어 의미 해석 (Decode)
- 필요한 데이터 로드 → ALU 동작 지시 (Execute)
- 결과를 레지스터 또는 메모리에 저장
레지스터(Register)
- CPU 내부의 초고속 저장공간 (메모리 중 가장 빠름)
- 현재 처리할 데이터 임시 저장
- 주소, 명령어, 연산 결과 등을 저장
- RAM보다 훨씬 작고 훨씬 빠름
2. 메인 메모리(주기억장치)와 보조기억장치의 차이
메인 메모리(Main Memory, RAM)
역할
- CPU가 지금 당장 실행 중인 프로그램과 데이터를 저장하는 공간
- CPU가 직접 접근 가능 → 매우 빠름
- 현재 돌아가는 프로그램이 여기에 올라감 (메모리 적재)
특징
- 속도: 매우 빠름 / 용량: 8GB ~ 32GB / 가격: 같은 용량 기준 비쌈
- 전원 끄면 데이터가 사라짐(휘발성) / CPU와 가장 가까운 실행 공간
예시
- 게임 플레이 중 데이터를 RAM에 올려놓고 CPU가 즉시 사용
- 브라우저 탭을 여러 개 열면 RAM 사용량 증가
- 코드를 실행하면 프로그램이 RAM에 올라와서 작동
보조기억장치(Secondary Storage, SSD/HDD)
역할
- 데이터를 영구 저장하는 저장소
- 프로그램, 사진, 음악, 영상, 문서 등 모든 파일이 저장되는 곳
특징
- 속도: RAM보다 훨씬 느림 / 용량: 수백GB ~ 수TB(큼) / 가격: 같은 용량 기준 저렴함
- 전원을 꺼도 데이터가 남아있음(비휘발성)
- CPU가 직접 접근 불가 → OS가 중간에서 읽어서 RAM으로 올림
예시
- 컴퓨터 켤 때 SSD에서 OS 파일을 읽어서 RAM으로 올림
- 다운로드한 프로그램은 SSD에 저장됨
- 사진, 문서 → SSD/HDD에 저장됨
3. 버스 시스템은 데이터를 주고받기 위한 경로로,
- 데이터의 종류에 따라 세 가지로 구분할 수 있다. 세 가지는 무엇인가?
1) 데이터 버스(Data Bus)
역할
- CPU ↔ 메모리/입출력 장치 사이에서 실제 데이터가 오가는 통로
- 예: 숫자, 문자, 명령 결과값 등 “내용물”이 흐름
특징
- 양방향(bidirectional) → CPU가 메모리로 데이터를 보내기도 하고, 받아오기도 하니까
비유
2) 주소 버스(Address Bus)
역할
- CPU가 어떤 주소의 데이터를 읽거나 쓸 것인지 알려주는 통로
- 메모리 주소, I/O 포트 주소 등 “위치 정보” 전달
특징
- 대부분 단방향(one-way) → CPU가 주소를 정해서 메모리에 보내기만 함
비유
3) 제어 버스(Control Bus)
역할
- 시스템 간 제어 신호나 상태 신호를 전달
- 무엇을 해야 하는지 “명령” 또는 “상태”를 알려줌
주요 제어 신호
- 메모리 읽기(Read) 신호 / 메모리 쓰기(Write) 신호
- 인터럽트 신호 / 버스 요청/승인 신호 / 클록 신호(Clock) 등
비유
- “작업 지시서: 지금 읽어라, 지금 써라, 대기해라 같은 명령 전달”
새롭게 알게된 내용 ✅
어려운 내용(추가 학습 필요) ✅
오늘 발생한 문제(발생 했다면) ✅