본문 바로가기
카테고리 없음

컴퓨터 시스템 [OS]

by winter_sunshine 2023. 7. 1.

 

안녕하세요 ~!  저번 시간에 이어서 이번 시간에는 '컴퓨터 시스템과 운영체제'에 대해 설명하겠습니다.

운영체제를 제대로 공부하기 위해서는 '컴퓨터 시스템'에 대해서 제대로 알아야만 이해할 수 있습니다.

그러하여 이번 시간에는 컴퓨터 시스템부터 알아보고, 그 다음에 운영체제와 연관하여 설명하는 시간을 가지겠습니다~!

  1.   컴퓨터 시스템의 계층

 

컴퓨터 시스템의 계층

 

  • 위와 같이 컴퓨터 시스템계층 구조로 되어있다.
  • 응용 소프트웨어 - 운영체제 - 컴퓨터 하드웨어 순으로 계층화가 되어있고, 서로 상호작용하며 컴퓨터 시스템이 동작한다.

 

2.   버스를 이용한 장치 간의 연결

  • 버스:  데이터 전달을 위한 경로(연관된 선들의 다발)

컴퓨터 시스템의 버스 구조

 

3.   '시스템 버스'의 종류

  • 주소 버스 (Address Bus)
    • CPU가 지정하는 주소 정보를 전송하기 위한 신호 선들의 집합
    • CPU가 접속할 수 있는 최대 기억장치 용량을 결정
      • Ex) 주소 버스가 10비트  =>  2^10개의 서로 다른 주소 값들을 생성 가능
      • ★ 메모리 슬롯이 많아도, 메인 메모리의 주소 버스 비트 수에 따라 접근할 수 있는 최대 메모리 용량이 달라      짐.
  • 데이터 버스 (Data Bus)
    • CPU가 다른 구성 요소들과 데이터를 주고 받기 위한 신호 선들의 집합
    • 한 번에 전송할 수 있는 비트 수를 결정
      • Ex) 데이터 버스 1비트  =>  CPU는 메모리부터 한번에 최대 1비트 데이터를 읽어옴.
      • Ex) 데이터 버스 32가닥  =>  CPU는 한 번에 최대 32비트 데이터 입출력이 가능함. 
  • 제어 버스 (Control Bus)
    • CPU가 다른 구성 요소들의 동작을 제어하기 위한 신호 선들의 집합

 

4.  입출력 제어장치 및 시스템 제어 회로

  • 입출력 장치들을 제어하기 위한 여러 H/W 회로
    • 입출력 장치에게 명령을 전달
    • 메모리 - 입출력 장치,  CPU - 입출력 장치 간의 데이터 전달 중계
    • DMA 컨트롤러 (Direct Memory Access Controller,  DMAC),  인터럽트 제어장치 (Interrupt Controller, INTC) 등

 

5.   현대 PC의 구조

 

 

6.   현재 대부분의 컴퓨터의 기본 구조

  • 폰 노이만 구조 (von Neumann architecture)
    • 프로그램 내장 방식 (stored program)  =>  내장 프로그래밍 방식
      • 명령어와 데이터로 구성된 프로그램을 2진 비트열주 기억장치(메인 메모리)에 적재하고,                      CPU가 순차적으로 실행
      • 인출 - 해석 - 실행 (fetch - decode - execute) 주기의 반복

 

폰 노이만 구조 (프로그램 내장 방식)

 

 

7.   CPU와 메모리

  • CPU는 접근할 메모리 지정을 위해 주소를 사용
    • Ex) 32비트 CPU,  32비트 OS,  32비트 컴퓨터   =>   주소 버스가 32bit,  2^32개의 서로 다른 주소 값 생성 가능, 주소는 1byte 단위이므로, 32비트 CPU에서 프로세스의 주소공간의 크기는 2^32byte = 4GB
  • 캐쉬 메모리 (Cache Memory)
    • CPU와 main memory의 속도 차이로 인한 성능 저하를 방지하기 위한 방법                    
      • 데이터를 이동시키는 중간 버퍼로 작용
      • CPU와 사용자에게 transparent
      • 주기억장치(main memory)보다 고속, 소량의 메모리
    • 종류
      • 온칩 캐시(on-chip):  CPU 내부에 설치되는 캐시
      • 옵칩 캐시(off-chip):  CPU 외부에 설치되는 캐시
     

Cache Memory

 

 

8.  주소버스주소공간의 크기의 연관성

 

주소버스와 주소공간의 크기

 

9. 기본적인 CPUMain memory의 연결구조 

 

CPU와 Main memory 연결구조

 

    • PC (Program Counter) :  프로세서(CPU) 내부에 있는, 다음 인출(Fetch) 될 명령어의 주소를 가지고 있는 레지스터. 때문에 명령어 포인터라고도 한다.

 

    • CU (Control Unit) : 명령 제어장치 , 입력된 명령어를 해독하여 CPU내부의 움직임을 총괄하고 각과정을 통제한다.
      주로 데이터를 메모리로부터 ALU로 옮기라는 명령과 그 후 다시 메모리로 옮기는 명령을 내린다.

 

    • ALU (Arithmetic Logic Unit) : 산술연산장치 ,  CU(Control Unit)로부터 명령을 받아 CPU로 들어온 모든 데이터들을 산술연산, 논리연산한다. (산술연산 : 덧셈과 같은 숫자 계산 , 논리연산 : 대수비교, 저장등)
      ALU에는 연산을 담당하는 가산기, 보수기와 같은 요소들이 있다.

 

    • MAR (Memory Address register) : PC(Program Counter)에 저장된 명령어 주소가 사용되기 전에 일시적으로 저장되는 주소 레지스터

 

    • ACC (Accumulator) : 연산에 사용될 데이터를 일시적으로 저장하는 레지스터

 

    • 프로세서 (Processor) : CPU, GPU, 응용 전용 처리장치 등

 

    • 메모리(Memory) : 주기억장치(RAM), 보조 기억장치(Hard Disk, SSD) 등

 

    • SP(Stack Pointer) : 스택(Stack)에 데이터를 삽입(Push)하거나 제거(POP)할 때 사용되며, 스택의 최상단에 위치한 최근에 삽입된 데이터의 주소를 가리키는 포인터

 

    • Flag register : 산술 연산 결과의 상태를 보여주는 flag bit들이 모인 레지스터.
      산술 연산시 CPU에 의해 자동적으로 세팅되며 , 프로세서(CPU)의 현재 상태를 결정. '상태 레지스터' 라고도 함. 

 

    • IR (Instruction Register) : 가장 최근에 인출된 명령어(현재 실행 중인 명령어)가 저장되어 있는 레지스터

 

  •  MBR (Memory Buffer Register) : 기억장치에 저장될 데이터 혹은 읽혀진 데이터가 일시적으로 저장되는 버퍼 레지   스터

 

10.  명령어 사이클 (Instruction cycle)

  • CPU 내에서 명령어를 수행하기 위한 일련의 반복 과정
    • 명령어 인출 (Instruction Fetch) 사이클
    • 명령어 실행 (Instruction Execute) 사이클
  • 컴퓨터는 전원이 켜진 이후 명령어 사이클을 반복

 

명령어 사이클 (Instruction cycle)

 

  •  CPU 명령어 사이클의 예

CPU 명령어 사이클 예시

 

11.   메모리 할당

  • 프로그램이 실행되기 위해 OS에 의해 할당되는 공간

메모리 '기본 구조'와 '할당 방식'

 

12.   각 프로그램마다 메모리에 할당된 스택

  • 스택(Stack)은 OS에 의해 프로그램마다 메모리에 할당된 일부 영역이다.

각 프로그램마다 메모리에 할당된 스택

 

13.  컨텍스트 스위칭 (Context Switching)

  • 컨텍스트 스위칭(Context Switching)은 운영체제가 수행
  • 현재 실행 중인 프로그램의 컨텍스트(Context)를 저장, 다른 프로그램의 저장된 컨텍스트를 복원하는 과정

컨텍스트 스위칭 과정

 

14.  멀티 코어 CPU (Multi-Core CPU)

  • CPU 내부에 2개의 프로세서(Processor) 포함
    • 2개의 명령어를 동시에 실행
    • 코어는 완벽한 처리기, 과거 개념의 CPU
    • 2001, IBM에 의해 PowerPC라는 멀티코어 CPU 개발

멀티코어 CPU 예시

 

 

 

 

오늘은 유독 글의 양이 많았는데요. 운영체제를 제대로 공부하기 위해서는 '컴퓨터 시스템'에 대해 제대로 이해를 해야하기 때문에 '컴퓨터 시스템'에 대해 심층적으로 공부하는 시간을 가져봤습니다 ㅎㅎ

여기까지 저의 블로그를 읽어주셔서 정말 감사드립니다. 포기하지 않고 끝까지 저와 함께 해주신다면, 운영체제에 대해 완벽하게 마스터하실 수 있을 것이라고 확신합니다!! 다음 시간부터는 컴퓨터 시스템의 이해를 바탕으로 운영체제에 대해 심층적으로 파고드는 시간을 가질 예정입니다~ !!!  감사합니다. 좋은 하루되세여 ~ ㅎㅎ