티스토리 뷰

컴퓨터 공학/운영체제

주소공간 개념

삼전동해커 2021. 4. 1. 16:05

멀티프로그래밍

 

여러 프로세스가 실행 준비상태에 있고 운영체제는 그들을 전환하면서 실행하였다. 예를 들어 한 프로세스가 입출력을 실행하면, CPU는 다른 프로세스로 전환하여 CPU 이용률을 증가시켰다.

다음으로 시분할 개념이 사용되었다. 위와 같은 시간이 오래 걸리는 일괄처리방식(batch method)에 한계를 느꼈기 때문이다. 대화식 이용을 통한 즉각적인 응답을 원했다.

시분할 방식은 하나의 프로세스를 짧은 시간동안 모든 메모리(아래 그림)에 접근 권한을 준 상태로 실행시키는 것이다. 시간이 지나면 다음 프로세스를 탑재하여 실행하는 방식이다.

 

운영체제의 정보와 프로세스의 정보를 담고 있는 메모리 상태

프로세스를 교환하는 과정(문맥교환)에서 메모리에 레지스터 상태를 저장하는  건 빠르지만 메모리의 정보를 디스크에 저장하는 건 느렸다. 그래서 프로세스 전환 시 프로세스를 메모리에 그대로 유지하면서, 운영체제가 시분할 시스템을 효율적으로 구현할 수 있게 하는 것이다.

 

운영체제의 정보와 여러 프로세스의 정보를 담고 있는 메모리 상태

위 그림에서 프로세스 A,B,C는 각자의 공간을 할당받았다. 프로세스 A가 실행되는 동안 B,C는 준비 큐에서 실행을 기다린다. 하나의 메모리에 여러 프로세스가 같이 상주하고 있으니 중요한 건 다른 프로세스에 침범하지 않아야 한다는 점이다.

 

주소공간

운영체제는 프로세스가 다른 프로세스에 침범하는 위험을 막기 위해 사용하기 쉬운 메모리 개념을 사용해야 한다. 주소 개념이 이 방법이다.

주소 공간에는 크게 코드,스택,힙 3가지가 있다.

위 그림을 예로 보면,

코드는 메모리의  상단을 차지하고, 1KB를 차지한다. 코드는 정적이기 때문에 메모리 저장이 쉽다. 프로그램이 실행되면서 추가 메모리를 필요로 하지 않는다.

스택과 힙은 프로그램 실행에 따라 확장되거나 축소될 수 있다. 스택을 가장 밑단에 두어 확장 방향을 힙과 반대로 하였다. 이렇게 해야 두 영역이 모두 유동적으로 확장,축소될 수 있다. 

 

메모리에 프로세스를 탑재할 때 가상의 주소를 사용한다. 운영체제는 메모리를 공유하는 프로세스들에게 어떻게 가상의 주소를 할당할까?

가상의 주소에 할당된 프로세스는 자신에게 매우 큰 공간이 할당되었다고 생각한다. 프로세스 A,B,C가 있는 사진에서 프로세스 A가 주소 0(가상주소)으로 부터 load연산을 수행할 때, 운영체제는 하드웨어의 지원을 받아 물리 주소0이 아니라 물리 주소 320KB(A가 탑재된 메모리)를 읽도록 보장해야한다. 

 

가상화의 3가지 목표

 

투명성

일단 여기서 말하는 투명성이란 휜히 보이는 것이 아닌, 아무것도 보이지 않는 것을 의미한다.

프로그램이 가상 메모리의 존재를 확인하지 못하도록 시스템을 구현해야 한다는 것이다. 그래야지 다른 프로그램의  존재를 인식하지 못하고 보호를 할 수 있다.

 

효율성

시간적, 공간적으로 효율성을 가져야 한다. 너무 느리게 실행되어슨 안되고, 가상화에 너무 많은 메모리를 사용해서는 안된다.

 

보호

운영체제는 프로세스를 다른 프로세스로부터 보호해야 하고 운영체제 자신도 프로세스로부터 보호해야 한다.

프로세스가 탑재, 저장, 명령어 반입 등의 결과로 다른 프로세스에 침범하거나 운영체제의 메모리 내용에 접근하면 안된다.

'컴퓨터 공학 > 운영체제' 카테고리의 다른 글

segmentation  (0) 2021.04.12
메모리 관리 API  (0) 2021.04.01
[운영체제]메모리 가상화  (0) 2021.02.16
단일 큐 스케줄링 구현  (0) 2021.02.16
[운영체제]멀티프로세서 스케줄링-2  (0) 2021.02.11
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함