중요하지 않을 수 있는 일부 세부사항을 무시하여 이해하기 쉽게 만드는 과정 또는 결과를 의미한다.
예를 들면 차량을 운전할 때 핸들을 움직이면 원하는 방향으로 갈 수 있는 것을
우리는 안다. 하지만 핸들을 조작함으로써 차량 내부에서 돌아가는 메커니즘은 일반적인 사용자가 알 수는 없다.
하드웨어를 사용하기 쉽게 만드는 방법은 무엇이 있을까?
1. 하드웨어 리소스(자원) 및 프로세스를 묶는 각 추상화를 구축하는 것
CPU -> CPU 가상화(Virtualizing CPU)
Memory -> 가상 주소 공간 (Virtual address space)
Storage -> 파일 (File)
설계시 생각해야 할 것
- 하드웨어 자원을 활용하기 위해, OS는 여러개의 응용 프로그램을 실행한다.
- 응용 프로그램 간의 상호간 보호
결론은 각 응용프로그램이 단일 시스템에서 돌아가는 듯한 착각을 주는 추상화를 구축해야한다.
프로세스는 실행된 하나의 응용 프로그램.
지금까지의 프로세스는 어떻게 생겼을까?
위의 그림은 우리가 알고 있는 메모리(프로세스)의 구조이다.
이것은 매우 깨끗하고 좋은 추상화이며, 실제로는 각 프로세스는
자체 주소 공간과, 자체 가상 CPU, 자체 파일을 가지고 있다.
메모리 관리 영역에서 Contiguous allocation(연속할당) 방식은 외부 단편화 문제를 발생시켰고,
이러한 문제를 해결하기 위해 메모리를 동일한 크기인 page로 쪼개는 방법이 나오게 됨
이러한 방식을 Paging(페이징)이라고 함
페이징이란 논리주소의 고정된 페이지(Page)라고 불리는 블록들로 분할 관리하는 기법.