Posts [운영체제] 운영체제란 무엇일까
Post
Cancel

[운영체제] 운영체제란 무엇일까


운영체제란 무엇일까


CS(Computer Science) 관련 지식을 복습하기 위해, Computer Science 카테고리를 신설했습니다. 앞으로는 운영체제나 컴퓨터구조 등에서 배운 정보들을 다시 복습하는 차원에서 공부한 뒤에 정리하려고 합니다.


📌운영체제, Operating System 이란 무엇일까?

컴퓨터는 크게 데이터를 처리하는 물리적 장치인 하드웨어와, 작업을 지시하는 명령어로 작성된 프로그램인 소프트웨어로 나뉩니다.

운영체제는, 하드웨어를 효율적으로 사용할 수 있게 관리하는 소프트웨어입니다.

다시 말해, 컴퓨터 사용자와 컴퓨터 하드웨어 사이에서 중개자 역할을 해 주는 프로그램입니다.


👨‍💻 운영체제의 목표

  1. 사용자가 프로그램 실행을 더 쉽게, 그리고 문제를 더 쉽게 풀 수 있게끔
  2. 컴퓨터 시스템을 더 편리하게 사용할 수 있게 만들어 준다.
  3. 하드웨어를 보다 효율적인 방식으로 사용하게 한다.

👨‍💻 운영체제의 주요 관점

컴퓨터 시스템의 구성 요소로는, 하드웨어, OS, 응용 프로그램, 그리고 사용자가 있습니다. OS와 응용 프로그램, 각종 유틸리티는 소프트웨어에 해당합니다.

운영체제의 주요 관점은 사용자 관점이냐, 아니면 시스템 관점이냐에 따라 조금 나뉩니다.

  • 사용자 입장, 특히 홈 PC 사용자의 경우, 사용에 있어서 편리함이 주요 목표가 될 것이며 자원 활용과 관련된 사항은 약간 관심 밖입니다.

  • 그러나 메인프레임 컴퓨터(통계, 전산업무 등 복잡한 작업을 위한 대형 컴퓨터)의 경우 주요한 목표는 자원 활용입니다. 그리고, 높은 신뢰도, 이용 가능성, 서비스 가능성 등을 봅니다.

  • 시스템 관점에서는, Resource Allocator의 역할을 더 크게 봅니다. 여기서 Resource는 CPU, memory, storage, I/O devices… 등을 말합니다. 충돌이 생기는 request들을 적절히 핸들링해주는 역할도 중요하죠.
  • 그 외에도 각종 에러로부터 지켜주는 컨트롤 적인 부분도 중요합니다.

컴퓨터 시스템은 CPU, Memory, I/O devices, System bus 로 이루어져 있습니다.

  • I/O devices는 디스크, 모니터, 프린터 등을 말합니다. 흔히 입출력 장치라고 부르는 것들입니다.

  • System bus는 프로세서, 메모리, 입출력 장치간에 연결된 채널을 말합니다. 즉 이 장치들이 시스템 버스라는 선으로 연결되어 있는 것입니다. 이 때 CPU와 디바이스 컨트롤러는 parallel하게 실행되며, 메모리 컨트롤러는 액세스를 동기화시킵니다.


👨‍💻 운영체제의 주요 과정

  • 부트스트래핑(bootstraping)

운영체제를 메인 메모리에 적재하는 과정을 부팅, 또는 부트스트래핑 이라고 합니다.

즉, bootstrap program(부트스트랩 프로그램)이란 컴퓨터가 처음 켜질 때 가장 처음 실행되는 프로그램을 말합니다. 하드디스크와 같은 보조기억장치에 저장된 운영체제를 메인 메모리에 적재하는 ROM에 고정시킨 소규모 프로그램을 부트로더(부트스트랩 로더) 라고 합니다.

  • ⭐⭐ Interrupt(인터럽트) ⭐⭐

인터럽트 개념은 정말 중요합니다. 인터럽트 핸들러를 실행하고자 CPU가 멈추는 이벤트입니다. 쉽게 말하면 현재 실행 중인 프로그램을 중단하고, 다른 프로그램의 실행을 요구하기 위해 발생하는 명령입니다. 다중 프로그래밍을 위해 없어서는 안 될 구현입니다.

  • 하드웨어의 인터럽트는 Timer, Keyboard 입력, mouse 입력, DMA 등으로 이루어질 수 있습니다. 인터럽트는 시스템 버스를 통해 전달됩니다.

  • 소프트웨어의 인터럽트⭐system call⭐로써 구현될 수 있습니다.
    • 인터럽트 핸들링(Interrupt handling)은 CPU의 중요한 기능 중 하나입니다.

    • 인터럽트 요청 신호에 따라 수행하는 루틴이 인터럽트 처리 프로그램, 즉 인터럽트 서비스 루틴입니다. 쉽게 말하면 인터럽트 함수들을 말합니다.

    • 인터럽트 벡터(Interrupt vector)는 인터럽트 서비스 루틴의 주소 배열입니다. 이 인터럽트 벡터들로 이루어진 테이블을 ‘인터럽트 벡터 테이블’ 혹은 ‘인터럽트 디스크립터 테이블’ 이라고 합니다.

    • 프로그램이 돌다가 인터럽트 발생 시 발생 전에 실행중인 그 정보를 저장하고 있어야(스택 영역에) 다음에 다시 돌아와서 이전 프로그램을 실행할 수 있습니다.

  • Interrupt Timeline

I/O가 작동하고 있는 동안, CPU는 다른 일들을 할 수 있습니다. I/O completion은 인터럽트를 발생시킵니다.

  • Storage Structure

프로그램은 실행되기 위해서는 메모리에 적재(be loaded)되어야만 합니다. 메모리는 RAM을 사용하며 load/store instruciton을 가집니다.

  • 폰 노이만 아키텍처

명령어와 데이터는 CPU에 대한 단일 링크가 있는 동일한 메모리에 저장됩니다. (메모리 공유)

CPU는 여러 기능 유닛을 가질 수 있습니다. 캐시를 사용하여 메모리 액세스를 더욱 향상시킬 수 있습니다.

  • 보조 기억 장치 (Secondary stroage )

일반적으로 HDD/SSD를 말합니다. 메인 메모리가 휘발성이고 너무 작기 때문에 보조 기억 장치가 필요합니다.


👨‍💻 I/O Structure

  • Device controller / DMA(Direct Memory Access)

범용 컴퓨터 시스템은 공통 버스에 의해 연결된 여러 개의 디바이스 컨트롤러와 CPU들로 구성되어 있습니다.

디바이스 컨트롤러는 특정 유형의 장치를 담당하며, 디바이스 컨트롤러는 약간의 로컬 버퍼와 특수목적용 레지스터 집합을 유지합니다.

통상적으로 OS는 각 디바이스 컨트롤러마다 장치 드라이버를 가지고 있으며 이는 디바이스 컨트롤러의 동작을 이해하고 운영체제의 다른 부분들에게 장치에 대한 일관된 인터페이스를 제공합니다.

  • DMA(Direct Memory Access)

주변장치들(하드디스크, 그래픽 카드, 네트워크 카드, 사운드 카드 등)이 메모리에 직접 접근하여 읽거나 쓸 수 있도록 하는 기능으로써, 컴퓨터 내부의 버스가 지원하는 기능이다. 대개의 경우에 메모리의 일정 부분이 DMA에 사용될 영역으로 지정되며 DMA가 지원되면 중앙처리장치가 데이터 전송에 관여하지 않아도 되므로 컴퓨터 성능이 좋아집니다.

주변장치의 데이터는 장치 컨트롤러(device controller)에 의해 로컬 버퍼로 이동합니다. 그러나 전송할 데이터가 많은 경우, 많은 양의 데이터의 이동으로 인한 부담이 커지는데 이러한 문제를 해결하기 위해 DMA를 이용합니다. 디바이스 컨트롤러가 데이터의 한 블록을 이동시키는데 이 과정에서 DMA로 인해 CPU의 개입이 필요없게 됩니다.

CPU에서는 데이터 이동이 완료되었다는 단 한 번의 인터럽트만 발생합니다. 데이터가 전송되는 동안 CPU는 다른 작업을 수행할 수 있게 되어 효율성이 높아집니다.


👨‍💻 컴퓨터 시스템의 구조

1) 싱글 프로세서 시스템

2) 멀티 프로세서 시스템이 갖는 세 가지 장점

  • 증가된 처리량
  • 규모의 경제 (여러개의 단일 시스템이 있는것보다 비용을 절약할 수 있다. 이는 처리기가 주변 장치, 대용량 저장장치, 전원 공급 장치를 공유하고 있기 때문이다.)
  • 증가된 신뢰성 (만약 기능들이 여러 개의 처리기에 적절히 분산된다면, 한 처리기가 고장나더라도 시스템이 정지하는 것이 아니라 단지 속도만 느려지게 될 것이다.)

멀티프로세서 시스템에는 두 가지 형태가 있다.

  • 어떤 시스템은 각 처리기에 특정 태스크가 할당되는 비대칭적 다중 처리를 사용한다. 하나의 주 처리기가 시스템을 제어하고 다른 처리기들은 주 처리기의 명령을 수행하거나 미리 정의된 태스크를 수행한다. (Boss - Slave)

  • 또 다른 것은 대칭적 다중 처리(SMP)가 있다. 각 처리기가 운영체제 내의 모든 작업을 수행하며 처리기 간 Boss-Slave 관계가 없다.


이 포스팅은 19년도에 작성한 https://blog.naver.com/koojj3586/221520048139 포스팅입니다.

알고리즘 - pair 원소를 가지는 vector의 정렬기준 변경하기

[React] 리액트 Hooks (2) - useReducer