컴퓨터 시스템의 구조
1. 하드웨어 보안
- 운영체제는 여러 프로그램이 동시에 실행될 수 있는 다중 프로그래밍 환경에서도 동작한다. 따라서 각 프로그램이 다른 프로그램의 실행을 방해하거나 프로그램 간에 충돌을 일으키는 문제를 막기 위해 하드웨어 대한 각종 보안 기법이 필요하다.
- 하드웨어적인 보안을 유지하기 위해서 운영체제는 기본적으로 커널모드와 사용자모드인 두 가지 모드를 지원한다.
- 어떤 프로그램이 이상한 명령을 통해 다른 프로그램의 메모리 영역이나 파일 영역을 침범하는 경우가 발생할 수 있으며, 중요한 정보에 접근해 위험한 상황을 초래할 수 있는 연산은 커널모드에서만 실행가능하도록 한다. 또한 그렇지 않은 일반적인 연산만 사용자모드에서 사용자 프로그램이 수행하도록 통제하여 보안성을 확보하게 된다.
- 커널모드는 운영체제가 CPU의 제어권을 가지고 운영체제코드를 실행하는 모드로서, 이 모드에서는 모든 종료의 명령을 다 실행할 수 있다. 사용자 모드에서는 일반 사용자 프로그램이 실행되며 제한적인 명령만을 수행할 수 있다.
1) 모드비트
- 컴퓨터 시스템은 CPU 내부에 모드비트(mode bit)를 두어 사용자 프로그램 감시하게 된다. 모드 비트가 0으로 세팅되어 있으면 커널모드로서 모든 명령을 수행할 수 있고, 모드비트가 1로 세팅되어 있으면 사용자모드로서 제한된 명령만을 수행할 수 있다.
- 사용자 프로그램이수행되다가 하드웨어 접근 등 보안이 필요한 중요한 명령을 수행해야 할 경우에는 시스템 콜을 통해 운영체제가 대신해줄 것을 요청한다. 그러면 CPU의 제어권은 다시 운영체제로 넘어가고 인터럽트가 발생할 때 모드비트는 자동으로 0이 세팅되므로 운영체제는 서비스에 필요한 모든 종료의 명령을 다 수행할 수 있게 된다. 요청한 작업이 모두 끝난 경우 모드비트를 다시 1로 만들어 사용자 프로그램에게 CPU를 넘겨주게 된다.
- 시스템의 보안과 관련된 명령들을 특권 명령이라 지칭하며, 특권명령은 모드비트가 0일 때에만 수행하며, 특권명령은 커널 모드에서 운영체제에 의해서만 수행할 수 있는 것이다.
2) 입출력 명령
- 입출력 명령은 특권 명령이기 때문에 모드비트가 0일 떄만 수행 가능하며, 사용자 프로그램이 입출력을 하고 싶으면 시스템 콜로 운영체제에 요청해야 한다.
- 운영체제가 CPU를 할당받고 인터럽트 벡터의 특정 위치를 통해 해당 인터럽트 처리루틴으로 이동하며 인터럽트 하드웨어에 의해 모드비트가 0으로 세팅되어 운영체제는 입출력 처리를 수행할 수 있게 된다.
- 요청된 입출력이 완료되면 CPU의 제어권은 다시 사용자 프로그램에게 넘길 수 있게 되며 사용자 프로그램이 CPU를 다시 할당받아 시스템 콜 이후의 명령을 수행한다.
2. 메모리 보안
- 디스크 뿐만 아니라 메모리의 경우에도 보안이 필요하다. 여러 프로그램이 메모리에 동시에 올라가서 실행되기 때문에 하나의 사용자 프로그램이 다른 사용자 프로그램이나 운영체제가 위치한 메모리 영역을 침범할 수 있기 때문이다.
- 인터럽트 벡터와 인터럽트 처리루틴이 있는 곳은 각별한 보안으로 운영체제 커널이 위치한 영역을 접근하려는 시도를 막아야한다.
- 2개의 레지스터를 사용해서 프로그램이 접근하려는 메모리 부분이 합법적인지 체크함으로써 메모리를 보호할 수 있다. 이때 사용되는 2개의 레지스터는 기준 레지스터(base register)와 한계 레지스터(limit register)가 있다.
- 기준 레지스터는 어떤 프로그램이 수행되는 동안 그 프로그램이 합법적으로 접근할 수 있는 메모리상의 가장 작은 주소를 보관하고 있다.
- 한계 레지스터는 그 프로그램이 기준 레지스터값부터 접근할 수 있는 메모리의 범위를 보관하고 있다.
- 사용자 프로그램은 기준 레지스터에 있는 주소부터 기준 레지스터 + 한계 레지스터값 사이의 주소 영역에만 접근할 수 있으며, 접근하려는 주소가 이 범위 안에 없으면 불법적인 메모리 접근이므로 예외상황이라는 일종의 소프트웨어 인터럽트를 발생하게 된다. 예외상황은 운영체제에 소프트웨어 인터럽트를 발생시켜 CPU의 제어권을 해당 프로그램으로부터 운영체제로 이야시키고 운영체제는 예외상황을 발생시킨 프로그램을 강제 종료시킨다.
- 사용자모드인 경우에는 기준 레지스터와 한계 레지스터를 사용해서 메모리를 보호하고 커널모드에서는 메모리에 무제한으로 접근이 가능하다.
3. CPU 보호
- CPU가 하나의 프로그램에 의해 독점되는 것을 막기 위해 운영체제는 타이머(timer)라는 하드웨어를 사용한다.
- 타이머는 정해진 시간이 지나면 인터럽트를 발생시켜 운영체제가 CPU의 제어권을 획득할 수 있도록 하는 역할을 수행한다.
- 타이머에 의해 발생되는 인터럽트 처리루틴의 역할은 지금 CPU를 점유하고 명령을 실행 중인 프로그램으로부터 CPU를 빼앗아 다른 프로그램에게 CPU를 이양하는 것이다.
출처 : (http://www.kocw.net/home/m/search/kemView.do?kemId=1046323)
- 강의 : 이화여자대학교, 반효경 (운영체제)
- 책 : 운영체제와 정보기술의 원리 [반효경]
위 강의와 책을 보며 공부한 내용을 기록하였습니다.
'CS > 운영체제' 카테고리의 다른 글
동기-비동기와 블럭-논블록의 차이 (0) | 2022.09.18 |
---|---|
프로세스와 스레드의 차이 (1) | 2022.09.11 |
컴퓨터 시스템의 동작 원리-2 (0) | 2021.10.28 |
컴퓨터 시스템의 동작 원리-1 (0) | 2021.10.28 |
운영체제(OS)의 자원 관리 기능 (0) | 2021.10.28 |