DEVOPS/LINUX

[Linux] 커널과 시스템 콜(System call)

연듀 2021. 10. 13. 13:19

 

시스템 소프트웨어 <=> 응용 소프트웨어

 

응용 소프트웨어는 일상생활에서 도움을 받는 소프트웨어이고, ex) 게임, 아래한글, 오피스 

시스템 소프트웨어는 응용 소프트웨어의 개발이나 운영을 지원하기 위한 소프트웨어이다. Ex) DBMS, OS(운영 체제), visual studio, server

 

다른 응용 소프트웨어는 시스템 소프트웨어로부터 도움을 받기 때문에 운영체제나 하드웨어를 잘 최적화 시켜서 활용해야 한다.

시스템 소프트웨어를 지원하기 위해 시스템 콜이란 것을 사용한다.

운영체제 커널이 제공하는 것으로, 시스템 콜을 가장 최적화된 환경으로 활용하여 개발해야 한다.

 

 

 

 

커널

 

 

커널이란 운영체제(OS)에서 가장 중요한 구성요소로서, 입출력을 관리하고 소프트웨어로부터 요청 (System Call)을 컴퓨터에 있는 하드웨어(CPU, 메모리, 저장장치, 모니터)가 처리할 수 있도록 요청(System Call)을 변환하는 역할을 한다.

 

=>하드웨어를 운영 관리하여 프로세스, 파일, 메모리, 통신, 주변장치 등을 관리하는 서비스를 제공한다.

 

 

 

역할

 

-프로세스 관리(Process management)
 여러 프로그램이 실행될 수 있도록 프로세스들을 CPU 스케줄링하여 동시에 수행되도록 한다. 
-파일 관리(File management)
 디스크와 같은 저장장치 상에 파일 시스템을 구성하여 파일을 관리한다. 
-메모리 관리(Memory management)
 메인 메모리가 효과적으로 사용될 수 있도록 관리한다. 
-통신 관리(Communication management) 
 네트워크를 통해 정보를 주고받을 수 있도록 관리한다. 
-주변장치 관리(Device management)
 모니터, 키보드, 마우스와 같은 장치를 사용할 수 있도록 관리한다

 

구조

 

 

 

 

크게 보면 커널은 파일 관련 서브시스템, 프로세스 관련 서브시스템으로 나뉘어져 있다.

 

 

파일 서브 시스템

 

 

기능

 

파일 관리, 파일 공간 할당, free space 관리

파일에 대한 Access Control, File I/O

 

 

File SubsystemI/O Subsystem과의 관계

 

-Block I/O

블록 I/O 장치의 데이터는 버퍼링 메카니즘에 의해 파일 서브시스템에게 제공된다.

버퍼링 메카니즘은 블록 I/O 장치 드라이버와 상호 작용하여 커널로(혹은 커널로부터 ) 데이터를 전송한다.

 

-raw(character) I/O

문자 I/O 장치(tty ) 버퍼링 메카니즘을 사용하지 않는다.

 

=> 파일 서비스는 block단위 I/O, 터미널 장치들은 character I/O

 

 

System Calls

 

open, close, read, write, stat, chown, chmod

 

 

 

 

프로세스 서브 시스템

 

프로세스 생성, 삭제

프로세스간 통신(IPC)

프로세스 간 스케줄링

프로세스를 관리하는 메모리 매니지먼트

 

 

 

커널은 이런 서비스를 제공하고, user level에서 이러한 서비스를 이용한다.

시스템 콜이라는 api형식의 인터페이스를 통해 파일이나 프로세스에 관련된 서비스를 user가 받을 수 있다.

 

사용자는 파일을 오픈할 때 표준 라이브러리인 fopen을 이용할 수도 있고, 커널에서 제공하는 시스템콜인 open을 이용할 수도 있다.

그런데 결국은 파일 서브 시스템이 요청을 하기 때문에 반드시 open을 불러줘야 한다.사용자가 fopen을 하더라도 그 안에는 open이 구현되어 있어 부르게 되어있다.

 

시스템 소프트웨어를 개발할 때 하드웨어를 관리하는 커널을 최적으로 관리 해야 한다.

라이브러리들의 사용은 성능 문제 때문에 주로 지양하고 커널의 시스템콜을 통해 개발한다.