2. 컴퓨터 시스템 구조
• Timer
• 정해진 시간이 흐른 뒤 OS에게 제어권을 넘기도록 Interrupt를 발생시킨다.
• CPU를 특정 프로그램이 독점하지 못하도록 한다.
• Time Shareing을 위해 구현됨
• Modebit
• 1: 사용자 모드 : 제한된 기능만 수행 가능
• 0: 커널 모드 : 메모리 접근 및 I/O 접근 가능,
이러한 커널 명령은 특권명령으로 규정됨
• DMA Controller (Direct Memory Access Controller)
• 빠른 입출력 장치를 메모리에 가까운 처리 속도로 이용하기 위해 사용한다.
• CPU의 중재없이 디바이스 컨트롤러가 해당 장치의 Buffer Storage의 내용을 메모리에 block 단위로
전송한다.
• Byte가 아니라 블록 단위로 인터럽트 발생시킴
3. I/O
• I/O Controller
• 해당 장치 유형을 관리하는 일종의 작은 CPU
• 제어 정보를 위한 Controll register, Status Register를 가짐
• Load buffer를 가짐
• I/O가 끝날 경우 Interrupt로 CPU에 알림
• I/O 수행
• 모든 I/O명은 특권 명령임
• App이 I/O를 수행하는 방법
1. System Call
2. Trap을 통해 인터업트 백터의 특정 위치로 이동
3. 제어권을 인터럽트 서비스 루틴으로 이동
4. 올바른 i/o인지 확인
5. 제어권을 System Call 다음명령으로 옮김
• 인터럽트 벡터 : 해당 인터럽트의 처리루틴 주소를 가지고 있음
• 인터럽트 처리 루틴 (인터럽트 핸들러) : 해당 인터럽트를 처리하는 커널 함수
4. 디스크 I/O 하는 순서
1. 사용자 프로그램이 Read함수를 호출
2. Trap 발생
3. 인터럽트 벡터의 특정위치로 이동
4. Interrupt Line 생성
5. 제어권이 인터럽트 처리 루틴으로 이동
6. Device Controller에 전달
7. Local buffe에 쌓아둔 값을 Device
Controller가 DMA에 전달
8. DMA 값들을 메모리로 즉각즉각 옮김
9. I/O완료시 인터럽트 발생시킴
10. 제어권을 다음 명령어로 옮김
5. 커널 주소 공간 내용
• 코드 세그먼트
• 시스템 콜, 인터럽트 처리코드
• 자원관리를 위한 코드
• 편리한 서비스를 제공하기 위한 코드
• 데이터 세그먼트
• PCB: Process Controll Block
• 스택 세그먼트
• PCB가 가리키는 Process의 커널 스택
메모리
코드 세그먼트
데이터 세그먼트
스택 세그먼트
PCB
Process A
PCB
Process B
CPUCPU
Process A의
스택