GrowMe

[운영체제] 컴퓨터 시스템과 프로그램 수행 (1) 본문

CS(Computer science)

[운영체제] 컴퓨터 시스템과 프로그램 수행 (1)

오늘도 타는중 2022. 12. 6. 21:35
컴퓨터 시스템과 프로그램 수행
# 컴퓨터 시스템 구조
# Mode bit
# Timer
# Device Controller
# 시스템콜
# 인터럽트
# 입출력의 수행


✍️ 본 포스팅은 이화여자대학교 반효경 교수님의 "운영체제" 강의를 들으며 정리한 내용입니다.

 


*컴퓨터 시스템 구조

  • CPU의 역할 : 메모리의 instruction를 순서대로 실행해준다.
  • Interrupt line : CPU는 키보드 입출력 등 각 I/O 컨트롤러 수행 처리를 시키고 응답을 받아온다. 이때 각 컨트롤러로의 전달 통로라고 볼 수 있다.
  • mode bit : 지금 CPU에서 사용중인 것이 운영체제인지 사용자 프로그램인지 구분해줌
  • registers : CPU 내부에 메모리보다 더 빠르게 정보 저장 가능한 공간들
  • device controller : I/O 기기들을 통제한다.(작은 CPU)
  • I/O 기기 : 디스크 키보드 등 입출력 기기를 말함. 이를 컨트롤하기 위해서는, 사용자 프로그램에 할당된 CPU가 아니라 운영체제에 CPU 제어권을 넘겨준 뒤, CPU의 지시로 작동되는 device controller에 의해 통제된다.
  • local buffer : device controller의 작업 공간
  • timer : 무한루프를 도는 프로그램을 CPU가 실행하면 다른 프로그램으로 넘어가지 못한다. 이를 해결하기 위해 timer에서 셋팅된 시간(일반적으로 수십 ms)이 되면 timer가 CPU에게 interupt를 건다. CPU는 이를 통해 사용자 프로그램으로부터 CPU 제어권OS(운영체제) 넘길 수 있게 된다. -> 운영체제가 다른 프로그램으로 timer 셋팅 후, CPU 할당을 넘겨준다.
  • DMA controller : 원래는 메모리 접근은 CPU만 가능하지만, I/O 장치 등으로 CPU가 Intrrupt를 너무 많이 당하기에 CPU가 효율적이게 사용되지 못함. 따라서 DMA controller도 메모리에 접근 가능하게함. buffer에 모아둔 입력을 메모리에 옮김. 작업들이 모두 끝나면, CPU에 Interrupt를 한번만 걸면 되기에 효율적.
  • memory controller : 메모리에 CPU와 DMA 컨트롤러가 동시 접근할 시, 이를 교통정리 해주는 역할

*Mode bit

역할

사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해 막기 위한 보호 장치

모드

  • 1 사용자 모드 : 사용자 프로그램 수행
  • 0 모니터 모드 : OS 코드 수행 (== 커널모드, 시스템 모드)

- 보안을 해칠 수 있는 중요한 명령어는 모니터 모드에서만 수행 가능한 특권 명령으로 규정

- InterruptException 발생 시, 하드웨어가 mode bit을 0으로 바꿈

- 사용자 프로그램에게 CPU를 넘기기 전에 mode bit을 1로 셋팅


 

*Timer

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

*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

*시스템콜(System Call)

사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수 호출(운영체제로 제어권 넘기기 위해)


*인터럽트(Interrupt)

■ 인터럽트

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

■ Interrupt (넓은 의미)

  • Interrupt (하드웨어 인터럽트) : 하드웨어가 발생시킨 인터럽트
  • Trap (소프트웨어 인터럽트)
    • Exception : 프로그램이 오류를 범한 경우
    • System call : 프로그램이 커널 함수를 호출하는 경우

■ 인터럽트 관련 용어

  • 인터럽트 벡터 : 해당 인터럽트의 처리 루틴 주소를 가지고 있음
  • 인터럽트 처리 루틴 (Interrupt Service Routine : 인터럽트 핸들러)
    해당 인터럽트를 처리하는 커널 함수 (각 인터럽트가 해야할 일이 정의된 코드)

*입출력(I/O)의 수행

■ 모든 입출력 명령은 특권 명령(모니터 모드)

■ 사용자 프로그램은 어떻게 I/O를 하는가?

  • 시스템콜(system call) : 사용자 프로그램은 운영체제에게 I/O 요청
  • trap(소프트웨어 인터럽트)을 사용하여 Intrrupt 벡터의 특정 위치로 이동
  • 제어권이 Intrrupt 벡터가 가리키는 Interrupt 서비스 루틴으로 이동
  • 올바른 I/O 요청(접근 권한 등)인지 확인 후 I/O 수행
  • I/O 완료 시, 제어권을 시스템콜 다음 명령으로 옮김(하드웨어 인터럽트)
Comments