미가공 필기(운영 체제)

OS1

JoJobum 2021. 7. 20.

OS 역활 : 유저에게 서비스 제공, Memory 랑 I/O Device 관리

 

OS 요소 

  • I/O
  • Process
  • Main Memory (휘발성 - 전기로 유지) 
  • System Bus (연결다리)

주 기억장치 - 보조 기억장치 ( ex 하드 디스크, 데이터 영구(?) 보관) 

 

 

PC = Program counter : 다음에 수행할 명령어 주소 저장

IR = Instruction register : 현재 실행 중인 명령어 저장

MAR = Memory address register : 읽기와 쓰기 연산을 수행할 주 기억장치 주소 저장

MBR = Memory buffer register : 주 기억장치에서 읽어온 데이터 or 저장할 데이터 임시 저장

AC = Accumulator : 연산 결과 임시 저장

I/O AR = Input/Output address register  

I/O BR = Input/Output Buffer register

 

System Bus의 역활 : Components 사이의 데이터 이동시키는 wire, protocol

 

 

CPU의 기본 동작

  1. 주기억장치는 입력장치에서 입력받은 데이터 또는 보조기억장치에 저장된 프로그램 읽어옴
  2. CPU는 프로그램을 실행하기 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고 결과를 다시 주기억장치에 저장
  3. 주기억장치는 처리 결과를 보조기억장치에 저장하거나 출력장치로 보냄
  4. 제어장치는 1~3 과정에서 명령어가 순서대로 실행되도록 각 장치를 제어

 

명령어 사이클 : 인출 - 실행 - 간접 - 인터럽트

 

 

인출(Fetch) 단계 : 명령어를 명령 레지스터(IR)를 통해 가져와 해독 

  • MAR <- PC : PC에 저장된 주소를 MAR에 전송 
  • 저장된 내용을 토대로 주기억장치의 해당 주소에서 명령어 인출 
  • 인출한 명령어를 MBR에 저장
  • MBR <- M[MAR] : MAR이 지정하는 주소값을 MBR에 전송
  • PC <- PC + 1 : 다음 명령 실행하기 위해 PC의 값 1증가
  • IR <- MBR : 명령어의 OP-Code 부분을 IR에 불러옴
  • I <- MBR : 명령어의 모드 비트를 플립플롭 I에 전송하여 
    • 0이면 Execute 단계
    • 1이면 Indirect 단계 (간접 주소이기에 유효주소 찾으러 가는 것)

 

Indirect 단계

  • MAR <- MBR : MBR에 있는 명령어의 주소 부분을 MAR에 전송
  • MBR <- M[MAR] : MAR이 지정하는 주소값을 MBR에 전송
  • 플립플롭에 값 전송하여 Execute 단계로 진입

 

인터럽트 단계

  • MBR[AD] <- PC : PC의 복귀 주소를 MBR의 주소 부분으로 전송
  • PC <- 0 : 복귀 주소를 저장할 위치를 지정
  • MAR <- PC : PC가 가진 0번지 주소를 MAR에 전송
  • PC <- PC+1 : 인터럽트를 처리하는 서브 루틴으로 이동하기 위해 인터럽트 벡터의 위치를 지정하기 위해 PC 위치 값을 1 증가
  • M[MAR] <- MBR : MBR이 가진 다음 실행한 명령의 주소를 메모리의 MAR 부분에 저장
  • IEN <- 0 : 인터럽트 단계 마칠 때까지 다른 인터럽트 발생 막기 위해 IEN에 0 전송
  • 플립플롭에 값 전송하여 인출단계로 진입

 

Interrupt :

  • I/O 장치들은 CPU 보다 보통 느림 
  • I/O를 기다리는 것이 아니라 할 일 하다가 입력(Interrupt) 오면 반응하는 방식

인터럽트가 사용하지 않는 경우 : 논리적으로 명확 / 느림

인터럽트 사용하는 경우 : 빠름 / 설계 복잡, 모든 경우 계산 못함

 

 

 

 

 

 

 

System Bus 의 역활 : Components 사이의 data 이동시키는 wire protocol, 즉 각 요소들간의 통신을 가능하게 해준다

 

H/W - 비싸지만 빠름

S/W - 싸지만 갈수록 복잡해짐

 

 

  1. 인터럽트 요청 검사 
    • 인터럽트 소스가 CPU에 신호 보냄 Execution stage 끝내고 신호 확인 후 interrupt stage 실행
  2.  인터럽트 stage
    • Interrupt Enable( IE ) 플래그 0으로 (기존의 것 처리 전까지 다른 인터럽트 받지 않기 위해)
    • interrupt acknowledge : CPU가 인터럽트 소스에 승인 신호 보냄 
    • 인터럽트 서비스 루틴 시작 주소 알아냄
    • 루틴 실행 준비 (context switch) : context (인터럽트 후 복귀할 때 필요한 최소 정보= SR, PC) 를 stack에 저장
  3. 인터럽트 실행 
    • IE 플래그 1로 만듬
    • 인터럽트 자신이 사용할 레지스터들은 스택에 저장
    • 인터럽트 소스가 요청한 일 처리
    • 스택에 저장했던 레지스터 복구
  4. 인터럽트 return 
    • SR, PC 복구됨, 실행 중지된 프로그램 다시 실행

 

 

  • Programmed I/O

프로세서가 주기적으로 I/O 모듈 상태 체크 (지시가 끝날 때까지)

I/O 모듈은 요구받은 행동하고 I/O Status 레지스터에 적절한 비트 설정함으로서 CPU에 보고함

 

 

 

  • Interrupt- Driven I/O

CPU가 계속 확인하는 것이 아니라 인터럽트 발생시 행동

CPU 낭비가 Programmed I/O 보단 덜함 

but, 프로세서가 I/O transfer를 위해 작업해야함

캐시가 missed and flushed => 속도가 낮아짐

(캐시가 데이터 이동시키는데 사용되어 기존 데이터 날라감)

 

  • Direct Memory Access(DMA)

Performed by 분리된 모듈 (시스템버스 소속)

프로세서가 데이터 읽고 쓰기할 때 DMA 모듈에 명령

데이터 블록 I/O Controller와 메모리 사이 운반 without 프로세서 (처음과 마지막에만 개입)

Programmed I/O, Interrupt Driven I/O 보다 효율적 why? 

캐시가 날라가는 문제, 데이터 이동에 CPU가 관여하는 문제 모두 해결 

 

 

  • Symmetric Multiprocessors (SMP)

2개 이상의 프로세서 

메인 메모리 공유, interconnected by Bus, I/O 장치 access 권한 가짐 

모두 동일한 일 함, 단일 OS가 관리함 => 일을 더 효율적으로 한다 

단일 운영 체제 인스턴스에 의해 제어되는 다중 프로세서 컴퓨터 하드웨어 및 소프트웨어 아키텍처

 

장점 :

  • perfomance
  • scaling
  • availability (프로세스 하나 고장나도 동작 가능)
  • incremental growth (프로세스 추가 확장 가능) 

 

 

 

Secondary Memory 

  • External
  • Nonvolatile

Principle of locality : 데이터의 접근이 한부분에 집중되는 현상

=> 활용하여 저렴한 비용으로 많은 고성능 메모리 사용

 

반응형

'미가공 필기(운영 체제)' 카테고리의 다른 글

OS2  (0) 2022.02.17

댓글