프로세스 및 이야기 (1)의 절정 스레드 : 내가 운영 체제 (V)를 작성하는 방법을 학습했다

머리말

왜이 제목을 선택 했습니까? 첫째, 운영 체제와 프로세스와 스레드 코어의 가장 중요한 부분입니다. 둘째, 아이스 캔디의 아이스 캔디가 당겨 먹습니까 함께 제목과 거의 향하고 단어 전에 긁어 강제로 아무 단어.

이전 장에서 기록 된 프로 시저 호출 시스템은 약간의 에피소드,이 부분이 가능해야한다 상관없이 고려했다.

이제이 시리즈는 이미 떨어져 표류하기 전에 제목, 원래 장난감 형 운영 체제 쓰기 전에 싶었 FragileOS에게 메인 라인을하지만, 조금 변경된 방향으로 비트를 읽기 학습의 과정에서, 특히 운영을 걱정하지 않습니다 내부 프로세스 및 시스템 링크의 전체 구현은 더 많은 운영 체제의 다양한 모듈을 배우는 것입니다, 다음 몇 가지 코드로 보충하지만, 어쨌든, 운영 체제의 학습 과정에서 자신의 기록입니다

받는 받기

방법

이 과정은 주된 이유는 대부분의 CPU 사용률을 향상시키고 자하는 것입니다 나타납니다

정의 된 프로세스

  • 프로그램은 실행중인
  • 컴퓨터 프로그램은 인스턴스에서 실행되는
  • 그것은 프로세서에 의해 실행되는 실제 프로세서에 할당 될 수있다
  • 명령들의 세트 및 연관된 시스템 자원의 현재의 설정 상태를 실행

멀티 프로세스 조직

동시에 실행 싱글 코어 CPU는 하나의 명령은, 소위 멀티 - 프로세스는 앞뒤로 환상을 전환하는 명령을하지만, 속도가 너무 빠르고 때문 동시에 볼 수 있습니다. 필요에 전환하는 과정에서 그래서하는 전환 과정을 구성하는

프로세스 제어 블록 (프로세스 제어 블록)

스위칭 제어 처리 (프로세스 제어 블록)은, 각각의 프로세스는 속성의 세트뿐만 아니라 프로세스를 제어하기위한 운영 체제의 개수와 관련된 중요한 프로세스 제어 블록 데이터 구조

프로그램 (데이터 포함) 멀티 프로그래밍 환경에서 수행되는 분리가되지 않도록 처리 블록 제어 동작은, 기본 단위는 독립적으로, 프로세스는 다른 프로세스와 동시에 수행 될 수 있고, 조작 될 수있다. 또는, 운영 체제는 PCB에 따라 수행되는 복잡한 과정을 제어하고 관리하는 것입니다.

일반적으로, PCB는 다음을 포함합니다

  • 프로세스 식별자 (내부, 외부)
  • 정보 처리 장치 (범용 레지스터, 인스트럭션 카운터는 PSW, 사용자 스택 포인터).
  • 프로세스 스케줄링 정보 (상태 우선 순위 프로세스, 프로세스, 기타 정보에 필요한 프로세스 스케줄링, 이벤트)
  • 공정 제어 정보 (주소, 프로그램 자원 인벤토리 데이터, 프로세스 동기화 및 통신 메커니즘, 링크 포인터)

다섯 개 상태 모델 과정

예약 과정

일반적으로, 사건의 이러한 유형을 만들 수있는 과정은 스위치를 발생 :

그러나 PC의 발전과 함께,이 상황은 두 가지 방식으로 변경되었습니다. 첫째, 시간에 하나의 활성 프로세스의 대부분. 당신은 또한 가능성을 허용하는 동안, 파일을 편집 Word를 사용할 때 결국, 일반적으로, 시스템은 백그라운드에서 프로그램을 컴파일합니다. 이런 상황에서, 사실 스케줄러 프로세스 --Word 최종 실행 거의 유일한 선택입니다 결정하기 위해 많은 작업을 수행 할 필요가 없습니다. 둘째, 컴퓨터 빠른 속도의 CPU 수도 더 이상 너무 부족도록. 많은 PC 프로그램 내용의 주요 제한은 사용자 입력 할 수있다 비례보다는 비례 CPU가 처리 할 수 ​​있다는 것이다. 두 프로그램은 실제로 예를 들어, 첫 번째 줄 예정 실행에서 동시에 Word 및 Excel, 사용자가 동시에 두 프로그램의 출력을 기다리는 수 있기 때문에, 전혀 해를 끼치 첫 번째 예약하지 실행되는 동시에,에서도 해당하는 경우에도 마찬가지입니다.

그러나 네트워크 서버의 경우,이 상황은 다른 문제이다. 매우 많은 프로그램 CPU 자원 경쟁, 따라서, 스케줄링은 매우 중요 해지고있다. 예를 들어, 스케줄러는 프로세스를 실행 매일 통계를하자 또는 사용자 요청에 대한 프로세스 실행 응답을 수 있도록 결국 결정하는 것입니다 필요가있다.

실행 계정으로 시스템의 성능을 수행해야 할 과정을 선택할 때뿐만 아니라 스케줄러는 고려. 결국, 공정 상태를 전환함으로써, 보존 처리의 상태 등 회복 동작 커널 사용자 모드로 전환 포함 많은 오버 헤드가있다.

참조 링크

동기화 및 협업 프로세스

메모리 관리

앞뒤로 이러한 읽기 및 쓰기 프로세스 메모리와 같은 다른 프로세스의 작동에 영향을주지 않습니다 현재 프로세스의 작동을 보장하는 방법의 과정에서 전환, 그렇지 범위에서 보장하는 것이 필요하다

그래서 우리는 프로세스 격리 사이의 열린 공간을 해결하는 메커니즘이 필요

동기화 과정

상호 구속 관계의 다른 프로세스들 사이 다른이 있습니다. 상호 억제, 자원 공유 및 프로세스 조정의 과정 사이의 관계를 조정하는 프로세스 사이의 충돌을 방지하기 위해, 우리는 프로세스 동기화의 개념이 필요합니다.

우리는 프로세스가 중요한 자원이 될 수있는 자원을 사용할 수 있도록, 여러 프로세스가 시스템에 다양한 리소스를 공유 할 수 있지만 많은 리소스는 프로세스로 사용할 수 있습니다.
중요 자원에 대한 접근은 상호 배타적이어야합니다. 각 프로세스는 중요한 리소스에 대한 액세스는 코드가 중요한 영역이된다.
중요 자원의 적절한 사용을 보장하기 위해, 중요한 리소스에 액세스 할 수있는 과정은 네 개의 섹션으로 나누어 져 있습니다.

  • 지역으로. 중요한 자원을 사용하여 중요한 지역을 입력하기 위해, 중요한 영역으로 진입의 가능성을 확인하기 위해 이동합니다.
  • 중요 섹션. 그 코드의 과정에서 중요 자원에 액세스 할 수 있습니다.
  • 출구 영역입니다. 징후가 삭제 중요한 영역에 액세스하는.
  • 나머지 영역입니다. 코드의 나머지 부분.

다음과 같은 일반적인 구현 프로세스를 동기화하는 방법은 여러 가지가 있습니다 :

  • 제공 언급 하드웨어
  • 신호기
  • 튜브

프로세스는 자원 할당의 최소 단위이고, 스레드가 CPU 스케쥴링의 최소 단위 인

전환의 과정에서 또한 메모리 리소스로 전환해야합니다,하지만 스레드는 리소스로 전환 할 필요가 없습니다, 그래서 프로그램의 도입은 운영 시스템의 성능을 향상시키기 위해, 동시 실행을 위해 동시를 지불하는 오버 헤드 시간과 공간을 줄이는 것입니다.

사용자 수준 스레드와 커널 수준 스레드

사용자 수준 스레드는 스레드가 사용자 프로그램, 무지 커널 스레드 패키지에 구현 된 커널 지원을 필요로하지 않는 것을 의미한다. 보기의 커널 관점에서, 그는 단일 스레드 프로세스를 관리 할 수있는 일반적인 방법이지만, 멀티 코어 CPU를보다 효율적으로 사용하는 등의 커널 수준 스레드처럼 될 수 없습니다.

커널 수준 스레드 생성과 파괴를 완료 할 수있는 시스템 호출을 통해 운영 체제의 책임입니다. 커널, 중 실 사용자 프로세스 또는 시스템 프로세스 스레드의 지원으로 실행, 그들은 작성, 커널 구현에 의존 전환, 파괴한다.

  • 사용자 수준 스레드가 I / O 차단을 수행 할 때, 때문에 운영 체제 수준에서 모든 스레드가 차단됩니다 이어질 것입니다, 어떤 커널 수준 스레드가없는 경우, 그들은 모두가 프로세스를 사용 속해, 상상이 직접 것 전환 과정, 다른 쓰레드의 구현의 부족

  • 멀티 프로세서 시스템에서, 커널 레벨 스레드 정말로 동일한 프로세스 내에서 다수의 스레드를 실행할 수있는 병렬을 실현할 수있다

개요

이 타임 코드는 뒷면에 깊이있는 모습을 다시 구현 될 것입니다,이 책의 몇 가지 간단한 요약에 대한 주요 개념, 더 건조 제품이없는 것입니다. 다음은 위의 과정에서 Linux0.12을 달성하기 위해 갈 수 있습니다.

추천

출처www.cnblogs.com/secoding/p/11417547.html