본문 바로가기
Computer Science/OS

[OS] 컴퓨터 시스템 구조

by Bhappy 2022. 2. 16.

Computer는 CPU와 Memory를 의미하며 host라고도 한다.
I/O Device는 host에 붙어서 데이터를 컴퓨터 안으로 넣는 input이나, host에서 처리된 결과를 내보내는 output장치이다.
우리는 I/O Device를 통해 Computer와 소통하게 된다.

CPU

instruction 실행 - interrupt line체크 반복

매 clock마다 program counter가 가르키고 있는 memory주소에서 instruction(기계어)를 읽어서 실행

interrupt가 들어오면 CPU의 제어권을 운영체제에게 넘김

  • interrupt line : CPU에게 키보드 입력, 디스크 파일 읽기 (I/O Device)등의 활동을 전달
  • register : CPU내부에 있는 메모리보다 더 빠르게 정보를 저장하는 작은 공간. memory의 주소를 가르키고 있는 program counter존재
  • mode bit : CPU에서 실행되는 것이 운영체제인지 사용자프로그램인지 구분

mode bit

Operating System Concepts

  • 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보조 장치
  • CPU를 사용자 프로그램이 가지고 있는지, 운영체제가 가지고 있는지 구분
  • 하드웨어적으로 두가지 모드의 operation 지원
    • 운영체제가 가지고 있을 때 : 모니터 모드, 커널보드, 시스템 모드 (0)
      • OS 코드 수행
      • 보안을 해칠 수 있는 중요한 명령어(특권명령) 수행 가능
      • interrupt나 exception 발생시 하드웨어가 mode bit을 0으로 변경
    • 사용자 프로그램이 가지고 있을 때 : 사용자 모드 (1)
      • 사용자 프로그램 수행
      • 한전된 명령어(일반명령)만 수행 가능
      • 사용자 프로그램에게 CPU를 넘기기 전에 mode bit을 1으로 변경

Memory

CPU의 작업 공간

 

Memory Controller

DMA Controller, CPU에서 특정 메모리 영역을 동시에 접근 할 때 문제가 생길 수 있어서 중재하는 역할

 

DMA Controller(Direct Memory Access)

  • I/O 장치들로부터 너무 많은 interrupt가 발생하면 CPU가 방해 받음 (overhead발생)
  • 과정 : I/O 작업 > 결과 local buffer에 입력 > DMA Controller가 읽어서 memory에 복사 > 작업 다 끝나면 CPU에 interrupt
  • DMA Controller가 일을 다 한 것을 보고만 해주므로 CPU가 interrupt당하는 횟수가 줄어듬
  • 원칙적으로 memory에 접근 할 수 있는건 CPU뿐이었는데 DMA Controller도 접근 할 수 있게 됨

 

Timer

  • 정해진 시간이 흐른 뒤 운영체제에게 CPU제어권이 넘어가도록 interrupt발생
  • 타이머는 매 clock마다 1씩 감소
  • 타이머 값이 0이 되면 타이머 interrupt발생
  • CPU를 특정 프로그램이 독점하는 것으로부터 보호
  • Time Sharing을 구현하기 위해 이용

 

Device Controller(장치 제어기)

  • 해당 I/O 디바이스를 전담하는 일종의 작은 CPU
  • 제어 정보를 위해 control register, status register를 가짐
  • 작업공간인 Local Buffer를 가짐 (main cpu의 memory같은 역할)
  • I/O는 실제 device와 local buffer사이에서 일어남
  • I/O가 끝났을 경우 cpu에게 interrupt

 

Local Buffer

  • 장치 제어기의 작업공간 (main cpu의 memory 같은 역할)

 


입출력(I/O)의 수행

모든 입출력 명량은 특권명령

사용자 프로그램은 어떻게 I/O를 하는가?

  • 시스템 콜 (Sytem Call)
    • 사용자 프로그램이 운영체제의 커널 함수를 호출하는 것
    • 사용자 프로그램은 운영체제에게 I/O 요청
  • trap을 사용하여 인터럽트 백터의 특정 위치로 이동
  • 제어권이 인터럽트 백터가 가리키는 인터럽트 서비스 루틴으로 이동
  • 올바른 I/O요청인지 확인 후 I/O 수행
  • I/O 완료 시 제어권을 시스템콜 다음 명령으로 옮김

 

인터럽트 (Interrupt)

인터럽트 당한 시점의 레지스터와 program counter를 저장한 후 CPU의 제어를 인터럽트 처리 루틴에 넘긴다

  • Interrupt (하드웨어 인터럽트) : 하드웨어가 발생시킨 인터럽트
  • Trap (소프트웨어 인터럽트)
    • System call : 프로그램이 커널 함수를 호출하는 경우
    • Exception : 프로그램이 오류를 범한 경우

관련 용어

  • 인터럽트 백터(인터럽트 번호 - 인터럽트 처리 루틴 주소 쌍) : 해당 인터럽트의 처리 루틴 주소를 가지고 있음
  • 인터럽트 처리 루틴(= interrupt service routine, 인터럽트 핸들러) : 해당 인터럽트를 처리하는 커널 함수. 실제 해야 할 일
  • 운영체제 안에 인터럽트 마다 왜 인터럽트가 걸렸는지 이유와, 인터럽트 상황에 맞게 처리해야할 일들이 커널 함수로 정의 되어 있음

현대의 운영체제는 인터럽트에 의해 구동됨

1) System call (시스템 콜)

interrupt ex) system call

  • 사용자 프로그램이 운영체제 서비스를 받길 원할 때, 운영체제 주소로 점프 해야하는데 mode bit이 1일 때는 못하기 때문에 시스템 콜을 통해 mode bit을 0으로 바꿈
  • 사용자 프로그램이 운영체제 함수를 호출(시스템 콜)하게 되면 의도적으로 인터럽트 라인을 세팅함
  • 인터럽트 라인이 세팅됐기 때문에 CPU는 하던 일을 멈추고 제어권을 운영제제에게 넘겨줌

2) Timer (타이머)

interrupt ex) timer

  • 운영체제가 CPU를 사용자 프로그램에게 넘겨줄 때 mode bit을 1로 바꿔서 넘겨주기 때문에 보안에 어긋난 행동을 할 수는 없으나 CPU를 가지고 놓지 않을 수 있음(무한루프)
  • 이를 대비해 사용자 프로그램에 CPU를 넘겨줄 떄 타이머에 시간을 세팅, 이후 시간이 다 되면 CPU를 뺏음
  • 운영체제는 타이머의 도움을 받아서 여러 프로그램이 번갈아가면서 CPU를 쓸 수 있게 함

3) I/O

interrupt ex) I/O

  • I/O 요청 : 소프트웨어 인터럽트 (system call)
  • I/O 종료 : 하드웨어 인터럽트(device controller)

 

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

  • 동기식 입출력(Synchronous I/O) : I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감
  • 비동기식 입출력(Asynchronous I/O) : I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감

 

저장장치 계층 구조

Operating System Concepts

위로 갈 수록 빠름, 단위공간당 가격 비쌈, 용량 적음

휘발성(Volatility)

  • 휘발성 매체(디램, 에스램, 레지스터) : 전원 나가면 사라짐
  • 비휘발성 매체 : 전원 나가도 사라지지 않음

CPU 접근

  • Primary : CPU 접근 (byte단위 접근) 가능
  • Secondary : CPU 직접 접근 불가

캐싱(caching)

  • 재사용 목적
  • 용량이 위로갈수록 작아지기 때문에 모든걸 저장해서 읽어둘 수 없음

 


[참고]

KOWC 반효경 교수님 운영체제 강의

Operating System Concepts PPT

 

'Computer Science > OS' 카테고리의 다른 글

[OS] 프로그램 실행  (0) 2022.02.19
[OS] 운영체제의 분류  (0) 2022.02.13
[OS] 운영체제란  (0) 2022.02.12

댓글