운영체제에 필요한 컴퓨터 시스템은 어떻게 구성되어 있을까?
운영체제의 역할에 대해 이해하려면 먼저 컴퓨터 시스템의 구조를 알아야한다.
우리는 1. 운영체제란? 에서 컴퓨터 시스템의 기본적인 구조를 확인했었다.
크게 응용 SW <-> OS <-> HW의 계층을 갖고 있는데 여기서 OS가 사용자(응용 SW)와 HW 간에 중계 역할(인터페이스)을 수행하고 있기 때문이다. 그래서 OS는 자원에 대해 배타적 독점을 하고 있고 사용자나 SW는 OS를 통해서만 HW에 접근할 수 있다는 특징이 있다.
사실 이 내용은 OS의 선수과목으로 언급되는 컴퓨터 구조나 시스템 프로그래밍에서 공부해야 할 내용인데 이미 알더라도 복습하는 내용으로 넘어가려고 한다.
- CPU(Central Processing Unit)는 중앙처리장치로 메모리에 적재된 모든 명령을 처리하는 역할을 한다.
- 32비트 CPU의 경우 2^32 bit로 총 4GB의 데이터를 처리한다.
- 즉, 메모리가 4GB를 초과해도 CPU는 4GB만 처리할 수 있다.
- PC, IR, SP, Data Registers, Statuts Register, ... 다양한 레지스터를 가지고 있다.
- 메모리(Memory)는 우리가 흔히 아는 RAM으로 실행 프로그램(*.exe)과 같은 실행을 위한 목적 프로그램이 적재되는 공간이다.
- 캐시 메모리(Cache Memory)는 CPU의 처리속도 발전에 비해 느린 RAM의 속도를 보완하기 위해 CPU와 RAM 사이의 속도를 개선하기 위한 작은 메모리이다.
- 캐시 데이터라는 말을 들어봤을 것이다. 임시적으로 저장되는 내용인데 캐시 메모리가 그 역할을 한다. 자주 실행되거나 지역성을 띠고 있으면 캐시 메모리에 저장되어 다음 번에 사용할 때, 느린 메모리보다 빠른 Cache 메모리에서 접근하면서 처리 속도를 높이는 방법이다.
- On-Chip, Off-Chip 캐시가 있는데 각 각 CPU 내부와 외부에서 속도 개선을 위해 사용되는 캐시 메모리이다.
- 버스는 간단하다. 우리가 컴퓨터 본체를 조립 할 때, 선들을 연결하는데 이 선들이 버스이다. HW가 실행되기 위해 직접적으로 연결되는 선으로 0과 1의 디지털 신호가 송,수신 되는 것이다.
- 주소 버스, 데이터 버스, 제어 버스가 있다.
- 그 외 입출력 제어 장치 및 시스템 제어 회로가 존재한다.
- DMAC (Direct Memory Access Controller) : I/O HW와 메모리 사이 데이터 전송을 주소값을 통해 직접 전송
- INTC (Interrupt Controller) : I/O 입출력이 제대로 수행 됐을 경우 CPU에게 전달하는 장치
- 현대에는 조금 더 발전되어있다.
- NorthBridge : 메모리 접근량이 많아 메모리와 빠르게 정보를 주고 받는 HW를 연결
그래픽 제어 장치, CPU 및 캐시 메모리가 대표적인 예시 - SouthBridge : 입출력 장치 제어를 위한 통합 칩
대부분의 입출력 장치가 여기에 연결되어있다.
- NorthBridge : 메모리 접근량이 많아 메모리와 빠르게 정보를 주고 받는 HW를 연결
컴퓨터 시스템 계층 구조를 왜 알아야 할까?
그 이유는 운영체제의 동작 방식을 제대로 이해하기 위해서이다.
컴퓨터는 대부분 인터페이스로 이루어져있다. 만약 OS라는 인터페이스가 없다고 생각해보자.
그림 A에서 확인했듯이 사용자는 키보드로 입력한 값을 HW에 저장하기 위해 직접 버스를 통해 HW 주소에 접근해야한다. 이 때, 어느 공간이 비어있는지 확인해야하고. 메모리의 특정 주소에 누군가가 값을 삽입할 예정인데 현 시점에서는 그것을 모르고 있으니 그 주소에 접근했다가 데이터가 손실된다거나 하는 여러 문제가 생긴다.
운영체제가 없는 경우
실생활 예시로 필리핀과 같은 국가를 보면 사거리 도로에 신호등이 없거나 따로 관리해주는 사람들이 없어서 무질서하다. 이 경우, 속도는 조금 더 빠를 수 있지만 사고에 대한 걱정을 하게 되고 모든 차가 동시에 출발하려는 상황이 발생할 수 있다. 이 때, 운영체제가 도입된다면 가장 적절한 운영체제는 신호등이 될 것이다. 신호등은 사거리에서 특정시간마다 A, B, C, D에서 출발할 수 있도록 스케줄링한다. 컴퓨터의 운영체제가 같은 역할을 한다고 볼 수 있다.
운영체제가 하는 역할
운영체제는 중계자 역할을 한다고 했는데 크게 HW와 SW 사이의 중계 역할을 한다.
응용프로그램에 대한 운영체제의 역할
응용프로그램이 직접 HW를 다루지 못하도록 차단한다. 앞에서 계속 나왔던 말이지만, 운영체제는 응용프로그램 간 HW 사용의 충돌 때문에 자원을 독점하고 있다. 응용프로그램이 HW를 사용하고 싶을 때가 있을텐데 이 때는 운영체제에게 요청한 뒤 운영체제가 대신해서 HW를 상황에 맞게 조작한다.
예를 들어 DISK에 데이터를 저장하고 싶은데 적절한 위치를 찾는 경우
요청할 수 있는 유일한 방법은 System Call 호출이 있다.
이렇게 OS는 응용프로그램에 대해서 HW와의 인터페이스 역할을 하고 응용프로그램의 실행 순서를 제어하고 응용프로그램 사이의 통신을 중계할 수 있는 역할을 한다.
사용자에 대한 운영체제의 역할
사용자는 HW 지식이 없어도 된다. 만약 DISK에서 100번지 프로그램을 실행하고 싶은데, 어셈블리 언어나 기계 언어로 처리할 필요 없이 GUI로 DISK 100번지의 프로그램이 눈 앞에 보인다. 우리는 더블클릭만 하면 된다.
그 외에도 컴퓨터를 쉽게 사용하기 위해 다양한 방법을 제공한다.
하드웨어에 대한 운영체제의 역할
응용프로그램에서 네트워크에 접속하거나 화면에 무언가를 출력하거나, 키보드나 마우스로 입력받는 행위를 하게된다.
이 때, 운영체제는 드라이버를 통해서 HW에 대한 모든 처리를 하게 된다.
'CS > 운영체제' 카테고리의 다른 글
7. 프로세스 (Process) (0) | 2024.04.21 |
---|---|
6. 커널 (Kernal) (0) | 2024.04.21 |
4. 시분할 다중프로그래밍(Time Sharing Multi-Programming) OS (0) | 2024.04.21 |
3. 다중 프로그래밍 (Multi-Processing) OS (1) | 2024.04.21 |
2. 운영체제의 발전 (0) | 2024.04.21 |