ComputerScience

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

3장. 컴퓨터 시스템의 동작 원리

컴퓨터 시스템의 구조

  • 내부장치 : CPU, 메모리
  • 외부장치 : 디스크, 키보드, 마우스, 모니터, 네트워크 장치 등
  • 컨트롤러 : 하드웨어 장치를 제어하기 위한 작은 CPU

CPU 연산과 I/O 연산

  • 로컬버퍼: 장치로 부터 오고가는 데이터를 임시로 저장하기 위한 입출력장치들의 메모리
  • 입출력장치는 CPU 연산이 필요할 때 컨트롤러를 통해서 인터럽트를 발생시켜 CPU에 보고하게되고 CPU는 작업중 인터럽트가 들어오면 인터럽트를 처리한 후 하던 작업으로 되돌아가게 된다.

인터럽트의 일반적 기능

  • 인터럽트 : 각 장치들의 컨트롤러가 CPU서비스가 필요할 때 통보(장치입장에서는 허락을 구함, CPU입장에서는 방해를 받음)
  • 하드 인터럽트 : 컨트롤러가 발생시키는 인터럽트 소프트 인터럽트(트랩) : 시스템콜(프로그램이 운영체제 정의된 코드를 사용하고 싶을 때 발생시킴), 예외상황(에러사항)
  • 인터럽트 벡터 : OS에는 다양한 인터럽트에 대해서 각각 다르 처리루틴이 프로그램되어 있는데 이러한 것을 찾기위한 인덱스 값이라고 생각됨

인터럽트 핸들링

  • 인터럽트 발생시 처리해야 할 일의 절차를 인터럽트 핸들링이라고 함.
  • PCB(프로세스 제어 블록) : CPU에서 명령이 실행될 때에는 CPU 내부에 있는 임시 기억장치인 레지스터에 데이터를 읽거나 쓰면서 작업을 하는데, 인터럽트가 발생해 새로운 명령을 실행하게 되면 레지스터 값들이 지워지게 됨 따라서 CPU 내의 상태를 저장해두기 위해 운영체제 안에 PCB라는 자료구조를 둠. 프로그램마다 하나씩 존재하며 프로그램의 어느 부분이 실행 중이었는지 저장
  • ex) 프로그램 A 인터럽트 > CPU 처리하던 상태를 PCB에 저장 > 인터럽트 처리 > PCB에 저장된 정보를 바탕으로 다시 하던 작업 복귀

입출력 구조

  • 동기식 입출력 : 입출력 요청시 요청된 작업이 완료되어야 후속 작업을 수행할 수 있는 방식
    • CPU는 입출력 연산이 끝날 때 까지 인터럽트를 기다리며 자원을 낭비하게 됨
      • 이를 해결하고자 일반적으로 프로그램이 입출력을 수행중인 경우 CPU를 다른 프로그램에 이양해서 계속 돌아가게 만듬 이 때 입출력 중인 프로그램은 봉쇄 상태로 전환됨
  • 비동기식 입출력 : 입출력 연산이 끝나기를 기다리지 않고 CPU의 제어권을 입출력 연산을 호출한 프로그램에게 곧바로 다시 부여하는 방식
    • 동기식 입출력 구조에서 CPU를 계속 쓰기 위해 다른 프로그램에게 제어권을 이양했다면 비동기식 입출력 구조는 인터럽트를 발생시킨 프로그램에게 다시 제어권을 넘겨주어 할 수 있는 처리부터 CPU를 활용하게 하는 것 같음

DMA

  • 원칙적으로 메모리는 CPU에 의해서만 접근할 수 있는 장치. 하지만 다른 입출력 장치들이 메모리에 접근하려고 할때마다 CPU에 인터럽트를 발생시키면 CPU작업이 계속 방해되어 효율성이 떨어짐 이를 해결하기 위해 만든 장치를 DMA(Direct Memory Access)라고 함

저장 장치의 구조

  • 주기억 장치 (RAM) : 메모리라고 부르며 전원이 나가면 내용이 모두 사라져버리는 휘발성 저장장치
  • 보조기억 장치 : 전원이 나가도 내용을 기억하는 비휘발성 저장장치
  • 파일 시스템용 : 유지해야할 정보가 있을 때 파일 형태로 저장하기 위해 존재 스왑 영역용 : 메모리의 연장 공간인 스왑 영역(당장 필요하지 않은 부분을 메모리가 아닌 보조장치에 저장하는 공간)으로 사용하기 위해

저장 장치의 계층 구조

  • 레지스터 - 캐시 메모리 - 메인 메모리 - 마그네틱 디스크 - 광디스크 - 마그네틱 테이프 순으로 속도가 빠름
  • 레지스터, 캐시 메모리, 메인 메모리는 휘발성 저장장치이며 나머지는 비휘발성 저장장치이다.
  • 캐싱 기법 : 상대적으로 느린 저장장치에 있는 내용 중 당장 사용되거나 빈번히 사용될 정보를 빠른 저장장치에 선별적으로 저장함으로써 두 저장장치의 속도를 완충하는 기법.
  • ex)반복적인 코드는 빠른 저장장치에 올리고 아닌 것은 느린 곳에 올려 실행 속도를 향상 시킬 수 있음

하드웨어의 보안

  • 커널 모드: 운영체제가 CPU의 제어권을 가지고 운영체제 코드를 실행하는 모드
    • 중요한 정보에 접근해 위험한 상황을 초래할 수 있는 연산은 커널모드에서만 실행되도록 하여 일반 사용자 프로그램이 직접 위험한 명령을 수행할 수 없도록 함.
  • 사용자 모드: 일반 사용자 프로그램이 실행되며 제한적인 명령만 수행할 수 있는 모드
  • 모드비트 : 사용자 프로그램이 CPU를 가지고 있는동안 사용자 프로그램이 중요한 연산을 수행할 가능성을 막기 위해 만든 CPU 내부에 만든 장치
    • 모드비트가 0으로 세팅 되어있으면 커널모드, 1이면 사용자 모드
    • CPU는 명령을 수행하기 전에 모드비트 값을 보고 그에 해당하는 권한을 부여
    • 인터럽트 발생시 자동으로 모드비트는 0으로 세팅, 작업 후 모드비트를 1로 만들어 사용자 프로그램에게 CPU이양
  • 메모리 보안
    • 기준 레지스터: 합벅적 접근이 가능한 메모리상 가장 작은 주소 (프로그램 실행될 메모리의 위치 주소를 말하는 듯)
    • 한계 레지스터: 기준 메모리 주소 부터 어느 영역의 메모리 범위까지 접근할 지를 정해주는 수치

CPU 보호

  • CPU는 컴퓨터 시스테 내에 하나밖에 존재하지 않음으로 특정 프로그램이 CPU를 독점해 사용해 버리면 다른 프로그램이 CPU를 할당 받을 수 없게됨
  • 타이머: 특정 프로그램이 CPU를 독점할 수없게 프로그램이 CPU를 쓸 수 있는 시간을 정해주는 장치
    • 지정된 시간이 지나면 타이머는 인터럽트를 발생시켜 시간을 초과한 프로그램의 CPU제어권을 박탈한다.

 

 

 

 

출처 : 운영체제와 정보기술의 원리 - 이화여자대학교출판문화원 출판, 반효경 저