본문 바로가기

분류 전체보기

(17)
[OS] 메모리 가상화(Memory Virtualization): 4. Free-Space Management *이 글은 Operating Systems: Three Easy Pieces(운영체제 아주 쉬운 세 가지 이야기)를 바탕으로 작성되었습니다. 첨부한 모든 그림은 해당 도서에서 가져온 자료입니다. 내용 중 잘못된 부분이 있다면 알려주세요 :) 지난 글에서 segmentation으로 메모리를 관리하여도 외부 단편화 문제가 있다는 것을 보았다. 메모리의 빈 공간들은 여러 크기로 분할되다가 결국 단편화된다. 예시로, 위 그림을 보자. 현재 빈 공간의 총 크기는 20byte로, 10bytes 짜리 공간 2개가 나눠져있다. 하지만, 15byte짜리 요청을 실패한다. 빈 공간들을 어떻게 관리해야할까? 단편화를 최소화 시키기 위해 어떻게 해야할까? 가변 사이즈 요청을 어떻게 만족할 수 있을까? 여러 가지 방법들의 시간..
[Docker] Docker로 배포하기: 2. 도커 컨테이너 생성, 도커 컴포즈 실행 지난 글에서 가상화와 도커에 대해 공부하면서, 도커가 무엇인지 어느 정도 파악했다.이제 실제 사용까지 해보자! 🧐 Docker desktop 다운로드도커 데스크탑은 컨테이너화된 애플리케이션 및 마이크로서비스를 빌드, 공유 및 실행을 할 수 있는 애플리케이션이다. https://docs.docker.com/desktop/ Overview of Docker DesktopExplore more of Docker Desktop, what it has to offer, and its key features. Take the next step by downloading or find additional resources.docs.docker.com 도커 데스크탑 다운로드 후 터미널 창에서 docker --vers..
[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을 하게 되면서 여러 개의 프로그램을 짧은 시간 동안 실행하게 되었다. 위..
[Docker] Docker로 배포하기: 1. 가상화, Docker란 도커.. 도커 환경에서... 도커 이미지... 이제 4학년인 IT대 학생으로서 수업에서도 꽤나 듣던 도커 항상 대충 알려주신 대로 얼렁뚱땅 써본 적은 있어도, 왜 쓰는지, 어떻게 쓰는지 공부해본 적은 없어서 쓸 때마다 새로운 느낌이었다... 하하;; 써본 적은 있어도, 막상 쓸 줄은 모르는 Docker😭 이런 애매한 상태에서 원티드에서 진행하는 4월 프리온보딩 백엔드 챌린지가 '도커로 배포 경험'이라는 것을 보았고, 도커를 외면하며 꼭두각시처럼 사용했던(?) 지난 과거를 청산하고자 신청하게 되었다. 이번 기회로 도커를 왜 쓰는지 명확하게 나만의 답을 말할 수 있으며, 실제 적절한 상황에서 사용할 수 있길 바라며 블로그에 정리해보겠다. 첫 글은 Docker란... 🧐 가상화 (Virtualization) ..
[독서] "Unix의 탄생"을 읽고 운영체제 수업은 2년 전, 3학년이 되었을 때 처음 들었다. 그땐 운영체제 라는 개념 자체를 이해하지 못했고, 딱히 이해하려는 노력도 하지 않았다. Linux나 Window 등이 OS구나 하고만 알고 있었다. 결국 운영체제 학점이 C가 나왔다. 이후 3학년이 지나고, 중간에 1년간 휴학을 하고, 4학년이 된 지금 운영체제를 재수강하고 있다. 별로인 학점을 재수강할 정도로 학점을 관리하거나 연연하는 건 아닌데, 그간 운영체제에 대한 제대로 된 이해가 없어서 느끼는 불편함(..?) 찜찜함과 의문이 있었다. 그리고 운영체제 수업 첫 날 교수님이 추천해주신 책 'Unix의 탄생'을 읽어보고, 이에 대해 나의 블로그 첫 글을 작성한다. Unix의 탄생은 어떤 과정을 거쳐 Unix라는 운영체제가 만들어졌는지, 하나..