컴퓨터 시스템의 개요2

김민세·2022년 11월 21일
0

리눅스 구조

목록 보기
2/6
post-thumbnail

디바이스 드라이버

디바이스 드라이버는 특정 하드웨어나 장치를 제어하기 위한 커널의 일부분으로 동작하는 프로그램이다.

디바이스 드라이버를 통해서만 프로세스가 디바이스 제어가 가능하다

프로세스는 디바이스 드라이버 통해 디바이스 접근

위의 그림과 같이 세상에는 여러 종류의 디바이스가 있다.
하지만 리눅스는 디바이스의 종류가 같으면 같은 인터페이스로 조작하도록 되어 있다.

종류가 같은 디바이스는 같은 인터페이스로 조작

프로그래머의 버그나 해킹 목적으로 의도된 특정 프로세스가 디바이스 드라이버를 통해 디바이스에 접근함이라는 룰을 깨면 프로세스가 동시에 디바이스를 조작하려고 시도하는 상황이 발생한다.

리눅스는 이러한 문제를 피하고자 CPU에 있는 기능을 이용하여 프로세스가 직접 하드웨어에 접근하는 것을 차단한다.

CPU에는 커널 모드와 사용자 모드라고 하는 두 가지 모드가 있으며 커널 모드로 동작할 때만 디바이스에 접근할 수 있다. 디바이스 드라이버는 커널 모드로 동작하고 프로세스는 사용자 모드로 동작한다.


커널 모드와 사용자 모드

디바이스 조작 외에도 일반적인 프로세스로 실행하면 문제가 되는 처리가 몇 가지가 있다.

  • 프로세스 관리 시스템
  • 프로세스 스케줄링
  • 메모리 관리 시스템

위와 같은 처리도 커널 모드에서 동작한다. 커널 모드에서 동작하는 OS의 핵심 부분이 되는 처리를 모아 담당하는 프로그램을 커널이라고 한다.

프로세스가 디바이스 드라이버를 포함한 커널이 제공하는 기능을 사용하려고 할 때는 시스템 콜이라고 하는 특수한 처리를 통해 커널에 요청한다.

커널 이외에도 사용자 모드에서 동작하는 다양한 프로그램으로 구성되어 있다. 리눅스의 사용자 모드에서 동작하는 OS 기능 및 프로세스 그리고 커널과의 인터페이스가 되는 시스템 콜을 한다.

커널은 시스템에 탐재된 CPU나 메모리 등의 리소스를 관리하고 있다. 리소스의 일부를 시스템에 존재하는 각 프로세스에 적절히 분배한다.

프로세스 실행에 있어서는 다양한 데이터가 메모리를 중심으로 CPU의 레지스터나 저장 장치 같은 기억 장치 사이에 전송된다.

데이터는 여러 가지 기억장치 사이에 전송됨

기억장치는 크기, 가격, 전송, 속도 등에서 장단점이 있으며 기억장치 계층이라고 일컫는 계층 구조를 구성하고 있다.
프로그램을 빠르게 안정적으로 동작시키기 위해서는 이러한 기억장치를 유용하게 활용하지 않으면 안 된다.

저장 장치에 보관된 데이터는 디바이스 드라이버에 직접 요청해서 접근할 수 있지만 보통 좀 더 간단히 접근하기 위해 파일시스템이라고 하는 프로그램을 통해 접근한다.

파일시스템을 통해 저장 장치에 접근

컴퓨터 시스템은 반드시 저장 장치가 필요하다. 시스템이 동작하려면 먼저, 저장 장치로부터 OS를 읽어야 한다. 거기에 추가로 시스템이 작동하면서 생성된 메모리상의 데이터는 전원이 꺼지면 손실되므로 전원이 꺼지기 전에 그 내용을 저장 장치에 기록해둬야 한다.

profile
김민세

0개의 댓글