CS/운영체제

[운영체제] 컴퓨터 시스템 구조

happy_life 2022. 6. 2. 21:49

목차

1. 공개 소프트웨어/ 비공개 소프트웨어

2. 운영체제란?

3. Mode bit, Timer

4. 인터럽트

5. DMA

1. 공개 소프트웨어 / 비공개 소프트웨어

공개 소프트웨어

 Linux, Android

 

비공개 소프트웨어

Windows

 

소프트웨어 시장은 1위가 독점하는 시장이다. 따라서 2위도 힘들게 만들었지만, 소비자들에게 판매를 할 수 없는 상황이 생긴다. 이에 오픈소스로 공개를 하는 소프트웨어가 생겨났다.

 

2. 운영체제란?

정의

 

컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층

 

협의의 운영체제(커널)

운영체제의 핵심 부분으로 메모리에 상주하는 부분

 

광의의 운영체제

커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념

 

목적

 

1. 운영체제는 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공한다.

2. 하드웨어를 직접 다뤄야하는 복잡한 부분을 운영체제가 대행해준다.

3. 컴퓨터 시스템의 자원을 효율적으로 관리해준다.

  • 프로세서, 기억장치, 입출력 장치 등의 효율적 관리
  • 사용자 및 운영체제 자신을 보호
  • 프로세스, 파일, 메시지 등을 관리

 

여러개의 프로그램이 동작해  메모리 공간을 쓸 때 1/N으로 하는 것이 아니고, 프로그램에 따라 효율적으로 할당해야 하는데, 이러한 역할을 운영체제가 담당한다.

 

분류

 

동시 작업 가능 여부

 

1) 단일 작업(single tasking)

ex) MS-DOS 프롬프트 상에서는 한 명령의 수행을 끝내기 전에 다른 명령을 수행시킬 수 없음.

 

2) 다중 작업(multi tasking)

ex) UNIX, MS Windows 등에서는 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있음.

 

사용자의 수

 

1) 단일 사용자

2) 다중 사용자

 

처리 방식

 

1) 일괄 처리(batch processing)

  • 작업 요청의 일정량 모아서 한꺼번에 처리
  • 작업이 완전 종료될 때까지 기다려야 함

 

2) 시분할(time sharing)

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

 

3) 실시간(Realtime OS)

  • 정해진 시간 안에 어떤 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS
  • ex) 원자로/공장/미사일 제어 등등 (death line 필수)

 

3. Mode bit, Timer

Mode bit

 

위험한 코드를 짜 프로그램을 만들면 코드가 동작하지 않아야 합니다. 하지만 CPU할당은 운영체제에서 프로그램으로  넘어간 상태이므로 운영체제가 조절하긴 힘듭니다. 이런 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 보호장치가 필요한데 이를 mode bit이라고 합니다.

Mode bit

운영체제는 사용자프로그램으로 CPU를 넘길 때 mode bit을 1로 바꿔서 넘깁니다. 이렇게 구분하여 보안을 해칠 수 있는 등의 중요한 명령어는 운영체제의 권한 하에서만 실행되도록 합니다.

 

Timer

 

사용자 프로그램이 메모리를 무한으로 할당하게 하거나, 무한 루프를 돌게 하는 식으로 해버리는 경우도 조정이 필요합니다. 이를 위해 타이머가 존재합니다.

  • 정해진 시간이 흐른 뒤엔 운영체제에 제어권이 넘어가도록 인터럽트를 발생시킵니다.
  • 타이머는 매 클럭 틱 때마다 1씩 감소합니다.
  • CPU를 특정 프로그램이 독점하는 것으로부터 보호합니다.

 

4. 인터럽트

인터럽트 Timer에서 일정 시간이 지났을 때, 키보드 등 I/O 장치에서의 작업이 다 끝났을 때 등에 CPU에 전달되는 알림입니다. CPU는 다음 기계어를 실행하기 전에 항상 interrupt가 들어왔는지를 체크하기 때문에 interrupt가 오는 것을 체크할 수 있습니다. interrupt를 CPU가 인식하면 OS에 할당합니다

 

시스템 콜

 

사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것. 

 

예를 들어, I/O 장치에 대한 기계어 명령은 특권명령을 할 수 있는 운영체제밖에 못합니다. 따라서 이러한 경우 사용자 프로그램은 운영체제에게 부탁하기 위해 스스로 인터럽트를 거는데, 이러한 것을 시스템 콜이라고 합니다.

 

용어

 

1) 인터럽트 벡터

  • 인터럽트 종류별로 CPU가 실행해야 하는 동작이 다를 것이다. 따라서 이를 구분해주어야 합니다. 이를 구분하기 위해선 어떤 곳에서 인터럽트가 왔는지를 알아야하는데, 바로 그 인터럽트의 주소를 가지고 있는 것이 인터럽트 벡터입니다.

 

2) 인터럽트 처리 루틴

  • 주소에 따라 어떤 동작을 해야하는지가 들어있는 인터럽트 처리 커널 함수입니다.

 

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

 

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

  • I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어갑니다. 그 동안 사용자 프로그램은 아무것도 안하고 기다립니다.

 

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

  • I/O 요청 후 제어가 다른 프로그램으로 넘어가는 것이 아니라, 그 동안 사용자 프로그램은 CPU를 할당받아 I/O와 무관한 다른 일을 하다가  I/O 출력을 받습니다.

 

5. DMA(Direct Memory Access)

Interrupt 자체도 사실 오버헤드의 일종입니다. 물론 I/O 등 대부분의 인터럽트는 CPU 처리속도에 비해 느리므로 별 의미가 없을 순 있지만, 빠르게 동작하는 I/O도 있습니다. 빠르게 동작하며 Interrupt를 수없이 발생시키면 CPU의 오버헤드는 커질 수 있을 것입니다. 이를 해결하기 위해 DMA라는 것이 등장하였습니다.

 

특징

  • 빠른 입출력 장치를 메모리에 가까운 처리하기 위해 사용
  • CPU 중재 없이 DMA controller 가 device의 buffer storage의 내용을 메모리에 block 단위로 직접 전송
  • 바이트 단위가 아니라 block 단위로 인터럽트를 발생시킴

 

I/O 장치는 각각의 buffer storage 내용을 담아 interrupt 와 함께 CPU에 전송합니다. CPU는 I/O로부터 interrupt를 받아 buffer storage의 내용을 복사해 메모리에 옮겨놓습니다. 이러한 CPU의 동작을 돕는 DMA는 잦고 사소한 interrupt를  block 단위까지 모으고 CPU 대신 buffer storage의 내용을 메모리로 직접 옮겨놓습니다. 이 후 다시 interrupt를 통해 CPU에게 일처리가 끝났음을 알려줍니다.

 

본 포스팅은 kowc 이화여대 반효경 교수님 운영체제 강의를 바탕으로 작성하였습니다.

http://www.kocw.net/home/search/kemView.do?kemId=1226304&ar=relateCourse