버티의 블로그

[운영체제 #05] Computer System Operation 본문

전공 공부/운영체제

[운영체제 #05] Computer System Operation

ㅤ버티ㅤ 2024. 4. 18. 14:24
728x90

Computer Startup

컴퓨터에 파워가 들어오면, 반드시 Bootstrap program(loader)Booting 작업을 한 후 시스템이 시작된다. 이 과정을 포함해서 사용자가 컴퓨터의 전원을 킨 다음 일어나는 과정은 다음과 같다.

  1. Bootstrap loader은 disk(보통 ROM)에서 OS kernel을 찾는다.
  2. 찾은 OS kernel을 메모리에 적재한다.
  3. OS 실행을 시작한다.

Computer Organization

 

컴퓨터 시스템은 Bus라고 불리우는 장치가 CPU, 메모리, 입출력 장치, 컨트롤러 등을 모두 연결하는 구조인데, 버스는 주소 버스, 데이터 버스, 그리고 제어 버스까지 3가지 유형으로 나뉜다.

  • 주소 버스 (Address Bus) : CPU가 메모리 또는 입출력 장치에 특정 메모리 주소를 전달할 때 사용하며 단방향이다.
    그래서 버스와 각 장치들의 간선은 모두 양방향이지만, CPU → 주소버스, 주소버스 → 메모리만 단방향이다.
  • 데이터 버스 (Data Bus) : 실제 데이터가 CPU, 메모리, 입출력장치 사이에서 이동하는 통로로 양방향이다.
  • 제어 버스 (Control Bus) : 메모리 read/write나 인터럽트 등의 제어 신호들이 전달되는 버스이다.

 

그럼 위 버스들로 CPU는 어떻게 데이터를 읽거나 메모리에 쓸까?


CPU가 메모리로부터 데이터를 읽는 과정

  1. CPU가 읽고자 하는 데이터의 메모리 주소 주소 버스 memory controller에 전송한다.
  2. 동시에 CPU는 제어 버스로 memory controller에 read operation을 요청한다.
  3. memory controller는 받은 주소로부터 4바이트의 데이터를 찾아 데이터 버스로 CPU에 전송한다.
  4. CPU는 받은 데이터를 레지스터에 저장한다.

CPU가 메모리에 데이터를 쓰는 과정

  1. CPU가 쓰고자 하는 데이터의 메모리 주소주소 버스memory controller에 전송한다.
  2. 동시에 CPU는 쓰고자 하는 데이터를 데이터 버스전송한다.
  3. 동시에 CPU는 제어 버스로 memory controller에 write operation을 요청한다.
  4. memory controller는 데이터 버스로 받은 데이터주소 버스로 받은 주소에 저장한다.
  5. memory controller는 제어 버스write를 완료했다는 신호를 전송한다.

또한 위 그림에는 없지만 I/O Device를 담당하는 Device Controller들을 총괄하는 Device Driver도 존재한다.

  • Device Controller : 입출력 장치를 직접 제어하는 하드웨어로, 상태를 모니터링하면서 데이터 입출력과 전송을 한다.
  • Device Driver : OS가 Device를 적절히 제어하고 사용할 수 있도록 인터페이스를 제공하는 소프트웨어로, Device의 세부 내역은 숨겨서 복잡성을 줄인다(추상화). 드라이버는 제어 버스를 통해 Device Controller에 명령을 보내거나 Device의 상태 정보를 받을 수 있다.

이들을 이용해서 입출력 장치들과 CPU동시에 실행할 수 있게 하는 것이 운영체제의 목표다.


Von Neumann Architecture

Von Neumann Architecture
Stored Program Concept

 

컴퓨터구조 수업때 한 폰노이만 구조를 우선 살펴보자면 다음과 같은 요소들이 상호작용하는 구조다.

  • CPU : 연산장치(ALU), 제어장치(PC, IR등)와 여러 레지스터로 구성된 장치
  • 메모리 : 데이터와 명령어를 저장하는 장치
  • 그 외 입출력 장치와 대용량 저장 장치 등

이 개념이 stored-program 구조로 확장되었고, 후에 나올 프로세스가 이 구조이다. 크게 4가지 섹션으로 나뉜다.

  • Stack : 임시 데이터(지역변수, 파라메터, return주소)등을 저장하는 곳
  • Heap : 동적으로 할당된 메모리를 저장하는 곳
  • Data : 전역 변수와 static 변수를 저장하는 곳
  • Text : 프로그램의 코드를 저장하는 곳

Virtualization

Compare traditional method(a) to virtualization(b)

 

가상화는 컴퓨터의 서버나 스토리지, 네트워크 장치 등 물리적 리소스를 추상화하여 여러 개의 분리된 환경을 만드는 기술인데, 가상 머신(Virtual Machine, VM)이 진행한다. 가상화 기술이 등장함으로써 가상 리소스들을 사용자들이 공유할 수 있게 됐고 이로 인해 IT 인프라의 유연성을 획기적으로 높이며 비용도 절감할 수 있게 됐다.

기존 단일 운영체제 환경(a)를 보면 프로세스(app), 커널(OS), 하드웨어로 이루어진 단순한 구성인데, 가상화 환경(b)를 보면 하드웨어 위에 Host OS가 있고 그 위의 Virtual machine manager가 VM들을 관리한다. 여기에 각 VM들이 가상화된 컴퓨터 환경을 의미하며, 각각 독립된 OS와 프로세스를 갖는다. 이런 식으로 마치 별도의 컴퓨터인 것처럼 동작이 가능하다.

 

Cloud Computing Environment

 

이 가상화를 기반으로 한 컴퓨팅 환경이 Cloud Computing으로, 네트워크를 통해 storage나 app 서비스를 제공한다. 이 서비스는 3가지로 나눠지는데, 인터넷으로 제공되는 어플리케이션SaaS, 어플리케이션 개발 및 배포를 위한 플랫폼과 환경을 제공하는 PaaS, 가상화된 서버나 스토리지를 인터넷으로 제공하는 IaaS가 있다.

'전공 공부 > 운영체제' 카테고리의 다른 글

[운영체제 #07] CPU Scheduling  (1) 2024.04.30
[운영체제 #06] I/O Systems  (0) 2024.04.19
[운영체제 #04] Threads  (0) 2024.04.16
[운영체제 #03] Interprocess Communication  (0) 2024.04.09
[운영체제 #02] Processes  (2) 2024.04.04