저는 Maurice J Bach의 책 "Unix Architecture"에서 Unix를 배우고 있습니다.
나의 혼란은 커널의 개념에 있습니다. 커널이란 무엇입니까? 나는 그것이 운영 체제이고 프로세스라는 것을 이해합니다.
그러나 선생님이 그에게 시스템 호출()을 사용하면 프로세스가 사용자 모드에서 커널 모드로 들어가게 된다고 가르쳤습니다.
시스템 호출에서는 실제로 어떤 일이 발생합니까? 사용자 프로세스가 절전 모드로 전환되고, 운영 체제가 사용자 프로세스를 대신하여 실행되어 값을 사용자 프로세스에 반환합니까, 아니면 사용자 프로세스가 커널 모드에서 실행됩니까? 후자가 옳다면 그것은 무엇을 의미하는가?
답변1
커널이란 무엇입니까?
귀하의 질문에 따르면 프로세서에서 특별한 권한 수준으로 실행되는 단일 대형 프로그램입니다. 모든 핵심 운영 체제 기능을 제공합니다.멀티태스킹,산업용 컴퓨터,파일 시스템등. 실행 중인 프로세스이기도 합니다.장치 드라이버는 컴퓨터의 하드웨어를 제어하는 커널을 나타냅니다.
운영체제인줄 알았네요
사실은 그렇지 않습니다. 하나운영 체제뿐만 아니라핵심.
Maurice Bach가 책을 썼을 때도 운영 체제에는껍데기,번역가,유용,텍스트 에디터, 등.
시간이 지남에 따라 운영 체제라는 용어에는 다음과 같은 더 많은 항목이 포함되었습니다.그래픽 사용자 인터페이스 하위 시스템.
운영 체제와 일반 사용자 프로그램 사이에 선을 긋는 것은 개인적인 결정입니다. 대부분의 사람들은 GUI 워드 프로세서가 운영 체제와 함께 설치되어 있더라도 운영 체제의 일부가 아니라는 점에 동의합니다. 그러나 많은 사람들은 운영 체제와 함께 제공되는 일반 텍스트 편집기에도 동의합니다.예운영 체제의 일부. 이 캠프의 많은 사람들도 동의합니다.태그 핸들러운영 체제와 함께 제공되는 도구(troff, TeX 등)는 이제 운영 체제 도구로 간주됩니다. 그러나 텍스트 편집기와 마크업 프로세서를 결합하면 어떤 면에서는 워드 프로세서와 구별할 수 없는 결과를 얻을 수 있습니다.
모두가 동의할 수 있는 명확한 선을 긋는 것은 불가능하다.
이것은 하나의 과정입니다.
정확히는 아닙니다.
ㅏ마이크로커널아키텍처는 그 진술을 실현하는 데 가장 가깝습니다. 그럼에도 불구하고 커널은 여전히모으다프로세스. 그 중 하나는 모든 프로세스를 실행할 수 있다는 점에서 특별합니다.다른프로세스. 따라서 이 경우에도 여전히 코어(작은 코어)가 존재하며, 그 자체로는 정상적인 프로세스라고 할 수 없습니다.
의 경우전체 커널, 커널은 특별한 위치에 있습니다.달리다모든 프로세스.
시스템 호출에서는 실제로 어떤 일이 발생합니까?
바흐 책의 나머지 부분을 읽어보세요.
이 답변에는 많은 Wikipedia 링크가 있고 내가 링크한 대부분의 기사는 길고 복잡하며 더 많은 링크가 있다는 것을 알 수 있습니다. 이는 기본적으로 매우 복잡한 주제를 간단한 답변으로 추출해 달라고 요청하고 있기 때문입니다. 간단한 답변이 없어서 답변을 드리려고 합니다.가이드답변, 복수형.
사용자 프로세스가 절전 모드로 전환되고 OS가 사용자 프로세스를 대신하여 이를 실행하고 값을 사용자 프로세스에 반환합니까...?
바흐가 논의한 클래식 앙상블의 핵심 내에서는 그렇습니다.
그러나 현대 시스템은 이 단순한 그림을 흐리게 만듭니다.
첫째, "운영 체제"는 시스템 호출을 수행하지 않지만 커널은 수행합니다. 나는 단지 현학적 인 것이 아닙니다. 현대 운영체제의 대부분은 다양한 사용자 공간 프로그램으로 구성되어 있고 현대 운영체제는 멀티태스킹을 하기 때문에 운영체제가 그냥 멈추고 시스템 호출만 실행한다고 말할 수는 없다. 운영 체제는 동시에 많은 작업을 수행할 수 있습니다.하나단일 사용자 프로그램에 대한 시스템 호출을 처리합니다.
그러나 두 번째이자 더 중요한 것은 최신 운영 체제 커널이 더 이상 한 번에 하나의 시스템 호출을 처리하는 단일 작업 프로그램이 아니라는 것입니다. 운영 체제는 중간 어딘가에 있을 수 있습니다.많은즉시 시스템 호출을 하십시오. 시스템 호출을 수행하는 단일 작업 사용자 공간 프로그램은 다음과 같습니다.지각시스템 호출이 완료될 때까지 세상은 멈추지만, 시스템 호출이 계속되는 동안 커널은 다른 많은 작업을 수행할 수 있습니다.
오래된 단일 작업 커널의 경우에도 드라이버 같은 것이 있었습니다.상반부와 하반부, 와 같은 상대적으로 높은 수준의 시스템 호출을 지원하기 위해 커널이 디스크 I/O와 같은 작업을 종료하고 처리할 수 있습니다 open(2)
.
아니면 사용자 프로세스가 커널 모드에서 실행되고 있습니까?
이런 식으로 볼 수 있지만 내 웹 브라우저와 Stack Exchange는 상호 운용되어 하나의 응집력 있는 경험을 제공하기 때문에 동일한 프로그램이라는 것은 사실입니다.