System Structure & Program Execution 2: 동기와 비동기, 저장장치 구조, 프로그램의 실행, 커널

ㅎㅎ·2023년 7월 6일
0

운영체제, 반효경

목록 보기
3/19

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

  • 동기식: I/O 작업이 끝나야 제어가 사용자 프로그램에 넘어감
    • 구현방법1: 작업이 끝날 때까지 기다림, I/O가 끝날 때까지 CPU를 낭비, 매시점 하나의 I/O만 일어날 수 있음
    • 구현방법2: I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼았음, I/O 처리를 기다리는 줄에 그 프로그램을 줄 세움, 다른 프로그램에게 CPU를 줌
  • 비동기식: I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에게 즉시 넘어감
  • 두 경우 모두 I/O의 완료는 인터럽트로 알려줌


저장장치의 계층 구조

  • 위로 갈수록 속도가 빠르지만 비싸고 용량이 적다.
  • Primary 파트 <-> Secondary
    • 휘발성(전원 오프시 저장 X)
    • CPU에서 직접 접근 가능(cpu가 접근하는 Byte 단위로 접근 가능)
  • Cache가 Main Memory와 Register 사이의 속도 차이를 보완해주는 저장공간의 역할을 함


프로그램의 실행(어떻게 컴퓨터에서 실행되나?)

  • 파일의 코드를 읽어서 메인 메모리에 올리면 프로그램이 실행됨
  • 중간에 가상메모리를 거치게 됨
  • 프로그램을 실행시키면 해당 프로그램만의 독자적인 주소공간(Virtual Memory)이 만들어짐(Address space: code, data, stack)
  • 메모리 낭비를 막기 위해 실행에 필요한 특정 주소 공간만 물리적인 메모리에 올리고 나머지는 Swap area라는 디스크 공간에 넣어 놓음
  • 가상메모리에서 메인메모리로 올릴 때 주소 변환을 거침(Address transition)


커널 주소 공간의 내용

  • 커널도 하나의 프로그램으로서 주소 공간을 가짐
  • code: 운영체제가 하는 일에 관한 코드가 담김
  • data: 운영체제가 사용하는 자료구조가 담김(HW를 관리하기 위한 자료구조 관련 코드), PCB(프로그램의 관리를 위해 프로그램마다의 정보를 담은 자료구조)
  • stack: 운영체제도 함수로 구성되어 있기에 호출된 함수들의 정보, 프로세스마다 스택을 따로 관리


의문점 정리

  • Instruction 수행과 Interrupt Line의 확인은 어떤 순서로 ? 언제 발생하는가? 하나의 Instruction이 끝나야만 Interrupt Line을 확인하는가 아니면 중간에도 확인이 가능한가?

profile
Hello World

0개의 댓글