시스템 구조 및 프로그램의 실행

#.컴퓨터 시스템 구조


-컴퓨터: CPU + 메모리(cPU 작업 공간)

> CPU : 메모리에 있는 명령어를 이용하여 인터럽트 라인을 확인하는 과정을 반복

>> 컴퓨터 켜짐: OS가

>> 등록하다 : 정보를 저장하는 공간

>> 모드 비트 : CPU에서 사용하는 운영체제와 사용자 프로그램의 구분

>> 줄을 끊다 : CPU에게 하던 일을 멈추고 다른 일을 하라고 지시하는 신호

명령어 완료 후 인터럽트가 감지되면 CPU는 자동으로 사용자 프로그램에서 운영 체제로 전환합니다.

>> I/O 장치: 하드디스크, 키보드 모니터 등

I/O 장치별 장치 컨트롤러(소형 CPU + 로컬 버퍼)

#.모드 비트

– 사용자 프로그램의 오실행으로 인한 다른 프로그램 및 운영체제의 손상을 방지하기 위한 보호장치

– 모드 비트를 통해 하드웨어에서 2가지 모드 동작 지원

> 커널 모드(모니터 모드, 시스템 모드) : OS 코드 실행

>> 운영 체제에 CPU가 있는 경우

>> 모드 비트는 0 로 설정되고 모든 명령을 실행할 수 있습니다.

> 사용자 모드 : 사용자 프로그램 실행

>> 사용자 프로그램에 CPU가 있는 경우

>> 모드 비트는 1 로 설정되며 제한된 명령을 실행할 수 있습니다.

> 보안을 손상시킬 수 있는 중요한 명령은 감사 모드에서만 실행할 수 있습니다.권한 명령로써 정의 된 “

> 인터럽트 또는 예외가 발생하면 하드웨어는 모드 비트를 0으로 변경합니다.

> CPU가 사용자 프로그램으로 전송되기 전에 모드 비트 1을 설정하십시오.


#.시간제 노동자

– 특정 프로그램이 CPU를 독점하는 것을 방지하기 위해

> 지정된 시간이 지나면 인터럽트가 발생하여 운영 체제로 제어권이 넘어갑니다.

> 각 막대에서 1씩 감소

> 값이 0인 경우 타이머 중단 세대

– 종종 CPU의 시분할을 구현하는 데 사용됨

– 현재 시간을 계산할 때 사용

!! 쉬운 청소

컴퓨터가 켜져 있을 때: 운영 체제에 CPU가 있습니다.

사용자 프로그램이 실행되면 타이머에 특정 값이 설정된 후 CPU가 커밋됩니다.

사용자 프로그램 A가 실행 중입니다.

  • I/O 장치를 사용해야 할 때 사용자 프로그램은 CPU를 운영 체제로 넘기기 위해 인터럽트를 보냅니다.
    • 운영 체제는 장치 컨트롤러에 작업을 수행하도록 명령합니다.
    • 디바이스 컨트롤러가 요청한 작업이 완료될 때까지 CPU는 다른 프로그램 B에게 넘겨집니다.
    • CPU는 언제 다시 받을 수 있나요?
      • 요청된 장치 제어 작업이 완료되면 인터럽트가 전송됩니다.
        • 인터럽트가 수신되면 다른 프로그램이 실행 중이더라도 CPU 제어가 운영 체제로 넘어갑니까?
      • 타이머가 프로그램 B에 남아 있는 동안(스케줄링 유형에 따라 다름) 프로그램 A를 실행한 후 실행합니다.
  • 타이머 시간 내에 실행되면
    • CPU는 다음 명령을 실행합니다.
  • 타이머가 시간 내에 실행되지 않으면
    • 인터럽트는 타이머에 의해 CPU로 전송됩니다.
    • CPU는 실행된 명령이 완료된 후 인터럽트 라인을 확인하고 인터럽트가 승인되면 CPU는 자동으로 OS로 전환합니다.
    • 타이머를 다음 프로그램으로 설정하고 CPU를 통과

#.장치 컨트롤러


– 디바이스 컨트롤러는 I/O 디바이스 전용의 소형 CPU로서 제어 정보를 위한 컨트롤러 레지스터와 상태 레지스터를 가지고 있다.

장치에 입력 및 출력할 실제 데이터를 저장하는 로컬 버퍼입니다.가지다

주 메모리는 CPU에만 액세스할 수 있으며 I/O 장치에 직접 액세스할 수 없습니다. CPU가 아닌 장치 컨트롤러가 각 장치를 제어합니다.

! – I/O 장치가 너무 자주 인터럽트를 발생시키면 빠른 장치인 CPU가 제대로 작동하지 않습니다. 이를 해결하기 위해 *DMA 컨트롤러를 사용한다.

장치 컨트롤러모든 장치를 제어하는 ​​일종의 소형 CPU입니다. 하드웨어

장치 드라이버OS 코드에 따라 모든 장치를 처리하기 위해 액세스할 수 있는 인터페이스를 제공합니다. 소프트웨어

#.입출력 및 인터럽트

– 사용자 프로그램은 CPU를 사용 I/O 완료그렇지 않으면 I/O 장치에 직접 액세스할 수 없으며 운영 체제를 통해 액세스해야 합니다. 그런 다음 사용자 프로그램이 자발적으로 운영 체제에 입/출력 수행 CPU를 넘깁니다. => *시스템 콜

-인터럽트란?

> 프로그램 실행 중 예상치 못한 상황(I/O 등)이 발생하면 현재 실행 중인 작업을 중지하고 해당 상황을 먼저 처리해야 함을 CPU에 알림

> I/O 작업은 CPU 명령 속도보다 훨씬 느리기 때문에 주변 장치 및 I/O 장치는 인터럽트 메커니즘을 통해 관리됩니다.

> 인터럽트는 두 가지 유형으로 나뉩니다.

>> 하드웨어 생성 인터럽트

>> 소프트웨어 생성 인터럽트(트랩)

>>> 예외: 프로그램이 실수한 경우

>>> 시스템 호출: 프로그램이 커널 함수를 호출할 때

인터럽트 서비스 루틴(ISR) : 인터럽트를 처리하는 커널 함수 운영 체제의 코드 영역에 각 인터럽트마다 처리해야 하는 내용이 있음 = 인터럽트 핸들러

브레이크 벡터 : 인터럽트 서비스 루틴의 위치와 해당 인터럽트의 처리 루틴 주소를 가지고 있습니다.

인터럽트 프로세스

  1. 프로세스 A가 실행 중입니다.
  2. 프로세스 A는 시스템 호출(예: 키보드 입력)에서 인터럽트를 생성합니다.
  3. 현재 실행중인 프로세스 정보(context) 저장 (PCB에 저장)
  4. 인터럽트 벡터에서 적절한 ISR을 찾습니다.
  5. 키보드 처리를 위한 ISR 주소 변경
  6. 키보드 인터럽트 처리
  7. 인터럽트는 ISR의 끝에서 IRET(인터럽트 반환) 명령에 의해 활성화됩니다.
  8. IRET 명령이 실행되면 제거된 PC(프로그램 카운터)의 값이 이전 실행 지점으로 복원됩니다.

#. 시스템 호출

– 운영 체제에서 서비스를 얻기 위해 사용자 에이전트가 만든 요청입니다. 다시 말해서. 사용자 프로그램 운영 체제의 커널 기능 호출만들다

– 운영 체제는 커널 모드와 사용자 모드로 구분됩니다.

– 커널 모드는 운영 체제의 많은 부분에서 사용됩니다. 나. 파일을 읽고 쓸 때, 프로그램 실행 시 화면에 메시지를 표시할 때.

– 시스템 호출은 커널 모드의 이 영역을 사용자 모드로 노출합니다. 즉, 프로세스가 필요한 기능에 직접 액세스하고 사용할 수 있습니다.

? – 시스템콜은 왜 필요한가?

– 우리가 주로 사용하는 프로그램은 응용 프로그램입니다.

– 사용자 수준 프로그램은 사용자 수준 함수만으로는 많은 기능을 구현하기 어렵기 때문에 커널의 도움을 받아야 하며, 이 작업은 응용 프로그램으로 대표되는 사용자 프로세스에서 사용자 모드로 수행할 수 없습니다.

– 커널 관련 사항은 반드시 커널 모드로 전환하여 해당 작업을 수행하시기 바랍니다. *권한커널 모드를 통한 이러한 작업은 시스템 호출을 통해 수행되도록 설계되었습니다.

*왜 허가증이 필요한가요?

– 해커가 피해를 입힐 수 있도록 악의적인 시스템 호출 사용저는 미숙한 사용자입니다 하드웨어 명령어를 모르고 함수를 호출하는 경우전체 시스템 깨질 수 있기 때문에

-그런 명령문은 커널 모드에서만 실행되도록 특별히 설계되었습니다.그리고 언제 사용자 모드에서 시스템 호출을 호출할 때운영 체제에서 불법접근으로 간주하여 트랩 생성두고

– 시스템 콜의 예

– CP in.txt out.txt

– Windows 운영 체제에서는 마우스가 사용자로부터 입력을 받고 Linux에서는 키보드가 사용자로부터 입력을 받습니다. I/O 시스템 호출사용

– 위의 문장을 입력하고 ‘보다‘ 프로그램을 실행하면 가장 먼저 ‘in.txt‘ 현재 디렉터리에서 파일에 액세스할 수 있는지 확인 시스템 호출경제적 지원

– 존재하지 않으면 오류가 발생하고 프로그램이 종료됩니다. 시스템 호출사용

-‘ 복사된 파일이 있으면 저장합니다.from.txt‘ 파일명이 존재하는지 확인

– 또한 이 파일 이름이 존재하는지 확인하기 위해 시스템 호출확인

파일 이름이 이미 존재하는 경우 사용자에게 덮어쓸 것인지 계속 추가할 것인지를 물어볼 수 있습니다. 저장하려는 파일 이름이 겹치지 않으면 파일을 저장해야 합니다. 시스템 호출사용.