<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://toysin.github.io/</id><title>ToySin</title><subtitle>ToySin의 개발 기록</subtitle> <updated>2026-10-18T21:56:52+09:00</updated> <author> <name>Dongbin Shin</name> <uri>https://toysin.github.io/</uri> </author><link rel="self" type="application/atom+xml" href="https://toysin.github.io/feed.xml"/><link rel="alternate" type="text/html" hreflang="ko-KR" href="https://toysin.github.io/"/> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2026 Dongbin Shin </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>[OS] 가상 메모리, 페이징, TLB, 페이지 폴트</title><link href="https://toysin.github.io/posts/os-virtual-memory-paging/" rel="alternate" type="text/html" title="[OS] 가상 메모리, 페이징, TLB, 페이지 폴트" /><published>2026-10-18T12:00:00+09:00</published> <updated>2026-10-18T12:00:00+09:00</updated> <id>https://toysin.github.io/posts/os-virtual-memory-paging/</id> <content type="text/html" src="https://toysin.github.io/posts/os-virtual-memory-paging/" /> <author> <name>Dongbin Shin</name> </author> <category term="CS" /> <category term="OS" /> <summary>오늘 읽을 페이지 필독 제13장 주소 공간의 개념: p.127~132 제15장 주소 변환의 원리: p.149~160 제18장 페이징 개요: p.195~206 제19장 TLB: p.211~223 제20장 더 작은 페이지 테이블: p.229~242 제21장 물리 메모리 크기의 극복, 메커니즘: p.245~252 제22장 물리 메모리 크기의 극복, 정책: p.257~271 선택 제14장 메모리 관리 API: p.137~144 제16장 세그멘테이션: p.165~173 제17장 빈 공간 관리: p.177~191 제23장 완전한 가상 메모리 시스템: p.277~294 시간이 부족하면 제20장은 멀티 레벨 페이지 테이블 p.233~240을 중심으로 보고, 제23장...</summary> </entry> <entry><title>[Go] Slice와 Array 차이 이해하기</title><link href="https://toysin.github.io/posts/go-slice-vs-array/" rel="alternate" type="text/html" title="[Go] Slice와 Array 차이 이해하기" /><published>2026-10-18T12:00:00+09:00</published> <updated>2026-10-18T12:00:00+09:00</updated> <id>https://toysin.github.io/posts/go-slice-vs-array/</id> <content type="text/html" src="https://toysin.github.io/posts/go-slice-vs-array/" /> <author> <name>Dongbin Shin</name> </author> <category term="Language" /> <category term="Go" /> <summary>메모리 공부를 하다가 문득 궁금해졌다. Go에서의 Slice와 Array는 어떻게 다른가? package main import "unsafe" func main() { numSlice1 := make([]int, 2, 4) numSlice2 := make([]int, 2) numSlice3 := []int{1, 2} numSlice4 := make([]int, 0, 256) slices := [][]int{numSlice1, numSlice2, numSlice3, numSlice4} numArray := [2]int{1, 2} println("=== 배열 ===") println("변수 주소:", &amp;amp;numArray) println("첫 원소 주소:", &amp;amp;numAr...</summary> </entry> <entry><title>[Container] 도커없이 컨테이너 만들기 후기</title><link href="https://toysin.github.io/posts/container-without-docker-retro/" rel="alternate" type="text/html" title="[Container] 도커없이 컨테이너 만들기 후기" /><published>2026-10-14T12:00:00+09:00</published> <updated>2026-10-14T12:00:00+09:00</updated> <id>https://toysin.github.io/posts/container-without-docker-retro/</id> <content type="text/html" src="https://toysin.github.io/posts/container-without-docker-retro/" /> <author> <name>Dongbin Shin</name> </author> <category term="Infra" /> <category term="Container" /> <summary>컨테이너 런타임을 좀 공부해보려니까 아는 개념이 너무 없어서, 예전에 공부했던 강의로 짧게 복습해봤다. 도커 없이 컨테이너 만들기 목차 및 실습환경 구성안내 정말 쉽고 재밌게 설명해주셔서 너무 감사하다. 컨테이너에 대해서 정리를 좀 해보자. 시분할 시스템에서 컴퓨터를 나눠 쓰게 되면서 자원 공유의 개념이 생겼는데, 사실 나는 배치 시스템만 있던 시대를 겪지는 않아서 그런갑다~ 싶다. 아무튼 한 호스트 안에서 여러 프로세스가 동시에 돌아가게 되었다. 왜 서버를 쓰는가부터 해보자면, 내가 지도 앱을 만들었다고 치자. 내 개발용 컴퓨터나 집 컴퓨터로 호스팅을 해도 되겠지만, 사용자가 쓰는 24시간 7일 365일 내내 컴퓨터를 켜놔야 한다. 그리고 지도 앱이랑 증바람을 같이 돌리면 컴퓨터가 너...</summary> </entry> <entry><title>[Container] 도커없이 컨테이너 만들기 4</title><link href="https://toysin.github.io/posts/container-without-docker-4/" rel="alternate" type="text/html" title="[Container] 도커없이 컨테이너 만들기 4" /><published>2026-10-14T12:00:00+09:00</published> <updated>2026-10-14T12:00:00+09:00</updated> <id>https://toysin.github.io/posts/container-without-docker-4/</id> <content type="text/html" src="https://toysin.github.io/posts/container-without-docker-4/" /> <author> <name>Dongbin Shin</name> </author> <category term="Infra" /> <category term="Container" /> <summary>이제 격리는 끝났고, 자원을 할당해야 한다. 여기서 Cgroup(Control Groups)이라는 개념이 등장한다. CPU, Mem 같은 시스템 자원을 묶어서 그룹을 짓는다. 그리고 프로세스를 그 그룹에 포함시키면, 그 프로세스는 그룹에 정해진 만큼의 자원만 사용할 수 있다. CPU에 스트레스를 줬더니 100%를 찍는다. -c 1은 1코어를 쓴다는 뜻이다. 우분투 24는 cgroup v2를 써서 설정 방식이 달라(cpu.cfs_quota_us 대신 cpu.max) 찾아봤는데, 30% 제한을 걸었더니 30%까지만 먹는 것을 볼 수 있다. cgroup은 파일시스템으로 관리된다. 제어 그룹을 만들고, 리소스를 설정하고, 그 그룹에 프로세스를 할당하면 된다. 이번에는 컨테이너 두 개를 직접 ...</summary> </entry> <entry><title>[Container] 도커없이 컨테이너 만들기 3</title><link href="https://toysin.github.io/posts/container-without-docker-3/" rel="alternate" type="text/html" title="[Container] 도커없이 컨테이너 만들기 3" /><published>2026-10-13T12:00:00+09:00</published> <updated>2026-10-13T12:00:00+09:00</updated> <id>https://toysin.github.io/posts/container-without-docker-3/</id> <content type="text/html" src="https://toysin.github.io/posts/container-without-docker-3/" /> <author> <name>Dongbin Shin</name> </author> <category term="Infra" /> <category term="Container" /> <summary>전용 루트 파일시스템과 오버레이 파일시스템이 있더라도 문제가 남아 있었다. 컨테이너에서 호스트의 다른 프로세스들이 다 보이고, 컨테이너가 호스트의 네트워크를 여전히 사용하고(80 포트로 nginx에 접속한 것처럼), 컨테이너에 루트 권한이 여전히 있다는 문제다. 그래서 마운트 네임스페이스를 만든 것처럼 다양한 네임스페이스를 만들었다. 모든 프로세스는 타입별로 네임스페이스에 속한다. 자식 프로세스는 부모의 것을 상속한다. 네임스페이스는 unshare [옵션] [프로그램...]으로 사용할 수 있다. 네임스페이스를 확인해볼 수 있다. 마운트를 격리하고 실행해보면 마운트 네임스페이스만 다른 것을 확인할 수 있다. UTS 네임스페이스 UTS(Unix Time Sharing)는 호스트 네임을...</summary> </entry> </feed>
