본문 바로가기
전공/OS

CH01. Computer System Overview (1)

by 임 낭 만 2024. 4. 22.
OS (Operating System) = 소프트웨어 

Basic Elements

1. Processor (CPU)

시스템 안에 있는 가장 기본적인 요소

2. Main Memory 

memory는 굉장히 큰 저장 공간임.

그러나 여러 프로그램을 담기에는 프로그램 자체도 크기가 크고 개수가 많음.

따라서 메모리를 나눠서 사용해야 함

  • volatile : 휘발성; 메인 메모리와 관련된 중요한 특성 
    • 컴퓨터의 CPU가 현재 처리중인 데이터나 명령어만을 일시적으로 저장함
    • 전원이 꺼지면 메인 메모리에 저장되어 있던 모든 내용들은 사라지게 됨
    • 데이터를 유지하고 싶으면, 데이터를 하드디스크에 저장해야 함.

3. I/O modules

  • secondary memory devices (disks)
    • 하드디스크
  • communications equipment
    • 네트워크로 데이터를 보내면 출력이 되고, 네트워크를 통해서 데이터를 받으면 입력이 됨. (통신에 중요한 장비들)
  • terminals
    • 모니터, 마우스, 키보드, 프린터 

4. System Bus

  • communication among processors, memory, and I/O modules
  • processor와 Main memory와  I/O modules를 system bus로 연결함.
  • 데이터가 지나다니는 통로 

프로그램은 I/O modules(그 중에서도 하드디스크)에 있다가 실행을 시작하면 system bus를 타고 Main memory로 올라감. 프로그램은 한 번에 한 줄씩 CPU로 옮겨가서 실행을 하게 됨 


Computer Component : Top-Level View

프로그램 = instruction + data

  • Instruction : 무엇을 하라는 명령들
  • Data : 지역 변수 ❌, 전역 변수와 static 변수 
    • local 변수들을 위한 저장공간은 코드를 실행할 때마다 stack을 만들어짐. 
    • 그 후 함수 return이 되면 사라짐
    • 그러나 전역 변수나 static 변수는 프로그램 실행 시작부터 끝까지 계속 존재함. 아예 컴파일 할 때 저장 공간이 같이 만들어짐 

Instruction Register (IR) 

Instruction을 가져오면, 가져온 instruction을 저장해두는 곳. 

즉, 현재 실행중인 명령어를 기억하는 register

 

Accumulator (AC)

CPU 안에는 범용 레지스터라고 메모리에서 가져온 데이터들을 저장하고 계산한 중간 결과들을 저장할 수 있는 레지스터 set이 있음 

데이터를 임시 저장하는 레지스터 

 

Execution Unit

연산을 하는 연산 장치 (덧셈, 뺄셈, AND, OR, shift 계산 등)

 

MAR & MBR

System Bus와 연결되어 있음. (CPU 안의 모든 register가 다 system bus와 모두 연결되어 있는 것은 아님)

  • MAR (Memory Address Register : 기억 장치 주소 레지스터) 
    • 다음에 수행될 명령어를 인출하기 위해 현재 PC에 들어있는 주소가 시스템 주소 버스로 출력되기 전에 일시적으로 저장되는 주소 레지스터
  • MBR (Memory Buffer Register : 기억 장치 버퍼 레지스터)
    • 레지스터와 외부에 연결되는 장치 사이에서 전송되는 데이터의 전송통로.
    • 기억 장치로 쓰일 데이터나 기억 장치로부터 읽어온 데이터를 임시로 저장하는 레지스터 
    • CPU 안에 있는 모든 레지스터가 메모리에 연결되는 것이 아니라, CPU 안으로 들어오는 모든 명령어들과 데이터들은 MBR을 거침. 
    • MAR의 실제 콘텐츠(데이터, 명령어)가 들어있음 
어떤 데이터가 필요하면 일단 그 데이터는 MBR로 왔다가 그 다음 특정 레지스터로 이동하는 것임.
Instruction을 읽어올 때도 일단 모든 Instruction은 MBR로 왔다가 그 다음 IR로 이동함

100번지에 있는 Instruction 또는 Data를 가지고 오고 싶음 → MAR에 100이라고 적음. read 명령 수행 → 명령 또는 데이터가 MBR로 이동 → 만약 Instruction이면 MBR에서 IR로 보내고, Data이면 범용 레지스터 중 한 곳으로 보냄

300번지에 Data를 보내고 싶음 → MAR에 300이라고 적음, MBR에 Data를 적음. → 메모리 쓰기 명령 실행→ 300번지에 MBR에 있는 내용이 저장됨

따라서 메모리와 CPU 사이를 왔다갔다 하는 Instruction이나 Data는 전부 MAR과 MBR을 거치도록 되어있음

 

I/O AR & I/O BR

System Bus에 연결이 되어서 MBR, MAR과 똑같은 역할을 수행

CPU와 I/O Modules 안에 있는 Buffer 사이를 이동하는 데이터의 이동 통로

작동 방식은 위와 같음

I/O 모듈 안에 왜 버퍼가 필요하지?
속도 차이 때문에
CPU는 굉장히 빠름 

CPU는 출력하려는 데이터를 I/O 모듈안에 있는 버퍼로 보내고 CPU는 그 다음 명령을 수행함 → I/O 모듈 안에서 I/O Device가 알아서 버퍼에 있는 내용을 출력함 (입력도 마찬가지. 입력을 다 받은 다음에 한꺼번에 데이터를 옮기게 되어있음)

I/O 모듈 안의 버퍼와 CPU 사이에 데이터가 왔다 갔다 하는 이동 통로가 I/O AR, I/O BR

 

Program Counter (PC) 

다음에 실행할 명령의 주소가 저장됨 (정확히는 다음에 실행할 것 같은 명령의 주소) 

가장 중요한 register임.

명령을 하나 실행할 때마다(명령 처리 하나가 끝나고나면) PC에 있는 값을 MAR로 옮기고, memory에서 읽기를 하면 다음 명령이 MBR로 이동함. 


Instructions

A Program

Instructions와 Data의 집합

Instructions

  • Processor-memory data transfer
    • 프로세서와 메모리 사이의 데이터 이동.
    • ex) 메모리 몇 번지에서 데이터를 CPU로 가져와라. CPU에 있는 데이터를 메모리의 몇 번지에 저장해라..
  • Processor-I/O data transfer 
    • 프로세서와 I/O 모듈 사이의 데이터 이동
    • ex) CPU에 있는 데이터를 출력해라. 입력받은 데이터를 CPU로 가져와라
    • (입출력 명령들) 
    • CPU ↔ I/O 
  • Data processing
    • 더하기, 빼기, AND, OR, SHIFT 등 
  • Control 
    • 조건문, 반복문, 점프 등.
    • 복잡한 프로그램을 만들 수 있게 해줌 

Instruction Execution

Two steps

  • 프로세서가 메모리로부터 instructions(명령어)을 읽어옴
  • 프로세서가 각각의 instruction을 실행함 

Basic Instruction Cycle

 

  • Fetch Stage
    • 명령을 메모리에서 CPU로 가져와야 함 
  • Execute Stage
    • 가져온 명령을 분석하고, 필요한 데이터를 가져오고, 연산을 함 (Fetch보다 긺)

Fetch와 Execute까지 끝나야 명령 하나가 실행이 되는 것임 → Instruction Cycle


Example of Program Execution

etch execute cycle이 반복이 되면서 세 개의 명령을 실행하는 과정을 그림으로 그려놓은 것

 


Control and Status Registers

범용 레지스터 : 데이터를 저장하는 레지스터

시스템 안에서 프로그램이 실행되는 상황, 시스템의 상황 등을 관리하는 중요한 레지스터임. 

Program Counter (PC)

다음에 실행할 명령의 주소가 들어있음.
사실.. 다음에 실행할 것 같은 명령임

프로그램은 한 번에 한 명령씩 실행함.

fetch stage가 시작되기 바로 직전에 PC에는 다음에 실행할 명령의 주소가 들어있음

따라서 fetch stage가 시작되면 PC에 있는 값을 MAR로 옮기고 Instruction을 읽어오는 것임

그리고 fetch stage에서 다음 명령을 가져옴.

명령을 가져오고 나면 fetch가 끝나는 시점에 PC 내용은 바뀜

(만약 100번지 명령이었으면 101로 바뀜. 바로 다음줄 명령을 실행하는 것이 default라서)

 

BUT. 만약 가져온 명령이 JUMP 명령이었으면 (갑자기 300번지로 뛰는 명령이라면) Execute stage에서 PC의 값을 300번지로 바꿈

따라서 PCexecute stage가 끝날 때 300으로 바뀜

fetch stageexecute stage에서 PC의 값이 계속 바뀔 수 있기 때문에 다음에 실행할 것 같은 명령이라고 표현함

 

Instruction Register (IR) 

현재 실행하고 있는 명령어의 주소 저장 
fetch stage 시작부터 execute stage 끝까지 IR 안에는 지금 실행하고 있는 명령 자체가 계속 들어있어야 됨

 

Program Status Word (PSW)

전체 시스템을 관리할 목적으로, 
비트 단위로 한 비트마다 다양한 정보들을 저장해놓음
크게 아래 세 가지 정보들을 가지고 있음. 시스템 안에 있는 다른 정보들보다 중요한 정보들임
  • Condition Codes
    • 조건의 결과를 저장 
    • 연산 결과가 0보다 크다 작다 같다, 오버플로우가 발생했다 등을 나타내는 코드 (2비트 사용)
  • Interrupt enable / disable
    • 프로그램은 stage가 끝나야 바꿀 수 있음
    • execute stage가 끝나면 계속 이 프로그램을 실행할지 다른 프로그램으로 넘어갈지 OS가 결정할 수 있음
    • 그 사이에서 interrupt가 걸렸으면 그것을 OS에게 알려주는 비트
  • Supervisor / user mode 
    • 명령 하나가 끝나기 전까지는 프로그램을 바꿀 수 없음. 만약 중간에 interrupt가 걸렸다면 OS가 와서 작업해줌. 
    • interrupt가 걸리면 OS를 불러서 OS가 실행을 시작하고, OS가 실행을 시작하면 비트를 Supervisor mode로 세팅 → OS가 작업을 끝마치고 다음 프로그램을 실행시키기 직전에 저 mode를 User mode로 바꿔줌. 
    • Supervisor mode와 User mode가 달라야 하는 이유
      • 굉장히 큰 메모리 공간을 같이 사용함
      • OS는 메모리 안에 어느 부분이든 다 access 할 수 있어야 하고, 어플리케이션 프로그램은 자기에게 할당된 부분만 access 할 수 있음.

'전공 > OS' 카테고리의 다른 글

CH03. Process Description and Control (1)  (0) 2024.04.23
CH02. Operating System Overview (2)  (0) 2024.04.23
CH02. Operating System Overview (1)  (1) 2024.04.23
CH01. Computer System Overview (3)  (0) 2024.04.23
CH01. Computer System Overview (2)  (0) 2024.04.22

댓글