[OS] Continuous allocation : Uniprogramming

parkheeddong·2023년 5월 10일
0

Operating System

목록 보기
38/63
post-thumbnail

Uniprogramming

= 컴퓨터 시스템 내에 프로세스가 하나만 있는 환경

프로세스가 하나이므로, 메모리 할당받을 프로세스도 하나이다.
커널 공간 외의 모든 공간을 프로세스에게 할당하면 된다.
나머지 부분은 그냥 버리면 된다. (Wasted Space)

1) Issue. Program-size > Memory-size

💭 만약 프로세스가 메모리 공간(유저 스페이스)보다 더 크면 어떻게 할까?

Overlay Structure을 활용한다

프로세스를 나누어서 section-1, section-2로 나누고, section-1을 먼저 실행한 후 section-2를 실행한다.

Relocation, binding의 문제가 있으므로 compiler, linker, loader의 support가 필요하다.

2) Issue. Kernel Protection

💭 사용자 프로그램이 갑자기 커널에 접근하려고 하면?!

✅ 커널에 접근하려면 반드시 시스템 콜을 해야한다.
커널과 유저스페이스 경계인 Boundary Address를 Boundary Register에 저장하고, 유저 프로그램이 접근하려는 주소가 커널 주소가 아닌 주소에만 접근하도록 해준다.

3) Issue. Low System Resource Utilization, Low System Performance

✅ 프로세스가 하나여서 컴퓨터 시스템의 자원활용도가 낮고, 시스템 성능도 낮다.
따라서 멀티프로그래밍을 해야 한다! -> FPM, VPM 기법을 활용하자 !

0개의 댓글