본문 바로가기

Study/운영체제

[1절] OS? 듀얼모드 - 2

OS가 무엇인지, 사용자들에게 효율적으로 서비스를 제공하기 위한 5가지의 방식은 무엇인지를 살펴보았다.

복습해보자면,

운영체제는 

  1. 사용자 인터페이스
  2. 자원 관리

를 수행하는 하나의 프로그램 집합이다.

운영체제와 시스템 프로그램을 합쳐 시스템 소프트웨어라 칭하는 경우가 있다는 것을 배웠다.

그리고 사용자에게 서비스를 효율적으로 제공하기위해

  1. 다중 프로그래밍
  2. 다중 처리 프로그래밍
  3. 시분할 시스템
  4. 대화식 시스템
  5. 실시간 처리 시스템

을 배웠다. 이제 OS의 듀얼모드에 대해 알아보자. 

듀얼모드

듀얼모드를 공부하기 전에, 운영체제 안에는 어떤 것들이 있을까라는 의문을 먼저 던져봤다.

  1. 쉘: 사용자와 운영체제가 의사소통을 하기 위한 창구로 필요한 요소이다.
  2. 장치 관리: 프린터기, 마우스, 하드디스크 등
  3. 파일 관리 
  4. 메모리 관리: 프로그램들이 서로의 경계를 침범하지 않도록 하거나 메모리를 할당하는 역할
  5. 처리기 관리: CPU 처리 능력을 배분하는 역할

이외에도 많은 일을 하지만, 이 정도의 역할을 가지고 있다는 것을 알아두자.

운영체제의 분류

1. 커널

운영체제의 각종 기능들 중 빈번하게 사용되는 부분을 의미한다. 빈번하게 사용되므로 부팅되고 종료될 때까지 메모리에 적재되어있다!

부팅부터 종료 시까지 메모리에 적재되어있어 메모리 상주 프로그램이라고 부르기도 한다.

빈번하게 사용이 되는 경우, 디스크에 둘시 빈번한 입출력이 일어나게 되므로 메모리에 계속 상주시켜둔다고 이해하면 될 듯하다.

2. 유틸리티 프로그램

유틸리티 프로그램은 빈번하게 사용되지 않는 부분들을 의미한다. 디스크에 두었다가 사용될 때 메모리에 적재시킨다.

유틸리티 프로그램도 메모리에 상주시키면 안 될까? 하는 의문을 품을 수 있다. 

하지만 메모리의 용량에는 한계가 있다는 점을 떠올리면 금방 의문을 해결할 수 있을 것이다! 메모리의 용량에는 한계가 있기 때문에 빈번하게 사용되는 커널 부분과 상대적으로 덜 빈번하게 사용되는 유틸리티 부분을 나누어 메모리의 용량을 확보하는 것이다.

결국 듀얼모드란

유저 모드(User Mode)커널 모드(Kernel Mode)로 분리를 한 다음, 프로그램이 실행될 때 어떤 프로그램이든 둘 중 하나의 모드에서 실행되어야 한다는 것이다.

사용자(응용) 프로그램이 중요한 부분을 침범하지 않도록 유저 모드와 커널모드로 나누어 놓았다고 생각을 하자!

만약 사용자 프로그램이 운영체제와 관련된 중요한 부분에 대해 침범하거나 시스템 설정이 되어있는 데이터들을 바꾸다고 생각해보면 이보다 아찔한 일이 없을 수 없다. 이를 방지하기 위해 유저모드와 커널 모드를 나누어, 디스크나 메모리에 접근하는 등의 중요 작업의 경우 커널 모드에 해당하는 커널 프로그램들만 가능하도록 한 것이다. 

사용자 프로그램이 실행을 하는 도중, 커널 프로그램만이 할 수 있는 작업이 필요하다면?

 

그럴 때는 System Call을 통해 커널 모드에 해당하는 프로그램을 호출한다! 해당 작업이 끝나면 다시 사용자 프로그램으로 복귀하게 된다.

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

[1절] OS? OS란 무엇일까? - 1  (0) 2020.07.13