OS in The Early System
- 초기 컴퓨터의 메모리 구성은 추상화가 존재하지 않음
- 한 번에 하나의 Process가 전체 메모리를 사용함
- 하나의 프로그램을 실행할 때 OS와 하나의 Process만 사용했기 때문에 메모리를 단순하게 사용해도 문제가 되지 않았음
Multiprogramming and Time Sharing
- 최근 컴퓨터에서는 여러 개의 프로그램을 동시에 실행함 -> 초기 컴퓨터의 메모리 구성으로는 활용성(utilization)
과 효율성(efficiency)이 부족해서 더 이상 사용할 수 없음
- 해결 방안으로 Time Sharing 기법을 사용 -> 여러 개의 프로그램을 실행하도록 메모리 구성을 변경
- 하나의 메모리 공간에서 여러 개의 프로세스가 실행될 수 있도록 메모리 안에 프로세스가 사용할 수 있는 공간을 나눔
하나의 메모리 공간에서 여러 개의 프로세스가 전환이 되므로 활용성과 효율성이 증가
- But, 여러 개의 프로세스들이 한 번에 메모리에 접근 -> 기존에 실행 중인 프로세스에 접근할 수 있기 때문에 보안상 문제가 발생할 수 있음
가상 메모리(Virtual Memory)
32bit vs 64 bit
: CPU가 접근할 수 있는 메모리(RAM) 주소 범위
- 1bit는 0, 1 -> 2가지 경우를 표현
- 32bit -> 2^32가지를 표현할 수 있음
- 1GB -> 2^30가지 경우를 표현 -> 2^32 = 2^2 X 2^30 = 4GB
- 32bit CPU는 4GB 메모리에 접근 가능
- 64bit -> 2^64 = 2^32 X 2^32 = 16GB
- 64bit는 16GB 메모리에 접근 가능
: 프로세스를 실행할 때 실행에 필요한 일부만 메모리에 로드하고 나머지는 디스크에 두는 것
- 물리적 메모리 크기의 한계를 극복하기 위해 나온 기술
- 이를 통해, 프로세스 전체가 물리적 메모리에 있는 것처럼 수행 -> 물리적 메모리가 훨씬 많이 있는 거처럼 보이게 함
- 결과적으로 메모리에 적은 양의 주소 공간만 있으면 충분히 프로세스를 실행할 수 있음 & 더 많은 프로그램을 동시에 실행할 수 있게 됨
- EXAMPLE)
- OS가 실제 메모리를 추상화해서 Process A에게 주소 공간을 나눠줌
- 이때, Process A는 추상화된 주소 공간(가상 주소 공간)에서는 0 ~ 64KB라는 주소를 가지고 있고 0KB에 접근하지만, 실제 메모리(Physical Memory)에서는 320 ~ 384KB라는 주소를 가지고 320KB에 접근함
- 여기서 중요한 점은 OS가 Process A에게 특정 주소의 메모리에 Load되고 잠재적으로 매우 큰 주소 공간을 가지고 있다고 착각하게 만드는 것
주소 공간(Address Space)
: OS가 실제 메모리 공간(Physical Memory)를 추상화해서 만든 것
- 주소 공간에는 현재 실행 중인 프로그램, 즉 프로세스에 대한 모든 것이 들어있음
- 주소 공간 안에는 Program Code, Heap, Stack 등이 존재
- Program Code : Data영역을 포함하며, static 변수, 전역 변수가 저장되는 공간
- Heap : 동적으로 할당된 데이터가 저장되는 공간
- Stack : 함수를 호출하여 위치를 추적할 수 있도록 return address 또는 values가 저장되는 공간, 지역 변수도 포함
- 현실적으로 하나의 프로세스가 전체의 메모리를 차지하지 않음
- 추상화는 OS가 메모리를 가상화(Virtualize)하기 위해 필요 -> OS가 실제 메모리를 추상화함으로써 여러 개의 프로그램을 동시에 실행할 수 있기 때문
- Virtual Address는 Logical Address라고 부르기도 함 -> CPU에 의해 만들어진 주소를 의미
Physical Address는 메모리 장치에 의해 만들어진 주소 & OS가 관리함
가상 메모리의 목표
1) 프로그래밍에서의 사용이 편리함
2) 투명성(Transparency)
- OS가 실행 중인 프로그램이 메모리가 가상화되는지 알지 못하도록 만들어야 함 -> 프로그램은 마치 자신에게 하나의 독립적인 실제 메모리가 있는 거처럼 작동해야 함
3) 효율성(Efficiency)
- OS는 시간과 공간의 면에서 메모리를 효율적으로 사용해야 함
- 성능에 부정적으로 영향을 미치지 않도록 시간을 정하고, 가상화를 위한 최소한의 공간을 발생시키도록 공간을 정해야 함
4) 보호(Protection)
- OS는 프로세스들로부터 프로세스를 보호하고 OS 자신도 프로세스로부터 보호해야 함
Reference
'운영체제' 카테고리의 다른 글
10. 세그멘테이션(Segmentation) (0) | 2025.01.23 |
---|---|
9. 주소 변환(Address Translation) (0) | 2025.01.23 |
7. Context Switching(문맥 교환) (0) | 2025.01.23 |
6. 시스템 콜(System Call) (0) | 2025.01.23 |
추가적인 내용 (0) | 2025.01.19 |