EverGiver
컴퓨터 동작 본문
728x90
컴퓨터 시스템의 동작
- Instruction and data
- 입력장치를 통해 컴퓨터에 유입되는 정보이다.
- Instruction은 processor가 실행할 산술/논리 연산의 동작을 명시하는 명령어이며, 어떤 작업을 수행하는 instruction 집합이 program이다.
- High-level program은 컴파일러 등을 이용하여 0과 1로 구성된 binary instruction으로 변환해야 컴퓨터가 실행 가능하다. - 컴퓨터 시스템의 작업 처리 순서
1. 명령어를 메모리에서 읽어온다.
2. 레지스터/메모리에 저장한 정보를 명령어 제어에 따라 읽어 연산장치에서 처리
3. 처리한 정보를 레지스터/메모리에 저장
- 입력장치로 받은 정보는 메모리에 저장
- 메모리의 데이터는 필요시 출력장치에 표시하거나 저장장치에 저장
명령어의 구조
- OPcode (OPeration code)
- 프로세서가 실행할 동작인 연산 지정
- 산술 연산(+, -, *, /), 논리 연산(AND, OR, NOT), shift, 보수 등 연산 정의
- 연산 부호가 n비트이면 최대 2^n개 연산이 가능 - Operand (피연산자)
- 연산할 데이터 정보 저장
- 데이터는 레지스터나 메모리, virtual memory, 입출력 장치 등에 위치할 수 있는데 보통 자체보다는 데이터의 위치(주소)를 저장
- 메인 메모리에 저장된 명령어 예
- 직접 주소와 간접 주소
- Operand의 위치를 명시하는 방법 (직접 주소 또는 간접 주소)을 나타내는 mode bit I를 추가하거나, 다음 명령어의 위치를 나타내는 주소를 추가 가능하다.
- Direct address
▷ Operand에 데이터가 있는 레지스터나 메모리 주소 지정
- Indirect address
▷ 레지스터나 메모리 주소 정보 지정
- 직접 주소와 간접 주소 사용 예
- 모드가 1비트, 연산 부호가 3비트, operand가 6비트인 명령어
명령어의 실행 과정
- 명령어의 실행 과정
1. Instruction fetch
2. 명령어 해석, 프로그램 카운터 변경
3. Operand fetch
4. 명령어 실행
5. 결과 저장
6. 다음 명령어로 이동
- 명령어의 실행 사이클
주변장치와의 통신
- Polling
- CPU가 입출력 장치의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 데이터를 처리
- CPU가 명령어 해석과 실행이라는 본래 역할 외에 모든 입출력까지 관여해야 하므로 작업 효율이 떨어진다. - Interrupt
- Peripheral이 CPU의 개입이 필요하면 직접 알려주는 방식
- CPU는 Interrupt 요청(IRQ)이 있으면 peripheral에 접근하여 필요한 작업을 처리한다.
- CPU는 IRQ를 기다리는 동안 다른 작업을 할 수 있다.
- IRQ가 들어오면 하던 일을 중단하고 IRQ 작업을 수행하므로 작업 전환(context switching)에 시간이 소요된다.
- Peripheral 은 스스로 데이터를 processor나 memory에 전달하는 기능이 없다.
▷ Processor가 시킨 작업이나 외부 입력에 의한 결과 저리는 processor가 해야 한다.
- 예상치 못한 사용자 입력/입줄력 작업 완료와 같은 상황을 시스템이 적절히 처리하는 데 필요하다
▷ Interrupt를 통해 processor에게 상태를 알림
▷ Interrupt는 IRQ (Interrupt ReQuest) 신호선을 통해 이루어진다.
▷ 예를 들어, 키보드에서 입력이 발생했을 때만 프로세서에 통보하여 처리하므로, 프로세서가 이벤트 발생 여부를 일일이 감시하지 않아도 된다.
▷ 프로세서가 외부 장지의 상태를 직접 점검할 필요가 없어 이 시간 동안 다른 연산을 수행하여 프로세서의 효율을 높일 수 있다.
▷ 갑작스러운 정전 , 컴퓨터 시스템에서 긴급 요정 등의 상황에서도 사용한다.
- IRQ 신호에 따라 인터럽트 처리 프로그램 (IRQ handler, Interrupt service routine) 수행한다.
▷ 현재 실행 중인 프로그램을 중단하고 IRQ handler의 실행을 요구한다.
- 외부 장지의 동작과 자신의 동작을 조정하는 수단으로 사용한다.
- 단일 프로세서의 컴퓨터는 명령어를 한 번에 한 개만 수행할 수 있지만, 인터럽트를 이용하면 중간에 다른 프로그램이나 명령어를 수행할 수 있다. (Pre-emptive operation)
▷ 시스템의 저리 효율을 향상하며, 프로그램이 실행 순서를 바꿔 가면서 처리하여 다중 프로그래밍에 사용한다.
- 잘못된 명령어 수행이나 시스템 함수 호출 등에도 이용한다. (exception)
- 프로그램의 정상 실행을 일시 중단했다 다시 재개하는 과정이지만, 사용자가 별도로 인터럽트 조치를 할 필요가 없고 프로세서와 운영체제가 처리
- 단일 회선과 다중 회선으로 연결
▷ 단일 회선 : 인터럽트 요청이 가능한 모든 장치를 공통의 단일 회선으로 프로세서에 연결하는 방법. 회선 하나에 장치를 여러 개 연결하여 인터럽트를 요청한 장치를 판별하는 기능이 필요하다.
▷ 다중 회선 : 모든 장치를 서로 다른 고유의 회선으로 프로세서와 연결하는 방법이다. 인터럽트를 요청한 장치를 바로 판별할 수 있다.
- Interrupt and exception
▷ 공통점: 현재의 프로그램 수행을 중지하고 정해진 handler를 실행
▷ Interrupt: 대부분의 장치는 이벤트 발생 시 프로세서에 interrupt 신호를 보냄 (asynchronous)
▷ Exception(예외) : 오류에 대한 반응으로 발생한다. Memory/instruction error, operation error (div/0), System
call.
- 인터럽트 처리 과정
- Memory Mapped I/O (MMIO)
- 메모리의 일정 공간을 입출력에 할당하는 기법
- Concurrent processing (multiple programming)
- Single core : Time sharing
- Multiple core : parallel processing
728x90
'전공 > 운영체제' 카테고리의 다른 글
Process States (0) | 2022.03.21 |
---|---|
Process Concept (0) | 2022.03.21 |
컴퓨터 시스템 소개 (0) | 2022.03.12 |
운영체제의 유형 (0) | 2022.03.12 |
운영체제 발전 과정 (0) | 2022.03.06 |
Comments