[개발 정리]/[OS]

System Structure & Program Execution 1

hskimim 2024. 11. 20. 01:22

kocw 강의 : 이화여자대학교 반효경 교수님의 운영 체제 강의, 2강 System Structure & Program Execution 1

 

본 챕터까지는 본격적으로 os 를 얘기하기 앞서 computer HW를 얘기한다고 한다.

컴퓨터 시스템 구조

  • memory : cpu 의 작업 공간, cpu는 매 clock cycle 마다 메모리에서 기계어를 하나씩 읽어서 실행한다.
  • io device : io device를 전담하는 작업 cpu 같은 것들이 붙어있게 된다. 그걸 device controller 라고 함
    • "disk 의 Head를 어떻게 하겠다"는 cpu 가 아니라 disk 의 device controller 가 함
      • device controller 는 io device를 관리하는 작은 cpu
    • device controller 로 그들만의 작업 공간이 필요하며 그것이 local buffer 이다
  • cpu :
    • 매 clock 마다 메모리에서 instruction (기계어) 하나 읽어서 실행하는 것들의 연속
    • cpu는 메모리하고만 일한다
    • register : 메모리보다 더 빠르면서 정보를 저장하는 작은 공간이 있음
      • pc register 는 그 다음에 어떤 program 을 실행해야 하는 지에 대한 메모리 주소를 갖고 있음
    • mode bit : cpu 에서 실행되는 것이 os 인지, user program 인지 구분하는 것
      • kernel mode : os code 수행 중 -> mode bit == 0
        • 무슨 일이든 다 할 수 있게 해줌, (sudo 같은 느낌이 든다)
      • user mode : user program 수행 중 -> mode bit == 1
        • 제한된 instruction 만 실행할 수 있게 해줌
      • interrupt/exception : user mode -> kernel mode
      • os sets to user mode : kernel mode -> user mode
  • timer : 특정 프로그램이 cpu 를 독점하는 것을 막기 위해 존재
    • 정해진 시간이 지나면 os 에게 program의 제어권이 넘어가도록 interrupt 를 걸어줌
  • interrupt line : cpu에서 instruction을 실행하고 있다가, keyboard나 disk 에서 뭘 읽어서 어떤 instruction을 실행해야 하는 상태가 될 수 있음. 그럴 때는 device controller 에게 일을 시킨다. 그동안에 cpu 는 또 다른 일을 다시 하고 있다. (메모리랑)
    • cpu가 device controller 한테 말한다. disk 에서 뭔가 값이 들어오면 알려달라고 맡기고 자기 일을 하러 감, 다 되면 device controller 가 cpu 를 Interrupt 한다. (hardware interrupt) 그럼 아까 disk 에 읽을 것이 있다고 한 user program 을 memory에서 찾아서 해당하는 buffer 값을 copy 해준다.
    • memory 에 있는 user program은 i/o device에 직접 접근할 수 없고, cpu 를 통해서만 가능하다
      • system call을 통해 가능 : user program이 os 의 service를 받기 위해 kernel 함수를 호출 
      • memory 안에 있는 user program은 memory 안에 있는 OS program 에 바로 접근이 불가능하다 mode bit이 1이기 때문이다. 이에 따라 software 적으로 cpu 에게 interrupt를 건다. 그러면 mode bit 이 0으로 바뀌고, memory의 os program으로 바뀌어서 device controller 에게 접근한다. -> 이걸 trap 이라고 한다. (software interrupt)
        • -> 말이 길고 어려운데 (나도 이해 못함) user program이 I/O 를 하는 방법이 trap 이고 그 과정이 이렇다고 한다
    • 현대 os 는 interrupt 에 의해 구동됨
      • user program의 software interrupt (trap) -> os가 device controller 일 시킴 -> cpu 딴 일함 -> device controller가 hardware interrupt -> cpu 가 해당 program 의 메모리 주소에 값 copy
  • dma controller : 직접 메모리에 접근할 수 있는 controller
    • device controller가 너무 많이 interrupt 를 걸면 cpu 가 방해를 너무 많이 받아서, cpu 를 interrupt 를 걸게 하지 않고, dma controller 가 직접 memory에 그 값을 복사하고, cpu 에는 interrupt를 한번만 걸어서 보고만 하게 함
  • memory controller : cpu와 dma controller가 메모리에 동시 접근하는 것을 막는 용도