Skip to content

rlawlgh0813/operating-systems

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Operating Systems

xv6 교육용 운영체제를 기반으로 운영체제의 핵심 구성 요소를 직접 확장한 학습 저장소입니다.

시스템 콜, CPU 스케줄링, 메모리 관리, 파일시스템 스냅샷을 단계적으로 구현하면서 사용자 프로그램의 요청이 커널 내부 자료구조와 정책으로 연결되는 과정을 실습했습니다.

Overview

Lab Topic What I implemented
lab01 System Call hello_number, get_procinfo 시스템 콜 추가와 user-kernel 경로 연결
lab02 CPU Scheduling xv6 round-robin scheduler를 stride scheduler로 교체
lab03 Memory Management physical frame tracking, vtop, IPT, software TLB, COW consistency 구현
lab04 File System snapshot create/rollback/delete, block-level COW, refcount 기반 block 관리 구현

Repository Structure

operating-systems/
├── lab01/
│   ├── README.md
│   ├── report.pdf
│   └── src/
├── lab02/
│   ├── README.md
│   ├── report.pdf
│   └── src/
├── lab03/
│   ├── README.md
│   ├── report.pdf
│   └── src/
├── lab04/
│   ├── README.md
│   ├── report.pdf
│   └── src/
└── README.md

각 lab은 수정한 xv6 kernel source, 사용자 테스트 프로그램, 구현 보고서를 함께 포함합니다.

Environment

  • Base OS: MIT xv6 x86
  • Language: C
  • Emulator: QEMU i386
  • Build: Makefile
  • Category: Operating System / Kernel Programming

Learning Path

1. System Call

사용자 프로그램이 커널 기능을 호출하는 전체 경로를 연결했습니다.

  • user.h
  • usys.S
  • syscall.h
  • syscall.c
  • sysproc.c

이를 통해 시스템 콜이 단순 함수 호출이 아니라, user mode에서 kernel mode로 전환되고 다시 사용자 공간으로 반환되는 제어 흐름이라는 점을 확인했습니다.

2. CPU Scheduling

xv6의 기본 round-robin scheduler를 stride scheduling 기반으로 변경했습니다.

  • settickets(tickets, end_ticks) 시스템 콜 구현
  • process별 tickets, stride, pass, ticks 관리
  • timer interrupt 기반 pass 갱신
  • PASS_MAX 초과에 대비한 rebase 전략
  • ticket 비율에 따른 CPU 점유율 검증

3. Memory Management

메모리 관리 구조를 관측 가능하게 만들기 위해 물리 프레임 추적과 주소 변환 도구를 구현했습니다.

  • physical frame metadata table
  • dump_physmem_info
  • vtop
  • phys2virt
  • IPT(Inverted Page Table)
  • Software TLB
  • Copy-on-Write 상황에서 mapping consistency 검증

4. File System Snapshot

xv6 파일시스템에 snapshot과 rollback 기능을 추가했습니다.

  • snapshot_create
  • snapshot_rollback
  • snapshot_delete
  • /snapshot/<id> read-only namespace
  • block-level copy-on-write
  • refcount 기반 safe deallocation
  • print_addr 기반 block sharing / COW 검증

What This Repository Shows

이 저장소는 운영체제 내부 기능을 단순히 개념으로 공부한 것이 아니라, xv6 kernel source를 직접 수정하며 검증한 과정을 보여줍니다.

특히 다음 역량을 보여주는 데 초점을 둡니다.

  • user-kernel boundary 이해
  • kernel data structure 수정
  • interrupt와 scheduler 흐름 추적
  • page table, physical frame, COW consistency 이해
  • filesystem block과 reference count 기반 자원 관리
  • 사용자 테스트 프로그램을 통한 kernel feature 검증

Lab Details

각 lab의 자세한 구현 내용은 개별 README와 report에서 확인할 수 있습니다.

About

Operating systems coursework covering core OS concepts and implementations

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors