마틴 씨의 답변을 조금 더 넓게 보자. (조심하십시오, 매우 간단합니다) OS의 직업은 프로그램이 스스로 처리하기를 원하지 않는 것들을 처리하는 것입니다 - 핸들 I/O 인터럽트를 생성하고 여러 작업을 예약하여 컴퓨터를 공유 할 수 있습니다. 하나의 응용 프로그램을 실행하는 컴퓨터의 완벽한 세계에서 프로그램은 디스크 파일에서 다음 레코드를 읽는 것처럼 OS가 필요한 작업을 수행 할 때까지 CPU를 제어합니다 (계층화 된 '서비스'를 호출하여 알아 내기). 어떤 디스크인지, 어떤 파일인지, 어떤 바이트인지, 어느 디스크 블록을 어느 디스크 블록에서 디스크 컨트롤러로부터 요청하는지 계산하는 전형적인 '실제'머신, 백그라운드 작업이 많이 실행되고, 화면을 업데이트하고, 시계를 읽는다. 새 메일 확인, 패치 다운로드 등이 우선 순위입니다. 일부 작업은 Windows에서 새 메일 알림을 위해 시스템 트레이 아이콘을 업데이트하는 등의 작업이 완료 될 때 상관 없으므로 낮은 우선 순위로 실행됩니다. 다른 작업은 높은 우선 순위로 실행되지만 화면에서 마우스를 따라 포인터를 손으로 바꾸는 것과 같이 매우 짧습니다. 일반적인 작업은 일부 OS 서비스가 필요하기 전에 몇 백 가지 지침 만 수행합니다. 가기 그것이 일어나는 동안 잠을 자고. 대형 응용 프로그램은 수십만 개의 '명령어'를 가질 수 있지만 버튼 누름 또는 키보드 입력에서 다른 머신의 데이터베이스 조회 응답에 이르기까지 또 다른 것을 기다리는 시간을 소비합니다. Pi를 백만 단위로 계산하는 것과 같이 CPU를 많이 사용하는 응용 프로그램은 오랜 기간 동안 프로세서의 99.9 %를 사용할 수 있지만, OS는 다른 작업을 수행해야하는지 정기적으로 인터럽트하려고합니다. DOS (1980 년대)로 돌아 가면 프로그램은 누가 실제로 CPU를 사용할 수 있지만 화면에 읽거나 쓸 필요가 있거나 뭔가를 입력해야한다면 BIOS 이 기본적인 작업을 수행하도록 작성되었습니다. 이 중 일부는 컴퓨터 게임이 반응하는 방식이며, 화면을 직접 수정하고 키보드 또는 마우스 장치 버퍼에서 직접 읽은 다음 OS를 우회하는 데 필요한 특정 작업을 수행합니다. 잘하면, 나는 당신을 더 혼동하지 않았습니다 ...
당신의 질문은 이해가되지 않습니다. OS는 스케줄링 작업을 수행하고 하드웨어 인터럽트를 제공하며 사용자 코드가 제공하는 명령을 수행합니다. 고정 된 CPU 시간을 사용하지 않으며 분명히 낭비하지 않습니다. – ruslik
충분히 단순한 CPU에서, 아마도. 하지만 일반적으로 퍼포먼스는 당신이하는 것처럼 간단하지 않다고 생각합니다. 캐시, 가상 메모리, 공유 라이브러리, 스케줄링, I/O 등이 있습니다. 예를 들어 OS가 몇 가지 지침을 사용하여 프로세스간에 공유되는 libc의 단일 복사본을 유지하고 libc의 핫 기능이 내 프로그램보다 먼저 L2 캐시에있는 경우 시작, 그 자체를 쉽게 지불 할 수 있습니다. – Ken