[운영체제] 시스템 구조 & 프로그램 실행 1 : 컴퓨터 시스템 구조, Mode bit, Timer, Device controller, 입출력(I/O)의 수행, 인터럽트 Interrupt

드림보이즈·2023년 8월 11일
0

컴퓨터 시스템 구조

초간단 버전

디테일 버전

Mode bit

  • 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 장치
  • 하드웨어적으로 두 가지 모드 operation 지원
  • 0 (커널 모드) : OS 코드 수행
  • 1 (사용자 모드) : 사용자 프로그램 수행
  • 보안을 해칠 수 있는 중요 명령어는 커널 모드에서만 수행 가능하게 규정
  • 인터럽트, 예외 발생시 하드웨어가 mode bit을 0으로 바꿈
  • 사용자 프로그램에 CPU를 넘기기 전에 mode bit을 1로 바꿈

Timer

  • 정해진 시간이 흐른 뒤 운영체제에게 제어권이 넘어가도록 인터럽트 발생시킴
  • 타이머는 매 클럭 틱 마다 1씩 감소
  • 타이머 값 0 되면 타이머 인터럽트 발생
  • CPU를 특정 프로그램이 독점하는 것으로부터 보호
  • time sharing 구현 위해 널리 이용됨
  • 현재 시간 계산하기 위해서라도 사용

한 프로그램만 CPU를 잡고 안 놔준다면, 멀티 테스킹이 불가능 할 것이다.
그래서 억지로 타이머 하드웨어를 둬서 억지로 타이머가 0이 되면 타이머 인터럽트를 발생시켜
운영체제에게 CPU를 넘겨준다.
그 후 운영체제가 CPU를 다른 프로그램에게 줄 수 있도록 컨트롤이 가능한 것이다.

Device controller

  • 해당 I/O 장치를 관리하는 일종의 작은 CPU
  • 제어 정보를 위해 control register, status register를 가짐
  • local buffer를 가짐(일종의 data register)
  • I/O는 실제 device와 local buffer 사이에서 일어남
  • Device controller는 I/O가 끝났을 경우 인터럽트로 CPU에 그 사실을 알림

I/O 장치마다 Device controller가 있다.
CPU가 모니터 보고 직접 명령을 내리는 것이 아니라, 작은 CPU인 Device controller가 맡은 장치를 관리하는 것이다.
작은 저장소인 local buffer를 가지고 있어, 여기에 저장했다가 전해주는 역할을 한다.

입출력(I/O)의 수행

  • 모든 I/O는 특권 명령
  • 사용자 프로그램의 I/O
    - 시스템 콜 : 사용자 프로그램이 운영체제에 I/O 요청
    -trap을 사용하여 인터럽트 벡터의 특정 위치로 이동
    -제어권이 인터럽트 벡터가 가리키는 인터럽트 서비스 루틴(인터럽트 핸들러 함수)로 이동
    -올바른 I/O요청인지 확인 후 수행
    -I/O 완료시 제어권을 시스템 콜 다음 명령으로 옮김

CPU는 그저 메모리에서 한 줄 불러와서 계산만 하는 일꾼일 뿐이다.
I/O 작업을 요청하는 시스템 콜은 interrrupt line으로 들어가게 되고,
CPU는 한 줄 계산하고, interrrupt line을 확인한다.
'어 뭐가 와 있네?'
계산을 멈추고, mode bit을 0으로 바꾸고인터럽트 벡터를 보고 이럴 땐 어떤 함수를 실행하는 지 확인한다.
그리고 그 함수(인터럽트 서비스 루틴)을 실행한다.

인터럽트 Interrupt

  • 인터럽트 당한 시점의 레지스터와 program counter를 save 하고
    CPU 제어를 인터럽트 처리 루틴에 넘긴다.

종류

  • 하드웨어 인터럽트(Interrupt) : 하드웨어가 발생시킨 인터럽트 (타이머,
  • 소프트웨어 인터럽트(Trap) : system call(시스템 콜), Exception(오류)

인터럽트 벡터 : 해당 인터럽트 처리 루틴의 주소를 가지고 있음

인터럽트 처리 루틴(인터럽트 핸들러) : 해당 인터럽트를 처리하는 커널 함수

profile
10년 후 세계 최고 블록체인 개발자

1개의 댓글

comment-user-thumbnail
2023년 8월 11일

정보 감사합니다.

답글 달기

관련 채용 정보