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

송유나·2021년 1월 30일
0

1. 컴퓨터 시스템의 구조

  • 컨트롤러: 일종의 작은 CPU로서, 각 하드웨서 장치마다 존재하면서 이들을 제어하는 작은 CPU(메모리 컨트롤러, 디스크 컨트롤러, 입출력 컨트롤러 등)

2. CPU 연산과 I/O 연산

  • 로컬버퍼: 각 장치 컨트롤러가 장치로부터 들어오고 나가는 데이터를 임시로 저장하기 위해 가지고 있는 작은 메모리
    ex) 데이터 읽기 명령👉디스크 컨트롤러가 내용을 읽어 로컬버퍼에 저장👉디스크 컨트롤러가 해당 작업 끝났는지 체크👉끝났으면 인터럽트 발생시켜 CPU에 보고
  • 인터럽트: 컨트롤러들이 CPU의 서비스가 필요할 때 이를 통보하는 방법.
    각 컨트롤러가 인터럽트를 발생시키면 CPU는 하던 일을 잠시 멈추고 해당 인터럽트 수행 코드를 찾아 수행

3. 인터럽트의 일반적 기능

  • (좁은 의미의) 인터럽트: 하드웨어 인터럽트
  • (넓은 의미의) 인터럽트: 하드웨어 인터럽트 + 소프트웨어 인터럽트
  • 하드웨어 인터럽트(Interrupt): 하드웨어(컨트롤러 등)가 발생시킨 인터럽트
    보통 인터럽트라고 하면 하드퉤어 인터럽트를 의미
  • 소프트웨어 인터럽트(Trap): 소프트웨어가 발생시키는 인터럽트
    - 예외상황(Exception): 프로그램 오류 처리를 위해 발생시키는 인터럽트(비정상적인 작업 시도, 권한 없는 작업 시도 등)
    - 시스템 콜(System Call): 사용자 프로그램이 운영체제 내부에 정의된 코드를 실행하고 싶을 때 운영체제에 서비스를 요청하는 방법(사용자 프로그램이 권한이 없기 때문에)
  • 인터럽트 처리루틴(인터럽트 핸들러): 해당 인터럽트를 처리하는 코드
  • 인터럽트 백터: 해당 인터럽트를 처리해야 하는 코드가 담긴 주소

4. DMA

  • DMA(Direct Memory Access): CPU이외에 메모리에 접근이 가능한 장치
    👉메모리는 CPU에 의해서만 접근할 수 있는데, 입출력 장치가 메모리 접근을 원할 때마다 인터럽트를 요청하면 CPU가 방해 받아 효율성이 떨어지기 때문에 대리인 같은 느낌으로 만든 것
    👉로컬버퍼에서 메모리로 읽어오는 작업을 CPU가 대신함

5. 하드웨어의 보안

  • 커널모드: 운영체제가 CPU의 제어권을 가지고 운영체제 코드를 실행하는 모드(모든 권한 보유)
  • 사용자모드: 일반 사용자 프로그램이 제한적인 명령만 수행
  • 모드비트(mode bit): 커널모드인지 사용자모드인지 감시하여 해당 권한에 맞는 명령 수행하도록 함
    - 모드비트 0: 커널모드, 모든 명령 수행 가능
    - 모드비트 1: 사용자모드, 제한된 명령 수행 가능
    👉CPU가 제어권을 넘길 때 모드비트를 같이 세팅해서 넘김
  • 특권명령: 시스템의 보안과 관련된 명령, 모드비트가 0일 때만 수행 가능(=운영체제만 수행)

6. CPU 보호

  • 타이머(timer): CPU가 하나의 프로그램에 의해 독점되는 것을 막기 위한 하드웨어(ex무한루프 코드 실행)
    👉CPU를 점유할 시간을 세팅하고 타이머가 0이 되는 순간 인터럽트 발생
    👉로드 타이머(load timer): 타이머의 값을 세팅하는 명령, 특권명령

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

  • 입출력 명령은 특권명령에 해당하기 때문에 사용자 프로그램이 직접 수행 불가
    👉운영체제에 요청하여 수행
  1. 입출력 명령 발생
  2. 사용자 프로그램이 운영체제에 시스템 콜이라는 서비스 대행 요청
    (소프트웨어 인터럽트)
  3. 트랩 발생해 CPU의 제어권이 운영체제로 넘어감
  4. 운영체제가 해당 요청 수행 ex)컨트롤러에게 입출력 요청 하도록 명령
  5. 컨트롤러가 입출력 수행 완료 시 CPU에게 인터럽트 발생시켜 완료를 알림
    (하드웨어 인터럽트)
  6. 해당 사용자 프로그램이 다시 CPU 할당받음

용어들이 너무 생소하고 어렵다ㅠㅠ 그래서 강의 들을 때 보다 혼자 정리하는 데 시간이 훨씬 더 필요하다ㅠ
그래도 뭔가 처음부터 차곡차곡 쌓아 나가는 느낌이라 재미있다!🤗

profile
개발자를 꿈꾸는 햇병아리입니다.

0개의 댓글