본문 바로가기

OS(운영체제)

System Structure & Program Execution (1)

컴퓨터 시스템 구조, 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 코드 수행
  1. 보안을 해칠 수 있는 중요한 명령어는 모니터 모드에서만 수행 가능한 특권 명령으로 규정
  2. Interrupt나 Exception 발생시 하드웨어가 mode bit을 0으로 바꿈
  3. 사용자 프로그램에게 CPU를 넘기기 전에 mode bit을 1로 셋팅

Timer

타이머는 time sharing을 구현하기 위해 널리 이용됨

타이머는 현재 시간을 계산하기 위해서도 사용

  1. 정해진 시간이 흐른 뒤 운영체제에게 제어권이 넘어가도록 인터럽트를 발생시킴
  2. 타이머는 매 클럭 틱 때마다 1씩 감소
  3. 타이머 값이 0이 되면 타이머 인터럽트 발생
  4. 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