CS/운영체제

[운영체제] KOCW 반효경 교수님 강의 - 3. System Structure & Program ExeCution 1

pythaac 2022. 3. 11. 18:00
  • 컴퓨터 하드웨어의 동작에 대한 챕터

  • 컴퓨터 시스템 구조
    • 컴퓨터
      • CPU
        • 메모리에서 명령어를 하나씩 읽어서 실행하고 끝나면 인터럽트 확인
        • register : 메모리보다 더 빠른 작은 공간
        • mode bit : CPU에서 실행되는 것이 운영체제인지 사용자 프로그램인지 구분
        • [인터럽트 과정] Interrupt line
          • CPU는 메모리에서 명령어 하나씩 실행하는 일만 반복
          • [1] 키보드에서 입력을 받고, 화면 출력, Disk에서 데이터 읽어오기 등 작업이 필요
          • [2] Disk에서 데이터가 필요하면 device controller에게 읽어오라고 일을 시킴
          • [3] device controller는 Disk에서 데이터를 읽어서 local buffer에 저장
          • [4] 그동안 빠른 CPU는 계속 작업을 진행
          • [5] I/O가 끝나면 인터럽트를 통해 알림
      • Memory
    • I/O device
      • Disk
      • 키보드, 마우스, 모니터 등등
  • I/O
    • Input : device의 데이터가 컴퓨터로 들어가는 것
      • 키보드
    • Output : 처리 후 데이터를 밖으로 내보는 것
      • 모니터
    • I/O시 인터럽트 과정
      • CPU가 프로그램 실행 중 I/O가 필요
      • 프로그램이 자진해서 운영체제에게 CPU를 넘김
      • 운영체제가 필요한 작업을 I/O controller에 시킴
      • I/O 작업이 오래걸리니까 I/O를 요청한 프로그램이 아닌 다른 프로그램에게 CPU를 넘겨줌
      • I/O 작업이 끝나면 controller에서 인터럽트를 보냄
      • 인터럽트로 인해 CPU의 제어권은 자동으로 운영체제에게 넘어감
      • 운영체제는 인터럽트가 들어온 이유를 확인
      • I/O 작업의 결과를 요청했던 프로그램의 메모리에 copy해줌
      • 인터럽트를 당한 프로그램에게 CPU를 다시 넘겨줌

 

  • device controller
    • device들은 전담하는 cpu 같은 것이 붙어있게됨
    • Disk의 내부 컨트롤은 CPU의 역할이 아닌 controller의 역할
    • 제어 register : 어떤 명령을 수행할지 설정해주는 register
    • device driver
      • devcie controller가 하드웨어인 반면, device driver는 소프트웨어
      • 각 디바이스를 처리하기 위해서 그 디바이스의 인터페이스가 있음
      • 거기에 맞기 접근할 수 있게 해주는 소프트웨어 모듈
  • timer
    • 특정 프로그램이 CPU를 독점하는 것을 막음
    • 운영체제가 실행되면 timer에 값을 설정하고 프로그램에게 CPU를 넘김
    • 프로그램이 실행되면서 설정한 값의 시간이 지나면 timer는 CPU에 인터럽트를 보냄
    • CPU는 작업을 멈추고, CPU 제어권이 운영체제에게 자동으로 넘어감
    • 운영체제는 timer에 값을 다시 설정하고 다른 프로세스에게 CPU를 넘김
  • mode bit
    • 0 커널 모드 : 운영체제에서 실행중
      • 메모리 접근뿐만 아니라, I/O device에 접근하는 명령 실행 가능
      • 특권 명령 수행 가능
    • 1 사용자 모드 : 사용자 프로그램을 실행중
      • 제한된 명령만 실행 가능
      • 일반 명령 수행
  • DMA controller
    • 그런데 CPU가 너무 인터럽트를 많이 당함
    • CPU가 일 좀 하려고 하면 인터럽트 걸려서 버퍼에 복사해오고를 반복
    • 그래서 DMA controller가 필요
    • Direct Memory Access : 원래 메모리를 접근할 수 있는 건 CPU 뿐이었는데 DMA controller도 접근
    • I/O 작업이 끝나면 DMA가 memory에 복사해줌
    • 복사가 끝나면 그 때 CPU에 인터럽트
  • memory controller
    • CPU와 DMA가 메모리에 동시에 접근이 가능하기 때문에 이를 중재
  • I/O의 수행
    • 모든 I/O 명령은 특권 명령
    • 특권 명령은 운영체제만 실행 가능
    • 시스템 콜 : 사용자 프로그램이 운영체제에 수행을 요청
  • 시스템 콜
    • 한 프로그램이 실행중이면 명령어를 실행하고 다음 명령어 위치로 jump해서 그 명령어 실행하고를 반복
    • 그러던 중 I/O가 필요한 명령이 필요
    • 하지만 사용자 모드에서 운영체제의 명령 위치로 jump할 수 없음
    • 따라서 프로그램은 인터럽트 라인을 세팅하는 명령을 실행
    • CPU가 운영체제에 넘어가면서 요청한 I/O을 실행할 수 있게 됨
    • 이를 소프트웨어 인터럽트라고 함
    • 이렇게 함수를 호출하는 방식을 trap이라고 함
  • 현대 운영체제는 인터럽트에 의해 구동
    • CPU는 항상 사용자 프로그램이 점유를 하게 됨
    • 인터럽트가 발생했을 때 운영체제가 구동
  • 인터럽트 용어
    • 인터럽트 처리 루틴
      • 인터럽트 종류에 따라 처리해야할 작업이 정의가 되어있음
      • 이를 처리하는 실제 코드
    • 인터럽트 벡터
      • 인터럽트 종류에 따른 인터럽트 처리 루틴의 주소를 가짐