티스토리 뷰

Computer Science

[Operating System] Intro

words 2011. 7. 11. 20:41


컴퓨터 시스템은 크게 네가지 구조(Structure)으로 나뉜다.
User, Hardware, Application Programs, Operating System 이다.

이 중 OS는 User와 Application이 Hardware를 사용하는 것을 통제하고 조정하는 역할을 한다.
하드웨어 사용을 통제없이 아무 어플리케이션에서나, 혹은 유저가 사용할 수 있도록 하면 시스템의 안전성이 매우 떨어질 것이므로 그것을 중재해주는 OS가 필요하다.
실제로 예전 MS-DOS에서는 아무 레이어에서나 하드웨어 접근이 가능했으므로 소위 '뻑'이라는 현상이 잦았다.

또한 다른 입장에서 Computer System Organization은 CPU와 기타 하드웨어들이 메모리를 접근하는 형태로 이루어진다.

각각의 하드웨어와 소프트웨어는 이벤트가 발생한 것을 interrupt라는 것을 이용해 CPU에게 알려주게 된다.
CPU는 인터럽트를 받을 경우 실행 중인 프로세스의 컨텍스트를 저장하고 해당 인터럽트에 해당하는 서비스 루틴(인터럽트 핸들러)을 실행하게 된다.
특수한 인터럽트의 종류로 소프트웨어에 의해서 발생되는 trap이 있다.
이것은 divide-by-zero 같은 error 혹은 사용자 요청에 의해서 발생되며 System call 시에 트랩이 발생된다.

인터럽트에 의한 IO의 처리 과정은 다음과 같다.
1. DD는 해당 디바이스의 Device controller의 레지스터를 로드한다.
2. DC는 레지스터를 보고 무슨 동작을 할지 결정한다.
3. DC는 데이터를 디바이스에서 local buffer로 이동시킨다.
4. 작업이 종료되면, DC는 인터럽트를 통해 DD에게 알려준다.
5. DD는 컨트롤을 OS에게 다시 돌려준다

앞에서 언급하였듯이 OS의 목적은 하드웨어 접근을 제어함으로써 안정성을 높이기 위한 것인데,
유저나 어플리케이션에서도 하드웨어의 접근이 필요할 수 있다.

그래서 보통 OS에서는 Dual-mode operation을 제공한다.
하드웨어 형태로 제공되는 mode bit라는 것을 두고, kernel mode와 user mode로 나눈다.
user mode가 비트가 세팅된 상태인데(1) 이 때는 OS의 자원, 즉 하드웨어 리소스를 사용할 수 없지만
시스템 콜을 사용하면 자동으로 Kernel mode로 진입하며 bit가 clear된다.
보통 Kernel mode로 진입했을 때 OS가 control을 얻었다고 한다.
즉 user program이 다시 control을 얻게 되면 User mode로 복귀하는 것이다.

그러한 시스템 콜은 보통 직접 사용되지 않고 API 형태로 제공된다.
사용자는 자세한 구조까지 알 필요는 없고 단지 시스템 콜의 목적만 알면 되기 때문에 
보통 API형태로 제공되는 것이다.
시스템콜은 스택에 파라미터들을 집어넣고 호출한다.


 

'Computer Science' 카테고리의 다른 글

[Operating System] Threads  (0) 2011.07.11
[Operating System] Process  (0) 2011.07.11
[Algorithms] 비교 기반 sort의 worst case의 lower bound 분석  (0) 2011.07.07
[Algorithms] Branch and Bound  (0) 2011.07.07
[Algorithms] Backtracking  (0) 2011.07.07
댓글