CPU 가상화

하나 또는 소규모 CPU 집합을 무한개의 CPU가 존재하는 것처럼 변환하여 동시에 많은 수의 프로그램을 실행시키는 것.

API는 OS와 사용자가 상호작용할 수 있는 주된 방법이다.

 

메모리 가상화

각 프로세스는 자신만의 가상 주소 공간을 가진다. OS는 이 가상 주소 공간을 컴퓨터의 물리 메모리로 매핑한다.

실행중인 프로그램의 입장에서는 자기 자신만의 물리 메모리를 갖는것처럼 보인다.

 

병행성

프로그램이 동시에 많은 일을 하려 할 때 발생하는, 그리고 반드시 해결해야 하는 문제. 병행성 문제는 우선 OS 자체에서 발생한다. OS뿐만 아니라 멀티 스레드 프로그램에서도 동일한 문제가 발생한다. 명령어가 원자적(한꺼번에)으로 실행되지 않기 때문에 의도하지 않은 일이 발생할 수 있다.

 

영속성

CPU나 메모리 가상화와는 달리 OS는 프로그램 별로가상 디스크를 따로 생성하지 않는다.

OS는 syscall이라는 표준화된 방법으로 장치들을 접근할 수 있게 한다. OS는 마치 표준 라이브러리처럼 보이기도 한다.

 

설계 목표

OS는 CPU, 메모리, 디스크와 같은 물리 자원을 가상화 한다.

OS는 병행성과 관련된 복잡한 문제를 처리한다.

OS는 파일을 영속성으로 저장하여 아주 오랜 시간 안전한 상태에 있게 한다.

 

OS의 설계와 구현에 중요한 목표는 성능이다. (=오버헤드의 최소화)

또 다른 목표는 응용 프로그램 간의 보호, 그리고 OS와 응용 프로그램 간의 보호이다. 보호는 고립 원칙의 핵심이다.

에너지 효율성, 보안(보호의 확장), 이동성의 목표도 있다.

 

멀티프로그래밍 시대

작업들을 빠르게 번갈아가며 실행해서 CPU 사용률을 향상시킨다. 메모리 보호와 병행성 문제에 대한 이해가 중요하다.

'이론 > 운영체제' 카테고리의 다른 글

[OSTEP] III. 영속성  (0) 2022.08.21
[OSTEP] II. 병행성  (0) 2022.08.21
[OSTEP] I. 가상화  (0) 2022.08.19
쉽게 배우는 운영체제  (0) 2022.08.16

+ Recent posts