Real Mode 와 Protected Mode

Real Mode란 머퓨터에 전원이 들어온 후 CPU가 처음 움직이기 시작하면서 활동하는 모드. 리얼모드에서는 프로그램이 한 번에 한 개씩밖에 동작하지 못한다. 그리고, 한 프로그램은 현재 컴퓨터가 가지고 있는 램의 모든 영영ㄱ을 자기 마음대로 사용할 수 있다.

프로그램이 C 언어 함수 while(); 등으로 무한루프를 돌리면 도중에 사람이 인터럽트를 걸어서 멈추기 전에는 어느 다른 프로그램도 실행시킬 수 없기도 하고, 램 영역의 모든 부분에 접근할 수 있었기 때문에 DOS의 중요한 시스템 영역을 실수로든 악의로든 망쳐놓아 컴퓨터가 제대로 작동을 못하게 되는 경우도 허다했다. 현재는 하드웨어의 제어가 간단하다는 이유 등으로 제어용으로 사용하거나 하는 특별한 경우를 제외하고는 DOS는 거의 사용되지 않는다.

그런데 이 Real Mode를 아직까지 사용하고 있는 이유는 예전에 사용되던 8086 CPU용의 DOS 프로그램을 현재에도 계속 사용할 수 있도록 하는 호환성 문제 때문이다. 486을 사용하든지 Pentium을 사용하든지 리얼 모드가 동작하고 있을 때에는 CPU가 모두 하드웨어적으로 8086이 되어 있다고 생각하고 프로그램을 작성해야 한다. 따라서 모든 커널은 컴퓨터에 전원이 들어온 후 리얼 모드에서 여러 가지 하드웨어적인 세팅을 마친 후 프로텍티드 모드로 CPU를 전환한다.

Protected Mode란 현재 많이 사용되고 있는 Microsoft Windows나 Linux가 CPU에서 동작되고 있는 모드이다. 이 모드에서는 모든 프로그램이 한꺼번에 동작한다. 정확히 얘기하면 Protected Mode에서는 유저모드와 커널 모드의 두 가지 모드로 다시 나뉘어지는데, 프로그램들은 실행하는 도중 아직 끝나지 않은 상태에서 CPU가 갑자기(정해진 루틴에 의하여) 커널 모드로 들어가면서 커널의 루틴에 의해 멈추어지게 되고, 다른 프로그램이 이 커널의 루틴에 의해 길행되는 식으로 순서대로 조금씩 조금씩 실행된다. 그리고 각 프로그램이 사용할 수 있는 램의 영역도 커널의 루틴에 의해 정해지게 되고, 더 필요하면 커널 모드로 들어가서 요청하여 허락을 받고 얻어오는 방식을 취한다. 당연히 커널 모드의 영역은 유저 모드 프로그램에서는 정해진 루트 외에는 접근을 할 수 없다.

말하자면 모든 프로그램이 CPU를 공평히 사용하여 CPU시간이라는 소중한 자원의 낭비를 없애고 메모리를 아무렇게나 사용하지 않도록 해서 메모리 낭비를 없애는 관리를 커널 루틴이 해주는 효율적인 것이 Protected Mode이다.

현재 사용되는 대부분의 OS는 Protected Mode에서 동작한다.

 

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.