[운영 체제] Chapter 2 | System Structure & Program Execution 2

피망이·2024년 1월 18일

컴퓨터 시스템 구조

  • Disk, I/O device는 개별적인 local buffer와 device controller가 존재한다.

    • I/O device의 입출력에 따라 local buffer에 정보를 저장하고, controller가 CPU에 interrupt를 걸기도 한다.
  • Program Counter Register가 주소를 가리키면서 CPU가 instruction을 수행하게 한다.

    • 때로는 if문과 같은 제어문을 통해 jump하여 instruction을 수행하기도 한다.
  • CPU는 다음 instruction을 수행하기 전에 interrupt line을 체크한다.

    • interrupt vector(인덱스, 주소)를 통해 운영 체제의 커널 함수를 찾는다.
    • mode bit이 0이면 모든 명령을 수행할 수 있고, 1이면 사용자 프로그램이 CPU를 가지고 있으므로 한정적으로 수행한다.
    • I/O device는 mode bit이 0일 때만 수행하도록 되어 있다.
  • 사용자 프로그램이 운영 체제에게 요청할 때는 시스템 콜(System Call)을 요청한다.

    • 인터럽트는 일반적으로 하드웨어 인터럽트와 소프트웨어 인터럽트로 나뉜다.
    • Trap(소프트웨어 인터럽트)은 Exception(e.g. Divided by zero)나 System Call이 존재한다.
  • timer의 기능은 사용자 프로그램이 CPU를 무한으로 쓰는 것을 방지하기 위해 미리 시간 세팅을 한다.

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

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

    • I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어간다.
  • 비동기식 입출력(asynchronous I/O)

    • I/O 요청 후 바로 CPU를 얻어 와서 제어가 사용자 프로그램에 즉시 넘어간다.

DMA(Direct Memory Access)

  • 원래는 Memory에 접근할 수 있는 장치가 CPU밖에 없다.
    • 그러나 I/O가 controller를 통해 interrupt를 걸면 사용자 프로그램에 copy하게 하는 방식으로 접근 가능하다.
    • 하지만 이렇게 되면 CPU가 너무 자주 interrupt 걸리기 때문에 DMA를 두는 것!

서로 다른 입출력 명령어

  • I/O 장치에도 Memory 접근하는 주소를 갖게 만들어 놓은 구조

저장장치 계층 구조

  • 맨 위에는 CPU가 존재
  • 컴퓨터 구조에서 배울 것
  • 연두색: 휘발성(DRAM), 분홍색: 비휘발성
  • Caching: 일단 위로 올려 놓으면 가져오기가 쉬워짐

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

  • File system → virtual memory → Physical memory

  • virtual memory

    • 독자적인 주소 공간을 가지고 있음
    • code, data(전역 변수), stack 층
  • Swap area

    • 메모리 연장 공간으로 사용
    • 전원이 나가면 사라짐, file system은 유지
  • 주소 변환 : 하드웨어의 지원을 받아 logical 메모리 주소가 물리적인 메모리 주소로 바뀜

커널 주소 공간의 내용

  • 2D : Table (Data Structure)

  • 3D : Object (hardware or software)

  • 운영체제의 코드는 프로그램마다 커널을 따로 두어 얼마든지 접근하여 사용 가능하다.

    • 자원 관리의 코드로 쓰이기도 한다.

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

  • 함수
    1. 사용자 정의 함수 : 자신의 프로그램에서 정의
    2. 라이브러리 함수 : 갖다 쓴 함수, 실행 파일에 포함
    3. 커널 함수 : 커널 코드에 들어있는 함수, 시스템 콜로 호출

프로그램의 실행

  • System call을 통해 user mode에서 kernel mode로 전환된다.

profile
물리학 전공자의 프로그래밍 도전기

0개의 댓글