본문 바로가기

운영체제

3. System Structure & Program Execution 1

이화여자대학교 반효경 교수님의 운영체제 강의를 듣고 정리한 내용이다.

 

컴퓨터 시스템 구조

  • CPU는 명령을 읽어서 시행
  • memory = CPU의 작업 공간
  • disk = 하드디스크, 보조기억장치
  • 하드디스크는 보조기억장치이자 I/O device이기도 하다

  • CPU는 항상 memory와 일함
  • 디스크는 시킨 일을 하면서 이를 읽어 local buffer에 저장
  • 사용자 프로그램 B가 만약 무한루프에 빠졌다면, CPU의 독점을 막기 위해 timer 세팅
  • 컴퓨터가 켜지면 운영체제가 CPU를 갖고 있다가, 사용자 프로그램이 시작되면 CPU를 넘겨줌. 이 때, 그냥 넘겨주는 것이 아니라 timer에게 어떤 값을 세팅하고 사용자 프로그램에 넘겨줌. 그래서 사용자 프로그램은 값을 계속 쓸 수 있는 것이 아니라, 보통은 1초보다 짧은 (수십~수백 millisec) 세팅된 시간이 되면 timer가 CPU에게 interrupt를 걸어줌.
  • Timer가 interrupt를 걸어오면 CPU는 하던 일을 멈추고 CPU의 제어권이 사용자 프로그램에서 OS로 넘어감
  • 운영체제가 CPU를 얻게 되면 다른 사용자 프로그램에 동일하게 일정시간을 세팅하고 넘겨줌
  • 만약  I/O를 하게 되면, 사용자 프로그램은 직접 I/O로 접근이 불가능하므로 (I/O는 OS만 접근 가능) 자진해서 OS에게 CPU를 넘김
    • if) 지금 당장  I/O(키보드)에서 데이터를 입력받은 프로그램은 언제 다시 CPU를 얻을까?
    • I/O 컨트롤러가 요청한 작업이 끝나면, CPU에게 interrupt를 건다. CPU 제어권이 자동적으로 운영체제에 넘어가게 되는데, 입력된 interrupt 값을 살핀 후, 입력된 키보드값을 아까 요청한 키보드 입력 프로그램의 메모리 공간에 copy를 해주고, CPU를 더 쓰게 할 것인지 말 것인지 결정한다

Mode bit

  • CPU를 OS가 갖고 있는지 사용자 프로그램이 갖고 있는지 표시
  • 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보호 장치 필요
  • mode bit을 통해 하드웨어적으로 두 가지 모드의 operation 지원
    • 1 : 사용자 모드 - 사용자 프로그램 수행
    • 0 : 모니터 모드(=커널 모드, 시스템 모드) - OS 코드 수행
    • 모든 수행이 다 가능한 것은 모드가 0일 때 모든 instruction(=일반 명령) 수행 가능
  • 보안을 해칠 수 있는 중요한 명령어는 모니터 모드에서만 수행 가능한 '트구건 명령'으로 규정
  • interrupt나 exception 발생 시 하드웨어가 mode bit을 0으로 바꿈
  • 사용자 프로그램에게 CPU를 넘기기 전에 mode bit을 1로 세팅

Timer

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

 

※ 메모리엔 CPU만 일단 접근할 수 있도록 한다.


입출력(I/O)의 수행

  • 모든 입출력 명령 특권 수행
  • 사용자 프로그램은 시스템 콜(system call)을 통해 운영체제에게 I/O를 요청
  • trap을 사용하여 인터럽트 벡터의 특정 위치로 이동
  • 제어권의 인터럽트 벡터가 가리키는 인터럽트 서비스 루틴으로 이동
  • 올바른 I/O요청인지 확인 후 I/O 수행을 하고, 완료 시 제어권을 넘김

인터럽트(Interrupt)

  • 인터럽트 당한 시점의 레지스터와 program counter를 save한 후, CPU의 제어를 인터럽트 처리 루틴에 넘김
  • 넓은 의미의 interrupt는 하드웨어 인터럽트로, 하드웨어가 발생시킨 인터럽트임
  • Trap은 소프트웨어 인터럽트
    • Exception : 프로그램이 오류를 범한 경우
    • System call : 프로그램이 커널 함수를 호출하는 경우(사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 경우를 뜻함)
  • 인터럽트 벡터 : 해당 인터럽트의 처리 루틴 주소를 갖고 있음
  • 인터럽트 처리 루틴(=interrupt service routine, 인터럽트 핸들러) : 해당 인터럽트를 처리하는 커널 함수

∴ 현대의 운영체제는 인터럽트에 의해 구동된다고 볼 수 있음

 

'운영체제' 카테고리의 다른 글

7. Process Management 1  (0) 2022.02.12
6. Process 2 & 3  (0) 2022.02.05
4. System Structure & Program Execution 2  (0) 2022.01.29
1. 강의 소개  (0) 2022.01.21
2. Introductions to Operating Systems  (0) 2022.01.21