컴퓨터 시스템 구조
I/O device (Input/Output Device)
각 I/O device 마다 device controller가 붙어 그 deveice를 전담하는 작은 CPU의 역할을 함
device controller의 CPU의 Memory처럼 작업 공간을 local buffer라고 부름
CPU (매 클럭마다 Memory에서 instruction 하나 읽어서 실행)
registers : 메모리보다 더 빠르면서 정보를 저장할 수 있는 작은 공간
mode bit : CPU에서 실행되는 것이 운영체제인지 사용자 프로그램인지 구분해주는 것
0(운영체제) : 모든 작업 가능
1(사용자 프로그램) : 제한된 instruction만 실행
interrupt line : CPU는 항상 메모리에 있는 instruction만 실행하는데, 키보드에서 입력이 들어왔다든지, 디스크에서 무엇을 읽어와야 된다든지, 디스크에 무언가를 읽어오라고 요청했는데 이 일을 다 끝냈다든지 CPU가 알 수 있도록 그것을 전달하고 받기 위해 interrupt line이 존재
timer : 무한루프 프로그램에 갇혔을 때 timer라는 하드웨어를 두어 특정 프로그램에 CPU를 독점하는 것을 막음
(사례) 타이머가 iterrupt를 걸면 CPU가 잠깐 멈추고 CPU 제어권이 운영체제한테 넘어가서 interrupt가 걸린 이유를 확인i/o device에서 작업한 내용이 있다면 사용자 프로그램에 작업한 내용 copy
타이머 오버됐으면 사용자 프로그램을 멈추고 다른 프로그램으로 작업을 옮기는 작업 등을 함
시스템 프로그램이 I/O 요청한 것을 확인 후 처리
DirectMemoryAccess controller: 직접 메모리에 접근 가능한 엑세스인데 I/O 장치가 너무 interrupt를 걸어 CPU가 방해를 많이 받으므로, DMA가 local buffer에 있는 것을 메모리로 복사하여 interrupt걸리는 횟수를 줄임
memory controller: DMA controller와 CPU가 동시에 메모리 접근하는 것을 중재하는 역할
CPU가 메모리 주소를 읽는 법
CPU 안에 program counter register 가리키고 있는 메모리 주소에서 instruction을 읽어와서 CPU가 실행
일반적으로는 이후 4가 증가하여 다음 instruction 주소를 가리킴
예외적으로 jump 하여 instrucition 실행하기도 함
메모리 읽는 사이 마다 interrupt가 들어온지 확인
(interrupt가 들어오면 CPU 제어권이 OS로 넘어감)
Mode bit
사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보호 장치 필요
Mode bit을 통한 하드웨어적으로 두가지 모드의 operation 지원
1 사용자 모드 : 사용자 프로그램 수행
0 모니터 모드(=커널 모드, 시스템 모드) : OS코드 수행
보안을 해칠 수 있는 중요한 명령어는 모니터 모드에서만 수행 가능한 ’특권명령’으로 규정
Interrupt나 Exception 발생 시 하드웨어가 mode bit을 0으로 바꿈
사용자 프로그램에게 CPU 넘기기 전에 mode bit을 1로 세팅
Timer
타이머
정해진 시간이 흐른 뒤 운영체제에게 제어권이 넘어가도록 인터럽트를 발생시킴
타이머는 매 클럭 틱 때마다 1씩 감소
타이머 값이 0이 되면 타이머 인터럽트 발생
CPU를 특정 프로그램이 독점하는 것으로부터 보호
타이머는 time sahring을 구현하기 위해 널리 이용
타이머는 현재 시간 계산하기 위해서도 사용
Device controller
I/O device controller
해당 I/O 장치유형을 관리하는 일종의 작은 CPU
제어 정보를 위해 control register, status register를 가짐
(CPU한테 지시받거나 디바이스에 지시하기 위한 것)local buffer를 가짐 (일종의 data register)
I/O는 실제 device와 local buffer 사이에서 일어남
Device controller는 I/O가 끝났을 경우 interrupt로 CPU에 그 사실을 알림
참고
※ device driver (장치구동기) : OS 코드 중 각 장치별 처리루틴 → software
※ device controller (장치제어기) : 각 장치를 통제하는 일종의 작은 CPU → hardware
입출력(I/O)의 수행
모든 입출력 명령은 특권 명령
(사용자 프로그램은 운영체제 통해서만 접근 가능)
사용자 프로그램은 어떻게 I/O를 하는가?
시스템콜(system call): 사용자 프로그램은 운영체제에게 I/O 요청
trap을 사용하여 인터럽트 벡터의 특정 위치로 이동
제어권이 인터럽트 벡터가 가리키는 인터럽트 서비스 루틴으로 이동
올바른 I/O 요청인지 확인 후 I/O 수행
I/O 완료 시 제어권을 시스템콜 다음 명령어로 옮김
인터럽트(Interrupt)
현대 운영체제는 인터럽트에 의해 구동됨
인터럽트
인터럽트 당한 시점의 레지스터와 program counter를 save 한 후 CPU의 제어를 인터럽트 처리 루틴에 넘긴다
넓은 의미의 인터럽트
interrupt (하드웨어 인터럽트): 하드웨어(I/O, 타이머)가 발생시킨 인터럽트
Trap (소프트웨어 인터럽트)
Exception: 프로그램이 오류를 범한 경우
System call: 프로그램이 커널 함수를 호출하는 경우 → 필요에 의한 서비스 요청
관련 용어
인터럽트 벡터: 해당 인터럽트의 처리 루틴 주소를 가지고 있음
인터럽트 처리 루틴 (=Interrupt Service Routine, 인터럽트 핸들러): 해당 인터럽트를 처리하는 커널 함수
시스템콜 (System Call)
사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것
Uploaded by
'개발 기초 > CS 공부' 카테고리의 다른 글
[OS] 06. Process Synchronization (1) | 2023.12.22 |
---|---|
[OS] 05. CPU Scheduling (1) | 2023.12.22 |
[OS] 04. Process Management (0) | 2023.12.22 |
[OS] 03. Process (1) | 2023.12.22 |
[OS] 01. Introduction to Operating Systems (1) | 2023.12.19 |