일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 2018 카카오 공채
- 백준
- 카카오 공채
- 젠킨스
- 2020 카카오 공채
- Baekjoon
- 2019 카카오 공채
- 2020 KAKAO BLIND RECRUITMENT
- 2018 KAKAO BLIND RECRUITMENT
- 알고리즘
- 삼성 SW 기출문제
- 2019 카카오 개발자 겨울 인턴십 코딩테스트
- 2018 카카오
- 카카오
- CS 스터디
- 자바
- bfs
- c++
- set
- 삼성 SW 역량테스트
- 프로그래머스
- 2019 KAKAO BLIND RECRUITMENT
- dfs
- 2018 KAKAO BLIND RECRUITMENT 1차
- map
- gradle
- gcp
- 비트마스크
- 부스트코스
- Java
- Today
- Total
아무코딩
[운영체제] 이중 동작 모드(Dual-mode Operation) 본문
이중 동작 모드란?
운영체제를 보호하기 위한 기법이다. 사용자와 운영체제는 시스템 자원을 공유한다. 그렇기 때문에 사용자에게 제한을 두지 않으면 사용자가 메모리 내의 주요 운영체제 자원을 망가뜨릴 위험이 생기게 된다. 즉, 운영체제의 원활한 작동과 기능을 위해서는 사용자의 시스템 자원 접근을 제한하는 보호 장치가 필수적이다.
이러한 보호장치가 바로 이중 동작모드(Dual-mode Operation)이다.
두가지 모드로 나누어진다
-
커널모드
-
수퍼바이저 모드(supervisor mode), 시스템 모드(system mode, 특권모드(privileged mode) 로도 불리운다.
-
운영체제를 위한 동작을 담당.
-
시스템의 모든 메모리에 접근 할 수 있고 모든 CPU명령을 실행 할 수 있다.
-
운영체제 코드나 디바이스 드라이버 같은 커널모드 코드를 실행한다.
-
CPU는 커널모드 특권 수준에서 코드를 실행한다.
-
-
유저모드
-
사용자를 위한 동작을 담당.
-
사용자 애플리케이션 코드가 실행한다.
-
시스템 데이터에 제한된 접근만이 허용되며 하드웨어를 직접 접근할 수 없다.
-
유저 애플리케이션은 시스템 서비스 호출을 하면 유저모드에서 커널모드로 전환된다.
-
CPU 유저모드 특권 수준으로 코드를 실행한다.
-
유저모드에서 실행하는 스레드는 자신만의 유저모드 스택을 가진다.
-
이중 동작 모드의 구조
-
사용자가 사용하는 응용프로그램은 유저 모드에서 작동이 되어지게 한다.
-
해당 프로그램이 운영체제에게 시스템 사용을 요청하게 되면 커널모드로 바꾸어서 요청된 시스템을 실행
-
다시 사용자 모드로 전환
모드비트
이 커널모드와 사용자 모드를 구분짓기 위해 모드 비트(mode bit) 라고 하는 하나의 비트가 컴퓨터의 하드웨어에 추가 되었는데. 이비트는 커널모드(0)과 유저모드(1)을 나타낸다. 모드비트의 사용으로 우리는 운영체제를 위하여 실행되는 작업과 사용자를 위해 실행되는 작업을 구분할 수 있다.
-
시스템 부팅시 하드웨어는 커널모드에서 시작되는데 그 다음 운영체제가 적재되고 유저모드에서 사용자프로세스가 시작되게 한다. 트랩이나 인터럽트가 발생할때마다 하드웨어는 커널모드로 전환하게 된다. 그래서 대표적으로 컴퓨터가 제어를 얻을때 마다 항상 커널모드로 있게 된다.
-
유저모드에서 불법적인 명령을 실행하게 되면 하드웨어는 운영체제로 트랩을 발생시키게 되면서 커널모드에 접근할 수 없다.
모드의 변화 과정
-
컴퓨터 부팅 과정 - 커널 모드
-
애플리케이션 실행 과정 - 커널 모드
-
애플리케이션 실행중 - 유저 모드
-
인터럽트 발생 후 처리 과정 - 커널 모드
(하드웨어 인터럽트라 가정시)
-
하드웨어 인터럽트 발생후 CPU로 인터럽트 신호 요청 (유저모드)
-
CPU에서 모드 플래그를 커널모드 값(0)으로 변경
-
해당 하드웨어 인터럽트 서비스 루틴(ISR)으로 이동 (커널 모드)
-
인터럽트 처리 (커널모드)
-
인터럽트 처리 완료 후 CPU의 모드 플래그를 다시 유저모드 값(1)으로 변경
-
원래의 애플리 케이션 위치로 복귀 (유저모드) -> 상위 5번과정.
-
-
인터럽트 처리 후 - 유저 모드
이중 동작 모드의 중요성
-
잘못된 사용자로부터 운영체제를 보호, 잘못된 사용자 서로를 보호하는 방법을 제공해준다.
-
운영체제 내부에는 나쁜 영향을 끼칠 수 있는 일부 명령들을 특권명령(privileged instruction)으로 지정함으로써 운영체제 자신과 사용자에게 시스템적 보호를 제공한다.
-
유저모드에서 불법적인 명령을 실행하지 못하게 해놓음.
-
이에따라, 하드웨어는 특권명령이 커널모드에만 실행되도록 허용한다.
-
유저모드에서 특권명령을 실행하려고 시도하면, 하드웨어는 이를 실행하지 않고, 불법적인 명령으로 간주해 운영체제로 트랩을 건다.
-
-
커널 모드로 전환하는 명령어가 특권 명령의 한 예이다. 또 다른 예는 입출력 제어, 타이머 관리, 그리고 인터럽트 관리를 위한 명령어들이 있다.
-
불법적인 명령이 이중 동작 모드가 필요한 유일한 이유는 아니다.
-
만약, 이중 동작 모드가 없다면, 잘못된 사용자 프로그램이 데이터를 운영체제 부분에 덮어 기록함으로써 운영체제를 지워버릴 수 있고, 또한 여러 프로그램이 동시에 한 장치에 기록할 수 있으며, 그 경우 예상치 못한 결과가 발생할 수 있다.
-
시스템콜(System Call)
-
응용프로그램의 요청에 따라 커널에 접근하려는 인터페이스
-
시스템 콜은 사용자 프로그램이 자신을 대신하여 운영체제가 실행하도록 미리 지정되어 있는 작업들을 운영체제에게 요청할수 있는 방법을 제공한다.
-
-
시스템콜은 컴퓨터시스템의 프로세서가 지원하는 기능에 따라 다양하게 호출된다.
-
운영체제에 의해 실행될 동작을 사용자 프로세스가 요청할 수 있게 하는 것이 시스템 호출이다.
-
인터럽트 벡터의 특정위치로 트랩을 거는 형태를 취한다.
-
시스템 콜이 실행될때 시스템 콜은 하드웨어에 의해 하나의 소프트웨어 인터럽트로 취급된다.(시스템콜을 포함하여 다시 과정복습)
-
부팅 초기에 제어는 운영체제에게 있고 명령어가 커널모드에서 실행된다.
-
제어가 응용프로그램으로 넘어가면 사용자 모드로 지정된다.
-
결국 나중에 제어는 인터럽트,트랩 또는 시스템 콜을 통하여. 운영체제로 다시 넘어오게 된다.
-
-
시스템콜 실행후 제어가 인터럽트 벡터를 통해 운영체제 내의 서비스 루틴으로 전달되고, 모드비트가 커널모드(0)로 설정된다.
-
시스템콜 서비스 루틴은 운영체제의 일부이다.
-
-
커널은 인터럽트를 발생시킨 명령을 검사하여 어떤 시스템 콜이 발생했는지를 결정한다.
-
이때 전달된 인자가 사용자 프로그램이 요청하는 서비스 유형을 표시한다.
-
-
요청이 필요로하는 추가 정보는 레지스터, 스택 또는 메모리를 통하여 전달 될 수 있다.
-
커널은 인자가 정확하고 합법적인지를 검증하고 요청을 실행한 후 제어를 시스템 콜 다음 명령으로 복귀시킨다.
-
시스템 콜의 유형
프로세스 제어(Process Control))
끝내기(end), 중지(abort)
적재, 수행
프로세스 생성, 프로세스 종료
프로세스 속성 획득, 프로세스 속성 설정
시간을 기다림
사건을 기다림, 사건을 알림
메모리 할당의 자유화
파일 조작
파일 생성, 파일 삭제
열기, 닫기
일기, 쓰기, 위치변경
파일 속성 획득 및 설정
장치 관리
장치를 요구, 장치를 방출
읽기, 쓰기, 위치 변경
장치 속성 획득, 장치 속성 설정
장치의 논리적 부착 또는 분리
정보 유지
시간과 날짜의 설정과 획득
시스템 데이터의 설정과 획득
프로세스 파일, 장치 속성의 획득 및 설정
통신
통신 연결의 생성,제거
메시지의 송신 ,수신
상태 정보 전달
원격 장치의 부착 및 분리
Reference
'CS > 운영체제' 카테고리의 다른 글
[운영체제] CPU 스케줄링 (0) | 2020.04.28 |
---|---|
메모리 구조 (0) | 2020.03.20 |