컴퓨터 운영 체제 지식 모음 - 컴퓨터 운영 체제 개요(컴퓨터 운영 체제 소개 안내서)

1장 컴퓨터 운영 체제 개요

1.1 운영체제의 기본 개념

1.1.1 운영 체제 소개

오늘날의 정보화 시대에 독자라면 누구나 '운영체제'라는 네 단어에 익숙하리라 믿습니다. 예를 들어 우리가 자주 사용하는 Windows, Android, IOS, MacOS, Linux 등은 모두 운영체제입니다. 운영체제는 오늘날의 정보화 시대에 없어서는 안 될 소프트웨어입니다. 일반 사용자에게는 네 단어로 된 운영체제가 익숙하기도 하고 낯설기도 합니다. 왜냐하면 일반 사용자는 각 운영체제에서 실행되는 응용 소프트웨어에만 주의를 기울이기 때문입니다. 사실 저는 하드웨어 자원을 운영하는데 있어서 이러한 응용 소프트웨어를 보조하는 운영 체제에 대해 잘 모릅니다.

그렇다면 운영 체제란 정확히 무엇입니까?

여기서는 컴퓨터 시스템의 구조도를 살펴볼 수도 있습니다.

여기에 이미지 설명을 삽입하세요.

위 그림에서 볼 수 있듯이 운영 체제는 응용 프로그램과 컴퓨터 하드웨어 사이의 소프트웨어로, 운영 체제와 컴퓨터 하드웨어는 직접 상호 작용하는 반면 응용 소프트웨어와 사용자는 컴퓨터 하드웨어와 직접 상호 작용할 수 없습니다. .

참고: 위 그림에서는 사용자와 운영체제 사이의 직접적인 연결도 있는데, 이는 운영체제가 제공하는 온라인 명령 인터페이스를 통해 사용자가 운영체제와 직접 상호작용할 수 있기 때문이다. 섹션 1.1.2에 자세히 설명되어 있습니다.

요약하자면, 우리는 운영체제의 표준 정의를 다음과 같이 제시합니다.

운영체제(Operating System)란 컴퓨터 시스템 전체의 하드웨어와 소프트웨어 자원을 통제 및 관리하고 , 컴퓨터 작업과 자원 할당을 합리적으로 구성하고 스케줄링하며, 사용자와 다른 소프트웨어에게 편리한 인터페이스와 환경을 제공하는 프로그램의 집합체를 말한다 . 컴퓨터 시스템의 일련의 프로그램으로, 가장 기본적인 시스템 소프트웨어입니다 .

섹션 요약

여기에 이미지 설명을 삽입하세요.

1.1.2 운영체제의 기능

운영 체제는 주로 세 가지 주요 기능을 제공합니다.

  • 컴퓨터 시스템 자원의 관리자 역할을 합니다.
  • 사용자와 컴퓨터 하드웨어 시스템 간의 인터페이스 역할을 합니다.
  • 컴퓨터 자원의 확장으로
1.1.2.1 컴퓨터 시스템 자원의 관리자로서

컴퓨터 시스템 자원의 관리자로서 운영 체제는 프로세서 관리, 메모리 관리, 장치 관리 및 파일 관리 기능을 가지고 있습니다.

  • 프로세서 관리

    다중 프로그래밍 환경에서는 프로세서의 할당과 동작이 프로세스(또는 스레드)를 기본 단위로 하므로 프로세서 관리도 프로세스 관리에 귀속될 수 있다. 프로세스 관리의 주요 기능에는 프로세스 제어, 프로세스 동기화, 프로세스 통신, 교착상태 처리, 프로세서 스케줄링 등 (이러한 기능은 이후 장에서 자세히 소개됩니다.)

  • 메모리 관리

    메모리 관리는 다중 프로그램 작동을 위한 좋은 환경을 제공하고 사용자 사용을 촉진하며 메모리 활용도를 향상시키는 것입니다. 주로 메모리 할당 및 재활용, 주소 매핑, 메모리 보호 및 공유, 콘텐츠 확장 및 기타 기능이 포함됩니다.

  • 장치 관리

    장치 관리의 주요 업무는 사용자 I/O 요청 완료, 사용자의 다양한 장치 사용 촉진, 장치 활용도 향상 등이며, 주로 버퍼 관리, 장치 할당, 장치 처리, 가상 장치 등의 기능을 포함합니다.

  • 파일 관리

    컴퓨터 내의 정보는 파일 형태로 존재하며, 파일 관리를 담당하는 운영체제 부분을 파일 시스템이라 하며, 파일 관리에는 파일 저장 공간 관리, 디렉토리 관리, 파일 읽기 및 쓰기 관리 및 보호 등이 포함됩니다.

1.1.2.2 사용자와 컴퓨터 하드웨어 시스템 간의 인터페이스

운영 체제는 사용자가 편리하고 신속하며 안정적으로 컴퓨터 하드웨어를 조작하고 자신의 프로그램을 실행할 수 있도록 사용자 인터페이스를 제공합니다. 운영 체제에서 제공하는 사용자 인터페이스에는 명령 인터페이스프로그램 인터페이스 의 두 가지 유형이 있습니다 . 사용자는 명령 인터페이스를 사용하여 운영 체제와 직접 상호 작용하여 작업 실행을 완료할 수 있습니다. 프로그램 인터페이스는 프로그래머가 이러한 인터페이스를 사용하여 운영 체제에서 제공하는 서비스를 요청하도록 프로그래밍됩니다.

여기서 운영 체제는 캡슐화 개념을 사용하여 일부 복잡한 하드웨어 기능을 간단하고 사용하기 쉬운 서비스로 캡슐화함으로써 사용자가 기본 하드웨어 원리에 신경 쓰지 않고 컴퓨터를 편리하게 사용할 수 있도록 하고 명령만 실행하면 됩니다. 운영체제..

여기에 이미지 설명을 삽입하세요.

위 그림은 응용 소프트웨어가 운영체제가 제공하는 인터페이스를 통해 운영체제가 제공하는 기능을 획득함으로써 컴퓨터 하드웨어를 조작하는 것을 보여준다.

  • 명령 인터페이스

    명령 인터페이스는 온라인 명령 인터페이스와 오프라인 명령 인터페이스의 두 가지 범주로 나뉩니다.

    온라인 명령 인터페이스

    대화형 명령 인터페이스라고도 알려진 온라인 명령 인터페이스는 시분할 또는 실시간 시스템에 적합한 인터페이스입니다. 키보드 조작 명령 세트로 구성되어 있으며, 사용자는 콘솔이나 터미널을 통해 조작 명령을 입력하여 시스템에 다양한 서비스 요구 사항을 전달합니다. 사용자가 명령을 입력할 때마다 운영 체제의 명령 해석기로 제어권이 넘어가고, 명령 해석기는 입력된 명령을 해석하고 실행하여 지정된 기능을 완료한 후 다시 콘솔이나 콘솔로 제어권을 넘겨줍니다. 터미널 이 때 사용자는 다음 명령을 입력할 수 있습니다. 즉, 온라인 명령 인터페이스를 사용하여 운영 체제와 사용자의 상호 작용이 교대로 수행됩니다.

    예를 들어, Windows 시스템에서는 키보드에서 Win+R을 누르고 cmd를 입력한 후 Enter를 눌러 명령 해석기를 입력하고 다양한 운영 체제에서 제공하는 명령을 사용하여 운영 체제와 상호 작용합니다(예: 현재 명령을 가져오는 time 명령). 시간).

    오프라인 명령 인터페이스

    일괄 명령 인터페이스라고도 알려진 오프라인 명령 인터페이스는 일괄 처리 시스템에 적합하며 일련의 작업 제어 명령으로 구성됩니다. 오프라인 사용자는 작업 실행에 직접 개입할 수 없으며 대신 해당 일련의 명령을 작성합니다. 작업 운영 지침은 작업과 함께 운영 체제에 제출됩니다. 시스템이 작업을 예약할 때 시스템의 명령 해석기는 작업 설명에 있는 명령을 하나씩 실행하여 작업의 동작을 간접적으로 제어합니다. 즉, 사용자는 오프라인 명령 인터페이스를 사용하여 작업 목록을 미리 제공한 후 시스템에 넘겨주고 목록에 따라 하나씩 실행함으로써 운영 체제와 상호 작용합니다.

    예를 들어 Windows의 배치 파일은 bat입니다.

  • 프로그램 인터페이스

    프로그램 인터페이스는 일련의 시스템 호출(일반화된 명령어라고도 함)로 구성됩니다. 프로그래머는 프로그램에서 이러한 시스템 호출을 사용하여 다양한 외부 장치, 메모리 할당 및 회수 등과 같이 운영 체제에서 제공하는 특정 서비스를 요청합니다.

    아래 그림은 프로그램 인터페이스를 사용하여 운영 체제에 모니터에 대한 디스플레이 서비스를 제공하도록 요청하는 프로그래머의 예입니다.

여기에 이미지 설명을 삽입하세요.

현재 가장 대중적인 그래픽 사용자 인터페이스(GUI), 즉 그래픽 인터페이스는 프로그램 인터페이스를 호출하여 구현된다. GUI를 통해 사용자는 마우스와 키보드를 직접 사용하여 운영체제를 편리하게 사용할 수 있습니다.

1.1.2.3 컴퓨터 자원의 확장으로

베어메탈(소프트웨어가 없는 컴퓨터)은 컴퓨터 시스템의 물질적 기반이며, 사용자에게 제시되는 컴퓨터 시스템은 여러 계층의 소프트웨어로 변형된 컴퓨터이다. 운영체제가 제공하는 자원 관리 기능과 사용자 친화적인 다양한 서비스 인터페이스는 베어메탈을 더욱 강력하고 편리하게 만들어줍니다. 따라서 우리는 종종 소프트웨어가 적용되는 머신을 확장 머신 또는 가상 머신이라고 부릅니다.

섹션 요약

여기에 이미지 설명을 삽입하세요.

1.1.3 운영체제의 특징

운영 체제는 일종의 시스템 소프트웨어로, 다른 시스템 소프트웨어 및 응용 소프트웨어와는 매우 다르며 고유한 몇 가지 기본 특성을 가지고 있습니다. 동시, 공유, 가상 및 비동기가 포함됩니다 . 이러한 개념을 이해하는 것은 매우 중요합니다! ! !

1.1.3.1 동시성

동시성은 동일한 시간 간격 내에 둘 이상의 이벤트가 발생하는 경우입니다 . 이러한 사건은 거시적 규모에서 동시에 발생 하고 미시적 규모에서는 교대로 발생합니다 . 운영체제에서 동시성이란 컴퓨터 시스템에서 동시에 실행 중인 여러 프로그램이 존재하는 것을 의미하며, 운영체제에는 여러 프로그램의 동시 실행을 처리하고 예약하는 기능이 있습니다. 다중 프로그래밍 환경에서는 일정 시간 내에 거시적으로 여러 프로그램이 동시에 실행되지만 단일 프로세서 환경에서는 매 순간 하나의 프로그램만 실행될 수 있습니다. 즉, 운영 체제의 동시성은 시간 공유를 통해 달성됩니다.

참고: 동시성과 병렬성은 서로 다른 개념 입니다 . 병렬성은 두 개 이상의 이벤트가 동시에 발생하는 것을 의미합니다 .

병렬성(Parallelism)이란 시스템이 동시에 계산이나 연산을 수행하는 특성을 가지며 동시에 두 개 이상의 작업을 완료할 수 있다는 것을 의미하며, 병렬성을 위해서는 멀티프로세서 하드웨어 환경 등 충분한 하드웨어 지원이 필요하다.

단일 코어 CPU는 한 번에 하나의 프로그램만 실행할 수 있으며, 각 프로그램은 동시에만 실행할 수 있습니다.

멀티코어 CPU는 동시에 여러 프로그램을 실행할 수 있으며, 각 프로그램은 병렬로 실행될 수 있습니다.

다음 그림은 동시성과 병렬성의 차이점을 예시로 보여줍니다.

여기에 이미지 설명을 삽입하세요.

위 사진에서 샤오밍이 왼쪽의 과정을 따라 숙제 쓰기, 음악 듣기, 숙제 쓰기를 차례로 따라한다면, 10시부터 12시까지 숙제 쓰기와 음악 듣기 2가지 행동을 한다는 뜻이다. 동시에 실행됩니다. Xiao Ming이 오른쪽 과정에 따라 10시부터 11시까지 음악을 들으면서 숙제를 쓴다면 숙제 쓰기와 음악 듣기라는 두 가지 행동이 병행하여 실행됩니다.

1.1.3.2 공유

공유는 리소스 공유입니다. 즉, 시스템의 리소스를 메모리에서 동시에 실행되는 여러 프로세스에서 사용할 수 있습니다.

리소스 공유는 상호 배타적 공유동시 액세스라는 두 가지 유형으로 구분됩니다.

  • 상호 배타적 공유 모드

    시스템의 일부 리소스(예: 프린터 등)는 여러 프로세스에서 사용할 수 있지만 인쇄 결과의 혼란을 방지하기 위해 일정 시간 내에 하나의 프로세스만 해당 리소스에 접근할 수 있도록 지정해야 합니다. .

    따라서 상호 배타적 공유를 사용하는 자원은 동시에 하나의 프로세스에서만 접근할 수 있다.예를 들어 프로세스 A가 특정 자원에 접근하려면 먼저 요청을 해야 한다. 이때 자원이 유휴 상태라면, 시스템은 자원을 프로세스 A에 할당합니다. 이때 프로세스 B도 자원에 액세스하려는 경우 프로세스 B는 프로세스 A가 자원 사용을 마친 후 자원을 해제할 때까지 기다려야 합니다. 이 방법은 상호 배타적인 공유 입니다 .

  • 동시 접속 방식

    시스템의 일부 리소스(예: 디스크 등)를 사용하면 여러 프로세스가 일정 기간 내에 "동시에" 액세스할 수 있습니다. 여기서 언급된 "동시성"은 거시적입니다. 즉, 이러한 리소스는 여러 프로세스의 동시 액세스를 허용합니다. 예를 들어 여러 프로세스가 동시에 디스크 장치에 액세스하고 파일을 읽을 수 있습니다.

동시성과 공유는 운영체제의 가장 기본적인 두 가지 기능이다 . 둘 사이의 관계는 서로의 존재를 위한 조건 이다 . 시스템이 프로그램의 동시 실행을 허용하지 않는다면 당연히 자원 공유에는 문제가 없다. ; 시스템이 리소스 공유를 구현할 수 없는 경우 효과적인 관리는 프로그램의 동시 실행에 영향을 미칩니다.

1.1.3.3 가상

가상화는 물리적 개체를 여러 논리적 개체로 바꾸는 것을 의미합니다. 물리적 개체는 실제로 존재하고, 논리적 개체는 존재하지 않는, 사용자가 느끼는 것입니다.

운영체제에서는 가상 프로세서 , 가상 메모리 , 가상 주변 장치 등 의 기능을 구현하기 위해 가상 기술을 사용한다.

  • 가상 프로세서

    가상 프로세서는 다중 프로그래밍 기술을 사용하여 여러 프로그램을 동시에 실행하고 하나의 프로세서를 시분할 방식으로 사용합니다. 현재는 프로세서가 하나뿐이지만 거시적 관점에서 보면 동시에 여러 사용자에게 서비스를 제공할 수 있어 각 최종 사용자가 자신을 서비스하는 CPU가 있는 것처럼 느끼게 됩니다.

  • 가상 메모리

    가상 메모리는 컴퓨터의 실제 물리적 메모리를 가상 메모리로 변환하여 메모리 용량을 논리적으로 확장하는데, 이때 사용자가 인지하는 메모리 용량은 가상이다.

  • 가상 주변 장치

    가상 외부 장치는 가상 기술을 사용하여 물리적 I/O 장치를 여러 논리적 I/O 장치로 가상화하여 각 사용자가 하나의 논리적 I/O 장치를 점유할 수 있도록 하고 원본은 일정 기간 동안만 허용되도록 합니다. 한 명의 사용자가 일정 기간 내에 여러 사용자가 동시에 액세스할 수 있는 공유 장치가 됩니다.

운영체제의 가상 기술은 시분할 다중화 기술 (가상 프로세서)과 공간 분할 다중화 기술 (가상 메모리)로 요약할 수 있다.

운영 체제의 가상 기술의 전제 조건은 동시성인데, 동시성이 없으면 일정 시간 동안 시스템에서 하나의 프로세스만 실행될 수 있으며, 그러면 가상성은 그 의미를 잃게 됩니다 . 가상이 없습니다 .

1.1.3.4 비동기식

운영체제의 다중 프로그래밍 환경에서는 여러 개의 프로그램이 동시에 실행되기 때문에 각 프로세스의 실행이 일관성이 없고 stop-and-go가 이루어지며, 각 프로세스는 예측할 수 없는 속도로 앞으로 나아간다. 프로세스의 비동기성.

동시에 실행되는 프로세스는 제한된 시스템 자원을 놓고 경쟁하므로 프로세스의 실행은 일관성이 없으며 시스템이 동시성을 가질 때만 비동기성이 발생할 수 있습니다.

섹션 요약

여기에 이미지 설명을 삽입하세요.

1.2 운영체제 개발 역사

1.2.1 수동 조작 단계(운영 체제 없음)

초기 수동 작업 단계에서는 컴퓨터를 사용하는 모든 작업에는 프로그램 로딩 및 실행, 결과 출력 등 수동 개입이 필요합니다. 아래 그림은 수동 단계의 일반적인 흐름을 보여줍니다.

여기에 이미지 설명을 삽입하세요.

위 그림에서 볼 수 있듯이, 전체 프로세스에서 컴퓨터 계산 속도는 다른 수동 개입 속도에 비해 매우 빠릅니다. 이 과정에서 컴퓨터는 이미 계산을 완료했지만, 인간은 여전히 ​​천천히 다음 프로그램을 입력하거나 연산 결과를 읽고 있는 경우가 자주 발생합니다.

수동 조작 단계에는 두 가지 주요 단점이 있음을 알 수 있습니다.

  • 사용자가 전체 시스템을 독점하므로 리소스 활용도가 낮습니다.
  • CPU가 수동 작업을 기다리며 활용도가 낮습니다.

1.2.2 일괄 처리 단계(운영 체제가 나타나기 시작함)

수동 단계의 두 가지 중요한 문제를 해결하기 위해 일괄 처리 시스템이 등장했습니다. 일괄 처리 시스템은 단일 채널 일괄 처리 시스템다중 채널 일괄 처리 시스템 으로 구분됩니다 .

1.2.2.1 단일 채널 일괄 처리 시스템

단일 채널 일괄 처리 시스템에서는 오프라인 입출력 기술( 주변 기계 + 테이프 ) 을 도입 하고 감독 프로그램이 작업의 입출력을 제어하여 사람과 기계 간의 갈등과 불일치를 해결합니다. CPU 및 I/O 장비의 속도에 관한 질문입니다.

여기에 이미지 설명을 삽입하세요.

  • 특징

    • 자동화: 일반적인 상황에서는 테이프에 있는 작업 배치가 수동 개입 없이 하나씩 자동으로 실행될 수 있습니다.

    • 순차적인 경우 테이프의 작업이 메모리에 입력되고 순서대로 하나씩 실행됩니다.

    • 단일 트랙, 감독 프로그램은 실행을 위해 테이프에서 메모리로 하나의 프로그램만 전송합니다.

  • 이점

    인간과 기계의 갈등으로 인한 자원 낭비를 어느 정도 해결한다.

  • 결점

    단일 채널 일괄 처리 시스템의 단일 채널 특성으로 인해 프로그램이 실행되는 동안 I/O 요청이 발행되면 고속 CPU는 저속 I/O 장치가 완료될 때까지 기다려야 합니다. 계속 실행될 수 있습니다. 이로 인해 CPU 리소스가 낭비됩니다.

1.2.2.2 다채널 일괄 처리 시스템

단일 채널 일괄 처리 시스템의 단점을 해결하기 위해 다중 채널 일괄 처리 시스템이 탄생했는데, 이는 다중 프로그래밍 기술을 사용하여 여러 프로그램이 동시에 메모리에 들어가 교대로 실행되도록 하는 것입니다. 이렇게 하면 프로그램 A가 실행 중일 때 특정 프로그램 A가 I/O 장치를 요청하더라도 CPU는 즉시 다른 프로그램을 실행할 수 있으며, I/O 장치가 요청된 후에도 프로그램 A를 계속 실행할 수 있습니다. 처리 완료.

여기에 이미지 설명을 삽입하세요.

  • 특징

    다중 프로그래밍은 여러 프로그램이 시스템 메모리에서 동시에 실행되는 것을 의미합니다.

    매크로 수준에서는 병렬, 마이크로 수준 에서는 직렬 매크로 수준에서는 메모리에 있는 모든 프로그램이 실행되고, 마이크로 수준에서는 하나의 프로그램만 동시에 CPU를 점유합니다.

  • 이점

    여러 프로그램이 동시에 실행되고 컴퓨터 리소스를 공유하여 CPU 및 기타 리소스를 완전히 "사용 중"으로 만들고 리소스 활용도를 크게 향상시킵니다.

  • 결점

    사용자 응답 시간이 길고 인간-컴퓨터 상호 작용 기능이 없습니다(사용자가 작업을 제출하면 시스템이 자동으로 처리할 때까지만 기다릴 수 있고 수동으로 개입할 수는 없습니다).

1.2.3 시분할 운영체제

시분할 운영 체제는 시간 공유 기술을 사용하여 프로세서의 실행 시간을 짧은 시간 조각으로 나누고 해당 시간 조각에 따라 프로세서를 각 온라인 작업 에 차례로 할당합니다 . 각 사용자는 시분할 운영 체제를 사용할 수 있습니다. 컴퓨터는 터미널을 통해 상호 작용하며, 작업 A가 일정 ​​시간 내에 완료되지 않으면 작업 A가 일시 중지되고 CPU는 작업 A를 계속 실행하기 전에 다른 작업을 처리하고 다음 라운드를 기다립니다. CPU가 매우 빠르기 때문에 작업 순환도 매우 빠르므로 각 사용자는 자신에게 서비스를 제공하는 전용 CPU가 있다는 느낌을 받게 됩니다.

  • 특징

    시분할 운영 체제에서는 동시성을 통해 여러 최종 사용자가 동시에 컴퓨터를 사용할 수 있습니다. 이러한 터미널의 사용자는 동시에 또는 실질적으로 동시에 컴퓨터를 사용할 수 있습니다.

    대화형 방식으로 사용자는 시스템과 인간-기계 대화를 나누고 작업 작동을 제어할 수 있습니다.

    독립성, 시분할 시스템에서 여러 사용자 간의 작업은 서로 독립적이며 서로 간섭하지 않습니다.

    적시성, 사용자 요청에 짧은 시간 내에 응답할 수 있습니다.

  • 이점

    시분할 시스템은 다중 채널 배치 처리 시스템에서 인간과 컴퓨터의 상호 작용이 불가능한 문제를 해결합니다. 여러 사용자가 동시에 터미널을 통해 호스트에 연결할 수 있으며, 각 사용자의 작업은 서로 독립적이며 다른 사용자가 느낄 수 없습니다.

  • 결점

    시분할 시스템은 각 프로그램을 실행하기 위해 타임 슬라이스를 회전시키기 때문에 긴급한 문제의 우선순위를 정할 수 없게 됩니다.시스템이 지정된 시간 내에 외부 정보를 처리해야 하는 일부 시나리오에서는 시분할 시스템이 시스템 해당 시스템이 없습니다(예: 항공기 예약, 항공기 실시간 모니터링 및 기타 시스템).

1.2.4 실시간 운영체제

시분할 시스템으로는 긴급한 업무를 처리할 수 없는 문제를 해결하기 위해 실시간 시스템이 탄생했다. 실시간 시스템은 하드 실시간 시스템소프트 실시간 시스템의 두 가지 유형으로 구분됩니다 .

  • 하드 실시간 시스템

    하드 실시간 시스템에서는 작업이 지정된 시간이나 지정된 시간 범위 내에서 절대적으로 발생해야 합니다. (예: 자율주행 시스템)

  • 소프트 실시간 시스템

    소프트 실시간 시스템은 지정된 시간 내에 작업을 완료해야 하지만 간헐적인 시간 위반을 허용할 수 있으며 상황이 발생한 후 영구적인 피해를 입히지 않도록 규정합니다. (예: 기차표 예약 시스템)

  • 이점

    실시간 시스템의 제어하에 컴퓨터 시스템은 외부 신호를 수신한 후 시간 내에 처리하고 엄격한 시간 범위 내에 처리를 완료할 수 있습니다.

  • 결점

    구현하기가 어렵습니다.

1.2.5 기타 운영 체제

위에서 언급한 운영 체제 외에도 네트워크 운영 체제, 분산 컴퓨터 운영 체제, 개인용 컴퓨터 운영 체제 등이 있습니다.

  • 네트워크 운영 체제

    컴퓨터 네트워크의 발전과 함께 등장한 운영체제는 다양한 컴퓨터를 유기적으로 결합하여 데이터 전송 기능, 네트워크 내 다양한 ​​자원 공유, 다양한 컴퓨터 간의 통신 기능을 구현할 수 있다.

  • 분산 컴퓨터 운영 체제

    분산 컴퓨터 운영 체제는 여러 컴퓨터로 구성되며 다음 조건을 충족합니다.

    1.系统中任意两台计算机间能够正常通信
    2.系统中的每台计算机都具有同等地位,没有从机和主机之分
    3.每台计算机上的资源为所有用户共享
    4.系统中的任意一台计算机都可以构成一个子系统且可以重构
    5.任何工作都可以分布在几台计算机上,由它们并行、协同完成。
    

    주요 특징은 분산과 병렬성입니다.

  • 개인용 컴퓨터 운영 체제

    현재 가장 널리 사용되는 운영체제는 Windows, Linux, MacOS 등입니다.

섹션 요약

여기에 이미지 설명을 삽입하세요.

1.3 운영 체제의 작동 메커니즘

1.3.1 서문

운영 체제의 작동 메커니즘을 배우기 전에 우리는 일정한 지식을 보유해야 합니다.

즉, 우리는 프로그램이 어떻게 실행되는지 이해해야 합니다.

프로그래머가 코드 작성을 마치고 컴파일을 위해 컴파일러에 제출하면 바이너리 명령어 파일이 형성됩니다. 이 파일에 있는 명령어는 CPU가 인식하고 실행할 수 있는 명령어입니다. 마찬가지로, 프로그램이 컴퓨터에서 실행되려면 내부 프로그램을 하나씩 이진 명령어로 컴파일한 후 인식 및 실행을 위해 CPU에 전달해야 합니다.

여기에 이미지 설명을 삽입하세요.

운영 체제의 운영 메커니즘을 배우려면 두 가지 유형의 명령어 (특권 명령어와 비권한 명령어), 두 가지 유형의 프로그램 (커널 프로그램과 사용자 프로그램), 두 가지 상태 (사용자 모드와 커널 모드)를 이해해야 합니다 . 그리고 4개의 운영 체제 커널은 단지 하나의 측면일 뿐입니다.

1.3.2 커널 프로그램과 사용자 프로그램

운영 체제에서 CPU는 성격이 다른 두 가지 프로그램을 실행합니다. 하나는 "커널 프로그램"이라고 하는 운영 체제 커널 프로그램이고, 다른 하나는 "사용자 프로그램"이라고 하는 시스템의 외부 계층 응용 프로그램입니다. 프로그램".

커널 프로그램은 사용자 프로그램의 관리자로서 특권 명령어는 커널 프로그램에서 실행될 수 있고 , 비특권 명령어 만 사용자 프로그램에서 실행될 수 있다 .

우리 프로그래머가 작성한 프로그램은 일반적으로 사용자 프로그램입니다.

1.3.3 특권 명령어와 비특권 명령어

CPU가 인식할 수 있는 명령어 중에는 권한에 따라 특권 명령어와 비특권 명령어의 두 가지 명령어가 있다.

  • 특권 지침

    I/O 명령, 인터럽트 설정 명령, 사용자 메모리 보호 레지스터에 액세스하는 명령, 프로그램 상태 단어 레지스터에 프로그램 상태 단어 보내기 등과 같이 사용자가 직접 사용할 수 없는 명령입니다.

  • 특권이 없는 지시

    사용자가 직접 사용할 수 있도록 하는 명령어입니다. 권한이 없는 명령어는 시스템의 소프트웨어 및 하드웨어 리소스에 직접 접근할 수 없으며 사용자의 주소 공간에만 접근할 수 있으므로 사용자 프로그램이 시스템 프로그램을 손상시키는 것을 방지할 수 있습니다.

1.3.4 사용자 모드와 커널 모드

CPU의 작동 모드는 사용자 모드(eye 모드) 커널 모드(코어 모드, 파이프 모드)의 두 가지 모드로 구분됩니다 . 커널 모드의 CPU는 특권 명령어를 실행할 수 있지만, 사용자 모드의 CPU는 특권 명령어를 실행할 수 없습니다.

사용자 모드와 커널 모드의 내용과 관련하여 독자는 두 가지 주요 문제를 명확히 해야 합니다.

1.3.4.1 CPU는 현재 사용자 모드인지 커널 모드인지 어떻게 식별합니까?

CPU에는 프로그램 상태 레지스터(PSW) 라는 레지스터가 있는데 , 이 레지스터에는 바이너리 비트가 있는데, 1은 CPU가 "커널 모드"에 있음을 의미하고, 0은 CPU가 "사용자 모드"에 있음을 의미합니다 . CPU가 커널 모드에 있다는 것은 커널 프로그램이 실행 중이고 권한 있는 명령을 실행할 수 있다는 의미이고, CPU가 사용자 모드에 있다는 것은 사용자 프로그램이 실행 중이고 권한이 없는 명령만 실행할 수 있다는 뜻이다.

1.3.4.2 CPU가 상태를 전환하는 방법

CPU가 사용자 모드에서 커널 모드로 전환하려면 사용자 프로그램에 의해 인터럽트나 예외를 트리거해야 하며 하드웨어 구현에 의해 PSW 플래그가 1로 설정된 후 커널 모드로 전환됩니다.

CPU가 커널 모드에서 사용자 모드로 전환하려는 경우 커널 프로그램은 PSW를 수정하는 특권 명령어를 호출합니다.

인터럽트와 예외는 다음 장에서 설명됩니다.

1.3.5 운영체제 커널에 포함된 내용

1.3.5.1 시계 관리

시계는 운영 체제의 가장 기본적이고 중요한 장치로 타이밍, 인터럽트 및 기타 기능을 제공합니다.

  • 타이밍 기능을 사용하면 운영 체제가 사용자에게 표준 시간을 제공할 수 있습니다.
  • 클록 인터럽트 기능은 시분할 운영 체제에서 타임 슬라이스 회전 관리와 같은 프로세스 전환을 실현할 수 있습니다.
1.3.5.2 인터럽트 메커니즘

인터럽트 타이밍을 도입한 운영 체제의 원래 의도는 다중 프로그램이 동시에 실행될 수 있더라도 다중 프로그램 환경에서 CPU 활용률을 향상시키는 것입니다. 시간이 지나면서 인터럽트 메커니즘은 점차 현대 운영 체제의 기초가 되었습니다. 예를 들어 키보드 또는 마우스 정보 입력, 프로세스 관리 및 예약, 시스템 기능 호출, 장치 드라이버, 파일 액세스 등의 기능은 모두 인터럽트 메커니즘에 의존합니다.

1.3.5.3 프리미티브

운영 체제의 맨 아래 계층은 호출할 수 있는 공개 소형 프로그램으로, 각각 특정 작업을 완료할 수 있습니다. 이러한 소형 프로그램을 기본 프로그램이라고 하며 다음과 같은 특징을 갖습니다.

  • 운영 체제의 맨 아래에 있으며 하드웨어와 가장 가까운 부분입니다.
  • 원자적이고 한 번에 실행되며 중단될 수 없습니다.
  • 실행 시간이 짧고 자주 호출됩니다.

프리미티브를 정의하는 직접적인 방법은 인터럽트를 끄고 프리미티브 실행이 완료된 후에 켜는 것입니다. 장치 드라이버의 일부 작업, CPU 상태 전환, 프로세스 통신 및 시스템의 기타 기능을 기본 요소로 정의할 수 있습니다. 즉, 두 개의 특권 명령어 " 인터럽트 비활성화 명령어 "와 " 인터럽트 개방 명령어 "가 원자성을 달성하는 데 사용됩니다. "오프 인터럽트 명령"을 사용한 후 CPU는 프로그램을 실행할 때 인터럽트 신호가 있는지 여부를 감지하지 않습니다. "오픈 인터럽트 명령"을 사용한 후 CPU는 프로그램을 실행할 때 인터럽트 신호가 있는지 여부를 감지합니다. (인터럽트 관련 지식은 다음 장에서 소개하겠습니다)

1.3.5.4 시스템 제어의 데이터 구조 및 처리

프로세스 제어 블록, 작업 제어 블록, 메시지 큐, 버퍼 등과 같이 운영 체제에 상태 정보를 등록하는 데 사용되는 많은 데이터 구조가 있습니다. 효과적인 관리를 달성하기 위해 시스템은 몇 가지 기본 작업을 정의합니다.

  • 공정 관리

    프로세스 상태 관리, 프로세스 스케줄링 및 발송, 프로세스 제어 블록 생성 및 취소 등을 담당합니다.

  • 메모리 관리

    메모리 공간 할당 및 재생, 메모리 정보 보호 프로그램, 코드 스왑 프로그램 등을 담당합니다.

  • 장치 관리

    버퍼 관리, 디바이스 할당, 재활용 등을 담당합니다.

위 내용에서 볼 수 있듯이 커널 모드 명령어에는 실제로 시스템 호출 명령어와 클럭, 인터럽트 및 프리미티브에 대한 일부 작업 명령어가 포함됩니다 .

섹션 요약

여기에 이미지 설명을 삽입하세요.

1.4 인터럽트와 예외

1.4.1 인터럽트의 역할

먼저 결론에 대해 이야기해 보겠습니다. 인터럽트는 운영 체제 커널이 CPU 사용 권한을 다시 얻는 유일한 방법입니다 .

다음 시나리오를 가정해 보겠습니다.

운영 체제에는 커널 모드와 사용자 모드의 두 가지 상태가 도입되는데, 사용자가 사용자 프로그램 A를 시작하면 운영 체제 커널은 적절한 시점에 사용자 프로그램 A에 CPU 사용 권한을 적극적으로 포기합니다. CPU는 커널 상태에서 사용자 프로그램 A)로 전환됩니다 . 사용자 모드로 전환합니다 . 이때 인터럽트 메커니즘이 없으면 CPU는 사용자 모드로 유지되며 운영 체제 커널은 권한을 얻을 수 없습니다. CPU를 사용하려면.

따라서 운영 체제에는 인터럽트 메커니즘이 도입되었습니다.

위 장에서는 CPU가 인터럽트 메커니즘을 통해 사용자 모드에서 커널 모드로 전환된다는 점도 언급했습니다. (인터럽트에 의해 트리거되면 하드웨어가 자동으로 CPU 상태를 전환합니다.)

1.4.2 인터럽트 유형

인터럽트는 외부 인터럽트내부 인터럽트의 두 가지 유형 으로 구분됩니다 .

1.4.2.1 외부 인터럽트

인터럽트라고도 알려진 외부 인터럽트는 CPU 실행 명령 외부에서 발생하는 이벤트를 말하며 일반적으로 정보 입출력에 사용됩니다. 예를 들어 장치에서 발행한 I/O 종료 인터럽트는 장치 입출력이 완료되었음을 나타냅니다. .

외부 인터럽트의 예:

클럭 인터럽트, 클럭 구성요소가 100ms마다 CPU에 인터럽트 신호를 보낸다고 가정하면 다음 상황이 발생합니다.

1.CPU依次执行应用程序A的每一条指令(CPU每执行完一条指令后,就会检查是否接收到了中断信号,如果没有则继续执行下一条指令)。
2.CPU接收到由时钟部件发送的中断指令,则转换为内核态,操作系统将CPU交给处理时钟中断指令的内核程序(此时一般会将CPU内核交给另外一个应用程序B)
3.CPU由内核态转换为用户态且应用程序B占有了CPU,CPU依次执行应用程序B的每条指令...

마찬가지로, 위의 상황은 I/O 장치가 CPU에 인터럽트 신호를 보내는 상황에도 적용될 수 있습니다.

1.4.2.2 내부 중단

내부 인터럽트는 예외라고도 하며 프로그램의 불법 opcode로 인해 발생하는 이벤트, 범위를 벗어난 주소 및 특수 트랩된 명령과 같이 CPU의 명령 실행 내에서 발생하는 이벤트를 나타냅니다. 예외는 차단할 수 없으며 발생하면 즉시 처리해야 합니다 .

내부 인터럽트의 예:

1.应用程序A试图在用户态下执行特权指令,这个指令是非法的,会引起一个中断信号,CPU接收到该中断信号,则转换为内核态,交由处理该中断信号的内核程序占有CPU。
2.应用程序A试图请求操作系统内核提供的服务,此时应用程序A执行了一个特殊的指令(陷入指令),该指令也会引起一个中断信号。

트랩된 명령어는 애플리케이션이 CPU 사용 권한을 운영 체제 커널에 적극적으로 반환한다는 의미입니다. (시스템 호출은 트랩 명령어를 통해 구현됩니다.)

1.4.2.3 분류도

여기에 이미지 설명을 삽입하세요.

1.4.3 인터럽트의 기본 원리

인터럽트 및 예외 처리 프로세스는 대략 다음과 같습니다.

여기에 이미지 설명을 삽입하세요.

CPU는 사용자 프로그램의 i번째 명령어 실행 시 비정상적인 이벤트를 감지하거나 i번째 명령어 실행 후 인터럽트 요청 메시지를 발견하면 현재 응용 프로그램을 중단한 후 커널 상태로 전환한 뒤 커널 상태로 전환한다. 해당 인터럽트 또는 예외 핸들러 실행으로 넘어갑니다. 인터럽트 또는 예외 핸들러로 문제를 해결할 수 있으면 인터럽트 또는 예외 핸들러의 실행이 끝난 후 인터럽트 또는 예외 복귀 명령을 실행하여 CPU를 인터럽트된 사용자 프로그램의 i번째 명령 또는 i+1 명령으로 되돌립니다. 실행은 계속되며, 인터럽트나 예외 처리기가 이것이 복구할 수 없는 치명적인 오류임을 발견하면 사용자 프로그램이 종료됩니다.

그중에서 CPU는 인터럽트나 예외를 감지한 후 다양한 인터럽트 신호 유형에 따라 "인터럽트 벡터 테이블"에서 해당 인터럽트 핸들러의 위치를 ​​찾습니다.

섹션 요약

여기에 이미지 설명을 삽입하세요.

1.5 시스템 호출

1.5.1 시스템 호출이란 무엇입니까?

시스템 호출은 "프로그래머"에게 제공되는 일련의 인터페이스에 대한 총칭입니다. 시스템 내의 다양한 공유 자원은 운영체제에 의해 일률적으로 관리되며, 사용자 프로그램은 시스템 호출을 통해 관련 서비스(저장소 할당, I/O 입출력 등)를 요청할 수 있다.

시스템 호출은 섹션 1.1.2.2에서 언급한 운영 체제에서 제공하는 프로그램 인터페이스 입니다.

1.5.2 시스템 호출과 라이브러리 함수의 차이점

시스템 호출과 라이브러리 함수의 차이점은 다음 표에 나와 있습니다.

수준 설명하다
사용자 프로그램 시스템 호출을 직접하거나 라이브러리 기능을 사용할 수 있습니다
프로그래밍 언어 상위에 라이브러리 기능 제공 일부 라이브러리 기능은 시스템 호출을 캡슐화하고 시스템 호출 세부 정보를 숨깁니다.
운영 체제 상위 계층 프로그램이 커널의 특정 서비스를 요청할 수 있도록 시스템 호출을 상향 제공합니다.

1.5.3 시스템 호출의 필요성

시스템 호출이 없는 경우, 즉 운영 체제가 컴퓨터의 다양한 공유 리소스를 균일하게 관리하지 않는 경우 다음 시나리오에서 오류가 전송됩니다.

프린터를 통해 파일을 인쇄하려면 마우스를 사용하여 word의 "인쇄" 버튼을 누르면 프린터에서 파일 인쇄가 시작됩니다.

잠시 후 다른 동료가 WPS의 "인쇄" 버튼을 눌렀을 때 프린터가 그의 파일을 인쇄하기 시작했습니다. 그 후 두 프로세스가 동시에 실행되어 귀하의 파일 내용과 그의 파일 내용이 혼합됩니다. .

위의 시나리오는 공유 리소스 프린터가 균일하게 관리되지 않기 때문입니다.

따라서 시스템콜의 ​​필요성이 반영되는데, 운영체제 커널은 공유자원을 일률적으로 관리하고 상위에 "시스템콜"을 제공한다. 사용자 프로세스가 프린터 등의 공유자원을 사용하려면 시스템을 통해 시스템커널에 메시지를 보내야 한다. 호출, 요청, 시스템 커널은 이러한 요청을 조정하고 처리합니다.

1.5.4 시스템 호출에 적용 가능한 시나리오

공유 리소스와 관련된 모든 작업(I/O 작업, 파일 관리 등)은 시스템 호출을 통해 운영 체제 커널에 요청해야 하며, 운영 체제 커널이 사용자를 대신하여 이를 완료합니다. 이를 통해 시스템의 안정성과 보안을 보장 하고 사용자의 불법적인 조작을 방지할 수 있습니다.

시스템 호출의 분류는 다음 표와 같습니다.

기능 설명하다
장치 관리 장치 요청, 해제 및 시작과 같은 완벽한 기능
파일 관리 파일 읽기, 쓰기, 생성 및 삭제와 같은 완전한 기능
프로세스 제어 프로세스 생성, 취소, 차단, 깨우기 등 완벽한 기능
프로세스 커뮤니케이션 프로세스 간 메시지 전달 또는 신호 전달과 같은 완전한 기능
메모리 관리 메모리 할당, 재활용, 작업이 차지하는 메모리 영역의 크기 및 시작 주소 획득과 같은 완전한 기능입니다.

1.5.5 시스템 호출 프로세스

구체적인 단계는 다음과 같습니다:

  1. CPU는 응용 프로그램을 실행하고 응용 프로그램의 일부 명령어는 일부 시스템 호출 매개변수를 전달한 다음 트랩된 명령어를 실행합니다.
  2. CPU가 트랩 명령을 실행한 후 인터럽트 명령은 인터럽트 신호를 트리거하고 CPU는 해당 인터럽트 핸들러(시스템 호출 입력 프로그램)가 차지하는 커널 상태로 전환되며 레지스터의 특정 매개변수에 따라 다음을 수행할 수 있습니다. 어떤 유형의 시스템 호출인지 식별하십시오.
  3. 본 시스템에서 호출되는 핸들러는 해당 명령어를 실행하기 위해 CPU를 점유하며, 실행이 완료된 후 응용 프로그램으로 복귀하여 계속해서 다음 명령어를 실행한다.

위의 과정은 다음과 같이 요약될 수 있습니다.

시스템 호출 매개변수 전달 -> 트랩된 명령어 실행 -> 해당 핸들러를 실행하여 시스템 호출 처리 -> 애플리케이션으로 복귀

섹션 요약

여기에 이미지 설명을 삽입하세요.

1.6 운영 체제 구조

운영체제가 계속해서 성장하면서 다양한 운영체제 아키텍처가 등장했는데, 현재 운영체제 아키텍처를 계층적 구조, 모듈화, 매크로커널, 마이크로커널, 아우터코어 등 5가지 유형으로 나눌 수 있다.

1.6.1 계층 구조

1.6.1.1 정의

계층적 구조는 운영 체제를 여러 계층으로 나누는 것을 의미하며, 가장 낮은 계층(계층 0)은 하드웨어, 가장 높은 계층(계층 N)은 사용자 인터페이스이며, 각 계층은 하위 계층의 기능과 서비스만 호출할 수 있습니다. 바로 옆에 있는, 즉 하위 레이어가 상위 레이어로 올라갑니다. 상위 레이어는 서비스를 제공하기 위해 하위 레이어에 단방향으로 의존합니다. 자세한 내용은 아래 그림에 나와 있습니다.

여기에 이미지 설명을 삽입하세요.

1.6.1.2 장점
  • 이는 시스템 디버깅 및 검증을 용이하게 하고 시스템 설계 및 구현을 단순화합니다.

    단방향 의존성이므로 하위 계층부터 상위 계층까지 계층별로 디버깅이 가능하며, 특정 계층에서 문제가 발견되면 하위 계층이 이미 존재하기 때문에 해당 계층에서 오류 위치를 빠르게 찾을 수 있다. 제공된 기능에 문제가 없는지 확인하기 위해 디버깅되었습니다.

  • 확장 및 유지 관리가 쉽습니다.

    특정 레이어의 기능을 쉽게 수정할 수 있으며, 이 레이어의 레이어 간 인터페이스가 변경되지 않는 한 다른 레이어에는 영향을 미치지 않습니다.

1.6.1.3 단점
  • 다양한 수준 사이를 정의하는 것은 어렵습니다.
  • 효율성이 떨어지며, 상위 수준 기능이 실행될 때마다 하위 수준 서비스를 아래에서 위로 지속적으로 호출해야 할 수도 있습니다.

1.6.2 모듈화

1.6.2.1 정의

모듈화란 운영 체제를 기능에 따라 여러 개의 독립적인 모듈로 나누는 것을 말하며, 각 모듈은 특정 기능을 담당하고, 각 모듈은 다시 하위 모듈로 나눌 수 있습니다. 아래 그림과 같이

여기에 이미지 설명을 삽입하세요.

1.6.2.2 장점
  • 운영 체제 설계의 정확성, 이해성 및 유지 관리성이 향상되었습니다.
  • 향상된 운영 체제 적응성
  • 향상된 운영 체제 개발 효율성
1.6.2.3 단점
  • 모듈 간 인터페이스는 인터페이스에 대한 실제 수요를 충족하기 어렵습니다.
  • 각 모듈 설계자는 서로 협력하며 각 결정은 이전에 입증된 올바른 결정을 기반으로 할 수 없으므로 (계층 구조와 반대되는) 신뢰할 수 있는 결정 순서를 찾을 수 없습니다.

1.6.3 매크로 커널

1.6.3.1 정의

단일 커널 또는 대형 커널이라고도 불리는 매크로 커널은 코어 상태에서 실행되는 운영체제의 주요 기능을 하나로 묶어서 사용자 프로그램에 고성능 시스템 서비스를 제공하는 것을 말한다. 개략도는 다음과 같습니다.

여기에 이미지 설명을 삽입하세요.

1.6.3.2 장점

모듈 간에 정보가 공유되므로 모듈 간의 서비스를 빠르게 호출할 수 있으므로 매크로 커널은 성능이 매우 뛰어난 장점이 있습니다.

1.6.3.3 단점
  • 커널 기능은 복잡하고 유지 관리가 어렵습니다.
  • 커널의 특정 기능 모듈에 오류가 발생하면 전체 시스템이 충돌할 수 있습니다.

1.6.4 마이크로커널

1.6.4.1 정의

마이크로커널(Microkernel)은 운영체제 커널의 가장 기본적인 기능을 커널에 그대로 두고, 코어 상태에서 실행할 필요가 없는 기능을 사용자 상태로 옮겨 커널의 설계 복잡도를 줄이는 것을 말한다. 커널 외부로 이동된 커널은 다음과 같이 계층화됩니다. 원칙은 여러 서비스 프로그램으로 나누어지고, 실행은 서로 독립적이며, 상호 작용은 마이크로커널의 도움으로 전달됩니다.

마이크로커널 구조는 운영 체제를 마이크로커널다중 서버 라는 두 부분으로 나눕니다 .

마이크로커널은 다음 기능을 포함하여 운영 체제의 가장 기본적인 기능을 구현할 수 있는 작은 커널입니다.

  1. 하드웨어 처리와 밀접하게 관련된 기능
  2. 클라이언트와 서버 간 통신 기능
  3. 일부 기본 기능

운영 체제의 대부분의 기능은 마이크로커널 외부의 일부 서버에 배치됩니다. 예를 들어 프로세스 관리 서버, I/O 장치 서버 등이 있습니다. 이러한 서버는 사용자 모드에서 실행되며 이들 간의 통신은 마이크로커널에서 제공하는 메시지 전달 메커니즘을 통해 이루어집니다. 개략도는 다음과 같습니다.

여기에 이미지 설명을 삽입하세요.

1.6.4.2 장점
  • 확장이 쉽고 많은 기능이 커널 외부에 있으며 일부 기능을 수정하거나 추가하는 것이 매우 쉽습니다.
  • 이식성이 뛰어나며 CPU 및 I/O 하드웨어 관련 코드가 커널에 위치하며, 기타 다양한 서버는 하드웨어와 독립되어 있어 운영 체제를 다른 플랫폼으로 포팅하는 데 최소한의 변경만 필요합니다.
1.6.4.3 단점

마이크로커널 구조의 가장 큰 단점은 성능입니다. 코어 상태와 사용자 상태 사이를 자주 전환해야 하기 때문입니다.

1.6.5 외부 코어

외핵에 대해 약간의 지식만 있으면 됩니다.

외부 커널은 커널 상태에서 실행되는 프로그램으로, 그 임무는 가상 머신에 리소스를 할당하고 이러한 리소스를 사용하려는 시도를 확인하여 어떤 머신도 다른 사람의 리소스를 사용하지 않도록 하는 것입니다.

1.6.6 요약 및 비교

구조물 이름 특성 이점 결점
계층적 구조 커널은 여러 수준으로 나누어져 있으며, 상위 수준은 하위 수준에 단방향으로 종속됩니다. 디버깅이 쉽고, 확장 및 유지 관리가 쉽습니다. 각 레이어의 경계는 결정하기 어렵고 효율성이 낮으며 여러 레이어에 걸쳐 사용할 수 없습니다.
모듈식 커널을 모듈로 나누기 유지 관리가 용이하고 모듈이 서로 통신할 수 있으며 새 모듈의 동적 로딩을 지원합니다. 모듈 간의 인터페이스 정의는 합리적이지 않을 수 있습니다. 모듈은 서로 의존하고 디버그하기 어렵습니다.
매크로 커널 모든 기능은 커널에 위치 고성능, 각 모듈은 서로 직접 호출합니다. 커널 기능은 복잡하고 유지 관리가 어렵기 때문에 특정 기능에 오류가 발생하면 전체 시스템이 중단될 수 있습니다.
마이크로커널 기본적인 기능만 커널에 넣고, 나머지는 다른 서버에 넣는다 커널은 기능이 적고 유지 관리가 쉽고 이식성이 뛰어납니다. 성능이 좋지 않아 사용자 모드와 코어 모드 사이를 자주 전환해야 함
외부 핵심 커널은 프로세스 스케줄링, 프로세스 통신 및 기타 기능을 담당하는 반면 외부 커널은 추상화되지 않은 하드웨어 리소스를 사용자에게 할당하고 리소스 사용의 안전을 보장하는 역할을 합니다. 외부 코어는 "추상적인" 하드웨어 리소스를 사용자에게 직접 할당하여 사용자 프로세스가 하드웨어 리소스를 보다 유연하게 사용할 수 있도록 합니다. 시스템 일관성 감소

섹션 요약

여기에 이미지 설명을 삽입하세요.

1.7 운영 체제 부팅 프로그램

1.7.1 개요

이전 장의 연구를 통해 우리는 운영 체제가 본질적으로 프로그램이므로 컴퓨터에서는 프로그램이 데이터 형태로 하드 디스크에 저장된다는 것을 배웠습니다. 우리 컴퓨터가 전원 버튼을 눌렀을 때, 하드디스크에 설치된 운영체제는 어떻게 실행되나요? 이 문제를 해결하려면 이 섹션에 소개된 운영 체제 부팅 프로그램이 필요합니다. 이는 컴퓨터가 CPU를 사용하여 특정 프로그램을 실행 -> 프로그램을 통해 하드 디스크 식별 -> 하드 디스크 파티션 식별 - 디스크 파티션의 운영 체제 식별 -> 최종적으로 프로그램을 통해 운영 체제를 시작한다는 의미입니다 . 위의 과정은 운영 체제 부팅 프로그램의 안내에 따라 단계별로 완료됩니다.

1.7.2 운영 체제 부팅 프로세스

운영체제 부팅 과정을 배우기 전에 먼저 하드디스크에 어떤 데이터가 저장되어 있는지부터 이해해야 합니다.

아래 그림은 빈 디스크를 보여줍니다

여기에 이미지 설명을 삽입하세요.

방금 구입한 새 디스크에는 빈 상자처럼 아무것도 들어 있지 않습니다.

아래 그림은 운영 체제를 설치한 후의 디스크를 보여줍니다.
여기에 이미지 설명을 삽입하세요.

아래 그림은 메인 메모리의 개략도를 보여줍니다.

여기에 이미지 설명을 삽입하세요.

위의 관련 구조를 이해한 후에는 다음과 같은 8단계로 나누어지는 일반적인 운영 체제의 부팅 프로세스를 배우기 시작합니다.

  1. CPU 활성화 활성화 된 CPU는 ROM의 부팅 프로그램을 읽고 명령어 레지스터를 BIOS(기본 입출력 시스템)의 첫 번째 명령어로 설정한 다음 BIOS 명령어 실행을 시작합니다.
  2. 하드웨어 자체 테스트 . BIOS 프로그램을 시작한 후 먼저 하드웨어 자체 테스트를 수행하여 각 하드웨어에 결함이 있는지 확인합니다. 결함이 발생하면 마더보드에서 서로 다른 경고음을 울려 시작을 알리고 종료합니다. 이상이 없으면 다음 단계로 진행합니다.
  3. 운영 체제가 포함된 하드 디스크를 로드하면 BIOS는 부팅 순서를 읽기 시작하고(CMOS에 저장된 부팅 순서를 통해 또는 사용자와의 상호 작용을 통해) 부팅 순서에서 첫 번째 순위에 있는 저장 장치에 제어권을 넘깁니다. CPU 저장 장치의 부트 섹터 내용을 메모리에 로드합니다.
  4. 마스터 부트 레코드 MBR을 로드합니다 . 하드 디스크는 부팅 하드 디스크와 비부팅 하드 디스크를 구별하기 위해 특정 식별자를 사용합니다. 마스터 부트 레코드 MBR의 기능은 운영 체제를 검색할 하드 디스크의 기본 파티션을 CPU에 알려주는 것입니다.
  5. 하드 디스크 파티션 테이블을 스캔하고 하드 디스크 활성 영역을 로드합니다 . MBR에는 하드 디스크 파티션 테이블이 포함되어 있으며, 하드 디스크 파티션 테이블에서 활성 파티션과 비활성 파티션은 특정 식별자로 구분됩니다. 마스터 부트 레코드는 하드 디스크 파티션 테이블을 스캔하고 운영 체제가 포함된 하드 디스크 파티션(활성 파티션)을 찾은 다음 활성 파티션 로드를 시작하고 제어권을 활성 파티션에 넘깁니다.
  6. 파티션 부트 레코드 PBR을 로드합니다 . PBR(파티션 부트 레코드)이라고 하는 활성 파티션의 첫 번째 섹터를 읽습니다. 그 기능은 파티션의 루트 디렉터리에서 운영 체제를 부팅하는 데 사용되는 프로그램(부팅 관리자)을 찾아서 활성화하는 것입니다.
  7. 부팅 관리자를 로드하고 , 활성 파티션의 부팅 관리자에 대한 파티션 부팅 레코드를 검색하고, 부팅 관리자를 로드합니다.
  8. 운영 체제를 로드합니다 .

여기에 이미지 설명을 삽입하세요.

위 그림의 실행 프로세스는 다음 단계로 요약될 수 있습니다.

1. CPU는 특정 주 메모리 주소에서 명령어 가져오기를 시작하고 ROM에 있는 부팅 프로그램을 실행합니다. (먼저 하드웨어 자체 테스트를 수행한 다음 컴퓨터를 켭니다.)

2. 디스크의 첫 번째 섹터에 있는 MBR을 메모리로 읽어들인 후 디스크 스캔 프로그램을 실행하고 디스크 파티션 테이블을 스캔합니다.

3. 활성 파티션(주 파티션, 즉 운영 체제가 설치된 파티션이라고도 함)에서 파티션 부트 레코드를 읽고 그 안에 있는 프로그램을 실행합니다.

4. 루트 디렉터리에서 전체 운영 체제 초기화 프로그램(시작 관리자)을 찾아 운영 체제를 로드하고 부팅을 완료합니다.

1.8 가상 머신

1.8.1 개요

가상머신(virtual machine)은 가상화 기술을 이용해 특정 컴퓨팅 플랫폼의 실제 물리적 특성을 숨겨 사용자에게 추상화되고 통합되고 시뮬레이션된 컴퓨팅 환경을 제공 하는 논리적 컴퓨터를 말한다 .

현재 가상 머신에는 두 가지 가상화 방법이 있는데, 이는 첫 번째 유형 가상 머신두 번째 유형 가상 머신 으로 나눌 수 있습니다 .

1.8.2 첫 번째 유형의 가상 머신

첫 번째 유형의 가상 머신은 운영 체제와 유사하며 컴퓨터 시스템에서 가장 높은 권한 수준에서 실행되는 유일한 프로그램입니다. 베어메탈에서 실행되며 다중 프로그래밍 기능을 갖추고 있습니다.

가상 머신은 사용자 모드에서 프로세스로 실행되며 민감한 명령 실행이 허용되지 않지만, 가상 머신의 운영 체제는 자신이 커널 모드에 있다고 생각하는데, 이를 가상 커널 모드라고 합니다. 가상 머신 운영 체제가 권한 있는 명령어를 실행할 때 하이퍼바이저를 트랩합니다. 가상화를 지원하는 CPU에서 하이퍼바이저는 이 명령어를 확인합니다. 명령어가 가상 머신의 운영 체제에 의해 실행되면 이 명령어가 다음과 같이 배열됩니다. 정상적으로 실행되지 않으면 사용자 모드에서 권한 있는 명령을 실행하는 실제 하드웨어의 동작을 시뮬레이션합니다.

개략도는 다음과 같습니다

여기에 이미지 설명을 삽입하세요.

1.8.3 두 번째 유형의 가상 머신

두 번째 유형의 가상 머신은 일반 프로세스와 동일하며 Windows 및 Linux와 같은 운영 체제에서 제공하는 리소스에 의존합니다.

예를 들어 Windows 운영 체제에 VMware를 설치한 다음 VMware에 Linux 운영 체제의 이미지를 설치할 수 있습니다. 이러한 방식으로 Windows 시스템에서 Linux 시스템을 사용하고 Windows 시스템에서 다른 프로세스를 실행할 수 있습니다. 같은 시간.

개략도는 다음과 같습니다

여기에 이미지 설명을 삽입하세요.

섹션 요약

여기에 이미지 설명을 삽입하세요.

참고자료

《2023年操作系统考研复习指导》-王道论坛

이 글이 도움이 되셨다면 좋아요, 전달, 저장 부탁드립니다~

추천

출처blog.csdn.net/weixin_42584100/article/details/126090180