본문 바로가기

Today I Learned

운영체제와 정보기술의 원리3 컴퓨터 시스템의 동작 원리

1. CPU 연산과 I/O 연산

컴퓨터에서 연산을 한다는 것은 CPU가 무언가 일을 한다는 뜻이다.

  • 입출력 장치의 연산 : 입출력 컨트롤러가 담당
  • 컴퓨터 내의 연산 : 메인 CPU가 담당

로컬 버퍼 : 장치 컨트롤러로부터 받고 나가는 데이터를 임시로 저장하는 곳

2. 인터럽트Interrupt

인터럽트 : 컨트롤러들이 CPU의 서비스가 필요할 때 이를 통보하는 방법이다. (앞서 인터럽트를 초인종 소리에 비유한 바 있다.) CPU는 명령 하나를 수행하기 전에 항상 인터럽트가 발생했는지 확인하고, 명령보다 먼저 인터럽트를 처리한다.

인터럽트 벡터 : 인터럽트 종류마다 처리해야할 코드가 위치한 부분을 가리키는 자료구조.

인터럽트 처리루틴 service routine/핸들러 handler : 커널에 보관되어 있다. 각각 인터럽트가 발생했을 때 해야할 일을 정의한 처리 절차를 정의하고 있다.

종류와 기능

  • 하드웨어 인터럽트 : 하드웨어 장치가 CPU에 인터럽트 라인을 세팅한다.
  • 소프트웨어 인터럽트 : 트랩trap이라고 불린다. 소프트웨어가 필요한 CPU의 서비스를 직접 수행한다. 예)예외상황, 시스템 콜

시스템 콜 : 사용자 프로그램이 직접 입출력을 하는 대신, 운영체제에게 시스템 콜이라는 서비스 대행 요청을 해서 입출력을 수행한다.

프로세스 제어 블록 Process Control Block, PCB : 현재 실행되는 프로그램을 관리하기 위한 자료구조. 각 프로그램마다 하나씩 가지고 있다.

프로그램 A 실행 중 인터럽트 발생! -> 프로그램 A의 실행 상태를 PCB에 저장 -> CPU의 제어권이 인터럽트 처리루틴으로 넘어감 -> 인터럽트 처리 완료! -> PCB에서 상태를 가져와서 다시 CPU에 복원.

오늘날 운영체제는 인터럽트가 발생할 때만 실행된다.

3. 입출력 구조

동기식 입출력 synchronous I/O : 어떤 프로그램이 입출력 요청을 했을 때, 입출력 작업이 완료된 후에 그 프로그램이 후속 작업을 수행할 수 있는 방식. 입출력의 연산이 끝날 때까지 완료 인터럽트를 기다리며 CPU 자원을 낭비하게 된다. 이때, 기다리고 있는 프로그램은 봉쇄 상태blocked state가 된다.

비동기식 입출력 : 입출력 연산을 요청하면 그 연산이 끝날 때까지 기다리는 것이 아니라, CPU의 제어권을 연산을 호출한 그 프로그램에게 바로 부여하는 방식이다.

프로그램 A 실행 중 디스크에서 데이터 읽어오라는 명령을 만남 -> 시스템 콜을 통해 인터럽트 발생! -> 현재 상태 PCB에 저장 -> 커널의 인터럽트 처리 루틴으로 이동 -> CPU는 컨트롤러에게 입출력 연산을 요청 -> 컨트롤러는 디스크에서 자신의 로컬 버퍼로 데이터를 읽어옴 (운영체제는 A를 봉쇄 상태로 표시함 -> CPU를 프로그램 B에 할당) -> 로컬 버퍼로 데이터 전송 완료 -> 완료 (하드웨어) 인터럽트 발생! -> B의 상태 저장 -> 인터럽트 처리(로컬 버퍼에 있는 요청 데이터를 A의 메모리로 읽어오고 A의 봉쇄 상태를 해제) -> B 업무 수행

DMA (Direct Memory Access) : 메모리는 CPU에 의해서만 접근할 수 있다. CPU 사용이 효율성이 떨어지는 문제가 있어서 CPU 이외에도 메모리 접근이 가능한 장치를 하나 더 두었다. 그 장치가 바로 DMA이다. 로컬 버퍼에서 메모리를 읽어오는 작업을 DMA가 대신하게 된다.

4. 저장장치

보조기억장치의 용도 : 파일 시스템과 스왑 영역swap area

운영체제는 프로그램 수행에 당장 필요한 부분만 메모리에 올려놓고 그렇지 않은 부분은 디스크의 스왑 영역에 내려놓는다.(= swap out)

캐싱 기법 : 상대적으로 용량이 적고 속도가 빠른 저장장치를 이용해서 느린 저장장치의 성능을 향상시키는 총제적 기법을 일컫는다.

5. 하드웨어의 보안

하드웨어의 보안을 유지하기 위해서 커널모드(kernel mode, system mode)와 사용자 모드(user mode)를 지원한다.

모드 비트 mode bit : 0으로 세팅되면 커널 모드, 1으로 세팅되면 사용자 모드이다. 사용자모드에서는 제한된 명령만 수행할 수 있고, 커널 모드에서는 제한없이 모든 명령을 사용할 수 있다.

특권 명령 : 모드 비트가 0일 때 운영체제에서 수행 가능한 보안과 관련된 명령들을 말한다.

6. 메모리 보안

레지스터 register : 임시 기억장치

여러 프로그램이 메모리 하나를 동시에 사용하면 커널 영역에 침범하는 등 보안에 문제가 생길 수 있다. 그래서 레지스터 2개를 사용해서 메모리를 보안한다.

  • 기준 레지스터 base register : 프로그램이 접근할 수 있는 메모리 상의 기준 주소.
  • 한계 레지스터 limit register : 기준 레지스터 값부터 접근할 수 있는 메모리의 범위.

즉, 사용자 프로그램은 기준 레지스터부터 기준 레지스터 + 한계 레지스터 값 사이 주소 영역에만 접근 할 수 있다.

7. CPU 보안

타이머 : 정해진 시간이 지나면 인터럽트를 발생시키는 역할을 하는 하드웨어.

특정 프로그램이 CPU를 독점할 수 있는 문제점을 예방하고자 만들어졌으며, 운영체제가 CPU의 제어권을 획득할 수 있도록 한다.