Skip to content

Latest commit

 

History

History
74 lines (64 loc) · 3.1 KB

시스템의_구조와_프로그램_실행2.md

File metadata and controls

74 lines (64 loc) · 3.1 KB

시스템의 구조와 프로그램 실행2

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

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

동기식

  • '동기식' 이라는 표현은 익숙하지 않아 Synchronous가 감이 더 잘 올 수 있다!
  • I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어간다
  • 구현 방법 1
    • I/O가 끝날 때까지 CPU를 낭비시킨다
    • 매 시점 하나의 I/O만 일어날 수 있다
  • 구현 방법 2
    • I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗는다
    • I/O 처리를 기다리는 줄에 그 프로그램을 줄세운다
    • 다른 프로그램에게 CPU를 준다

비동기식

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

DMA (Direct Memory Access)

  • 빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해 사용
  • CPU의 중재 없이 Device controller가 Buffer storage의 내용을 메모리에 block 단위로 직접 전송
  • 바이트 단위가 아니라 Block 단위로 인터럽트를 발생시킴
  • ex) 키보드 키 하나를 누를때마다 인터럽트가 걸리면 CPU의 효율이 떨어지므로 DMA Controller가 Memory로 복사 후 Block 단위로 인터럽트

저장장치 계층 구조

가장 상위

  • CPU

Primary

  • Registers
  • Cache Memory
  • Magnetic Disk

Secondary

  • Magnetic Disk
  • Optical Disk
  • Magnetic Tape

위로 갈수록 빠르지만 비싸며 휘발성이다

Caching : 정보를 더 빠른 Storage system에 복사하는 것

프로그램의 실행 (메모리 Load)

  • 프로그램은 실행파일의 형식으로 파일 시스템에 저장이 되어있다
  • 프로그램을 실행하면 메모리로 올라가서 프로세스가 된다
  • 정확하게는 물리적인 메모리에 바로 올라가는 것이 아닌 중간에 Virtual memory라는 단계를 거친다 이때 주소공간이 형성되며 code, data, stack으로 구성된다
  • 커널의 주소 영역은 부팅후 부터 메모리 영역에 상주하지만 프로그램은 일부만 올라가며 일시적이다

커널 주소 공간의 내용

  • Code
    • 시스템콜, 인터럽트 처리 코드
    • 자원 관리를 위한 코드
    • 편리한 서비스 제공을 위한 코드
  • Data
    • 운영체제가 사용하는 자료구조
    • CPU, Memory, Disk와 같은 하드웨어를 관리하고 통제하기 위한 자료구조
    • Process를 관리하기 위한 각 프로그램의 자료구조 (PCB : Process Control Block)
  • Stack
    • 운영체제는 함수구조로 짜여져 있기 때문에 함수를 호출할때 사용되는 커널 Stack

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

  • 사용자 정의 함수
    • 자신의 프로그램에서 정의한 함수
  • 라이브러리 함수
    • 자신의 프로그램에서 정의하지 않고 가져다 쓴 함수
    • 자신의 프로그램의 실행 파일에 포함되어 있다
  • 커널 함수
    • 운영체제 프로그램의 함수
    • 커널 함수의 호출 == 시스템 콜