운영체제와 컴퓨터, 메모리

박세건·2025년 4월 8일
0
post-thumbnail

운영체제(OS) 정리 🖥️

운영체제는 사용자가 편리하게 컴퓨터를 사용할 수 있도록 소프트웨어를 관리하고, 하드웨어 자원을 효율적으로 배분·제어해 주는 핵심 소프트웨어입니다.


📦 펌웨어(Firmware)

  • 하드웨어와 소프트웨어의 중간에 위치한 저수준 소프트웨어
  • ROM/EEPROM/Flash 등에 저장되어 전원이 꺼져도 유지
  • 일반적으로 추가 애플리케이션 설치 불가
  • 예시:
    • PC의 BIOS/UEFI
    • 라우터·프린터 펌웨어
    • IoT 기기 센서 제어 로직

🎯 운영체제의 주요 역할

  1. CPU 스케줄링 & 프로세스 관리
    • CPU 소유권 분배, 프로세스 생애주기(생성 ▶ 실행 ▶ 대기 ▶ 종료)
  2. 메모리 관리
    • 한정된 RAM을 효율적으로 할당·해제
  3. 디스크·파일 시스템 관리
    • 파일 생성·삭제, 디렉터리 관리, 권한 제어
  4. I/O 디바이스 관리
    • 마우스·키보드·프린터 등 장치 제어, 드라이버 인터페이스 제공

🏗️ 운영체제 구조

사용자 프로그램
├── GUI / CLI
├── 시스템 콜 인터페이스 (Trap)
└── 커널
    ├── 프로세스 스케줄러
    ├── 메모리 매니저
    ├── 파일 시스템
    ├── 네트워크 스택
    └── 디바이스 드라이버
        ├── 디스크 드라이버
        ├── 네트워크 카드 드라이버
        └── 기타 I/O 컨트롤러
하드웨어
  • 시스템 콜: 유저 모드 ↔ 커널 모드 전환을 통해 OS 서비스 요청
  • 드라이버: 하드웨어 제어용 소프트웨어 (예: 디스크 드라이버는 블록 입출력을, 네트워크 드라이버는 패킷 송수신을 담당)

🔄 시스템 콜 원리

  1. 유저 모드에서 I/O 요청 (e.g. read(), write())
  2. 트랩(trap) 발생 → 커널 모드 전환
  3. 시스템 콜 번호/인자 검증 & 핸들러 호출
  4. 커널 내부에서 실제 작업 수행 (파일 읽기, 메모리 할당 등)
  5. 커널 모드 → 유저 모드 복귀
  6. 결과 반환 후 프로그램 로직 계속 실행

포인트: 시스템 콜은 모드 전환(mode switch) 이며, 프로세스 간 컨텍스트 스위칭과는 다릅니다.


💻 컴퓨터의 구성 요소

  • CPU
    • 제어장치(CU), 산술논리연산장치(ALU), 레지스터
    • 명령어 실행의 중심
  • DMA 컨트롤러
    • I/O 장치가 메모리에 직접 접근하도록 지원
    • CPU 부담 경감, 대용량 데이터 전송 최적화
  • 타이머
    • 타임 슬라이스 제어, 프로세스 선점(preemption) 트리거
  • 디바이스 컨트롤러
    • 각 I/O 장치별 작은 “제어 CPU”
  • 메모리 & 저장장치
    • RAM, SSD/HDD 등

⚙️ CPU 연산 처리 과정 (간단 요약)

  1. Fetch: 메모리에서 명령어 & 데이터 로드
  2. Execute: 레지스터의 피연산자를 ALU가 연산
  3. Write Back: 연산 결과를 레지스터(혹은 메모리)에 저장

연산 결과를 레지스터에 저장하면 다음 연산을 빠르게 수행할 수 있고, 메모리에 저장하면 프로그램 상태를 유지합니다.


🛎️ 인터럽트 & 장치 제어

  • 인터럽트(Interrupt): 외부 이벤트(키보드, 타이머 등) 발생 시 CPU에 알림
    • 하드웨어 인터럽트: I/O 장치 신호
    • 소프트웨어 인터럽트(Trap): 시스템 콜, 예외 상황
  • DMA: CPU 개입 없이 메모리 ↔ I/O 전송
  • 타이머: 프로세스 실행 시간 제한, 선점형 스케줄링 지원
  • 디바이스 컨트롤러: 각 장치별 명령 해석·제어·인터럽트 발생

🧠 메모리 구조 및 관리

메모리 계층

레지스터 (가장 빠름, 작음)
  ↓
캐시 L1 → L2 → L3
  ↓
메인 메모리 (RAM)
- DRAM은 옛날 방식, 요즘은 발전된 DDR4SDRAM 사용
  ↓
보조 기억장치 (SSD/HDD, 비휘발성)
  • 계층이 내려갈수록 속도↓ · 용량↑

캐시(Cache)

  • 임시 저장소로 메모리 병목 해소
  • 지역성(Locality) 활용
    • ⏱️ 시간 지역성: 최근에 사용한 데이터를 곧 재사용
    • 📍 공간 지역성: 인접 데이터 접근
  • 히트/미스
    • 히트: 캐시에서 즉시 반환
    • 미스: 다음 레벨(다음 캐시 ▶ 메모리) 접근

캐시 매핑 방식

방식특징장점단점
직접 매핑블록 → 특정 라인구현 단순·속도 빠름충돌↑
전 연관 매핑블록 → 아무 라인충돌 거의 없음비용(비교 회로)↑
집합 연관 매핑세트 내 k‑way절충안k 설정 민감

가상 메모리(Virtual Memory)

  • 한정된 물리 메모리를 추상화해 “매우 큰” 메모리처럼 사용
  • 가상 주소(VA)물리 주소(PA) 변환: MMU + 페이지 테이블
  • TLB: VA→PA 매핑 캐시

메모리 접근 순서

  1. VA 생성 → TLB 조회 (히트/미스)
  2. PA 획득 → 캐시 조회 (L1→L2→L3)
  3. 캐시 미스 → 메인 메모리(DRAM) 접근
  4. (페이지 폴트 시) 디스크 스왑인 → 테이블/​TLB 갱신 → 재실행
  5. 데이터 반환

스레싱(Thrashing)

  • 페이지 폴트 과다 → 스왑 반복 → CPU 유휴↑ → 더 많은 프로세스 할당 → 악순환
  • 해결책
    • 💾 물리 메모리 확장 / SSD 사용
    • 🔄 Working Set: 지역성 기반으로 “필요 페이지 집합” 유지
    • 📈 PFF(Page Fault Frequency): 페이지 폴트 상·하한 기준으로 프레임 동적 조정

📂 메모리 할당

연속 할당 (Contiguous)

  • 고정 분할(Fixed Partitioning)
    • 미리 정해진 크기 파티션에 프로세스 통째로 할당
    • 내부 단편화 발생
  • 가변 분할(Dynamic Partitioning)
    • 빈 영역(hole)에 프로세스 크기만큼 동적 할당
    • 외부 단편화 발생
    • 할당 전략: First‑Fit, Best‑Fit, Worst‑Fit

불연속 할당 (Non‑Contiguous)

  • 페이징(Paging)
    • 프로세스 → 페이지, 메모리 → 프레임 (고정 크기)
    • 내부 단편화 발생
  • 세그멘테이션(Segmentation)
    • 논리 단위(코드·데이터·스택)로 분할 (가변 크기)
    • 외부 단편화 발생
  • 세그먼테이션+페이징: 두 방식 결합

🔄 페이지 교체 알고리즘

  • FIFO: 가장 먼저 들어온 페이지 교체
  • LRU (Least Recently Used): 가장 오랫동안 사용되지 않은 페이지 교체
  • LFU (Least Frequently Used): 사용 빈도 최소 페이지 교체
  • NUR (Not Used Recently): 최근 사용 여부 비트 활용
profile
멋있는 사람 - 일단 하자

0개의 댓글