[CS 기초] 운영체제와 정보기술

Sohyeon Bak·2022년 6월 7일
0

개발 책

목록 보기
4/18
post-thumbnail

'운영체제와 정보기술의 원리' 책을 바탕으로 정리한 내용입니다.

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

컴퓨터 시스템의 구조

  • 내부장치 : CPU, 메모리
  • 외부장치(입출력장치 I/O) : 디스크, 키보드, 마우스, 모니터, 네트워크 장치

CPU 연산과 I/O 연산

  • 입출력 장치의 I/O연산은 입출력 컨트롤러에서 실행
  • 컴퓨터 내부 장치는 메인 CPU가 연산
    → 두개가 동시에 수행 가능

로컬버퍼

로컬버퍼는 장치 컨트롤러를 통해 장치로 부터 들어오고 나가는 데이터를 임시로 저장하는 작은 메모리

전달방식

  1. 장치에서 로컬버퍼로 데이터를 읽어오도록 컨트롤러가 수행
  2. 입출력 장치에서 데이터를 읽어오면 로컬버퍼에 데이터가 임시로 저장 후 메모리로 전달
  3. 필요로 하는 데이터를 다 읽어오면 메인 CPU가 다음을 수행
    → 작업이 끝났는지 확인은 메인 CPU가 아닌 컨트롤러가 인터럽트를 발생시켜 CPU에 보고

인터럽트

컨트롤러들이 CPU의 서비스가 필요할 때 통보하는 방법
CPU는 메모리에서 명령어를 하나씩 읽는데 CPU 옆에 인터럽트 라인이 있어서 신호대로 일을 수행한다.

인터럽트의 일반적 기능

운영체제 커널 내에 있는 인터럽트 처리루틴을 다양한 인터럽트에 대해 각각 처리해야 할 업무를 정의한다.

  • 하드웨어 인터럽트
    : 하드웨어 장치가 CPU의 인터럽트 라인을 세팅
  • 소프트웨어 인터럽트
    : 소프트웨어가 그 일을 처리

인터럽트 진행

  1. 인터럽트가 발생하면 CPU는 멈추고 커널 내에 해당 인터럽트 처리를 위한 코드가 실행된다.
  2. 인터럽트 백터
    : 인터럽트 종류마다 번호를 정해 번호마다 처리할 코드를 알리는 자료구조 실행
  3. 인터럽트 핸들러(처리루틴)
    : 인터럽트 처리를 완료 후 원래 수행하던 작업으로 돌아가 중단된 일을 계속 수행해냄

소프트웨어 인터럽트(=트랩)

  • 예외상황(exception)
    : 사용자 프로그램이 0으로 나누는 연산 등 비정상적인 작업시도나 자신의 메모리 영역 바깥에 접근 시도 등 권한 없는 작업을 시도할 때 발생시키는 인터럽트
  • 시스템 콜(system call)
    : 사용자 프로그램이 운영체제 내부 정의된 코드를 실행하고 싶을 때 사용하는 요청 방법

인터럽트 핸들링

인터럽트가 발생한 경우에 처리해야할 일의 절차

PCB(Process Control Block)
현재 시스템 내에서 실행되는 프로그램을 관리하기 위한 자료구조
각각 프로그램 마다 존재하며 어느 부분이 실행 중이었는지 저장한다.
→ 메모리 주소, 레지스터 값, 하드웨어 상태 등

입출력구조

컴퓨터 시스템이 컴퓨터 외부의 입출력 장치들과 데이터를 주고 받는 것

  • 동기식 입출력(synchronous I/O)
    : 입출력을 요청했을 때 작업이 완료되야 후속작업을 수행하는 방식
    다수의 프로그램이 동시에 입출력 연산을 요청하지만 동기성을 보장하기 위해 장치마다 큐를 두어 요청 순서대로 처리한다.
  • 비동기식 입출력(asynchronous I/O)
    : CPU 제어권을 입출력 연산을 호출한 그 프로그램에게 곧바로 부여하는 방식
profile
정리하고 기억하는 곳

0개의 댓글