00.Linux 개요

김명래·2022년 11월 10일
0

Linux

목록 보기
1/1

Application : 사용자가 직접 사용
MiddleWare : Application이 공통으로 사용하는것을 묶어서 애플리케이션의 사용을 도와줌.
OS : 하드웨어를 직접 조작하여 Application, MiddleWare 실행에 필요한 기능제공

리눅스의 중요한 역할은 외부 장치를 조작하는 일이다. 리눅스 같은 OS가 없다면 여러개의 프로세스가 각각 디바이스를 조작하는 코드를 작성해야한다. 하지만 이렇게하면 모든 애플리케이션 개발자가 디바이스의 스펙을 상세히 알아야하고 개별 개발이기에 비용 증가와 멀티프로세스가 동시에 디바이스를 조작할 경우 예외가 발생할 수 있다.

이러한 단점 때문에 리눅스는 디바이스 드라이버라고 하는 프로그램을 통해 디바이스를 다룬다.

리눅스는 디바이스 종류가 같으면 같은 인터페이스를 사용한다.

프로그래머의 버그나 해킹 목적으로 의도된 특정 프로세스가 디바이스드라이버를 통해 디바이스에 접근함 이라는 룰을깨면 멀티프로세스가 동시에 디바이스를 조작하려고 시도하는 상황이 발생한다.
리눅스는 이러한 문제를 피하고자 CPU에 있는 기능을 이용하여 프로세스가 직접 하드웨어에 접근하는 것을 차단한다.

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

디바이스 드라이버는 커널 모드로 동작하고 프로세스는 사용자 모드로 동작한다.

디바이스 조작 외에도 일반적인 프로세스로 실행하면 문제가 되는 처리가 몇가지 있다.
1.프로세스 관리 시스템
2.프로세스 스케줄링
3.메모리 관리 시스템

이러한 처리도 커널 모드에서 동작한다. 이렇게 커널 모드에서 동작하는 OS의 핵심 부분이되는 처리를 모아 담당하는 프로그램을 커널이라고 부른다.
프로세스가 디바이스 드라이버를 포함한 커널이 제공하는 기능을 사용 할 때는 시스템 콜이라고 하는 특수한 처리를 통해 커널에 요청한다.

커널은 컴퓨터의 리소스역시 관리한다. 프로세스 스케쥴러가 cpu의 리소스를 각 프로세스의 할당하고 메모리 관리 시스템이 각 프로세스의 메모리를 할당한다.

프로세스 스케쥴러와 메모리 관리시스템 역시 커널에 해당한다.

profile
독자보다 필자를 위해 포스팅합니다

0개의 댓글