운영체제

4. System Structure & Program Execution 2

홍비 2022. 1. 29. 17:26

 이화여자대학교 반효경 교수님의 운영체제 강의를 듣고 정리한 내용이다.

 

# 3강 복습

  • computer는 host라고도 불림(host computer)
  • instruction 주소는 하나당 약 4byte
  • CPU는 아주 빠른 일꾼임
    • 처음에 컴퓨터가 켜져서부터 꺼질 때까지 CPU는 항상 '프로그램 카운터'라는 레지스터가 가리키는 메모리 주소에서 instruction 하나를 읽어 실행하는 일만 실행
    • (전) instruction → interrupt가 있는지 확인. 있다면? CPU 제어권이 OS에게 넘어감 → 없다면, 다른 instruction 실행
  • '인터럽트 벡터'는 각 인터럽트 종류별로 몇번 라인에 인터럽트가 들어왔는지 나타내는 엔트리
    • = 엔트리 + 주소 쌍으로 이루어져있음. <interrupt number, 주소>
    • 그 인터럽트가 들어왔을 때 운영체제의 어느 곳에 있는 instruction을 실행할지 저장한 주소
  • 실제해야 하는 일 = 인터럽트 처리 루틴(=Interrupt Service Routine)
    • 일반적인 interrupt = 하드웨어 인터럽트
    • 프로그램이 필요에 따라 발생시키는 인터럽트 = Trap

<동기식 입출력과 비동기식 입출력>

동기식 입출력(synchronous I/O)

  • I/O 요청 후, 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감
  • 구현방법 1) I/O가 끝날 때까지 CPU를 낭비시킴 → 매시점 하나의 I/O만 일어날 수 있음
  • 구현방법2) I/O가 완료될 때까지 해당 프로그램에서 CPU를 뺴앗음 → I/O 처리를 기다리는 줄에 그 프로그램을 줄세움 → 다른 프로그램에게 CPU를 줌

 

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

  • I/O가 시작된 후, 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에서 즉시 넘어감

 

※ 두 경우 모두 I/O의 완료는 인터럽트로 알려줌


< DMA(Direct Memory Access) >

  • 빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해 사용
  • CPU의 중재 없이 device controller가 device의 buffer storage의 내용을 메모리에 block 단위로 직접 전송
  • 바이트 단위가 아니라 block 단위로 인터럽트 발생시킴

< 서로 다른 입출력 명령어 >

왼쪽은 일반적인 경우의 I/O

  • I/O를 수행하는 special instruction에 의해 발생
  • Memory Mapped I/O에 의해 발생

< 저장장치 계층구조 >

  • 위로 갈수록 보통 속도가 빠른 매체를 사용
  • 위로 갈수록 단위 공간 당 가격이 비싸며, 용량은 적음
  • 연두색은 휘발성, 분홍색은 비휘발성 매체
  • 휘발성 매체(레지스터, 캐시 메모리, 메인 메모리)
    • CPU에서 직접 접근 가능(byte 단위로 접근가능해야 함)
    • 처리속도가 빠름
  • 비휘발성 매체
    • CPU가 직접 접근해서 처리 불가
    • Disk는 sector단위로 접근이 가능
  • Caching(캐싱) : 주로 재사용을 위한 것으로, copying information into faster storage system

<프로그램 실행(메모리 load)>

  • data : 변수(자료구조)
  • code : 기계어 코드

<커널 주소 공간의 내용>

  • 운영체제의 코드는 여러 사용자 프로그램들의 요청에 따라 불러서 사용할 수 있음

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

  • 함수(function)
    • 사용자 정의 함수 - 자신의 프로그램에서 정의한 함수
    • 라이브러리 함수 - 자신의 프로그램에서 정의하지 않고 갖다 쓴 함수로, 자신의 프로그램의 실행파일에 포함되어 있음
    • 커널 함수 - 운영체제 프로그램의 함수로, 커널 함수의 호출은 시스템콜임

<프로그램의 실행>