2025/12/03 운영체제 - 1

김기훈·2025년 12월 3일

TIL

목록 보기
73/194

오늘 학습 내용 ✅

  • 컴퓨터 하드웨어 구조
  • 프로세스와 스레드
  • 스케줄링과 동기화
  • 가상 메모리 관리
  • 파일 시스템

시작전 확인

- 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가 원하는 바를 메모리에 전달하기 위한 버스
    • 어드레스 버스 : 주소값을 이동하기 위해 필요한 버스

인터럽트

  • 프로그램 실행 중 발생할 수 있는 일련의 사건

  • CPU가 어떤 작업을 수행하고 있을 때, 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) 등
    • 비유

      • “작업 지시서: 지금 읽어라, 지금 써라, 대기해라 같은 명령 전달”

새롭게 알게된 내용 ✅

어려운 내용(추가 학습 필요) ✅

오늘 발생한 문제(발생 했다면) ✅

profile
안녕하세요.

0개의 댓글