6월 28일 - 컴퓨터의 동작

Yullgiii·2024년 6월 28일
0
post-thumbnail

컴퓨터 시스템의 동작 원리

컴퓨터 시스템의 동작 원리는 하드웨어와 소프트웨어가 상호작용하여 작업을 처리하는 과정을 의미한다. 컴퓨터 내부 장치에는 CPU와 메모리가 있고, 외부 장치에는 키보드, 모니터, 마우스 등이 있다.

컴퓨터 내의 각 하드웨어 장치

각 하드웨어 장치에는 컨트롤러가 존재한다. 컨트롤러는 일종의 작은 CPU로서, 해당 하드웨어 장치를 제어한다.

CPU와 I/O 연산

입출력 장치들의 I/O 연산은 I/O 컨트롤러가 담당하며, 컴퓨터 내에서 수행되는 연산은 Main CPU가 담당한다. 입출력 장치와 CPU는 동시 수행이 가능하다. 각 장치에는 이를 제어하기 위해 설치된 장치 컨트롤러와 데이터를 임시로 저장하기 위한 작은 메모리인 로컬 버퍼(Local buffer)가 있다.

과정

  1. 프로세스에서 외부 입출력에 대한 요청 발생
  2. 컨트롤러에 의해 외부 장치로의 입출력 제어
  3. 외부 장치와 입출력 발생
  4. 로컬 버퍼에 데이터를 임시로 저장
  5. 컨트롤러에 의해 인터럽트 발생
  6. CPU는 컨트롤러로부터 발생한 인터럽트를 확인
  7. 로컬 버퍼의 데이터를 메모리에 상주한 프로세스의 영역에 이동 후 저장

인터럽트

인터럽트는 컨트롤러들이 CPU의 서비스가 필요할 때, 이를 통보하는 방법이다. 키보드 입력, 디스크 데이터 읽기 완료 등의 이벤트를 CPU에게 알리기 위해 컨트롤러가 인터럽트를 발생시킨다.

인터럽트의 일반적 기능

  • 인터럽트 처리 루틴: 운영 체제 커널 내에 존재하며, 다양한 인터럽트에 대해 각각 처리해야 할 업무를 정의.
  • 하드웨어 인터럽트: 컨트롤러 등 하드웨어 장치가 CPU의 인터럽트 라인을 세팅.
  • 소프트웨어 인터럽트: 소프트웨어가 인터럽트를 수행.

인터럽트 처리 루틴은 인터럽트 벡터와 인터럽트 서비스 루틴을 포함한다.

  • 인터럽트 벡터: 인터럽트 종류마다 번호를 부여해 처리해야 할 코드가 위치한 부분을 가리키는 자료구조.
  • 인터럽트 서비스 루틴: 인터럽트 벡터를 통해 확인한 실제로 작동해야 하는 코드.

인터럽트 핸들링

인터럽트가 발생한 경우 처리 절차:

  1. 프로그램 A 수행 중 인터럽트 발생
  2. A의 현재 상태 저장
  3. 인터럽트 처리
  4. 처리 후 A의 상태 복원 및 작업 재개

운영체제 커널 영역에는 현재 시스템 내에서 수행되는 프로그램들을 관리하기 위한 프로세스 제어 블록(PCB)이 있다. 인터럽트 발생 시, 프로그램의 수행 지점을 PCB에 저장하고, 인터럽트 처리가 완료되면 PCB에 저장된 지점부터 다시 수행을 이어간다.

예제

1. 프로그램 A 수행 중 인터럽트 발생
2. A의 현재 상태를 PCB에 저장
3. 인터럽트 처리 루틴으로 이동하여 인터럽트 처리
4. 인터럽트 처리 후 PCB에 저장된 상태를 복원하여 프로그램 A 재개

인터럽트 처리 중에는 다른 인터럽트 발생을 허용하지 않는다. 데이터 일관성 유지를 위해서이다.

소프트웨어 인터럽트

통상적으로 인터럽트는 하드웨어 인터럽트를 의미하며, 소프트웨어 인터럽트는 트랩(trap)이라 불린다. 예를 들어 예외 상황(exception), 시스템 콜(System Call)이 있다.

  • 예외 상황: 0으로 나누기 연산 등 불가능한 작업 시도 시 발생.
  • 시스템 콜: 프로그램이 운영 체제로부터 서비스 받기 위해 발생.

일반적인 함수 호출 vs 시스템 콜

  • 일반 함수 호출: 자신이 작성한 함수나 라이브러리에 정의된 함수를 호출.
  • 시스템 콜: 운영체제에 정의된 함수를 호출. 이는 인터럽트 매커니즘으로 동작.

입출력 구조

입출력(I/O)란 컴퓨터 시스템이 외부 주변 장치들과 데이터를 주고받는 것을 의미한다.

  • 동기식 입출력(synchronous I/O): 입출력 요청 후 작업이 완료될 때까지 기다리는 방식. 자원 낭비 발생.
  • 비동기식 입출력(asynchronous I/O): 입출력 요청 후 바로 CPU 제어권을 반환. 자원 낭비를 줄임.

DMA(Direct Memory Access)

DMA는 메모리 접근이 가능한 장치로, CPU의 인터럽트 발생 빈도를 줄여 CPU의 효율을 높인다. 블록 단위로 데이터를 메모리에 읽어온 후 인터럽트를 발생시켜 작업 완료를 알린다.

저장 장치의 구조

  • 주기억 장치: 휘발성의 RAM 사용.
  • 보조기억 장치: 비휘발성의 마그네틱 디스크, 플래시 메모리, CD, 마그네틱 테이프 등.

용도

  • 파일 시스템용: 전원 나가도 유지해야 할 정보 저장.
  • 메모리 연장 공간인 스왑 영역: 프로그램 수행에 당장 필요한 부분만 메모리에 올리고 나머지는 디스크 스왑 영역에 저장.

캐슁 기법

적은 용량의 캐시 메모리를 사용해 메인 메모리와 같이 큰 용량을 가진 것처럼 효율적으로 관리하는 기법. 자주 사용되는 정보를 캐시에 저장해 속도 향상.

하드웨어의 보안

다중 프로그래밍 환경에서 프로그램 간 충돌을 방지하기 위한 하드웨어 보안 기법 필요. 커널 모드와 사용자 모드로 오퍼레이션을 구분한다.

  • 커널 모드: 운영체제 코드 실행. 모든 명령 실행 가능.
  • 사용자 모드: 일반 사용자 프로그램 실행. 제한된 명령만 실행.
    모드 비트를 사용해 권한을 제한하며, 시스템 콜을 통해 운영체제에 요청하여 중요한 명령을 수행하도록 한다.

메모리 보안

메모리에는 여러 프로그램이 동시에 올라가서 실행되므로 각 프로그램의 메모리 영역을 보호해야 한다. 기준 레지스터와 한계 레지스터를 사용해 메모리 접근을 관리한다.

기준 레지스터와 한계 레지스터

  • 기준 레지스터: 프로그램이 접근할 수 있는 메모리의 시작 주소.
  • 한계 레지스터: 프로그램이 접근할 수 있는 메모리의 범위.
    커널 모드에서는 메모리에 무제한 접근 가능하며, 사용자 모드에서는 레지스터 값으로 접근을 제한한다.

CPU 보호

CPU가 특정 프로그램에 독점되지 않도록 타이머를 사용한다. 타이머는 정해진 시간이 지나면 인터럽트를 발생시켜 CPU 제어권을 운영체제로 넘긴다.

타이머
타이머는 시분할 시스템에서 현재 시간을 계산하고, 타이머 값을 설정하는 명령(로드 타이머)은 특권 명령으로 분류된다.

시스템 콜을 이용한 입출력 수행

입출력 명령은 특권 명령이므로 사용자 프로그램은 직접 수행할 수 없다. 시스템 콜을 통해 운영체제에게 요청하여 입출력을 수행한다. 시스템 콜은 소프트웨어 인터럽트로, 운영체제가 해당 명령을 대신 수행하고 완료 후 인터럽트를 발생시켜 사용자 프로그램에게 CPU를 할당한다.

So...

컴퓨터 시스템의 동작 원리는 하드웨어와 소프트웨어의 상호작용을 통해 다양한 작업을 수행하는 과정을 포함한다. CPU, 메모리, 입출력 장치, 인터럽트 등의 작동 원리를 이해함으로써 시스템의 효율적인 관리와 성능 향상을 도모할 수 있다. 운영체제는 이러한 자원 관리와 보안, 효율성을 제공하여 사용자와 프로그램들이 원활하게 상호작용할 수 있도록 지원한다.

profile
개발이란 무엇인가..를 공부하는 거북이의 성장일기 🐢

0개의 댓글