본문 바로가기

기본/운영체제

(8)
[OS] 메모리 가상화(Memory Virtualization): 6. Paging: TLB *이 글은 Operating Systems: Three Easy Pieces(운영체제 아주 쉬운 세 가지 이야기)를 바탕으로 작성되었습니다. 첨부한 모든 그림은 해당 도서에서 가져온 자료입니다. 내용 중 잘못된 부분이 있다면 알려주세요 :) 지난 글에서 paging 기법으로, linear page table을 사용할 때 메모리 접근 비용이 성능 저하를 가져왔다. Address translation 속도를 어떻게 줄일 수 있을까? 메모리 접근 비용이 부담이라면....하드웨어의 도움을 받아보자  🧐 TLB (Translation-Lookaside buffer)자주 참조되는 가상 주소-물리 주소 변환 정보를 저장하는 하드웨어 캐시address translation cacheMMU에 속해있다.가상 메모리 참조..
[OS] CPU 가상화 (CPU Virtualization): 2. Limited Direct Execution: time sharing, context switch *이 글은 Operating Systems: Three Easy Pieces(운영체제 아주 쉬운 세 가지 이야기)를 바탕으로 작성되었습니다. 첨부한 모든 그림은 해당 도서에서 가져온 자료입니다. 내용 중 잘못된 부분이 있다면 알려주세요 :)  우리는 여러 프로그램을 동시에 실행하길 원한다.이를 위한 OS의 핵심 개념이 process, 실행 중인 program이라는 것을 지난 글에서 알아보았다.OS는 CPU를 time-sharing하여, 실행 중인 process를 다른 process로 scheduling하여 context switch함으로 여러 프로그램이 동시에 실행하는 환상을 만들어준다고 했었다. 그럼 어떻게 CPU time-sharing을 효율적으로 할 수 있을까?시스템에 오버헤드 없이 구현할 수 있을..
[OS] CPU 가상화 (CPU Virtualization): 1. 프로세스란 *이 글은 Operating Systems: Three Easy Pieces(운영체제 아주 쉬운 세 가지 이야기)를 바탕으로 작성되었습니다. 첨부한 모든 그림은 해당 도서에서 가져온 자료입니다. 내용 중 잘못된 부분이 있다면 알려주세요 :) 우리는 여러 프로그램을 동시에 실행하길 원한다. 운영체제는 여러 프로그램들이 실행되는 것처럼 환상을 만들어(CPU를 가상화), 이를 가능하게 만든다. 이 과정에서의 운영체제의 핵심 개념 중 하나는 프로세스이다. 프로세스는 현재 실행 중인 프로그램으로 정의된다. 하나의 프로세스를 실행하고, 중단하고 다른 프로세스를 scheduling하여 실행을 반복하며, 실제로 여러 프로그램이 실행되고 있다고 느끼게 만든다. 이를 time-sharing이라고 하며, 하나의 프로세스를 ..
[OS] 메모리 가상화(Memory Virtualization): 5. Paging: 개요 *이 글은 Operating Systems: Three Easy Pieces(운영체제 아주 쉬운 세 가지 이야기)를 바탕으로 작성되었습니다. 첨부한 모든 그림은 해당 도서에서 가져온 자료입니다. 내용 중 잘못된 부분이 있다면 알려주세요 :) 메모리 관리의 계속해서 언급한 문제가 무엇인가?!!!! 바로 단편화(fragmented)이다... 가변 크기로 메모리를 분할하여 할당하는 방법인 segmentation도 단편화 문제... 그럼 고정된 크기로 메모리를 분할하여 사용하면 어떨까? 이 방법이 바로 페이징 Paging 이다. 이번 글에선 이 페이징에 대해 알아보자! 🧐 Paging이란 공간을 동일 크기의 조각으로 분할하는 방법이다. 이 fixed-size(고정된 크기)를 page라고 부른다. 아래 그림으로 ..
[OS] 메모리 가상화(Memory Virtualization): 4. Free-Space Management *이 글은 Operating Systems: Three Easy Pieces(운영체제 아주 쉬운 세 가지 이야기)를 바탕으로 작성되었습니다. 첨부한 모든 그림은 해당 도서에서 가져온 자료입니다. 내용 중 잘못된 부분이 있다면 알려주세요 :) 지난 글에서 segmentation으로 메모리를 관리하여도 외부 단편화 문제가 있다는 것을 보았다. 메모리의 빈 공간들은 여러 크기로 분할되다가 결국 단편화된다. 예시로, 위 그림을 보자. 현재 빈 공간의 총 크기는 20byte로, 10bytes 짜리 공간 2개가 나눠져있다. 하지만, 15byte짜리 요청을 실패한다. 빈 공간들을 어떻게 관리해야할까? 단편화를 최소화 시키기 위해 어떻게 해야할까? 가변 사이즈 요청을 어떻게 만족할 수 있을까? 여러 가지 방법들의 시간..
[OS] 메모리 가상화 (Memory Virtualization): 3. Segmentation *이 글은 Operating Systems: Three Easy Pieces(운영체제 아주 쉬운 세 가지 이야기)를 바탕으로 작성되었습니다. 첨부한 모든 그림은 해당 도서에서 가져온 자료입니다. 내용 중 잘못된 부분이 있다면 알려주세요 :) Dynamic allocation은 heap, stack 사이의 공간이 낭비되는 내부 단편화 문제가 있었다. 이를 방지하기 위해 만들어진 segment에 대해 알아보자! 🧐 Segment란 Address Space는 Code, Heap, Stack 영역 등으로 구성되어있다. 이 각각의 영역을 세그먼트(Segment)라고 한다. 다시 말해, 세그먼트은 특정 길이를 가지는 연속적인 주소 공간이다. 우리가 기존에 공부했던 base, bound를 생각해보자(맨 위 그림 참고..
[OS] 메모리 가상화 (Memory Virtualization): 2. Address translation *이 글은 Operating Systems: Three Easy Pieces(운영체제 아주 쉬운 세 가지 이야기)를 바탕으로 작성되었습니다. 첨부한 모든 그림은 해당 도서에서 가져온 자료입니다. 내용 중 잘못된 부분이 있다면 알려주세요 :) 지난 번 글에서 메모리 가상화의 시작을 다루어보았다. 이번 시간엔 virtual address와 physical address를 어떻게 매핑해주는지 자세히 알아보자! 🧐 현대 운영체제의 목표 효율성(efficiency) & 제어 (control) 효율성을 높이기 위해 하드웨어 활용이 필수적이다. 제어는 자기 메모리 이외의 다른 메모리에 접근하기 못하도록 OS가 보장하는 것이다. 가상화를 제공하는 동시에 효율성과 제어를 추구한다면 어떻게 효율적인 메모리 가상화를 구축할..
[OS] 메모리 가상화 (Memory Virtualization): 1. 메모리 가상화의 시작 *이 글은 Operating Systems: Three Easy Pieces(운영체제 아주 쉬운 세 가지 이야기)를 바탕으로 작성되었습니다. 첨부한 모든 그림은 해당 도서에서 가져온 자료입니다. 내용 중 잘못된 부분이 있다면 알려주세요 :) 가상화는 Virtual 머신, 도커, Amazon AWS와 같은 서버 가상화, CPU 가상화 등 여러 종류가 있다. 이번 글에선 그 중 메모리 가상화를 다뤄보려고 한다. 🧐 초기의 메모리는 어땠을까? 단 하나의 프로세스를 작동시키는 형태였다. 하나의 프로그램만을 넣고 작동하는 것 보기만 해도 정말 쉬운 형태지만, 그만큼 비효율적이다. 후에 multi-programming과 time-sharing을 하게 되면서 여러 개의 프로그램을 짧은 시간 동안 실행하게 되었다. 위..