분류 전체보기(593)
-
[홈서버] 네트워크 3 - Zone-Based Firewall
1. 수정하는 이유 지난번에 구성한 네트워크 구조를 조금 손보려고 한다. 굳이 지금까지 문제없이 잘 쓰던 네트워크 구성을 손보는 이유는 다음과 같다. 가. Default network를 비우고 싶다. Default Network는 초기 테스트나 임시 연결 용도로만 사용할 예정. 아무래도 시스템이 자동으로 생성한 기본 네트워크라 장치를 연결하고 서비스를 운영하는 것에 적합하지 않아 보인다. 실제로 Unifi에서 VLAN을 격리시키는 옵션을 활성화해도 Default → 다른 모든 VLAN으로의 통신은 Drop 하지 않는다.(Default Network → 다른 VLAN으로의 통신을 따로 차단해야 할지 모르겠다.) 나. Zone-Based Firewall 얼마 전부터 Unifi에서 Zone-Based Fir..
2025.08.28 -
그동안 글을 쓰지 않은 이유
1. 무슨 일이 있었는가…. 너무 오랜만에 글을 써서 굉장히 어색하다. 3월부터 8월까지 대략 5개월간 글을 못 썼다. 작년 7월부터 오늘까지 많은 일이 있었다. 살면서 가장 힘든 시간들이었다. 말하기도 부끄럽지만 지인에게 ‘사기’를 당했다. 모아놓은 재산도 없어지고 해결하는 과정에서 빚도 생겼다. 경제적으로도 어려웠지만 그것보다 정신적으로 너무 힘들었다. 몇 달간 거의 집에만 있었던 것 같다. 언제 끝날지, 어떻게 끝날지 알 수 없는 불확실성이 가장 견디기 힘들었다. 또 어떻게든 연락을 유지해야 했기 때문에 하루에 몇 십 번씩 전화하는 것도 힘들었다. 당연히 한번에 바로 통화 연결이 될 리 없기에 몇 시간씩 통화연결음만 듣기도 했다. 나중엔 통화연결음만 들어도 숨이 안 쉬어지고 심장이 아팠다. 그 와중..
2025.08.19 -
[Q&A] SpringBoot3 Test
이 글은 AI와의 질의응답 과정에서 얻은 정보를 요약하고 정리한 내용입니다. 1. WebMVCTest, SpringBootTest 차이점 Spring 테스트에서 사용되는 애너테이션인 @AutoConfigureMockMvc, @WebMvcTest, @SpringBootTest는 각각 테스트의 범위, 속도, 의존성 주입 대상 등을 다르게 설정하는 데 사용된다. 가. WebMvcTestController 레이어만 테스트할 때 사용.@Controller, @RestController, @ControllerAdvice 등 MVC 컴포넌트만 로딩.Repository, Service 등은 주입되지 않음. 필요시 @MockBean으로 mocking 필요.기본적으로 MockMvc를 자동 구성해 줌.가장 빠름. 최소한의 ..
2025.05.27 -
[1000줄 OS 구현하기] 파일 시스템
파일 시스템 | OS in 1,000 Lines operating-system-in-1000-lines.vercel.app 1. tar tar: Tape archive: 컴퓨터에서, Tape Archive를 위해 고안된 파일 형식. 이 교안에서는 tar를 파일 시스템으로 사용했다. tar는 다수의 파일을 하나로 묶을 수 있는 아카이브 형식이고 각 파일의 내용뿐만 아니라 파일명, 생성일자 등 파일 시스템에 필요한 모든 메타데이터를 저장할 수 있기 때문이다. 가장 중요한 것은 tar의 데이터 구조는 FAT나 ext2 같은 일반적인 파일 시스템에 비해 매우 단순하다. 2. 디스크 이미지 생성하기 디스크 이미지로 사용할 tar 파일을 생성한다.mkdir disktouch disk/meow.txt disk/hel..
2025.03.17 -
[1000줄 OS 구현하기] 디스크 I/O
디스크 I/O | OS in 1,000 Lines operating-system-in-1000-lines.vercel.app 2022-05-12 리눅스_디바이스_드라이버_1Device란? 네트워크 어댑터, LCD 디스플레이, 오디오, 터미널, 키보드, 하드디스크, 플로피디스크, 프린터 등과 같은 주변 장치를 뜻함. 디바이스의 구동을 위해서 디바이스 드라이버가 필요함. Devicramen4598.tistory.com 가상 디스크 장치인 virtio-blk를 위한 디바이스 드라이버를 구현한다. 1. Virtio Virtio는 Virtual I/O의 약자로 가상 장치(virtio devices)를 위한 디바이스 인터페이스 표준이다. 디바이스 드라이버가 가상 장치를 제어하는 데 사용하는 API로, 네트워크,..
2025.03.15 -
[1000줄 OS 구현하기] 시스템 콜
시스템 콜 | OS in 1,000 Lines operating-system-in-1000-lines.vercel.app 애플리케이션이 커널 기능을 호출할 때 사용하는 시스템콜을 구현해 보자. 1. 시스템 콜 구현 User mode에서도 ecall을 통한 시스템 콜 구현하기. user.cint syscall(int sysno, int arg0, int arg1, int arg2) { register int a0 __asm__("a0") = arg0; register int a1 __asm__("a1") = arg1; register int a2 __asm__("a2") = arg2; register int a3 __asm__("a3") = sysno; __asm__ __vola..
2025.03.11 -
[1000줄 OS 구현하기] 유저 모드
유저 모드 | OS in 1,000 Lines operating-system-in-1000-lines.vercel.app 유저 애플리케이션을 실행해 보자. 1. 바이너리 파일로 프로세스 생성 kernel.h// 애플리케이션 이미지의 기본 가상 주소입니다. 이는 `user.ld`에 정의된 시작 주소와 일치해야 합니다.#define USER_BASE 0x1000000앞서 “[1000줄 OS 구현하기] 애플리케이션”에서 shell.bin.o를 만들었다. shell.o의 메모리 매핑 정보를 날려버렸기 때문에 kernel.h에 따로 주소를 저장한다. kernel.cextern char _binary_shell_bin_start[], _binary_shell_bin_size[];_binary_shell_bin_st..
2025.03.11 -
[1000줄 OS 구현하기] 애플리케이션
애플리케이션 | OS in 1,000 Lines operating-system-in-1000-lines.vercel.app 앞서 가상 메모리를 paging을 통해서 관리하도록 기능을 구현했다. 이제 커널 위에서 애플리케이션을 동작시키기 위해서 고민해 보자. 1. 메모리 레이아웃 애플리케이션을 위한 주소 공간을 배치하기 위해서 애플리케이션용 링커 스크립트를 추가한다. 내용은 커널의 링커 스크립트와 거의 비슷하다. user.ldENTRY(start)SECTIONS { . = 0x1000000; /* machine code */ .text :{ KEEP(*(.text.start)); *(.text .text.*); } /* read-only data */ ..
2025.03.09