Skip to content

ijnuegnaj/OS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🖥️ Operating Systems (xv6 & Linux)

📌 Overview

본 저장소는 2024년도 2학기 OS 강의를 통해 Linux 및 xv6 운영체제를 기반으로
운영체제 핵심 개념을 이론과 구현을 통해 학습한 과제 결과물을 정리한 것이다.

리눅스 커널과 프로세스 관리부터 xv6 커널 확장, 스케줄러 개선, 메모리 관리,
그리고 소프트웨어 MMU 구현까지 과제 0번부터 3-2번까지 단계적으로 수행하였다.

0. Linux Kernel & Distribution 이해

📍 과제 0번

  • 리눅스 커널과 배포판의 개념 및 역할 이해
  • Ubuntu LTS 버전과 정규 버전의 차이점 학습
  • 운영체제에서 커널이 담당하는 핵심 기능 정리

학습 포인트

  • 커널 vs 배포판 구조
  • 장기 지원(LTS)의 의미와 활용 목적

1. /proc 파일 시스템과 시스템 자원 분석

📍 과제 1번

  • /proc 파일 시스템을 활용한 CPU, 메모리, 프로세스 정보 분석
  • 논리 프로세서(processor)와 물리 코어(cores)의 차이 이해
  • 시스템 부팅 이후 프로세스 수 및 문맥 교환(context switch) 횟수 확인

학습 포인트

  • /proc 기반 시스템 모니터링
  • 운영체제의 자원 관리 방식 이해

2. 실행 중인 프로세스 상태 모니터링

📍 과제 2번

  • top 명령어를 이용한 실시간 프로세스 상태 분석
  • CPU 사용률, 메모리 사용률 및 프로세스 상태(RUNNING 등) 확인
  • CPU 집중형 프로세스 실행 실험

학습 포인트

  • 프로세스 상태 전이
  • CPU / 메모리 자원 소비 특성

3. 프로세스 생성과 I/O 리디렉션

📍 과제 3-1번

3-1. 자식 프로세스 생성 및 실행 흐름

  • fork()를 통한 프로세스 생성 구조 이해
  • 부모–자식–조상 프로세스 트리 추적
  • 파일 디스크립터(0, 1, 2)의 역할 분석

3-2. I/O 리디렉션과 파이프

  • 표준 입출력 리디렉션(>, <, 2>) 동작 원리 이해
  • 파이프(|)를 이용한 프로세스 간 통신 구조 분석

학습 포인트

  • 프로세스와 파일 디스크립터의 관계
  • 쉘의 I/O 리디렉션 구현 원리

4. 가상 메모리와 실제 메모리 비교

📍 과제 3-1번

  • 가상 메모리(VSZ)와 실제 메모리(RSS)의 차이 분석
  • 지연 할당(Lazy Allocation) 개념 실험
  • 메모리 접근 여부에 따른 물리 메모리 사용 변화 관찰

학습 포인트

  • 가상 주소 공간 vs 물리 메모리
  • 페이지 단위 메모리 관리

5. 파일 I/O와 디스크 성능 분석

📍 과제 3-1번

  • 랜덤 파일 접근과 동일 파일 반복 접근 비교
  • 캐시(Cache)가 디스크 성능에 미치는 영향 분석
  • iostat 명령어를 이용한 디스크 사용률 측정

학습 포인트

  • 디스크 캐싱 메커니즘
  • I/O 패턴에 따른 성능 차이

6. xv6 시스템 확장 과제

📍 과제 3-1번 / 3-2번

6-1. lseek() 시스템 콜 구현

📍 과제 3-1번

  • xv6 커널에 lseek() 시스템 호출 추가
  • 파일 오프셋 이동 방식(SEEK_SET / SEEK_CUR / SEEK_END) 구현
  • 사용자 프로그램과 커널 인터페이스 확장

6-2. MLFQ 기반 SSU Scheduler 구현

📍 과제 3-2번

  • 기존 xv6 스케줄러 분석
  • 다단계 피드백 큐(MLFQ) 스케줄러 설계 및 구현
  • Aging 기법을 통한 기아 상태 방지
  • CPU / I/O bound 프로세스 공정성 개선

6-3. 지연 메모리 관리 (ssusbrk, memstat)

📍 과제 3-2번

  • 지연 할당 기반 메모리 확장
  • 페이지 폴트 발생 시 물리 메모리 동적 할당
  • 메모리 해제 지연 및 상태 출력

7. Software MMU 구현

📍 과제 3-2번

  • 페이지 테이블 기반 가상 → 물리 주소 변환 시뮬레이션
  • 페이지 테이블 초기화 (alloc_page_table)
  • 주소 변환 로직 구현 (mmu_address_translation)
  • Valid / Access 비트 기반 접근 제어

학습 포인트

  • MMU의 핵심 동작 원리
  • 하드웨어 MMU의 소프트웨어적 모델링

🎯 Overall Learning Outcomes

  • 운영체제 커널의 내부 구조와 동작 방식 이해
  • 프로세스, 스케줄링, 메모리 관리의 유기적 관계 파악
  • xv6 커널 수정 및 확장을 통한 실전 OS 개발 경험
  • 이론 → 구현 → 실험 → 분석의 전 과정을 수행

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors