프로그램은 매우 단순한 일을 한다.명령어를 실행한다.프로세서는 명령어를 수백만번 fetch하고, decode하고, execute한다.프로세서는 프로그램이 완전히 종료될 때까지 위와 같은 과정을 반복한다.물리적인 자원을 이용하여 일반적이고, 강력하고, 사용이 편리한 가상
일반적으로 프로세스는 실행중인 프로그램으로 정의한다.운영체제는 어떻게 무한대에 가까운 CPU가 존재하는 것과 같은 환상을 만드는가?CPU를 가상화하여 이러한 환상을 만든다.하나의 프로세스를 실행하고, 얼마 후 중단 시키고 다른 프로세스를 실행하는 작업을 반복하면서 여러
운영체제는 여러 작업들이 동시에 실행되는 것처럼 보이도록 물리적인 CPU를 공유한다.한 프로세스를 잠깐 실행하고 다른 프로세스를 잠깐 실행하고 이런식으로 계속해서 잠깐식 실행시키는 방법으로 CPU를 가상화한다. ( CPU 시간을 나누어 쓰는 방법 )위와 같은 방법을 사
스케줄링을 공부하기 위해서는 context swtiching 같은 low-level 기법에 대해서는 알고있어야한다.모른다면, 이전 글을 참고하여 다시 공부하자.스케줄링 정책은 원칙이라고도 불립니다.high-levle 기법으로, 운영체제 관리 분야에서 비롯되었음.워크로드
이번 포스트에서는 Multi-Level Feedback Queue( MLFQ )에 대해 알아보겠습니다.MLFQ에서 해결하려는 문제는 두가지 입니다.짧은 작업을 먼저 실행시켜 반환 시간을 최적화하려고합니다. ( s대화형 사용자에게 응답이 빠른 시스템이라는 느낌을 주고 싶
이번 포스트에서는 비례 배분 스케줄러(Propotional Share) 혹은 공정 배분 스케줄러(Fair Share)라고 불리는 스케줄러에 대해 배우겠습니다.이 스케줄러는 반환 시간이나 응답 시간을 최적화하는 대신 스케줄러가 각 작업에게 CPU의 일정한 비율을 보장하는
여태까지는 CPU 가상화에 대해 알아보았습니다, 이번 포스트부턴 메모리 가상화에대해 알아보겠습니다.초기 컴퓨터는 많은 추상화를 제공하지 않았습니다.초기 컴퓨터의 물리 메모리는 아래의 그림과 같이 생겼었습니다.OS는 메모리에 상주하는 루틴들의 집합이였고, 물리 메모리에
CPU 가상화에서는 시스템 콜이 호출되거나, 타이머 인터럽트가 발생하는 등의 특정 타이밍에 운영체제가 개입하여 문제가 발생하지 않도록 하였다. → 약간의 하드웨어 지원을 받아 효율적을 CPU를 제어하는 가상화 방법을 사용하였다.메모리 가상화에서도 비슷한 전략을 추구할
이전 포스트에선 base와 bound를 통한 주소 변환법을 알아보았습니다.하지만, 이 방법은 스택과 힙 사이의 공간을 낭비한다는 단점이 있어 우리는 새로운 방식을 알아보겠습니다.세그멘테이션은 MMU에 하나의 base와 bind가 존재하는 것이 아닌, 세그멘트마다 bas
이번 포스트에서는 빈 공간을 관리하는 문제에대해 논의할 것입니다. 세그멘테이션으로 물리메모리를 관리할시에 빈 공간 관리는 어렵고, 외부 단편화가 어느 경우에도 존재하게 됩니다.빈 공간은 다양한 크기의 작은 조각으로 분할되어 결국 단편화되기 때문입니다.빈 공간들의 전체
이번 포스트는 페이징의 기초 개념에 대해 알아보겠습니다.운영체제는 거의 모든 공간관리를 두가지 중 하나를 사용합니다.첫번째는 세그멘테이션에서 보았듯이, 가변 크기의 조각들로 분할하는 것입니다.이 방법은 불행하게도, 단편화라는 태생적인 무제를 가지고 있습니다.두번째 방법
이번 포스트에서는 저번 포스트에서 알아본 페이징의 주소 변환을 더 빠르게 하는 방법을 알아보겠습니다.먼저 저번 포스트에 알아본 바로는 페이징은 성능 저하를 유발할 수 있습니다.페이징은 주소 공간을 작은 크기로 나누고 각 페이지의 실제 위치를 메모리에 저장합니다.이를 저
우리는 이전 포스트에서 페이징의 속도를 개선하기 위해서 TLB를 알아보았습니다.하지만, 페이징의 두 번째 문제점은 페이지 테이블의 크기입니다.선형 페이지 테이블을 예로 들어보면, 페이지 크기가 4KB이고 페이지 테이블의 각 항목은 4byte인 32bit 주소 공간을 가
우리는 이전 포스트까지 주소 공간이 비현실적을 작아서 모두 물리 메모리에 탑재가 가능하다는 가정을 하였습니다.정확히는, 실행 중인 프로세스의 전체 주소 공간이 메모리에 탑재된다고 가정하고 있었습니다.이제는 그 가정을 완하하겠습니다.이 포스트에서는 다수의 프로세스들이 동
이번 포스트에서는 저번 포스트에서 알아본 디스크 스왑이 되었을 때, 페이지 교체 정책을 어떻게 효율적으로 정할 수 있는지에 대해 알아보겠습니다.시스템의 전체 페이들 중 일부분만이 메인 메모리에 유지된다는 것을 가정하면, 메인 메모리는 시스템의 가상 메모리 페이지를 가져