CS/운영체제
0530 - 컴퓨터 시스템의 구조
지나가는 마을사람
2023. 5. 30. 22:00
1. 컴퓨터 시스템의 구조
- 내부장치
- CPU
- 메모리
- 외부장치
- 입출력(I/O) 장치
- 키보드
- 모니터
- 프린트 …
- 입출력(I/O) 장치
- CPU에도 레지스터라는 저장장치 존재함.
- 다만, 용량이 매우 작아서, 필요한 정보는 메모리에서 저장하고 읽어온다.
2. CPU와 입출력
- 컴퓨터 연산은 CPU가 처리한다.
- 그러나, I/O 장치의 연산을 CPU가 처리하지는 않음, I/O 장치 각각의 컨트롤러가 처리한다.
- 입출력 연산은 각각의 컨트롤러가 일단 처리하고, 이 것을 CPU에게 알려준다. (인터럽트)
- CPU는 메모리에서 명령어를 읽어올 때마다 명령어를 실행하기 전에 인터럽트가 발생했는지 체크하고 발생했다면 인터럽트 부터 처리해준 후 명령어를 실행한다.
버퍼
- 데이터 전달의 효울성 때문에 사용한다.
- 기본적으로 입출력은 시간이 많이 걸리는 작업이다. CPU는 이걸 기다리는 동안 할 수 있는일이 엄청나게 많을 것임! 그만큼, 시간 낭비라고 볼 수 있음!
- 그래서, 버퍼에 데이터에 일정량 차야 해당 작업들을 실행하는 것!
인터럽트
- 바로 밑에서 설명함!
3. 인터럽트
- CPU가 프로그램을 실행하고 있을 때, 예외상황이 발생하여 처리가 필요한 경우 CPU에게 알려서 처리할 수 있도록 하는 것.
- 왜 인터럽트를 써야 할까?
- CPU가 특정 기능을 수행하는 도중에 급하게 다른 일을 처리하고자 할 때
- I/O연산 처리, 어떤 프로그램이 CPU를 너무 오래 사용하고 있다거나, 오류 발생…..
- CPU가 특정 기능을 수행하는 도중에 급하게 다른 일을 처리하고자 할 때
- 인터럽트의 종류 (어디에서 발생시키느냐가 초점임)
- 하드웨어 인터럽트
- 하드웨어(I/O 장치) 컨트롤러가 CPU의 서비스를 받기 위해 발생시킨 인터럽트
- 외부 인터럽트
- 소프트웨어 인터럽트
- CPU 내부에서 발생한 인터럽트
- 프로그램에서 예외 발생
- 프로그램에 허용되지 않은 연산을 하려고 하면 발생( 0으로 나누기, 프로그램에 허용되지 않은 메모리 영역 참조 등등…)
- 특별한 상황 발생 (시스템 콜 …)
- 사용자 프로그램이 운영체제의 서비스를 요청할 때, 사용자 프로그램은 직접 특권 명령을 실행할 수 없으므로 운영체제의 커널 호출함!
- 하드웨어 인터럽트
- 인터럽트 처리 과정

- 인터럽트 처리 루틴
- 인터럽트 벡터
- 여러가지 인터럽트에 대해 해당 인스턴스가 발생했을 때, 실행해야 할 **서비스 루틴의 주소 테이블**
- 인터럽트 서비스 루틴 ( 인터럽트 핸들러 )
- 실제 인터럽트를 처리하기 위한 절차( 기계어 코드 ), 운영체제마다 이미 프로그래밍 되어 있는 부분이다.
- 예시로 설명
- 불남 : 인터럽트 발생
- 불남에 따른 대비 동작 (도망가! 불이야!) : 인터럽트 서비스 루틴
- 불이난 상황을 저장한 주소 : 인터럽트 벡터 테이블