[홈서버] Proxmox Backup Server

Featured image for [홈서버] Proxmox Backup Server

1. 요구사항 Proxmox Backup Server Proxmox Backup Server is an enterprise backup solution, for backing up and restoring VMs, containers, and physical hosts. 증분 백업을 위해서 Proxmox Backup Server를 설치한다. (Proxmox, PBS 모두 오픈소스다!) 하드웨어로는 집에서 놀고 있는 라즈베리파이 3B+와 외장하드를 사용한다. 지금은 PBS를 Proxmox의 VM으로 생성하지만 가능한 빠른 시일 내로 PBS를 Proxmox에서 분리해야 한다. … 더 읽기

[1000줄 OS 구현하기] 메모리 할당

Featured image for [1000줄 OS 구현하기] 메모리 할당

메모리 할당 | OS in 1,000 Lines 1. 이론 가. 가상 메모리 (Virtual Memory) 보조 저장자치의 일정 영역을 주 저장장치처럼 활용하는 방법을 제공. 훨씬 더 큰 공간의 보조 메모리를 가상의 메인 메모리(스왑 영역)로 사용하는 방식. 가상의 주소를 물리 주소와 매핑한다. CPU는 가상의 주소를 사용한다. 가상 주소 공간은 메모리 관리 장치(MMU)에 의해서 물리 주소로 변환된다. (address translation) … 더 읽기

[1000줄 OS 구현하기] 예외

Featured image for [1000줄 OS 구현하기] 예외

예외 (Exception) | OS in 1,000 Lines 1. 예외 운영체제(OS)에서 예외(Exception)는 프로그램 실행 중에 발생하는 예기치 않은 상황이나 오류를 의미한다. 이는 하드웨어나 소프트웨어에서 발생할 수 있으며, 정상적인 프로그램의 흐름을 방해하는 사건입니다. 예외는 크게 다음과 같은 상황에서 발생할 수 있다: 운영체제는 이러한 예외 상황이 발생했을 때 적절한 예외 처리 루틴을 실행하여 시스템의 안정성을 유지해야 한다. 프로세스의 … 더 읽기

[1000줄 OS 구현하기] 커널 패닉

Featured image for [1000줄 OS 구현하기] 커널 패닉

커널 패닉 (Kernel Panic) | OS in 1,000 Lines 1. 커널 패닉 커널 패닉은 운영체제의 커널에서 복구할 수 없는 치명적인 오류가 발생했을 때 시스템이 안전하게 작동할 수 없다고 판단하여 즉시 작동을 중지하는 상태를 말합니다. 블루스크린과 같다고 생각하면 된다. 이번 챕터에서는 크리티컬 한 오류가 발생하면 커널이 동작을 멈추도록 구현해 보았다. 매크로 설명 동작 __FILE__ 현재 소스 … 더 읽기

[1000줄 OS 구현하기] C 표준 라이브러리

Featured image for [1000줄 OS 구현하기] C 표준 라이브러리

C 표준 라이브러리 | OS in 1,000 Lines 1. C 표준 라이브러리 기본 타입과 메모리 조작, 문자열 조작 함수를 직접 구현해 본다. 가. 기본 타입들 예를 들어 align_up(0x1234, 0x1000)은 0x2000이 되고, is_aligned(0x2000, 0x1000)은 true를 반환하지만 is_aligned(0x2f00, 0x1000)은 false를 반환한다고 한다. 메모리 정렬(alignment)은 시스템의 성능과 안정성을 위해 필요하다. 순수 C 코드로 구현할 수도 있지만 교제에서는 Clang의 … 더 읽기

[1000줄 OS 구현하기] Hello World!

Featured image for [1000줄 OS 구현하기] Hello World!

Hello World! | OS in 1,000 Lines 1. SBI로 출력 SBI를 OS의 API 정도로 소개했었다. SBI의 function을 호출하기 위해선 ecall 명령어를 사용한다. 가. kernel.c 수정되거나 추가한 코드만 살펴보면… SBI 호출 시 Function ID (fid)와 Extension ID (eid)는 SBI 사양에서 미리 정의된 번호들. 이러한 ID들은 RISC-V SBI 표준에 의해 미리 정의되어 있어서 개발자가 임의로 정하는 것이 … 더 읽기

[1000줄 OS 구현하기] Boot

Featured image for [1000줄 OS 구현하기] Boot

Booting the Kernel | OS in 1,000 Lines 1. Booting 보통 컴퓨터를 부팅하면 BIOS나 UEFI가 하드웨어를 초기화하고 OS를 로드한다. QEME virt machine에서는 OpenSBI가 BIOS나 UEFI 역할을 수행한다. 종류 long form 설명 특징 BIOS Basic Input/Output System 컴퓨터 부팅 시 가장 먼저 실행되는 펌웨어 하드웨어 초기화, 운영체제 로드, 오래된 PC에서 주로 사용 UEFI Unified Extensible Firmware … 더 읽기

[1000줄 OS 구현하기] RISC-V Assembly

Featured image for [1000줄 OS 구현하기] RISC-V Assembly

RISC-V 101 | OS in 1,000 Lines 1. RISC-V RISC-V는 (”리스크 파이브”로 발음한다.) 축소 명령어 집합 컴퓨터 즉, RISC(Reduced Instruction Set Computer) 기반의 개발형 명령어 집합(ISA)이다. 대부분의 ISA와 달리 RISC-V ISA는 일부 목적으로는 자유로이 사용할 수 있으며, 누구든지 RISC-V 칩과 소프트웨어를 설계, 제조, 판매할 수 있게 허가되어 있다. 저자는 RISC-V를 CPU로 선택한 이유가 명세가 간단하고 … 더 읽기

[1000줄 OS 구현하기] 시작하기

Featured image for [1000줄 OS 구현하기] 시작하기

1. 출처 Operating System in 1,000 Lines | OS in 1,000 Lines 1000줄로 운영체제를 직접 구현할 수 있다고 한다. 운영체제를 공부할 겸 한번 만들어 보자. 실제로 Linux의 0.01 version이 8413 줄에 불과했다고 하니 충분히 가능할 것 같다. 글에 따르면 완성된 OS에선 기본적인 context switching, paging, user mode, a command shell, disk device driver, file read/write … 더 읽기