컴퓨터시스템의 구조

Sumin Kim·2022년 9월 5일
1

✔ Operating system

목록 보기
2/5
post-thumbnail

본 글은 KOCW 이화여대 반효경 교수님의 운영체제 강의를 듣고 정리한 내용입니다.
http://www.kocw.net/home/m/search/kemView.do?kemId=1226304

  1. 운영체제의 종류, 특히 공개/비공개 소프트웨어에 대해 구체적으로 알아본다.
  2. 운영체제의 정의, 목적, 분류, 예, 구조를 알아보고, 과목 성격이 개발자 관점의 운영체제 이해임을 이해한다.
  3. 컴퓨터 시스템의 구조와 관련해, 프로그램 수행에 Mode bit, Timer 등이 어떻게 작동하는지 알아본다.
  4. 인터럽트가 운영체제를 구동시키는 원리와 인터럽트의 한 종류인 시스템콜에 대해 알아본다. 동기식/비동기식 입출력에서의 인터럽트, DMA를 이용한 인터럽트 조절에 대해 알아본다. 계층구조에 의해 I/O에서 입출력명령어가 다름을 이해한다.

컴퓨터시스템의 구조

🔹 구조


🔹 Mode bit

  • 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보호장치필요

  • Mode bit 을 통해 하드웨어적으로 두가지 모드의 operation 지원

    1 사용자모드 : 사용자 프로그램 수행
    0 모니터모드 : OS 코드 수행

    • 보안을 해칠 수 있는 중요한 명령어(위험한 기계어)는 모니터 모드에서만 수행가능한 "특권명령"으로 규정 → 운영체제만 접근할 수 있음
    • interrupt(i/o device들의 컨트롤러가 보냄) 나 exception(권한이 없는명령어를 시행하려고 할때) 발생시 하드웨어가 modebit을 0으로 바꿈
    • 사용자 프로그램에게 CPU를 넘기기 전에 mode bit 을 1로 세팅
    • Registers에는 program counter(PC)라는 register가 있음, 이는 다음번에 실행할 메모리의 주소를 가지고 있음

🔹 Timer

  • 일정시간을 바탕으로 interrupt를 발생시킴
  • 운영체제가 CPU를 넘길때 timer에게 time을 세팅한 후 넘기기때문에, 시간에 되면 운영체제에게 cpu 제어권이 넘어가게됨
  • 타이머는 매 클럭 틱 때마다 1씩 감소
  • 타이머 값이 0 이 되면 타이머 인터럽트 발생
  • CPU를 특정 프로그램이 독점하는 것으로부터 보호함
  • time sharing을 구현하기 위해 널리 이용되고, 현재 시간을 계산하기 위해서도 사용됨

🔹 Interrupt

  • 인터럽트가 걸려야 운영체제한테 CPU가 넘어감

  • 현대의 운영체제는 인터럽트에 의해 구동됨

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

  • Interrupt(넓은의미)

    • 하드웨어 인터럽트 : 하드웨어가 발생시킨 인터럽트

    • 소프트웨어 인터럽트 (Trap) :

      • Exception : 프로그램이 오류를 범한 경우
      • System call : 프로그램이 커널 함수를 호출하는 경우

      System call (시스템콜)

      • I/O 장치를 접근하는 명령어들은 전부 특권명령이다 → 사용자 프로그램이 할 수 없음(운영체제를 불러야됨)

      • 사용자 프로그램이 운영체제의 서비스를 받기위해 커널함수를 호출하는 것

      • 소프트웨어가 자기가 할 수 없는 일을 운영체제에게 부탁하기위해 자체적으로 interrupt를 거는 것

  • 인터럽트 관련 용어

    • 인터럽트 벡터
      : 해당 인터럽트의 처리 루틴 주소를 가지고있음
    • 인터럽트 처리루틴 (=Interrupt Service Routine, 인터럽트 핸들러)
      : 해당 인터럽트를 처리하는 커널 함수

🔹 Device controller

  • ✔ I/O device controller : hardware
    • 각 장치를 통제하는 일종의 작은 CPU
    • local buffer를 가짐
    • I/O는 실제 device와 local buffer 사이에서 일어남
    • Device controller 는 I/O가 끝났을 경우 interrupt로 CPU에 그 사실을 알림
  • ✔ device driver : 운영체제 안에 있는 코드 중 CPU가 부탁하는 방법이 적힌 기계어
    • CPU 가 수행하는 코드
    • software
    • OS 코드 중 각 장치별 처리루틴

🔹 동기식 입출력과 비동기식 입출력

  • 두 경우 모두 I/O 의 완료는 인터럽트를 통해 알림
  • Synchronous I/O (동기식입출력)
    • I/O 요청 후 입출력 작업이 완료된 후에야, 제어가 사용자 프로그램에 넘어감
    • 구현방법 1
      • I/O 가 끝날때까지 CPU를 낭비시킴
      • 매시점 하나의 I/O만 일어날 수 있음
    • 구현방법 2
      • I/O 가 완료될때까지 해당프로그램에게서 CPU를 빼앗음
      • I/O 처리를 기다리는 줄에 그 프로그램을 줄 세움
      • 다른 프로그램에게 CPU를 줌
  • Asynchronous I/O (비동기식입출력)
    • I/O 가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감

🔹 DMA (Direct Memory Access)

  • 빠른 입출력 장치를 메모리에 가까운 속도로 처리하기위해 사용
  • CPU 의 중재 없이 device controller 가 device의 buffer storage의 내용을 메모리에 block 단위로 직접 전송
  • 바이트 단위가 아니라 block 단위(DMA가 메모리로 복사하는 과정까지 다하고나서)로 interrupt를 발생시킴 (평소보다 덜 빈번하게 interrupt 발생)

🔹 서로 다른 입출력 기계어

  • I/O를 수행하는 special intruction에 의해 (I/O 전담 기계어)
  • Memory Mapped I/O 에 의해 (메모리 주소를 I/O장치에도 연장해서 매겨둔 것)


🔹 프로그램의 실행 (memory load)

  • Virtual memory 와 Physical memory 의 차이! - 다른 주소이기 때문에 Address translation 이 필요함
  • Kernel Address space = Virtual memory 의 구조 ,
    • code : CPU에서 실제로 수행할 기계어
    • data : 프로그램이 실행되다가 메모리에서 쓰는 경우 (전역변수나 프로그램 시작부터끝까지 남아있는 변수)
    • stack : 함수 호출과 return 관련한

  • 커널 주소 공간의 내용
    • kernel의 스택은 별도로 씀

🔹 사용자 프로그램이 사용하는 함수

  • 함수(func)
    • 사용자 정의 함수 : 자신의 프로그램에서 정의한 함수
      • process의 address space
    • 라이브러리 함수 : 자신의 프로그램에서 정의한것이 아닌, 가져다 쓴 함수
      • process의 address space
    • 커널 함수 : 운영체제 프로그램의 함수
      • 커널함수의 호출 = 시스템콜
      • kernel address space

0개의 댓글