쉘스크립트

Linux 커널의 기능

트리스탄1234 2022. 7. 4. 13:15
728x90
반응형

 

이번 글에서는 Shell Script를 시작하기전 기본 배경지식에 관해 알아 보도록 하겠습니다. 그중 가장 기본인 커널의 기능과 구조에 대해 알아 보겠습니다. 커널의 주요 기능은 시스템 메모리 관리, SW 프로그램 관리, 하드웨어 관리, 파일 시스템 관리를 하고 Sw와 HW사이에서 통신을 담당 합니다.

1 . 시스템 메모리 관리

시스템 메모리는 물리 메모리, 가상 메모리, 스왑 메모리로 구성이 됩니다

아래 그림과 같이 리눅스 시스템은 SWAP 이라는 가상 메모리를 하드 디스크의 공간을 이용해서 가상의 메로리 공간을 만듭니다. 현재 물리적 메모리에서 사용하지 않는 데이터들은 Swap공간으로 swap-out을 하여 데이터를 이동하여 물리적 메모리 공간의 사용효율을 높여 주고, Swap-out된 데이터가 필요시에는 하드 디스크에서 해당 데이터를 물리 메모리 공간으로 이동하여 물리적 메모리 용량의 사용 효율을 높여 줍니다.

[리눅스 시스템 메모리 맵]

메모리의 위치 정보는 page라고 불리는 블럭 단위로 그룺화 되고, 커널은 이런 page를 테이블 단위로 물리 메모리와 가상 메모리간 이동 정보를 추적 및 이동, 관리하는 기능을 제공 합니다.

현재 가상 메로리 상태 정보의 확인은 cat /proc/meminfo를 이용하여 아래 그림과 같이 조회가 가능 합니다.

[가상 메모리 조회]

기본적으로 하나의 프로세스는 하나의 Page파일을 가지게 되고, 다른 프로세스가 하나의 Page에 접근 중일때 다른 프로세스는 해당 Page에 접속을 할수 없습니다.

icps -m 명령어는 이런 Shared memory의 상태를 조회할수 있는 명령 입니다. 각각의 필드에 대한 설명은 추후 다른 장에서 세부적으로 다루기로 하겠습니다.

[Shared Momory 조회]

2. Software program 관리 기능

리눅스 커널은 시스템 부팅시 최초로 init프로세스를 호출 합니다. 이후 다른 프로그램들의 프로세스를 실행 시키기 위해 /etc/inittabs(리눅스 종류에 따라 위치가 약간씩 다름)파일을 불러 들여 Run-Level값을 확인 후 Run-level에 따라 시스템을 부팅 시키고 자동으로 실행 시켜야될 프로그램들의 프로세스를 실행 시킴니다.

Run-Level은 0 ~ 6의 값이 있지만, 가장 많이 사용하는 3가지만 설명 하겠습니다.

- Run Level 1 : Single User 모드(가장 기본적인 프로세스만 실행) 콘솔 모드, 응급 복구시 사용

- Run Level 3 : 표준 모드,콘솔 환경

- Run Level 5 : 그래픽 모드, GUI 환경.

리눅스 커널은 개별 프로세스들의 상태를 확인하기 위해 ps명령을 제공 하고 있습니다.

프로세스의 삭제와 실행들 세부적인 관리 방법은 추후 포스팅 하도록 하겠 습니다

[현 프로세스 상태 확인]

3. 하드웨어 관리

커널은 하드웨어와의 인식을 디바이스 파일을 통해 하게 됩니다. 디바이스 파일은 하드웨어 별로 만들어 지고 디바이스 파일의 종류는 아래와 같이 3가지가 있습니다.

· Charecter File: 한번에 한 문자의 데이터를 처리 하기 위한 디바이스 파일

· Block FIle: 블럭 단위의 데이터를 한번에 처리 하기 위한 디바이스 파일

· Network FIle: 네트워크를 통해 패킷을 송신 및 수신을 하기 위한 디바이스 파일

 

리눅스 커널은 디바이스간 통신을 위해 노드 파일을 생성을 하고 노드 마다 유일한 ID를 부여 하여 디바이스간 통신을 수행 하게 됩니다. ID는 Major number와 Minor Numerber로 구성이 됩니다.

[노드 정보 조회]

5번째 열값이 Major Node ID값이고 sda(디스크) 장치들은 모두 8을 사용을하고 sda내에서 특정 sda로의 구분을 위해 6번째 컬럼값인 Minor Node id값을 사용하여 장치간 구분을 합니다.

반응형

4. 파일 시스템 관리

리눅스 커널은 다양한 파일 시스템의 데이터를 잃고 쓰기 위해 아래의 표와 같은 다양한 파일 시스템들을 지원 합니다.

[리눅스 커널이 지원하는 파일 시스템]

리눅스 시스템은 하드웨어관리를 위한 커널 이외에 시스템 운영을 위해 GNU utility와 Shell 기능들을 제공 하고 있고 Shell의 종류들은 아래와 같다.

[리눅스 Shell 종류]

728x90
반응형

'쉘스크립트' 카테고리의 다른 글

기본 Shell 스크립트 작성  (1) 2022.07.05
리눅스 파일 퍼미션  (1) 2022.07.05
환경 변수  (1) 2022.07.04
Bash Shell 명령어들  (0) 2022.07.04
Bash Shell 기본 명령어  (1) 2022.07.04