컴퓨터 시스템 개요

2022. 4. 17. 23:23운영체제

728x90

컴퓨터 시스템 개요

기본 구성 요소

컴퓨터는 다음 4가지 기본 구성요소로 이루어진다.

  • 처리기(프로세서, processor): 컴퓨의 동작을 제어, 데이터를 처리. 중앙처리장치(CPU)라고 부름.
  • 주기억장치(main memory): 데이터와 프로그램을 저장. 휘발성 -> 컴퓨터 종료 시 데이터 상실
  • 입출력모듈(I/O module): 외부 환경 간 데이터 이동 담당
    외부 환경: 보조 기억 장치, 통신 장비, 단말기 등
  • 시스템 버스(System bus): 처리기, 주기억장치, 입출력 모듈 간 통신 제공

CPU 구성

  • 프로그램 카운터 (Program Counter): 다음에 실행될 명령어의 주소를 저장, 실행할 기계어 코드의 위치를 지정
  • 명령어 레지스터 (Instruction Register): 현재 실행 중인 명령을 기억
  • 누산기 (Accumulator, AC): 연산 결과를 임시로 저장
  • 메모리 주소 레지스터 (Memory Address Register): 데이터의 주소를 기억
  • 메모리 버퍼 레지스터 (Memory Buffer Register): 데이터를 임시로 기억
  • 입출력 주소 레지스터 (I/O Address Register): 입출력 모듈과 cpu간 교환되는 데이터 주소를 기억
  • 입출력 버퍼 레지스터 (I/O Buffer Register): 입출력 모듈과 cpu간 교환되는 데이터를 기억

명령어 수행

  • 프로그램은 cpu에 의해 수행되며 메모리에 저장된 명령어들의 집합으로 구성된다.
  • 명령어 처리는 반입, 수행 두 단계로 구성
  • cpu가 메모리로부터 한 번에 하나의 명령어를 반입(fetch) 후 명령어 실행(execution)
  • 위 과정이 반복됨. 반복되는 처리 과정을 명령어 사이클(instruction cycle)이라고 함.

  1. 각 명령어 사이클이 시작될 때 CPU는 메로리로부터 명령어롤 반입
  2. 프로그램 카운터(PC)가 다음에 반입할 명령어의 주소 저장
  3. CPU는 각 명령어를 반입한 후 PC를 증가시켜 순서대로 다음 명령어 반입
  4. 반입된 명령어는 명령어 레지스터(IR)로 적재
  5. 명령어의 비트들은 처리기가 행해야 작업을 명시
  6. 처리기는 명령어를 해석, 요구된 작업 수행CPU에게 요구된 작업 종류
  • CPU - 메모리 : 데이터는 CPU로부터 메모리로, 또는 메모리로 부터 처리기로 전송
  • CPU - 입출력 : CPU와 입출력 모듈 간의 데이터 전송
  • 데이터 처리 : CPU는 데이터에 대해 산술 또는 논리 연산 수행
  • 제어 : 명령어는 수행 순서 변경을 명시 가능. 위 명령을 통해 CPU는 PC수치 변경으로 명령 처리 순서 제어 가능

프로그램 수행 예시

  1. 1단계(반입): MAR, MBR을 이용하여 메모리의 명령어 주소 및 데이터를 조회.
  2. - PC에 첫 번째 명령어 주소인 300을 저장 - 300번째 메모리에 저장된 명령어를 IR로 적재 - PC값 1 증가
  3. 2단계(수행): IR에 저장된 명령 수행
  4. - 연산 결과를 AC에 임시 저장
  5. 3단계(반입): 301번째 메모리에 저장된 명령어를 IR로 적재
  6. - PC값 1 증가
  7. 4단계(수행): IR에 저장된 명령 수행
  8. - 연산 결과를 이전 내용에 더해지고, 그 결과를 AC에 임시 저장
  9. 5,6단계 : 위 내용 반복인터럽트
  • 인터럽트는 CPU의 처리율을 향상시키기 위해 제공

인터럽트 부류

  • 프로그램: 명령어 수행 결과로 발생하는 어떤 조건에 의해 생성 ex) 스택오버플로우, 0으로 나누기, 비허용 메모리 공간 참조 등
  • 타이머: 특정 기능을 정규적으로 수행할 수 있도록 허용
  • 입출력: 입출력 연산의 정상적인 종료를 알리거나 다양한 에러 조건을 알림
  • 하드웨어 실패: 전원 결함 또는 메모리 패리티 에서 같은 결함에 의해 생성
  • 인터럽트는 처리기의 정상적인 흐름을 방해 그럼에도 불구하고 인터럽트를 통해 CPU를 더 효울적으로 사용 가능
  • 대부분의 I/O 디바이스는 CPU보다 느림.
  • CPU는 디바이스가 작업을 완료 할 때까지 기다려야 함.
  • 입출력 장치 대기시간을 최소화하기 위하여 인터럽트 제공
  • 인터럽트를 이용할 경우, 입출력 연산이 진행되는 동안 CPU는 다른 명령어를 수행 가능

인터럽트와 명령어 사이클

  • CPU는 수행 중,후로 인터럽트 발생 여부 검사.
  • 만약 인터럽트가 발생하지 않았으면 지금 수행중인 프로그램의 다음 명령어 반입
  • 외부 디바이스가 서비스 준비가 되면 CPU에게 인터럽트 요청 신호를 전송
  • 인터럽트가 있으면, 현재 프로그램의 실행을 멈추고, 인터럽트 처리 루틴 실행
  • 인터럽츠 처리가 완료되면 원래 프로그램의 수행이 재개

인터럽트 처리 과정

  • psw: 프로그램 상태 워드 : 현재 수행중인 프로세스의 상태 정보를 저장
  • 중첩 인터럽트
  • 순차적 인터럽트 처리는 한 인터럽트가 끝난 후에 다른 인터럽트를 처리.
  • 하나의 인터럽트가 처리 중에는 다른 인터럽트를 금지시킴.
  • 상대적인 우선 순위나 시간 긴급도를 고려하지 않음.
  • 중첩 인터럽트는 인터럽트 간 우선 순위를 지정
  • 우선순위가 높은 인터럽트가 낮은 우선순위인 인터럽트를 인터럽트할 수 있도록 허용

메모리 계층 구조

  • 메모리의 설계 제약점은 크기, 속도(접근 시간), 비용 이 세 가지임.
  • 접근 시간이 빠를 수록 비트 당 비용이 높아짐.
  • 용량이 커질수록 비트 당 저장 비용이 낮아짐.
  • 용량이 커질수록 접근 시간이 길어짐.

  • 윗 단계일 수록 접근 시간이 짧고, 저장가능 크기가 작음.

2차 메모리

  • 보조 메모리라고도 부름
  • 외부 저장 장치
  • 비휘발성(non - volatile)
  • 프로그램과 데이터 파일을 저장하기 위해 사용
  • HDD SSD 등캐싱 (Caching)
  • 빠른 저장 장치에 정보를 복사해 놓는 기법.
  • 고속의 메모리에 최근에 접근한 데이터를 저장
  • 캐시 관리 정책 필요
  • 캐싱한 복사된 데이터는 다른 메모리 레벨에 있는 데이터와 일치해야 함캐시 원칙
  • 주 메모리의 한 영역에 복사본이 있음
  • CPU는 먼저 캐시를 참조
  • 캐시에 원하는 데이터가 없으면 메모리 블록에서 데이터를 탐색
  • 탐색한 데이터를 캐시로 저장
  • 참조 지역성 떄문에 향후 참조될 데이터는 캐시에 존재할 가능성이 높음

 

캐시 메모리(Cache memory)

  • 운영체제에게 보이지 않고 하드웨어적으로 처리
  • 메모리 접근 속도를 향상
  • 프로세서의 속도는 메모리 속도보다 빠름
  • 참조 지역성(locality of reference)의 원리를 이용

디스크 캐시(Disk Cache, Buffer Cache)

  • 메인 메모리가 디스크에 저장된 데이터를 가져오기 위해 사용
  • 디스크 쓰기는 집중화(클러스터) 되는 경향이 있음
  • 데이터 재접근 시 디스크가 아닌 버퍼 캐시에서 데이터를 읽어오므로 접근 속도 향상

참조 지역성(Locality of Reference)

  • 프로그램이 실행되는 도중 CPU에 의해서 접근되는 메모리 영역이 집중화(cluster)하는 경향이 있음.
  • 장기적으로는 클러스터가 변경될 수 있으나, 짧은 시간 동안에는 메모리 접근이 고정된 수의 클러스터에 한정됨.
  • 명령어, 반복문, 서브루틴, 데이터, 테이블, 배열 접근 시 인접 메모리를 접근

적중률

  • 메모리의 접근 중 데이터가 빠른 메모리에 존재할 비율
  • ex) T1(레벨 1 메모리 : 캐시 메모리) 접근 시간, 예시로 T1 = 0.1us
    T2(레벨 2 메모리: 메인 메모리) 접근 시간, 예시로 T2 = 1.0us
  • 메모리 접근 중 90% 가 캐시에서 데이터를 찾는 경우 : Hit ratio = 90% = 0.9
  • 평균 메모리 접근 시간은 T1 * H + (T1 + T2) * (1-H) = 0.1us* 0.9 + (1.1)0.1
  • 만약 캐시에 없는 데이터를 찾는 경우, 처음에 캐시 메모리 조회 후 메모리로 가서 탐색하기 때문에, non hit 시 T1 + T2의 접근 시간이 예상됨

캐시 원칙

  • 캐시의 크기 : 작은 크기의 캐시도 성능에 큰 영향을 미침
  • 블록의 크기 : 캐시와 메인 메모리 사이에 교환되는 데이터 단위
  • 블록의 크기가 커질수록 보다 많은 유용한 데이터 적재 가능 -> 높은 적중률 보임.
  • 단, 과도하게 클 시 캐시 적중률이 낮아짐 -> 캐시로 불러온 데이터의 사용 확률이 방출된 데이터보다 재사용 확률이 낮아질 수 있기 때문
  • 매핑 함수(사상 함수) : 블록이 캐시의 어느 위치에 저장될지를 결정
  • 교체 알고리즘 : 교체될 블록을 선정 : 가장 오랬동안 참조되지 않은 블록을 교체 :(LRU : Least Recently Used) 알고리즘쓰기 정책 : 어느 시점에 메모리를 사용할 지 결정
  • 블록이 갱신될 때마다 씀 -> 메모리 쓰기 연산 극대화
  • 블록이 교체될 때마다 씀 : 메모리 쓰기 연산을 최소화, 단 메모리가 쓸데 없는 자료를 저장하고 있어야 -> 직접 메모리 접근 방해 가능성입출력 통신 기술CPU는 I/O 연산이 끝날 때까지 I/O 모듈의 상태를 주기적으로 체크

프로그램된 입출력 (Programmed I/O)

  • 처리기가 아닌 입출력 모듈이 수행
  • 입출력 상태 레지스터에 적절한 비트를 세트
  • 인터럽트가 없음
  • 처리기는 연산이 완료될 때까지 주기적으로 상태 검사
  • I/O 연산 수행 전까지 CPU는 상태검사 외 어떤 처리도 행하지 않음
  • I/O 모듈 송신 준비때까지 오랫동안 대기해야
  • 성능 하락

  • I/O 모듈이 데이터를 교활할 준비가 되면 처리기에 인터럽트 전송

인터럽트 구동 입출력(Interrupt - driven I/O)

  • I/O 모듈이 데이터를 전달할 준비가 될 때 CPU를 인터럽트
  • 처리기는 프로그램의 실행 문맥을 저장하고 인터럽트 처리 루틴을 실행
  • CPU는 I/O 모듈을 대기할 필요 없이 다른 작업 수행
  • 데이터가 CPU를 통해서 이동되기 때문에 CPU의 시간 낭비

직접 메모리 접근 (DMA: Direct Memory Access)

  • 디바이스 제어기는 처리기의 간섭 없이 주기억장치와 I/O 모듈의 버퍼 사이에 데이터 블록을 직접 전송
  • 메모리 사이클 훔침 기법을 이용 -> 메인 메모리와 IO 모듈 상에 데이터를 직접 전송
  • DMA 모듈은 데이터 전송을 위해 IO 제어기 이용 -> 작업이 종료되면 CPU에게 인터럽트를 통해 알림
  • 많은 양의 I/O연산을 수행하는 시스템의 I/O 성능을 높여줌

 

하드웨어 보호

  • 이중 모드 연산
  • 시스템 자원을 공유하기 위해서 운영체제는 부정확한 프로그램이 다른 프로그램의 수행을 부정확하게 만들지 않도록 보장해야함
  • 연산의 모드를 구분해주는 하드웨어의 지원이 필요
  • 최소한 2개 이상의 모드 :
    사용자 모드 - 사용자의 권한으로 연산 수행
    시스템 모드(System mode := kernel mode, monitor mode) - 운영체제의 권한으로 연산 수행
    • 모드비트(Mode bit)를 이용하여 현재의 모드가 시스템 모드(0)인지 사용자 모드(1)인지 알려주는 하드웨어 지원
    • 인트럽트가 발생하거나 장애가 발생하면 하드웨어는 시스템 모드로 모드를 전환
    • 특권 명령어는 시스템 모드에서만 수행I/O 보호
  • 모든 I/O 명령은 특권 명령(Privileged instruction)이다
  • 따라서 I/O 명령을 수행하기 위해 운영체제의 서비스를 받아야 하며, 운영체제는 시스템 모드에서 IO 작업을 수행메모리 보호
  • 프로그램이 다른 프로그램 영역을 침법하지 않도록 보호해야 함.
  • 특히 운영체제의 영역은 반드시 보호되야 함
  • 메모리 접근이 적법한지를 판단하여 메모리 보호
  • 메모리 보호를 하기 위해 2가지 레지스터를 사용
    베이스 레지스터(Base register) - 물리 메모리의 시작주소 저장
    경계 레지스터(Limit register) - 메모리에 올라가 있는 프로그램의 크기를저장
  • 정의된 메모리 영역 이외에 있는 주소 공간도 보호되어야 함CPU 보호
  • 타이머: 특정 시간이 지나면 운영체제가 수행될 수 있도록 인터럽터를 걸어줌
  • 타이머는 시분할 시스템을 구현하기 위해서도 사용
  • 타이머는 현재 시간을 계산하기 위해서도 사용
  • 타이머의 값을 초기화 시키는 Load-timer 명령어는 특권 명령어임.
728x90

'운영체제' 카테고리의 다른 글

프로세스 기술과 제어  (0) 2022.05.22
운영체제 개요  (0) 2022.05.20