Linux 기반 운영 체제는 애플리케이션을 어떻게 처리합니까? [폐쇄]

Linux 기반 운영 체제는 애플리케이션을 어떻게 처리합니까? [폐쇄]

운영 체제 없이 응용 프로그램을 실행하는 방법을 배우려고 하는데 다음 정보가 계속 나타납니다. 운영 체제 없이 프로그램을 실행하려면 프로그램이 운영 체제에서 일반적으로 제공하는 모든 oprocess를 제공해야 합니다. 이로 인해 다음과 같은 생각이 들었습니다.Linux(예: Android)와 같은 운영 체제는 애플리케이션을 실행하기 위해 어떤 프로세스를 사용합니까?

즉, 응용 프로그램이 운영 체제 내부에서 실행된다는 것은 알고 있지만(상관없습니다 :) 운영 체제가 제공하는 기능이 무엇인지, Linux 커널과 어떻게 상호 작용하는지 잘 이해하지 못합니다.

운영 체제 없이 프로그램을 개발하는 방법에 대한 조언은 유용하지만 주로 운영 체제가 응용 프로그램을 관리하는 방법에 대한 정보를 찾고 있습니다. 도와주셔서 감사합니다!

답변1

모든 프로세스는 메모리를 통해 프로세서에 공급되는 일련의 명령이며, 프로세서는 메모리의 다른 부분으로 점프하여 메모리의 일부를 데이터로 조작할 수 있습니다. 이것이 가장 간단한 컴퓨터가 작동하는 방식입니다. (확인하다https://en.wikipedia.org/wiki/Universal_Turing_machine그리고https://en.wikipedia.org/wiki/Von_Neumann_architecture더 많은 정보를 알고 싶다면)

최신 컴퓨터에는 두 가지 모드로 작동하는 프로세서가 있습니다.리얼 모드그리고사용자 모드. 컴퓨터가 시작되면 첫 번째 프로세스는 리얼 모드를 선언하고 컴퓨터의 실제 모습과 컴퓨터에 포함된 모든 하드웨어를 확인할 수 있습니다.

이 프로세스가 운영 체제 커널입니다. 유닉스 커널이 하는 일은 단지사용자 프로세스(첫 번째 프로그램은 흔히내부에Unices의 경우) 컴퓨터를 소유하고 있다는 환상을 가지고 있습니다.

이는 커널이 하드웨어를 설정하여 때때로 프로세스가 보이지 않게 프로세서에서 강제로 분리되고 커널이 짧은 시간 내에 관리 작업을 완료하도록 하드웨어를 설정하기 때문에 이는 환상입니다. 사용자 프로세스가 보는 메모리도 실제 메모리가 아니지만 커널이 실제 하드웨어 메모리에 매핑한 가짜 메모리입니다(일부 하드웨어 도움말을 참조하세요).https://en.wikipedia.org/wiki/Memory_management_unit더 많은 정보를 알고 싶다면).

사용자 프로세스는 하드웨어에 직접 접근할 수 없지만 Unix 커널은 읽고 쓰기 위한 계층 구조를 제공합니다.파일 시스템), 커널은 이를 하드웨어 작업으로 변환합니다(가장 간단한 것은 디스크 읽기 및 디스크 쓰기이지만 그 뿐만이 아닙니다). 파일 시스템에 액세스하는 것 외에도 커널은 여러 가지 다른 서비스도 제공합니다. 사용자 프로세스는 다음과 같은 지정된 단순 프로토콜을 통해 통신할 수 있습니다.시스템 호출).

요청할 수 있는 가장 기본적인 두 가지 서비스는 다음과 같습니다.분기하나구현하다. 분기하려면 커널이 상위 이미지에 대한 또 다른 프로세스를 생성하고 파일 시스템에서 새 이미지를 로드해야 합니다. 이런 방식으로 초기 프로세스는 여러 다른 사용자 프로세스를 시작할 수 있으며, 그런 다음 다른 프로세스 등을 시작할 수 있습니다.

초기 프로세스와 마찬가지로 각 사용자 하위 프로세스는 마치 컴퓨터에 있는 것처럼 실행될 수 있지만 실제로는 하나의 컴퓨터에서만 실행됩니다.가상 메모리주소 공간(커널은 이를 프로세스 뒤의 실제 주소에 매핑함), 그리고 때때로 커널은 다른 프로세스도 프로세서에 액세스할 수 있도록 이를 프로세서 밖으로 강제합니다(이것을 호출합니다).선제적 멀티태스킹커널에는 다음과 같은 섹션이 있습니다.스케줄러정확한 수행 방법에 대한 책임이 있습니다.)

본질적으로 커널하드웨어 리소스 재사용컴퓨터에서 시작되고 그렇게 하는 것이 합리적인 사용자 프로세스(CPU, RAM, Hardrive, GPU...)상당히(각 프로세스에는 모든 프로세스가 진행될 수 있도록 시간 조각이 있습니다.)효율적인(프로세스가 느린 소스(디스크, 네트워크)로부터 데이터를 기다리고 있는 경우 커널은 논리적으로 대답이 나올 때 "아직 거기에 있습니까?"라고 묻기 위해 CPU에서 실행되도록 하여 CPU 시간을 낭비하지 않습니다. 오랫동안은 아닙니다). 이 모든 기본 공정성은 인간이 입력한 정책에 의해 조정됩니다. 커널은 또한 프로세스가 커널에서 제공하는 다양한 수단을 통해 서로 통신할 수 있고 공유된 전역 상태에 대한 합리적인 보기를 얻을 수 있도록 보장합니다.

관련 정보