Linux 커널 | OS 입문 1 | OS, 커널이란?

Linux, OS란?

OS (Operating System)는 주로 다음 두 가지 역할을 가진 소프트웨어이다.

  • 하드웨어 관리
  • 소프트웨어가 하드웨어에 액세스

Linux는 OS이고, Linux는 주로 다음 세 가지로 구성된다.

  • 커널 (협의의 의미에서 Linux는 이를 말한다.)
  • 시스템 라이브러리
  • 시스템 유틸리티

Linux Operating System has primarily three components

Kernel − Kernel is the core part of Linux.

System Library − System libraries are special functions or programs using which application programs or system utilities accesses Kernel’s features.

System Utility − System Utility programs are responsible to do specialized, individual level tasks.

https://www.tutorialspoint.com/operating_system/os_linux.htm

커널이란?

커널이란 CPU의 동작 모드 가 커널 모드에서 동작하는 소프트웨어이다.

커널에는 다음과 같은 기능이 있다.

  • 하드웨어 리소스 (CPU, 메모리, 스토리지 등) 관리

  • 소프트웨어에서 하드웨어 및 리소스에 대한 액세스를 추상화

  • 프로세스, 커널은 소프트웨어

  • CPU, Memory, Devices(스토리지 등)는 하드웨어

하드웨어란?

하드웨어는 컴퓨터에서 물리적으로 처리하는 장치(기계)이다.

주요 하드웨어 목록은 다음과 같다.

하드웨어 역할 이미지
CPU 계산 처리를 수행하는 장치
레지스터
(CPU에 있음)
CPU 계산에 사용하는 값을 놓는 영역 전원을 끄면 데이터가 사라진다.
캐시 메모리
(CPU에 있음)
CPU와 메모리 간의 버퍼
- CPU의 계산 결과를 캐시
- 전원을 끄면 데이터가 사라진다.
메모리
(주 기억장치/Primary Memory)
CPU에서 실행 중인 프로그램(프로세스)이나, 그 계산 결과를 일시적으로 두는 디바이스
- CPU로부터 액세스 가능한 기억 영역
- 전원을 끄면 데이터가 사라진다.
스토리지
(보조 스토리지/Secondary Memory)
메모리에 있는 계산 결과를 파일로 저장하는 디바이스
- CPU 로부터 액세스 불가능한 기억 영역
    - CPU 가 파일 에 액세스 하려면 , 한 번 메모리 에 읽어들여야 한다.
- 전원을 꺼도 데이터가 사라지지 않는다.
NIC 데이터를 다른 컴퓨터와 송수신하는 장치
예전에는 확장 카드 중 하나였지만, 최근에는 마더보드에 처음부터 탑재
마우스, 키보드 데이터를 입력하는 장치
디스플레이 데이터를 출력하는 장치

CPU 작동 모드

CPU의 동작 모드에는 “커널 모드"와 “사용자 모드"가 있다.

각 모드의 차이는 다음과 같다.

CPU 동작 모드 하드웨어 액세스 제한 대상 소프트웨어 프로세스 동시 실행
커널 모드 없음 커널 가능
사용자 모드 있음 커널 이외 불가능(인터럽트 발생)

저장 장치의 특징

각 저장 장치의 특징 비교는 다음과 같다.

… 작성중 …

소프트웨어란?

소프트웨어는 컴퓨터의 처리와 데이터의 집합이다.
소프트웨어는 하드웨어의 물리적 것에 대해 논리적인 의미를 갖게 한 것이라고 할 수 있다.

주요 소프트웨어 목록은 다음과 같다.

소프트웨어 이름 설명
프로그램 처리를 위해 만들어진 소프트웨어
프로세스 메모리에 로드된 실행중 프로그램
실행중인 프로그램의 단위
하위 프로세스는 새롭게 가상 메모리를 확보
스레드 프로세스의 CPU 코어를 사용하는 단위
자식 스레드는 상위 스레드 의 가상 메모리를 공유
응용 프로그램 컴퓨터에 사용하는 목적에 따라 제작된 기능적 프로그램
모듈 특정 기능을 가진 작은 프로그램
모듈을 결합하여 응용 프로그램과 라이브러리를 만듭니다.
라이브러리 재사용 가능한 형태로 정리한 프로그램
라이브러리 단독으로는 동작하지 않는다
패키지 프로그램의 실행에 필요한 것을 정리한 것
구체적으로는 이하와 같은 것이 포함됩니다.
- 실행 파일
- 라이브러리- 모듈
- 설정 파일
- 자원 (이미지, 음악 파일 등)

패키지와 라이브러리 사이의 관계에 대해서는 달걀이 먼저 또는 닭이 끝나는 것과 같은 이야기로
패키지A에 포함되는 라이브러리에는 패키지B가 포함되어 있거나 한다.
미들웨어 어플리케이션이 자주 이용하는 OS의 기능을 정리한 프로그램
커널 하드웨어를 조작하기 위한 소프트웨어
시스템 라이브러리 응용 프로그램이 커널을 호출하는 라이브러리
시스템 유틸리티 컴퓨터의 “분석, 관리, 유지 보수"를 수행하는 소프트웨어
OS 커널, 시스템 라이브러리, 시스템 유틸리티를 정리한 것

시스템 호출

시스템 호출은 프로세스가 커널 기능을 호출하는 프로세스이다.

시스템 호출은 프로세스가 하드웨어 리소스(CPU, 메모리 스토리지 등)에 액세스할 때 사용 된다. 이는 사용자 모드의 프로세스가 하드웨어 리소스에 액세스할 수 없기 때문이다.

프로세스에서 호출되는 시스템 호출 목록은 strace [실행 프로그램] 명령어로 확인할 수 있다.

$ strace echo hello
execve( "/usr/bin/echo" , [ "echo" , "hello" ], 0x7fff614927f8  /* 42 vars */ ) = 0 
brk( NULL ) = 0xe9f000
·····