[CSAPP 9장 완전 정복] 9.8 메모리 매핑 - mmap으로 파일을 메모리처럼 사용하는 방법
·
크래프톤 정글/컴퓨터구조(CSAPP)
메모리 매핑 - mmap으로 파일을 메모리처럼 사용하는 방법지금까지 배운 가상 메모리는 주로 주소 변환, 보호, 성능 최적화의 관점이었는데요. 이제는 한 단계 더 나아가 파일과 메모리를 직접 연결하는 고급 기술인 '메모리 매핑'을 배울 차례입니다. 이번 글에서는 CSAPP 9.8절의 내용을 바탕으로 메모리 매핑이란 무엇인지, mmap() 시스템 호출이 어떻게 동작하는지, 그리고 이를 통해 어떤 응용이 가능한지를 정리해봅니다. 메모리 매핑(Memory Mapping)이란?파일이나 디바이스의 내용을 가상 주소 공간에 직접 매핑하는 것을 메모리 매핑이라고 합니다. 즉, 파일 내용을 read()나 fread() 없이도 그냥 메모리를 읽듯이 사용할 수 있게 만드는 기법이지요. 이를 위해 mmap() 함수를 호출..
[CSAPP 9장 완전 정복] 9.7 인텔 Core i7과 리눅스 메모리 시스템 - 실전 구조 따라잡기
·
크래프톤 정글/컴퓨터구조(CSAPP)
인텔 Core i7과 리눅스 메모리 시스템 - 실전 구조 따라잡기지금까지 우리는 가상 메모리가 주소를 어떻게 번역하고, 어떻게 보호하고, 어떻게 캐시처럼 작동하는지를 배웠습니다. 그런데 이론만으로는 부족할 수 있다는 생각이 들 수도 있는데요. 그래서 실제 시스템에서는 이러한 구조들이 어떻게 구현되고 협력하는지 알아보려고 합니다. 이번 절에서는 CSAPP 9.7절을 바탕으로 인텔 Core i7 CPU와 리눅스 운영체제 환경에서의 가상 메모리 구조를 실제 사례로 정리해 보겠습니다. 인텔 Core i7의 주소 구조 (x86-64)48비트 가상 주소 사용x86-64는 이름처럼 64비트 주소 공간을 갖는 시스템인데요. 그런데 실제로는 그 전체를 다 쓰지 않고, 현재는 48비트만 사용하고 있습니다. 이 말은 곧 ..
[CSAPP 9장 완전 정복] 9.6 주소의 번역 - 가상 주소는 어떻게 물리 주소로 바뀔까?
·
크래프톤 정글/컴퓨터구조(CSAPP)
주소의 번역 - 가상 주소는 어떻게 물리 주소로 바뀔까?가상 메모리는 각 프로세스에게 독립적인 메모리 공간을 제공해 주는 멋진 기술입니다. 그런데 실제 하드웨어 입장에서는 RAM에 있는 실제 물리 주소로 접근해야 하기 때문에, 운영체제와 하드웨어는 가상 주소를 물리 주소로 변환하는 작업을 수행합니다. 이번 절에서는 CSAPP 9.6절 내용을 바탕으로 이 주소 변환 과정의 구조와 흐름을 정리해 보겠습니다. 가상 주소(Virtual Address)의 구성가상 주소는 페이지 기반으로 나뉘는데요. 일반적으로 두 부분으로 구성됩니다.[가상 페이지 번호 (VPN)] | [페이지 오프셋] ← p bits → ← d bits →VPN(Virtual Page Number): 몇 번째 페이지인..
[CSAPP 9장 완전 정복] 9.5 메모리 보호 - 가상 메모리가 제공하는 고립과 안전
·
크래프톤 정글/컴퓨터구조(CSAPP)
메모리 보호 - 가상 메모리가 제공하는 고립과 안전우리는 지금까지 가상 메모리의 기능을 주소 변환 도구, 성능 향상을 위한 캐시, 메모리 관리의 기반으로써 살펴봤는데요. 그뿐만 아니라 가상 메모리는 프로세스 간의 고립성과 시스템의 안전성을 지키는 데에도 핵심적인 역할을 합니다. 이번 절에서는 CSAPP 9.5절을 바탕으로, 가상 메모리가 보호 장치로서 어떻게 작동하는지 정리해 보겠습니다. 메모리 보호가 필요한 이유운영체제는 다수의 사용자 프로세스를 동시에 실행시킵니다. 이때, 한 프로세스가 다른 프로세스의 메모리를 마음대로 접근하거나,커널 코드를 덮어쓸 수 있다면 어떻게 될까요? 곧 시스템 전체가 불안정해지고, 보안상 심각한 위협이 발생할 수 있습니다. 가상 메모리가 제공하는 보호 기능1. 프로세스 ..
[CSAPP 9장 완전 정복] 9.4 메모리 관리를 위한 도구로서의 VM - 할당과 회수의 비밀
·
크래프톤 정글/컴퓨터구조(CSAPP)
메모리 관리를 위한 도구로서의 VM - 할당과 회수의 비밀개발자에게 메모리는 숫자와 주소가 뒤섞인 혼란의 세계일 수 있습니다. 하지만 운영체제와 가상 메모리 시스템은 이 복잡한 세계를논리적이고 안전하며 효율적인 공간으로 정리해주죠. 이번 절에서는 CSAPP 9.4절을 바탕으로, 가상 메모리(Virtual Memory)가 어떻게 메모리 할당과 회수를 가능하게 해주는지 정리해 보겠습니다. 공간을 줄 수 있는 구조, 가상 메모리가상 메모리는 프로세스에게 독립적인 주소 공간을 제공하며, 그 공간 안에서 스택과 힙을 자유롭게 확장하거나 줄일 수 있는 유연성을 제공합니다. 스택과 힙은 어떻게 VM 위에 구축될까?힙(Heap)동적 메모리 할당 (malloc, free)이 일어나는 영역아래에서 위 방향으로 확장내부..
[CSAPP 9장 완전 정복] 9.3 캐싱 도구로서의 VM(가상 메모리) - 지역성과 페이지
·
크래프톤 정글/컴퓨터구조(CSAPP)
캐싱 도구로서의 VM(가상 메모리) - 지역성과 페이지가상 메모리는 단순히 프로세스마다 주소를 따로 쓰게 해주는 격리 기술이 아닙니다. 사실 캐싱 메커니즘과 동일한 원리를 활용해서, 메모리 접근 성능을 극적으로 끌어올리는 시스템이기도 한데요. 이번 포스트에서는 CSAPP 9.3절의 내용을 바탕으로 가상 메모리가 어떻게 성능 향상을 위한 캐시처럼 동작하는지를 정리해 봅니다. 가상 메모리는 일종의 캐시다가상 메모리는 디스크(보조기억장치)를 캐시하기 위한 시스템입니다. 디스크에는 모든 프로그램의 데이터 전체가 저장되어 있고, 가상 메모리는 그중 일부만 메모리(RAM)에 적재하여 사용하는 캐시 계층이지요. 디스크, 메모리 CPU 간의 관계계층내용특징CPU레지스터, L1~L3 캐시초고속메모리 (DRAM)가상 주..
[CSAPP 9장 완전정복] 9.1~9.2 가상 메모리의 시작 - 주소와 주소 공간 이해하기
·
크래프톤 정글/컴퓨터구조(CSAPP)
가상 메모리의 시작 - 주소와 주소 공간 이해하기프로그램은 메모리 없이 존재할 수 없습니다. 우리가 int x = 10; 같은 간단한 코드를 짤 때조차, 운영체제는 이때도 이미 복잡한 주소 변환과 공간 분리 작업을 수행하고 있죠. 이 글에서는 CSAPP 9.1~9.2절의 내용을 바탕으로, 가상 메모리(Virtual Memory)의 시작점인 주소의 개념, 주소 공간의 구성을 차근차근 살펴보겠습니다. 9.1 물리 및 가상주소 방식주소의 종류물리 주소(Physical Address): 실제 DRAM 하드웨어 메모리의 위치를 나타내는 주소가상 주소(Virtual Address): 프로그램 입장에서 사용하는 논리적인 주소프로그램은 가상 주소만 알고 있고, 운영체제가 이를 물리 주소로 매핑해 줍니다. 주소를 변환..
[CSAPP 8장 완전 정복] 8.7~8.8 프로세스 도구 실전 사용 + 8장 전체 요약
·
크래프톤 정글/컴퓨터구조(CSAPP)
프로세스 도구 실전 사용 + 8장 전체 요약지금까지 우리는 프로세스, 예외, 시그널, 시스템 호출 등 운영체제가 프로그램을 실행하고 제어하는 메커니즘을 살펴보았는데요. 이번 글에서는 실제 운영체제 환경에서 프로세스를 다룰 수 있는 도구(ps, kill, top 등)를 소개하고, 8장에서 배운 핵심 개념들을 총정리해 보려고 합니다. 8.7 프로세스 조작을 위한 유틸리티 도구프로세스 상태 확인 (ps)ps aux # 모든 사용자의 프로세스 보기ps -ef # 표준 포맷으로 전체 프로세스 출력필드설명PID프로세스 IDTTY터미널 번호STAT프로세스 상태 코드 (예: S = 대기 중, R = 실행 중 등)TIME사용한 CPU 시간COMMAND실행 중인 명령어해당 명령어를 Ubunt..