커널은 프로세스입니까?


30
  1. Linux에서는 항상 첫 번째 프로세스가 init(pid == 1) 이라고 말합니다 . 그러나 왜 시스템을 설정하고 init프로세스를 만드는 커널 (시동)이 아닌가 ? 커널은 프로세스입니까?
  2. 우리는 모든 사용자 공간 스레드가 init 프로세스에서 시작되었음을 알고 있습니다. 그렇다면 스케줄러와 메모리 관리와 같은 다른 커널은 어떻습니까?

기본적으로 나를 혼란스럽게하는 것은 커널의 구조입니다. 프로세스 인 경우 단일 프로세스입니까, 아니면 여러 프로세스로 구성되어 있습니까?

답변:


19

짧은 답변 :

  1. 아니요, 과정이 아닙니다
  2. 사용자 스레드는 init를 기반으로하지 않습니다.

Init는 첫 번째 프로세스 일뿐입니다. 프로세스 또는 스레드를 관리하지 않습니다. 커널 syscalls fork () 및 exec를 사용하여 일부를 작성합니다.

나는 당신이 프로세스가 무엇인지에 대한 진흙 투성이의 생각을 가지고 있다고 생각합니다. 단지 약간의 실행 코드를 의미하는 것은 아닙니다. 예, 커널은 init (그리고 그 이전의 부트 로더) 전에 실행됩니다. 그러나 '프로세스'에는 다음과 같은 특정 정의가 있습니다.

  • 사용자 공간에서 실행
  • 프로세스 ID로 실행
  • 많은 상호 작용이 커널을 거쳐야합니다
  • 모든 리소스는 커널에서 가져와야합니다
  • 커널에 의해 스케줄 될 필요가있다

따라서 커널이 초기화되면 init를 실행 한 다음 다른 구성 프로세스가 말한 것을 생성합니다.

# 2가 진행되는 한 모든 커널은 커널에 있습니다. 커널을 넓은 코드 영역으로 생각하십시오. 다시 말하지만 프로세스는 아니지만 큰 코드 얼룩입니다. 커널의 일부는 메모리 관리, 일부는 드라이버 등의 일정 부분을 예약하고 일부는 일정 프로세스를 처리합니다.


3
OP가 자신의 마음을 마이크로 커널로 날려 버릴만큼 충분히 알고 있는지 궁금합니다. 어쨌든 혼란 스러울 것이라고 생각했기 때문에 편집 내용을 포함시키지 않았습니다.
새로운 123456

4
커널을 생각하는 한 가지 방법은 거대한 라이브러리와 같으며 진입 점 (시스템 호출)이 사용자를 대신하여 무언가를하도록 요구합니다. 또 다른 보완적인 견해로는 사용자의 시스템 호출이나 하드웨어 중단 (예 : 새 네트워크 패킷 도착) 등 이벤트가 처리 될 때까지 대기한다는 점입니다. 처리하는 데 시간이 걸리므로 커널은 작업을 내부 스레드로 전달하고 호출 한 사람에게 반환합니다.
vonbrand

15

커널은 실제로 프로세스처럼 행동하지 않습니다. 예약되지 않았으며 프로세스 (프로세스 컨텍스트 또는 사용자 컨텍스트라고 함) 대신 실행되거나 인터럽트 또는 예외 (인터럽트 컨텍스트)의 결과로 실행됩니다.

즉, Linux 커널은 커널 스레드를 생성하여 일부 작업을 수행하거나 너무 긴 인터럽트 컨텍스트에서 무언가를 실행하지 않도록합니다 (즉, ksoftirqd 스레드가 수행하는 것, 과도한 지연 시간을 피하여 오디오 끊김 등). .

ps명령 출력에서 커널 스레드를 볼 수 있습니다 . 그것들은 쉽게 식별됩니다 : 그들의 이름은 괄호 안에 있습니다. 그들 중 일부는 CPU 당 하나의 인스턴스를 실행하며, CPU는 슬래시 뒤에 숫자로 식별되므로 [ksoftirqd / 0]은 CPU 0에서 ksoftirqd의 인스턴스입니다.


1

마이크로 커널에는 커널의 다양한 부분이 실제로는 기본 센티넬을 사용하는 프로세스가 대부분 IPC 만 관리하는 개념이 있습니다.

좋든 나쁘 든 Linux는 마이크로 커널 시스템이 아닙니다.


1

아닙니다. 커널 (및 커널 확장)은 메모리에 직접로드됩니다. 커널에 안전하지 않은 코드가 있으면 그 코드와 큰 문제 사이에 아무것도 없습니다.

그 외에도 커널은 기본적으로 프로세스 간 실행 / 전환을 수행합니다. 실제로 실제로 프로세스를 실행하는 것은 프로세스 자체가 아닙니다.

(tl; dr 1. no 2. 커널의 일부 / 확장)


0

ninjalj는 "커널은 실제로 프로세스처럼 행동하지 않습니다. 예약되지 않습니다"

글쎄, 유휴 프로세스 (기본적으로 pid 0이지만 어디에도 표시되지 않음)가 예약되어 있으며 항상 실행 가능한 상태입니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.