#.컴퓨터 시스템 구조
-컴퓨터: 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) : 인터럽트를 처리하는 커널 함수 운영 체제의 코드 영역에 각 인터럽트마다 처리해야 하는 내용이 있음 = 인터럽트 핸들러
– 브레이크 벡터 : 인터럽트 서비스 루틴의 위치와 해당 인터럽트의 처리 루틴 주소를 가지고 있습니다.
인터럽트 프로세스
- 프로세스 A가 실행 중입니다.
- 프로세스 A는 시스템 호출(예: 키보드 입력)에서 인터럽트를 생성합니다.
- 현재 실행중인 프로세스 정보(context) 저장 (PCB에 저장)
- 인터럽트 벡터에서 적절한 ISR을 찾습니다.
- 키보드 처리를 위한 ISR 주소 변경
- 키보드 인터럽트 처리
- 인터럽트는 ISR의 끝에서 IRET(인터럽트 반환) 명령에 의해 활성화됩니다.
- IRET 명령이 실행되면 제거된 PC(프로그램 카운터)의 값이 이전 실행 지점으로 복원됩니다.
#. 시스템 호출
– 운영 체제에서 서비스를 얻기 위해 사용자 에이전트가 만든 요청입니다. 다시 말해서. 사용자 프로그램 운영 체제의 커널 기능 호출만들다
– 운영 체제는 커널 모드와 사용자 모드로 구분됩니다.
– 커널 모드는 운영 체제의 많은 부분에서 사용됩니다. 나. 파일을 읽고 쓸 때, 프로그램 실행 시 화면에 메시지를 표시할 때.
– 시스템 호출은 커널 모드의 이 영역을 사용자 모드로 노출합니다. 즉, 프로세스가 필요한 기능에 직접 액세스하고 사용할 수 있습니다.
? – 시스템콜은 왜 필요한가?
– 우리가 주로 사용하는 프로그램은 응용 프로그램입니다.
– 사용자 수준 프로그램은 사용자 수준 함수만으로는 많은 기능을 구현하기 어렵기 때문에 커널의 도움을 받아야 하며, 이 작업은 응용 프로그램으로 대표되는 사용자 프로세스에서 사용자 모드로 수행할 수 없습니다.
– 커널 관련 사항은 반드시 커널 모드로 전환하여 해당 작업을 수행하시기 바랍니다. *권한커널 모드를 통한 이러한 작업은 시스템 호출을 통해 수행되도록 설계되었습니다.
*왜 허가증이 필요한가요?
– 해커가 피해를 입힐 수 있도록 악의적인 시스템 호출 사용저는 미숙한 사용자입니다 하드웨어 명령어를 모르고 함수를 호출하는 경우전체 시스템 깨질 수 있기 때문에
-그런 명령문은 커널 모드에서만 실행되도록 특별히 설계되었습니다.그리고 언제 사용자 모드에서 시스템 호출을 호출할 때운영 체제에서 불법접근으로 간주하여 트랩 생성두고
– 시스템 콜의 예
– CP in.txt out.txt
– Windows 운영 체제에서는 마우스가 사용자로부터 입력을 받고 Linux에서는 키보드가 사용자로부터 입력을 받습니다. I/O 시스템 호출사용
– 위의 문장을 입력하고 ‘보다‘ 프로그램을 실행하면 가장 먼저 ‘in.txt‘ 현재 디렉터리에서 파일에 액세스할 수 있는지 확인 시스템 호출경제적 지원
– 존재하지 않으면 오류가 발생하고 프로그램이 종료됩니다. 시스템 호출사용
-‘ 복사된 파일이 있으면 저장합니다.from.txt‘ 파일명이 존재하는지 확인
– 또한 이 파일 이름이 존재하는지 확인하기 위해 시스템 호출확인
파일 이름이 이미 존재하는 경우 사용자에게 덮어쓸 것인지 계속 추가할 것인지를 물어볼 수 있습니다. 저장하려는 파일 이름이 겹치지 않으면 파일을 저장해야 합니다. 시스템 호출사용.