순간이 영원해 지는 곳

운영체제의 두가지 모드(Dual Mode Operation) 본문

운영체제

운영체제의 두가지 모드(Dual Mode Operation)

nenunena 2008. 8. 27. 21:58
◆ 간단하게 살펴보는 운영체제
(Operating System)


* 운영체제의 목적
- 사용자의 프로그램 실행환경을 만들어줌
- 한정된 시스템 자원의 효율적인 관리
- 하드웨어를 사용자가 사용하는 수단을 제공

* 운영체제의 정의
- 사용자와 컴퓨터 하드웨어 사이에서 동작하는 프로그램
- 언제나 실행중인 유일한 프로그램 : kernal이라 부름
- 메모리 사용량, utilization, 멀티태스킹/멀티프로세싱

malloc(), free() => 반복할 경우 메모리의 조각화(단편화) 발생
- 메모리 관리/조각 관리 -> virtual memory(subspace) : 오랫동안 사용하지 않은 프로그램이 차지하는 메모리내용을 하드디스크에 저장(memory management)

* 운영체제의 역할중 Process Management : 프로세스를 종료(terminate)시키는 순간 opened file, 메모리 등을 초기화 시킨다. 또한 멀티스레딩 환경지원, Mutex, 세마포어까지 지원한다.

* 운영체제의 역할중 Memory Management 관련내용
- 메모리 없이 하드디스크 <=> CPU 만으로 동작이 가능할까?
: 안된다!!! 데이터를 다루는 최소 단위에 차이 때문
Hard Disk 512 byte
CPU 1 byte
중간 버퍼 역할을 해주는 것이 메모리이다. 메모리에 올려놓고 필요한 데이터만 CPU가 읽고 쓴다.
어떤 프로세스가 어디 메모리를 사용하는지도 메모리 메니지먼트가 하는 일이다.
가상메모리 관리도!!!

* 운영체제의 역할중 Storage Management
: 파일 시스템이 운영체제에서 제공 되는데, 파일 시스템이 없는 경우 디스크에 어느 위치에 데이터를 저장할건지 전부 사용자가 지정해야 한다.




◆ Dual-mode Operation

- 시스템은 User Mode와 Kernal Mode 두가지 Mode로 바뀌며 실행 되는데, 이는 사용자 운영체제 자체와 다른 프로세스 등을 보호하기 위해서이다.

- Kernal Mode는 Supervisor 또는 Protected Mode라고도 불리며, 시스템 전체에 접근할 수 있는 권한을 가지는 상태이다.

- 프로그램이 실행 중일때 메모리영역은 User Address Space와 Kernal Address Space로 나뉘어진다.

- User Mode는 프로그램이 실행되는 대부분의 상태에 해당되는데, User Mode에서는 자기자신(프로세스)에게 주어진 메모리 영역 이외에 다른 프로세스나 kernal 의 메모리 영역에 접근할 수 없다.
(User Mode에서 실행중인 프로그램에서 포인터를 사용하여 User Address Space 영역 밖에 있는 Kernal Address Space 메모리에 접근하려고 하면 예외(exception) 이 발생한다.)


* User Mode 에서 Kernal Mode 로 가는 두가지 방법

① open() 함수 실행시 처럼 시스템콜(System Call)을 호출한 경우
 : 정상적인 Exception 발생(TRAP exception)하여 Mode Bit 가 기본 1(User Mode)에서 0(Kernal Mode)으로 바뀌면서 Kernal Mode로 들어간다. 표준 라이브러리에 있는 함수와 시스템콜 함수의 차이점이 커널영역에 진입하느냐 하지 않느냐이다.

② Interrupt Handler 가 실행된 경우
 : 어떤 수를 0으로 나눈것과 같이 비정상적인 작업을 수행하려고 하는 경우 Exception이 발생하여 Interrupt Handler가 실행, Kernal Mode로 들어가 보통 해당 프로세스를 죽이게 된다.

※ 예외의 종류

* Exception : CPU 내부에서 발생한 이벤트
예) 1을 0으로 나누기, protection memory 영역에 접근
int *a = 0x0000;
a = 100;
-> 접근 불가 오류 Segmentation 오류 또는 버스 오류
윈도우 에서는 Access Violation - 메모리 참조 에러로 CPU Excetpion 이 발생하여 Kernal Mode로 들어간다.

* Interrupt : CPU 외부에서 발생한 이벤트
예) 키보드, 마우스, 랜카드 등의 외부 장치(Device)의 입출력시 발생하는 접근 신호,
     프로세스 스케쥴링시 사용되는 외부 Timer가 발생시키는 Timer Interrupt


Comments