CS/OS

3. System Structure & Program Execution 1

hjkim0502 2022. 3. 4. 02:31

  • CPU: 매 클럭마다 메모리에서 인스트럭션(기계어)을 차례로 읽어 실행하는 작업 반복
    • 레지스터: 메모리보다 빠른 작은 정보 저장 공간
      • 다음 인스트럭션의 주소를 담고 있음
    • mode bit: 실행중인 프로세스가 OS인지 사용자 프로그램인지 구분해준다
      • 1 (사용자 모드): 사용자 프로그램 수행 -> 제한된 인스트럭션만 수행 가능 (보안)
      • 0 (모니터 모드): OS 코드 수행 (=커널모드) -> I/O 관련된 인스트럭션까지 모두 수행 가능
    • interrupt line: CPU는 매 인스트럭션을 읽기 전에 interrupt line이 세팅되어 interrupt될 사항이 있는지 체크한다
      • CPU에 인터럽트가 걸리면 실행중인 프로그램에서 OS로 CPU 제어권이 넘어간다
    • 프로그램 실행 중에 I/O 장치의 관여가 필요하다면 CPU가 device controller에게 요청하고, 해당 I/O 장치의 처리 결과는 local buffer에 저장된다 -> 처리 완료 후 device controller가 interrupt로 CPU에 알림
      • 이때 CPU는 I/O 장치의 데이터 입력 결과가 나오는 동안 다른 작업을 계속해서 수행한다
  • 타이머: 특정 프로그램의 CPU 독점 방지, OS가 할당 시간을 타이머에 세팅하여 각 프로그램에 CPU 할당
    • 할당 시간이 넘어가면 타이머 인터럽트
  • DMA(Direct Memory Access) controller: 직접 메모리에 접근 권한이 있는 컨트롤러
    • I/O가 매번 일일히 인터럽트하는 것의 비효율성 때문에 local buffer에 저장된 데이터를 메모리에 옮겨놓고 한번만 인터럽트 걸기 위해 존재
  • memory controller: CPU와 DMA controller가 동시에 메모리에 접근하는 것 방지
  • 메모리: CPU의 작업공간
  • I/O 장치: 데이터 입력 및 컴퓨터 처리 결과 출력
    • device controller: I/O 장치에 있어서 CPU와 같은 역할을 하는 장치 (제어 레지스터)
    • local buffer: I/O 장치에 있어서 메모리와 같은 역할을 하는 장치 (데이터 레지스터)

* device driver (장치 구동기): OS 코드 중 CPU가 실행하는 각 장치별 처리루틴 -> 소프트웨어

  • 입출력의 수행
    • 모든 입출력 명령은 특권 명령
    • 시스템콜: 사용자 프로그램이 OS에 I/O 요청
      • 사용자 프로그램이 직접 interrupt line을 세팅할 수 있음
      • 올바른 I/O 요청인지 확인 후 수행 -> 완료 시 제어권을 시스템콜 다음 명령으로 옮김
  • 인터럽트
    • 소프트웨어 인터럽트(trap): 시스템콜, exception(프로그램 오류)
    • 하드웨어 인터럽트: 타이머, device controller 등의 인터럽트
    • 인터럽트 처리 루틴: 해당 인터럽트를 처리하는 커널 함수
    • 인터럽트 벡터: 해당 인터럽트의 처리 루틴 주소를 가지고 있음 (어떤 함수로 가야하는지)

 

출처: https://core.ewha.ac.kr/publicview/C0101020140311132925816476?vmode=f