flow-vector
article thumbnail
메모리 가상화 - 페이징 속도 개선 (TLB)

"운영체제 : 아주 쉬운 세가지 이야기"를 읽으면서 핵심 내용을 정리하였습니다. 이화여대 반효경 교수님의 운영체제 강의를 듣고 복습 차원에서 책 한권을 완독해 보고자 합니다. 잘못된 정보가 있다면 댓글 남겨주시면 감사하겠습니다! 페이징의 한계 페이징을 잘 못 구현하면 큰 성능 저하가 올 수 있는데 이유는 아래와 같다 가상 주소 변환을 위해 주소 변환에 필요한 정보를 담고 있는 페이지 테이블을 접근(메모리 읽기 작업 느림)해야 되기 때문에 성능저하 발생 TLB 란? 페이징의 한계를 해결하기 위해 하드웨어의 도움을 받는다. 변환 색인 버퍼(translation-lookaside buffer, TLB)는 MMU의 일부로서 자주 참조되는 가상 주소의 변환 정보를 저장하는 하드웨어 캐시이다. 주소 변환 캐시(ad..

article thumbnail
메모리 가상화 - 페이징 기법

"운영체제 : 아주 쉬운 세가지 이야기"를 읽으면서 핵심 내용을 정리하였습니다. 이화여대 반효경 교수님의 운영체제 강의를 듣고 복습 차원에서 책 한권을 완독해 보고자 합니다. 잘못된 정보가 있다면 댓글 남겨주시면 감사하겠습니다! 세그멘테이션의 한계 논리적인 의미를 가지는 가변크기의 공간으로 메모리를 나눠서 물리메모리에 올리게 되면 외부 단편화가 발생할 수 있는 태생적인 한계를 가지고 있다. 이를 해결 하기 위해 동일 크기의 공간으로 분할하는 아이디어에 대해 연구가 이루어졌고 이를 페이징(paging)이라고 부르게 되었다. 페이징에서는 프로세스의 주소공간을 고정 크기의 단위로 나누게 되고 물리 메모리 또한 페이지 프레임(page frame)이라는 고정크기로 나누게 되었다. 페이징의 간단한 예시 위의 그림과..

article thumbnail
메모리 가상화 - 세그멘테이션

"운영체제 : 아주 쉬운 세가지 이야기"를 읽으면서 핵심 내용을 정리하였습니다. 이화여대 반효경 교수님의 운영체제 강의를 듣고 복습 차원에서 책 한권을 완독해 보고자 합니다. 잘못된 정보가 있다면 댓글 남겨주시면 감사하겠습니다! 동적 재배치의 한계 지금까지 메모리를 가상화하는데 필요한 주소변환의 원리에 대해 알아 보았다. 동적 재배치라는 하드웨어의 지원을 받아 주소를 변환하는 방법은 간단하였지만 다음과 같은 한계가 있었다. 프로그램의 전체 주소공간을 물리 메모리에 탑재하여 발생하는 내부 단편화 상기 그림의 힙과 스택사이의 큰 빈공간 그림의 예시는 작은 주소 공간을 가정하였지만 32비트 컴퓨터의 경우 4GB의 주소공간을 가지고 있다 프로그램은 실제 수 메가바이트에 그치지만 4GB를 모두 물리메모리에 올려야..

article thumbnail
메모리 가상화 - 주소 변환의 원리

"운영체제 : 아주 쉬운 세가지 이야기"를 읽으면서 핵심 내용을 정리하였습니다. 이화여대 반효경 교수님의 운영체제 강의를 듣고 복습 차원에서 책 한권을 완독해 보고자 합니다. 잘못된 정보가 있다면 댓글 남겨주시면 감사하겠습니다! 주소 변환의 원리 운영체제는 효율성, 제어, 유연성을 추구하면서 주소변환을 하려고 한다. 효율성 : 레지스터, TLB 등의 하드웨어의 도움을 받는다 제어 : 하드웨어의 도움을 받아 응용프로그램이 자기 자신의 메모리 이외의 공간에 접근하지 못하도록 막는다. 유연성 : 프로그래머가 원하는 대로 주소공간을 사용할 수 있어야 한다 주소 변환의 핵심 기법은 하드웨어 기반 주소 변환이다. 이러한 주소 변환을 통해 가상 주소를 정보가 실제 존재하는 물리 주소로 변환한다. 즉, 프로그램의 모든..

article thumbnail
CPU 가상화(3) - 스케줄러 (2)

"운영체제 : 아주 쉬운 세가지 이야기"를 읽으면서 핵심 내용을 정리하였습니다. 이화여대 반효경 교수님의 운영체제 강의를 듣고 복습 차원에서 책 한권을 완독해 보고자 합니다. 잘못된 정보가 있다면 댓글 남겨주시면 감사하겠습니다! 멀티 레벨 피드백 큐(Multi-level Feedback Queue, MLFQ) 이전까지 스케줄러를 설계를 위해 먼저 핵심 가정들을 세우고 어떤 지표로 스케줄러를 평가할지 선정한 후 가정들을 하나씩 완화해 나가면서 스케줄러를 발전시켜 보았다. 아직 "각 작업의 실행 시간은 사전에 알려져있다" 는 가정을 완화 하지 못했고 이를 해결하는 멀티 레벨 피드백 큐라는 스케줄링 알고리즘에 대해 알아보고자 한다. 멀티레벨 피드백 큐 알고리즘의 목적은 아래와 같다. 반환시간의 최적화 응답시간..

article thumbnail
CPU 가상화(2) - 스케줄러(1)

스케줄링 정책 지금까지는 CPU 가상화를 구현하는 저수준의 기법인 “제한적 직접 실행”에 대해 알아 보았다. 제한적 직접실행을 통해 프로세스간 전환이 되는 과정(문맥 교환)을 이해하고 어떻게 운영체제의 주도하에 시스템(물리 장치들)을 관리 할 수 있는지 알 수 있었다. 그렇다면 운영체제는 어떤 원칙을 통해 프로세스를 전환할까? A 프로세스 실행중 타이머 인터럽트가 발생 했다. 수많은 프로세스중 어떤 프로세스로 전환할까? 운영체제는 특정한 원칙을 가지고 있고 이를 “스케쥴링 정책” 이라고 한다. 아래의 질문을 통해 어떻게 정책들이 발전해 왔는지 알아보고자 한다. 핵심 가정은 무엇일까? 어떤 평가 기준으로 정책을 평가할 수 있을까? 핵심 가정 아래의 가정들은 비현실적이긴 하지만 차차 가정을 줄여 나가면서 최..

article thumbnail
CPU 가상화(1) - 제한적 직접 실행(Limited Direct Execution)

"운영체제 : 아주 쉬운 세가지 이야기"를 읽으면서 핵심 내용을 정리하였습니다. 이화여대 반효경 교수님의 운영체제 강의를 듣고 복습 차원에서 책 한권을 완독해 보고자 합니다. 잘못된 정보가 있다면 댓글 남겨주시면 감사하겠습니다! 제한적 직접 실행 (Limited Direct Execution) CPU 가상화를 구현하기 위한 핵심적인 기법 직접 실행만으로는 부족한가? 프로세스가 CPU에 올라가서 실행되는 것을 직접 실행이라고 하는데, 어떤것이 부족해서 직접 실행에 '제한' 이라는 키워드가 붙게 되었을까? 우선 "직접 실행" 시 운영체제가 하는 일에 대해서 먼저 알아보자. 직접 실행 시 운영체제가 하는 일 실행하려는 프로그램을 프로세스 리스트에 추가한다. 프로그램을 위한 메모리를 할당한다. 프로그램을 메모리..

article thumbnail
프로세스 관련 API

💡 "운영체제 : 아주 쉬운 세가지 이야기"를 읽으면서 핵심 내용을 정리하였습니다. 이화여대 반효경 교수님의 운영체제 강의를 듣고 복습 차원에서 책 한권을 완독해 보고자 합니다. 잘못된 정보가 있다면 댓글 남겨주시면 감사하겠습니다! 1. fork() 자식 프로세스를 만드는 시스템콜 자식 프로세스는 부모의 주소 공간을 복사하여 가지게 되지만 부모 프로세스와는 별도의 새로운 프로세스이다. 자식 프로세스가 상속받는 것 file descriptor 시그널 처리 설정 환경 변수 2. exec() 부모 프로세스에서 fork() 시스템콜을 사용하여 자식프로세스를 만든 뒤 exec() 시스템콜을 사용하면 새로운 프로그램을 실행 시킬 수 있다. exec()에 원하는 프로그램에 맞는 인자를 넣어 주면 해당 프로그램의 코드..