[개발 정리]/[OS]

System Structure & Program Execution 2

hskimim 2024. 11. 20. 23:49

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

 

cpu는 하나의 instruction 을 실행하고 다음 instruction을 실행하기 전에, interrupt 가 들어온 것이 있는지 확인한다.

  • interrupt vector : interrupt의 번호와 주소를 갖고 있다. 
    • 번호는 어떤 hw controller인지, (interrupt의 주체) 주소는 memory 상의 주소 (interrupt의 대상)
  • trap 에는 두 가지 종류가 있다.
    • Exception : 프로그램이 오류를 범한 경우 (ex. zero division)
    • System Call : 프로그램이 커널 함수를 호출하는 경우

 

  • synchronous I/O 
    • I/O 요청 후 작업이 완료된 후에야 제어가 user program에 넘어감
      • 구현 방법 1
        • io 가 끝날 때까지, cpu 를 낭비시킴, 매시점 하나의 io 만 가능
        • 그냥 CPU가 기다리는 것 같다. 다른 걸 못함
      • 구현 방법 2
        • io가 완료될 때까지 그 프로그램에게서 cpu 를 빼앗음. 해당 프로그램은 더이상 실행이 안됨
        • io 처리를 기다리는 줄에 해당 프로그램을 줄세우고 다른 프로그램으로 cpu 는 간다
        • 해당 program은 더이상 실행되지 않고 멈추며, 다른 program이 실행되는 형태
  • asynchronous I/O
    • I/O 가 시각된 후 작업이 끝나기를 기다리지 않고 제어가 user program에 넘어감

둘 다 I/O 작업의 완료는 interrupt를 통해 알 수 있음

 

  • DMA (directed memory access)
    • cpu가 너무 잦게 interrupt 되어 overhead가 많이 걸리는 문제를 완화
    • local buffer 에 작은 데이터가 쌓이는 걸 memory 에 넣고, interrupt 를 block 단위로 cpu에게 한다.
    • 빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해서도 사용

 

 

 

 

  • 위 그림의 왼쪽은 instruction이 memory에 접근하냐, io device에 접근하냐에 따라 다르게 구성되어 있음을 나타냄
    • 일반적 io 라고 함
    • 두 instruction은 io 를 수행하는 special instruction에 의해 구분된다.
  • 오른쪽은 memory에 접근하든 io device에 접근하든  
    • 두 instruction은 memory mapped I/O 에 의해 구분된다.

사실 뭔말인지 이해 못했다... 교수님이 해당 강의는 개괄적인거라 이해못해도 일단 넘어가도 된다고 했다.. 교수님이 그랬다고요..

 

 

위로 갈수록 빠르다. 다만, 단위 공간 당 가격이 비싸서 용량이 작다. 그리고 위로 갈 수록 휘발성 저장장치이다. 연두색 부분은 휘발성 매체임. cpu 에서 직접 접근해서 처리하는 부분을 primary, executable이라고 말함. hard-disk 같은 경우에는 cpu의 byte 단위 접근이 안됨

  • register, cache memory는 cpu 안에 구성되어 있음
  • main memory -> DRAM
  • cpu는 빠르면 1 clock 당 하나의 instruction을 수행하는데, dram 접근하는데에는 10clock 정도 걸려서 가운데에 cache memory를 두는거임. 근데 cache memory는 작아서 당장 필요한 것만 담아둠 그걸 caching 이라고 함.

 

 

프로그램은 실행 파일 형태로 파일 시스템에 저장되어 있음. 이걸 메모리에 올려서 프로세스로 만듦. 이때 메모리에 바로 올리는게 아니라 가상 메모리에 올림. 특정 파일을 실행하면, 독자적인 주소 공간이 가상 메모리에 구성됨. 이걸 물리적인 메모리에 올림. 당장 필요하지 않은 주소 공간은 메모리에 올리지 않고, swap area라는 disk 공간에 올림. virtual memory는 프로그램마다 갖고 있는 독자적 주소 공간을 의미

어려운데 이건 강의 후반부에 다시 나온다고 한다. address translation 은 가상 메모리 상의 주소와 물리 메모리 상의 주소의 변환이 필요한 경우에 사용된다.

 

 

위 그림은 커널 주소 공간의 내용이다.

  • code : os가 처리하는 코드
  • data : os가 사용하는 여러 자료 구조, 프로세스를 관리하기 위한 자료 구조를 PCB (process control block) 라 함
  • stack : os도 함수 구조로 이뤄지기 때문에 함수를 호출할 때 커널 스택을 사용

아직은 뭔 말인지 모르겠음...