[운영체제] Day02. System Structure

youngkimi·2023년 12월 13일
0

[CS] 운영체제

목록 보기
2/12
post-custom-banner

컴퓨터 시스템 구조

  • Computer (CPU + Memory)
  • I/O Devices (Disk, Moniter, Keyboard ...)

  • Memory : CPU의 작업대

  • I/O Device

    • Contoller (CPU) + LocalBuffer (Memory) 가 존재.
  • Register : CPU 내부에 존재하는 Memory 보다 빠르고 작은 정보 저장소

  • modebit

    • CPU 내부에서 실행되는 것이 OS인지 다른 소프트웨어인지 구분
    • 사용자 프로그램의 잘못된 수행으로 다른 프로그램이나 운영체제에 피해가 가지 않도록 하기 위한 보호 장치
      • modebit 0 : OS가 CPU 점유 중
        메모리 접근, I/O devices 접근 가능 ...
      • modebit 1 : 타 프로그램이 CPU 점유 중
        I/O devices 접근 등 불가능
      • 즉, OS에게 주도권 넘길 때는 modebit 1 > 0으로 토글 (Interrupt나 Excetption 발생 시)
      • 사용자 프로그램에게 주도권 넘길 때는 modebit 0 > 1
  • Interrupt Line

    • CPU는 메모리하고만 일한다. I/O Device와 일하지 않는다.
    • 경우에 따라 입력 받거나, 출력하거나, 디스크 입출력 등의 수행이 필요하다.
    • 이 과정은 느리다. 따라서 CPU는 Device Controller에게 하청을 준다.
    • 하청 응답을 받는 과정에서 CPU가 놀면 큰 손해이므로.
  • timer : 특정 프로그램의 CPU의 독점 방지

    • 프로그램 할당 시 최대 시간을 정해준다.
    • 해당 시간이 넘어가면 강제로 timer가 CPU가 interrupt 알려줌
    • CPU는 하나의 instruction 끝날 때마다 interrupt Line 확인한다. interrupt 있으면 CPU 주도권을 넘긴다.
      • 사용자 프로그램의 Instruction 실행 중 I/O가 필요하면 CPU의 주도권을 OS로 넘긴다. (읽어 줘 / 써줘)
      • I/O는 OS밖에 못함 (보안 상의 이유로)
      • I/O에 시간이 걸리니까 하청 주고 일단 다른 프로그램 실행
      • I/O 완료되면 Interrupt 건다 -> OS로 CPU 주도권 넘어감 -> Interrupt 원인 파악 -> 원래 프로그램 CPU timer 시간 남았어 ? -> 원래 프로그램으로 복귀
  • DMA Controller (Direct Memory Access)

    • 과도한 Interrupt로 인한 CPU 성능 저하 방지
    • CPU처럼 메모리에 접근할 수 있다.
    • CPU랑 같이 Memory 접근하면 오류 발생 가능(memory Controller로 조율)
    • 여러 Interrupt (Inputs, Outputs)를 받아 CPU 대신에 일괄적으로 메모리에 처리
    • CPU에는 한 번의 Interrupt로 보고한다.

      인터럽트 Interrupt

      의미

      • 하드웨어 인터럽트(Interrupt)
        하드웨어가 발생시킨 인터럽트 (일반적 인터럽트)
      • 소프트웨어 인터럽트(trap) :
        • Exception > 프로그램이 오류 범한 경우
        • System Call > 프로그램이 커널 함수를 호출하는 경우 ('I/O device 읽어줘' 요청)

      관련 용어

      • 인터럽트 벡터 :
        • 해당 인터럽트의 처리 루틴 주소를 가지고 있음
        • 실제 해야할 일 : 핸들러(루틴) / 이동하는 주소 저장 : 벡터
      • 인터럽트 처리 루틴(핸들러) : 해당 인터럽트 처리하는 커널 합수
  • 동기식 입출력과 비동기식 입출력
    동기식 입출력 (synchronous I/O)

    1. I/O 요청 후 입출력이 완료된 후에 제어가 사용자 프로그램으로 넘어감.
      요청이 끝날때 까지 CPU 대기 (자원 낭비)
      매시점 하나의 I/O만 실행

    2. I/O 완료될 때까지 해당 프로그램에서 CPU 빼앗음
      I/O 완료될 때까지 I/O 출력 대기줄 세움
      다른 프로그램에 자원 줌

    비동기식 입출력 (asynchronous I/O)

    1. I/O 시작 후 입출력 기다리지 않고 제어가 사용자 프로그램에 넘어감

    저장장치 계층 구조
    저장장치계층구조

    • Executable : CPU가 직접 접근 가능한가?
    • 상부는 빠르고, 비싸고, 휘발성이고, 용량이 작다.
    • Cache : D-Ram에서 자주 사용하는 데이터 불러와서 보관

강의 : 운영체제 (KOCW) - 반효경
교재 : OSTEP - three easy pieces

post-custom-banner

0개의 댓글