Search
moon
sun
🍎

[운영체제] 메모리 가상화 - 개요

간단소개
프로세스 주소공간에 대해 알아보자
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
운영체제
Scrap
태그
메모리
9 more properties
💡
“운영체제 : 아주 쉬운 세가지 이야기”를 읽으면서 핵심 내용을 정리하였습니다. 이화여대 반효경 교수님의 운영체제 강의를 듣고 복습 차원에서 책 한권을 완독해보고자 합니다. 잘못된 정보가 있다면 댓글 남겨주시면 감사하겠습니다!

주소 공간의 개념

초기의 컴퓨터는 한번에 하나의 프로세스만 실행 할 수 있었기 때문에 아주 간단한 주소 공간을 가지고 있었다. 물리 메모리에 운영체제가 항상 상주하고 있었고 나머지공간은 프로세스를 위한 공간이었다. 하지만 사용자가 컴퓨터를 더 효과적으로 사용하기를 원하게 되면서 멀티 프로그래밍과 시분할 시스템이라는 개념이 등장하게 되었고 발전된 개념이 등장함에 따라 주소 공간의 개념도 발전할 필요가 생겼다.
•
운영체제는 메모리를 어떻게 가상화를 하여 프로세스에게 전용 메모리 공간이 있는 것처럼 느끼게 할까?
💡
멀티 프로그래밍 여러 프로세스가 실행 준비 상태에 있고 운영체제는 프로세스를 전환 시키면서 실행 초기 하나의 프로세서가 하나의 프로세스만 처리할 수 있는 방식에서 여러 프로세스를 처리 할 수 있도록 발전한 방식
💡
시분할 시스템 하나의 프로세스를 짧은 시간동안 실행시키고 다른 프로세스로 전환하는 작업을 아주 빠르게 진행하면서 마치 동시에 여러 프로세스가 실행되고 있는 것과 같은 효과를 주는 시스템

초기 주소 공간의 한계 및 발전

•
초기
◦
물리 메모리 공간의 남는 부분 전체를 하나의 프로세스가 사용함
◦
프로세스간 전환이 일어날 때 마다 해당 시점의 프로세스 상태를 디스크에 저장
◦
디스크에 읽고 쓰는 과정은 매우 느리기 때문에 개선 필요
•
발전
◦
프로세스 전환시 프로세스를 메모리에 그대로 유지하면서 효율적으로 시분할 시스템 구현
◦
여러 프로그램이 동시에 메모리에 존재하게 되면서 한 프로세스가 다른 프로세스의 주소공간에 침범할 수 없도록 보호가 중요한 문제로 부상함

주소 공간

실행 되는 프로세스가 가정하는 메모리의 모습
•
코드 세그먼트
◦
프로그램의 코드가 저장된 부분
◦
코드는 정적이기 때문에 추가적인 메모리가 필요하지 않음
•
스택
◦
함수 호출 체인 상의 현재 위치, 지역 변수, 함수 인자와 반환값등을 저장
◦
메모리의 이미 할당된 공간을 사용하기 때문. 스택 포인터를 움직이는 것 만으로 변수를 저장할 수 있음
◦
정해진 스택 메모리를 넘어가면 stackoverflow. 재귀를 반복적으로 호출할때 생길 수 있음
◦
스택에 저장된 개체가 캐시에 담길 확률이 힙보다 높다
•
힙
◦
동적으로 할당되는 메모리를 위해 존재
◦
새로운 메모리 할당시 빈공간 리스트에서 공간을 찾는 과정 / 해제 시 빈공간 리스트를 합치는 과정등 부가적인 과정들에서 오버헤드 발생함
•
가상 주소 (Virtual address)
◦
모든 프로세스는 가상주소라는 큰 주소 공간을 가지고 있는 것처럼 생각을 한다.
◦
하지만 가상주소의 0번지가 물리 메모리의 0번지가 아니다.
◦
가상 주소의 0번지를 실제 물리 메모리의 주소로 맵핑 하는 것이 메모리 가상화의 핵심이다.

메모리 가상화의 목표

•
투명성
◦
운영체제는 프로그램이 가상 메모리의 존재를 인식하지 못하도록 가상 메모리 시스템을 구축 해야한다.
◦
프로그램은 자신이 전용 물리 메모리를 소유한 것 처럼 행동해야한다.
•
효율성
◦
시간과 공간 측면에서 효율적이어야한다.
◦
가상화를 지원하기 위해 너무 많은 시간이 걸리거나 너무 많은 메모리가 사용되어서는 안된다.
•
보호
◦
운영체제는 프로세스를 다른 프로세스로 부터 보호해야하고 운영체제 자신도 다른 프로세스로 부터 보호 되어야 한다.
◦
자신의 주소 공간 이외의 주소에 접근할 수 없다.
💡
고립(isolation)의 중요성 신뢰할 수 있는 시스템을 구축하는데 중요한 원칙이다. 한 개체가 실패하더라도 다른 개체에 영향을 주지 않는 것을 말한다. 메모리의 고립을 사용하면 특정 프로세스가 운영체제에 영향을 끼칠 수 없다는 것도 성립한다. 마이크로 커널은 운영체제 안에서 운영체제의 구성요소끼리 고립을 시킨 방식을 말한다.