본문 바로가기

Computer Science/Operating system

[운영체제] 컴퓨터 시스템의 구조 | KOCW 2017 이화여대 반효경 교수님

* 강의를 듣고 복습하며 정리한 내용입니다.

 

운영체제

컴퓨터 하드웨어 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층. 좁게는 운영체제의 핵심 부분으로 메모리에 상주하는 커널을, 넓게는 커널 뿐만 아니라 각종 시스템 유틸리티를 의미한다.

 

운영체제의 분류

운영체제는 동시 작업 가능 여부, 사용자의 수, 처리 방식으로 나눌 수 있다.

동시 작업 가능 여부

1. 단일 작업: 한 번에 하나의 작업만 처리한다. 예) 과거 MS-DOS 프롬프트상의 명령어 수행

2. 다중 작업: 동시에 두 개 이상의 작업을 처리한다.

 

사용자의 수

1. 단일 사용자: 예) MS-DOS, MS Windows 등

2. 다중 사용자: 한 대의 컴퓨터에 여러 사용자가 접속. 예) Unix 등

 

처리 방식

1. 일괄 처리(batch processing)

작업 요청을 일정량 모아 한 번에 처리한다. 작업이 완전히 종료될 때 까지 기다려야 한다. 예) 과거 Punch Card 처리 시스템

2. 시분할(time sharing)

여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할해서 사용한다.

👉 interactive한 방식으로 일괄 처리 방식에 비해 응답 시간이 짧다.

3. 실시간(real time OS)

정해진 시간 안에 어떤 일이 반드시 종료되어야 하는 것을 보장하는 OS. 원자로나 미사일 제어, 반도체 장비, 로봇 제어 등에 사용한다.

 

운영체제의 구조

 

컴퓨터 시스템 구조

Register

CPU내에 위치한 기억 장치. 대표적인 레지스터 중 Program Counter(PC)는 다음 실행할 기계어의 메모리 주소를 갖고 있다.

 

Mode bit

CPU에서 기계어를 실행할 때 사용자 프로그램이 실행하는 것인지(1), OS가 실행하는 것인지(0) 구분한다. 사용자 프로그램에게 CPU를 넘기기 전 Mode bit을 1로 바꾸는 식으로 동작한다. 

 

Device Controller

해당 I/O 장치를 관리하는 일종의 작은 CPU. 제어 정보를 위해 control register, status register를 가지고, 일종의 data register인 local buffer를 가진다. I/O는 device와 local buffer사이에서 일어나고 device controller는 I/O가 끝났을 때 interrupt로 CPU에 알린다.

 

Timer

한 프로그램이 계속 CPU를 독점하는 것을 막기 위해 timer를 사용한다. timer는 정해진 시간 후 time interrupt를 발생시켜 OS에 CPU제어권이 넘어가도록 한다. 

👉 time sharing 구현

 

그럼 interrupt는 어떻게 동작할까?

Interrupt

인터럽트 당한 시점의 register와 program counter를 저장한 후 CPU의 제어를 인터럽트 처리 루틴에 넘긴다. 하드웨어 인터럽트와 소프트웨어 인터럽트로 나뉜다.

 

1. Interrupt: 하드웨어가 발생시키는 인터럽트.

2. Trap: 소프트웨어 인터럽트로 프로그램이 오류를 만든 경우인 Exception과 프로그램이 커널 함수를 호출하는 경우인 System Call로 나뉜다.

 

  • Exception: 예) 0으로 나누기, 명령어를 잘못 사용한 경우 등
  • System Call: 사용자 프로그램이 시스템 함수를 직접 호출할 수 없기 때문에 운영체제의 커널 함수를 호출하는 것. 

👉 하드웨어 인터럽트와 소프트웨어 인터럽트 모두 interrupt line을 통해 동작한다.

 

관련 용어

인터럽트 벡터: 인터럽트가 발생했을 때 해당 인터럽트의 처리 루틴 주소를 가지고 있는 공간.

인터럽트 처리 루틴(interrupt service routine, 인터럽트 핸들러): 해당 인터럽트를 처리하는 커널 함수.

 

동기식 입출력과 비동기식 입출력

동기식 입출력 (synchronous I/O)

I/O 요청 후 입출력 작업이 완료되고 나서 제어가 사용자 프로그램에 넘어간다.

 

방법 1. I/O가 끝날 때 까지 기다리는 방법. CPU가 낭비된다(입출력 연산은 상대적으로 속도가 느림). 매 시점 하나의 I/O만 일어난다.

방법 2. 👉 I/O가 끝날 때 까지 해당 프로그램에게서 CPU를 빼앗는 방법. I/O처리를 기다리는 줄에 해당 프로그램을 세우고 다른 프로그램에게 CPU를 준다.

 

비동기식 입출력 (asynchronous I/O)

I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어간다.

❗  상식적으로 이게 가능한가 싶지만, 예를 들어 디스크에서 읽어오는 요청이 아닌 쓰는 요청이라면 작업이 완료되기 전에 다음 명령을 수행할 있다.

❗  일반적으로는 동기식 입출력을 사용한다.

 

두 경우 모두 I/O의 완료는 인터럽트로 알린다.

 

DMA (Direct Memory Access)

I/O 장치와 메모리 사이에서 CPU를 배제하는 입출력 제어 방식. device controller가 CPU를 거치지 않고 DMA controller를 이용해 데이터를 직접 메모리로 전송할 수 있다.

 

고속 I/O 장치의 경우 인터럽트로 CPU의 실제 작업 시간이 감소하기 때문에 등장했다.

 

 


 

운영체제

<교재 및 출처><br/><br/>- A. Silberschatz et al., Operating System Concepts, 9th Edition, John Wiley & Sons, Inc. 2013.<br/><br/>- A. Silberschatz et al., Operating System Principles, Wiley Asia Student Edition<br/><br/>- 반효경, 운영체제와

www.kocw.net