Mathlife
Mathlife의 학습 노트
Mathlife
전체 방문자
오늘
어제
  • 분류 전체보기
    • CS
      • 알고리즘
      • 자료구조
      • 운영체제
      • 네트워크
      • 데이터베이스
    • 프로그래밍 언어
      • Java
      • JavaScript
      • C·C++
      • Python
    • Backend
      • Spring
    • Frontend
      • HTML
      • CSS
    • Math
      • Linear Algebra
      • Calculus
    • AI
      • ML
      • DL
      • RL
    • Git

블로그 메뉴

  • 홈
  • 관리
  • 글쓰기
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Mathlife

Mathlife의 학습 노트

컴퓨터 시스템의 구조
CS/운영체제

컴퓨터 시스템의 구조

2022. 5. 8. 08:46

출처 : KMOOC / 운영체제 / 이화여대 반효경 교수님

 

컴퓨터 시스템 구조와 프로그램 실행

Interrupt

- CPU는 기계어 실행하면서 계속 interrupt 체크

$\rightarrow$ interrupt 받으면 mode bit 0으로 바꾸고 os한테 CPU 제어권을 넘긴다

- 일반적으로 interrupt는 device controller가 보내는 HW interrupt를 의미한다.

- SW interrupt도 있지만 보통 trap이라고 부른다.

 

Trap

- Exception : 프로그램이 오류를 범하는 경우 ( 0으로 나눈다거나, 특권 명령을 수행하라고 요구하거나 )

- System call : 프로그램이 커널 함수를 호출

 

시스템 콜 (System Call)

- 사용자 프로그램이 OS의 서비스를 받기 위해 커널 함수를 호출하는 것

- 프로그램이 직접 program counter를 건드릴 수 없기 때문에 코드를 통해 interrupt를 건다

$\rightarrow$ 운영체제가 CPU 제어권을 받아 대신 처리해서 전달해준다.

- 예를 들어, I/O에 접근하는 건 전부 특권 명령이므로 시스템 콜 필요

 

인터럽트 벡터 (Interrupt Vector)

- 인터럽트 종류별 인터럽트 처리 루틴의 주소를 갖고 있음

- 즉, 인터럽트 처리 루틴의 주소 포인터

 

인터럽트 처리 루틴 (Interrupt Service Routine)

- 종류 별로 인터럽트를 처리하는 커널 함수

 

PC (Program Counter)

- 다음 번에 실행할 기계어의 메모리 주소를 저장하는 레지스터

 

Timer

- 일정 시간 간격으로 interrupt를 발생시킨다.

- 예를 들어, os가 프로그램 A한테 cpu를 넘겨줄 때 그냥 주지 않고 timer에 시간 세팅하고 cpu를 넘겨준다.

$\rightarrow$ 프로그램 A가 무한 루프를 돌더라도 운영체제가 다시 cpu 제어권을 돌려받는다

- 즉, cpu를 특정 프로그램이 독점하는 것을 막아준다.

 

입출력

Synchronous I/O

- I/O 요청한 프로그램은 I/O 작업이 끝날 때까지 대기

- 예를 들어, 파일을 읽어와야 다음 작업을 할 수 있으므로 기다린다

- 기다렸다가 같이 일하는 느낌

 

Asynchronous I/O

- I/O 요청한 프로그램은 I/O 작업이 끝날 때까지 기다리지 않고 마저 작업

- 예를 들어, 파일을 쓸 때는 꼭 결과를 볼 필요가 없으므로 기다리지 않을 수 있다

 

두 경우 모두 I/O 작업의 완료는 인터럽트를 통해 전달

 

DMA (Direct Memory Access)

DMA가 없으면 CPU가 입출력을 받아서 메모리에 옮겨주는 형태

 

이 경우 고속 I/O 장치 사용하면 interrupt 너무 자주 걸려서 CPU 비효율적으로 작동

 

DMA 컨트롤러가 직접 메모리에 전송 해주고 CPU에 인터럽트 걸어서 작업 완료만 알려준다

 

'CS > 운영체제' 카테고리의 다른 글

Process Synchronization II  (0) 2022.05.14
Process Synchronization I  (0) 2022.05.14
CPU 스케줄링  (0) 2022.05.14
프로세스 관리  (0) 2022.05.09
운영체제 개요  (0) 2022.05.08
    'CS/운영체제' 카테고리의 다른 글
    • Process Synchronization I
    • CPU 스케줄링
    • 프로세스 관리
    • 운영체제 개요
    Mathlife
    Mathlife

    티스토리툴바