분류 전체보기(585)
-
[1000줄 OS 구현하기] 페이지 테이블
페이지 테이블 | OS in 1,000 Lines operating-system-in-1000-lines.vercel.app 앞서 “[1000줄 OS 구현하기] 프로세스”에서 간단한 멀티프로세싱을 구현해 보았다. Paging으로 가상 메모리를 관리하는 기능을 학습하고 구현해 보자. 1. 메모리 관리와 가상 주소 프로그램이 메모리에 접근할 때, CPU는 지정된 가상 주소(논리 주소)를 물리 주소로 변환한다. 이를 주소 바인딩(Address Binding), 주소 변환이라고 한다. 가상 주소와 물리 주소를 매핑하는 페이지 테이블이 필요하다. 2. 이론 교안에서는 RISC-V의 페이징 메커니즘 중 하나인 Sv32를 사용했다. Sv32는 2단계 page table로 구성된다. 구현에 앞서 가상 주소 구조와 tw..
2025.03.07 -
[1000줄 OS 구현하기] 프로세스
프로세스 | OS in 1,000 Lines operating-system-in-1000-lines.vercel.app 1. 프로세스 운영체제는 프로세스의 생성, 실행, 일시 중지, 종료 등의 상태 전환을 관리. 각 프로세스가 사용하는 시스템 자원(메모리, 파일 등)을 할당 및 관리한다. 2. PCB 가. PCB Process Control Block운영체제에서 각 프로세스에 대한 상태와 제어 정보를 저장하는 데이터 구조. PCB에 포함되는 주요 정보설명프로세스 ID각 프로세스를 고유하게 식별할 수 있는 번호프로세스 상태실행 중, 준비 완료, 대기 등 프로세스의 현재 상태프로그램 카운터(PC)다음에 실행할 명령어의 주소레지스터 상태CPU 레지스터들의 값. 문맥 전환 시 중요한 역할을 함메모리 관리 정보페..
2025.03.06 -
[홈서버] Proxmox Backup Server
1. 요구사항물리적으로 분리된 하드웨어에 백업.중요한 데이터는 최소 주 1회 백업.백업 자동화.비용 최소화소음 최소화 Proxmox Backup ServerProxmox Backup Server is an enterprise backup solution, for backing up and restoring VMs, containers, and physical hosts.www.proxmox.com 증분 백업을 위해서 Proxmox Backup Server를 설치한다.(Proxmox, PBS 모두 오픈소스다!) 하드웨어로는 집에서 놀고 있는 라즈베리파이 3B+와 외장하드를 사용한다. 지금은 PBS를 Proxmox의 VM으로 생성하지만 가능한 빠른 시일 내로 PBS를 Proxmox에서 분리해야 한다. 전용..
2025.02.28 -
[기타] OPic IM2
많이 늦었다...
2025.02.24 -
[1000줄 OS 구현하기] 메모리 할당
메모리 할당 | OS in 1,000 Lines operating-system-in-1000-lines.vercel.app 1. 이론 가. 가상 메모리 (Virtual Memory)보조 저장자치의 일정 영역을 주 저장장치처럼 활용하는 방법을 제공. 훨씬 더 큰 공간의 보조 메모리를 가상의 메인 메모리(스왑 영역)로 사용하는 방식. 가상의 주소를 물리 주소와 매핑한다. CPU는 가상의 주소를 사용한다. 가상 주소 공간은 메모리 관리 장치(MMU)에 의해서 물리 주소로 변환된다. (address translation) 이 덕분에 프로그래머는 가상 주소 공간상에서 프로그램을 짜게 되어 프로그램이나 데이터가 주메모리상에 어떻게 존재하는지를 의식할 필요가 없어진다. 더보기💡swap 동작 순서메인 메모리에서 내려..
2025.02.11 -
[1000줄 OS 구현하기] 예외
예외 (Exception) | OS in 1,000 Lines operating-system-in-1000-lines.vercel.app 1. 예외 운영체제(OS)에서 예외(Exception)는 프로그램 실행 중에 발생하는 예기치 않은 상황이나 오류를 의미한다. 이는 하드웨어나 소프트웨어에서 발생할 수 있으며, 정상적인 프로그램의 흐름을 방해하는 사건입니다. 예외는 크게 다음과 같은 상황에서 발생할 수 있다:하드웨어 인터럽트: 외부 장치로부터의 신호나 이벤트소프트웨어 인터럽트: 시스템 콜과 같은 프로그램의 의도적인 요청프로그램 오류: 0으로 나누기, 잘못된 메모리 접근, 페이지 폴트 등 운영체제는 이러한 예외 상황이 발생했을 때 적절한 예외 처리 루틴을 실행하여 시스템의 안정성을 유지해야 한다. 프로세스..
2025.02.05 -
[1000줄 OS 구현하기] 커널 패닉
커널 패닉 (Kernel Panic) | OS in 1,000 Lines operating-system-in-1000-lines.vercel.app 1. 커널 패닉 커널 패닉은 운영체제의 커널에서 복구할 수 없는 치명적인 오류가 발생했을 때 시스템이 안전하게 작동할 수 없다고 판단하여 즉시 작동을 중지하는 상태를 말합니다. 블루스크린과 같다고 생각하면 된다. 이번 챕터에서는 크리티컬 한 오류가 발생하면 커널이 동작을 멈추도록 구현해 보았다. kernel.h#define PANIC(fmt, ...) \ do { ..
2025.02.03 -
[1000줄 OS 구현하기] C 표준 라이브러리
C 표준 라이브러리 | OS in 1,000 Lines operating-system-in-1000-lines.vercel.app 1. C 표준 라이브러리 기본 타입과 메모리 조작, 문자열 조작 함수를 직접 구현해 본다. 가. 기본 타입들 common.htypedef int bool;typedef unsigned char uint8_t;typedef unsigned short uint16_t;typedef unsigned int uint32_t;typedef unsigned long long uint64_t;typedef uint32_t size_t;typedef uint32_t paddr_t;typedef uint32_t vaddr_t;#define true 1#define false 0#define..
2025.02.03