컴퓨터 시스템 구조, Mode bit, Timer, Device Controller, 입출력(I/O)의 수행, 동기식 입출력과 비동기식 입출력, 시스템콜(System Call), 인터럽트(Interrupt)
컴퓨터 시스템 구조
- CPU에서 Memory가 필요하듯이 각 I/O device들의 Controller도 local buffer가 필요함
- 각 Device의 일은 Controller에서 담당
- CPU는 Memory에서 각 Instruction을 읽어와서 실행하는 일만 한다.
- mode bit : 지금 CPU가 하는일이 운영체제인지 사용자 프로그램인지 등을 판별하는 역할
- register : Memory보다 더 빠르면서 정보를 저장할수 있는 작은 공간
- Interrupt Line : Memory에서 하나의 Instruction이 끝나면 Interrupt Line이 실행되며 중간에 들어온 명령이 있는지 확인
- timer : 프로그램 A가 무한루프를 도는 프로그램일 수 있으며 이런경우 timer라는 하드웨어가 프로그램 A의 독점을 막아줌 ( timer에 시간 셋팅 )
- memory controller : DMA controller와 CPU중 누가 Memory에 접근할지 교통정리 하는 역할
- DMA controller : I/O장치가 Interrupt를 너무 자주 걸면 CPU 성능이 저하되므로 CPU는 자기일을 하고 중간중간 들어오는 local buffer에서 끝난 작업을 DMA controller가 Memory로 복사하는 역할을 한다. 그 이후 CPU에게 Interrupt를 한번만 보내게 됨
- 사용자 프로그램 등은 I/O 장치에 접근 할 수 없음 -> 모든 I/O Instruction은 OS에서만 할 수 있어서 각 사용자 프로그램에 I/O Instruction이 들어오면 OS에 CPU를 넘겨줌 -> OS는 I/O Controller에게 넘겨줌 -> I/O가 들어올때까지 다른 Instruction을 CPU에게 넘겨줌(시간 절약)
순서도 : CPU가 프로그램 A에 메모리 접근 하며 실행 -> IO 발생 -> CPU가 직접 IO를 하는게 아니라 I/O Controller한테 위임 -> CPU는 여전히 프로그램 A에 메모리 접근
Mode Bit
사용자 프로그램의 잘못된 수행으로 다른 프로그램이 및 운영체제에 피해가 가지 않도록 하기 위한 보호 장치 필요
- 1 사용자 모드 : 사용자 프로그램 수행
- 0 모니터 모드 : OS 코드 수행
- 보안을 해칠 수 있는 중요한 명령어는 모니터 모드에서만 수행 가능한 특권 명령으로 규정
- Interrupt나 Exception 발생시 하드웨어가 mode bit을 0으로 바꿈
- 사용자 프로그램에게 CPU를 넘기기 전에 mode bit을 1로 셋팅
Timer
타이머는 time sharing을 구현하기 위해 널리 이용됨
타이머는 현재 시간을 계산하기 위해서도 사용
- 정해진 시간이 흐른 뒤 운영체제에게 제어권이 넘어가도록 인터럽트를 발생시킴
- 타이머는 매 클럭 틱 때마다 1씩 감소
- 타이머 값이 0이 되면 타이머 인터럽트 발생
- CPU를 특정 프로그램이 독점하는 것으로부터 보호
Device Controller
I/O device controller
- 해당 I/O 장치 유형을 관리하는 일종의 작은 CPU
- 제어 정보를 위해 control register, status register를 가짐
- 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)
- 사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것
- trap을 사용하여 인터럽트 백터의 특정 위치로 이동
- 제어권이 인터럽트 백터가 가리키는 인터럽트 서비스 루틴으로 이동
- 올바른 I/O요청인지 확인 후 I/O 수행
- I/O 완료 시 제어권을 시스템콜 다음 명령으로 옮김
인터럽트(Interrupt)
인터럽트
- 인터럽트 당한 시점의 레지스터와 program counter를 save 한 후 CPU의 제어를 인터럽트 처리 루틴에 넘긴다
넓은 의미의 Interrupt
- Interrupt(하드웨어 인터럽트) : 하드웨어가 발생시킨 인터럽트 (보통 인터럽트라 하면 하드웨어 인터럽트를 의미)
- Trap(소프트웨어 인터럽트
- Exception : 프로그램이 오류를 발생시킨 경우
- System Call : 프로그램이 커널 함수를 호출하는 경우
인터럽트 벡터 : 해당 인터럽트의 처리 루틴 주소를 가지고 있음
인터럽트 처리 루틴( Interrupt Service Routine , 인터럽트 핸들러) : 해당 인터럽트를 처리하는 커널 함수
참고 자료
http://www.kocw.or.kr/home/cview.do?mty=p&kemId=1046323
'OS(운영체제)' 카테고리의 다른 글
Process Management 1 (0) | 2023.07.29 |
---|---|
Process 2~3 (0) | 2023.07.29 |
Process 1 (0) | 2023.07.29 |
System Structure & Program Execution (2) (0) | 2023.07.22 |
운영체제란 (0) | 2023.07.22 |