[CS] 페이징(paging)

2024. 2. 27. 21:18CS/운영체제 &

 

📝 '혼자 공부하는 컴퓨터 구조 + 운영체제'를 공부하고 있습니다. 틀리거나 다른 부분이 있을 수 있습니다.

 


프로세스와 외부 단편화 

 

실행하는 프로그램을 프로세스라 한다. 참고로, 쓰레드는 프로세스가 할당 받은 자원을 이용하는 실행 단위라고 한다. 

 

프로세스는 메모리에 할당되는데, 메모리에 프로세스를 순서대로 할당할 수 있다. 하지만 이 때 발생하는 문제점은 외부 단편화(external gragmentation)가 발생한다는 점이다!! 

 

외부 단편화는 사용 가능한 메모리 공간은 충분하지만, 실제로는 해당 메모리에 할당할 수 없는 상황을 말한다.

 

예를 들어보자. 프로세스가 실행되고, 그 기능을 다하고 종료될 수 있다. 프로세스들이 순서대로 할당되었는데, 종료된 프로세스들이 중간중간 생길 수 있다. 예를 들어, A / B / C / D / E 이렇게 할당되어 있는, 대문자의 이름을 가진 프로세스들이 있다고 가정해보자. 이 프로세스들 중에 B와 D가 종료될 수 있다. 그러면 A /   / C /   / E 가 실행중임을 확인할 수 있다. 이 때 문제가 발생한다. F라는 프로세스가 할당되어야 하는데, F 크기가 B + D 보다 더 큰 프로세스였던 것이다!!! 

 

그렇다면 이 문제를 해결하기 위한 방법은 없을까? 여러 방법이 있다. 그 중 하나가 페이징(paging)이다!!


 

페이징

 

프로세스의 주소 공간을 일정한 단위로 자른다. 잘게 조개진 것을 페이지라고 하는데, 페이지를 메모리 공간인 프레임에 할당하는 기법을 페이징이라고 한다.

 

이 때 중요한 점이, 프로세스가 나뉘어져있기 때문에 잘개 조개진 페이지와 프레임이 연결될 수 있는 것이 필요하다. 이것이 페이지 테이블이라고 한다.

 


 

References

1. 혼자 공부하는 컴퓨터 구조 + 운영체제, 강민철, 한빛미디어

2. 혼자 공부하는 컴퓨터 구조 + 운영체제 (38~40강)

 

 

'CS > 운영체제 &' 카테고리의 다른 글

[Linux] 작업 스케줄러 - Crontab  (0) 2024.05.28
[Linux] 리눅스와 친해지려고 노력중  (0) 2024.02.15
[Linux] 리눅스 사용을 위한 VM  (2) 2024.02.09