버티의 블로그
[운영체제 #05] Computer System Operation 본문
Computer Startup
컴퓨터에 파워가 들어오면, 반드시 Bootstrap program(loader)가 Booting 작업을 한 후 시스템이 시작된다. 이 과정을 포함해서 사용자가 컴퓨터의 전원을 킨 다음 일어나는 과정은 다음과 같다.
- Bootstrap loader은 disk(보통 ROM)에서 OS kernel을 찾는다.
- 찾은 OS kernel을 메모리에 적재한다.
- OS 실행을 시작한다.
Computer Organization
컴퓨터 시스템은 Bus라고 불리우는 장치가 CPU, 메모리, 입출력 장치, 컨트롤러 등을 모두 연결하는 구조인데, 버스는 주소 버스, 데이터 버스, 그리고 제어 버스까지 3가지 유형으로 나뉜다.
- 주소 버스 (Address Bus) : CPU가 메모리 또는 입출력 장치에 특정 메모리 주소를 전달할 때 사용하며 단방향이다.
그래서 버스와 각 장치들의 간선은 모두 양방향이지만, CPU → 주소버스, 주소버스 → 메모리만 단방향이다. - 데이터 버스 (Data Bus) : 실제 데이터가 CPU, 메모리, 입출력장치 사이에서 이동하는 통로로 양방향이다.
- 제어 버스 (Control Bus) : 메모리 read/write나 인터럽트 등의 제어 신호들이 전달되는 버스이다.
그럼 위 버스들로 CPU는 어떻게 데이터를 읽거나 메모리에 쓸까?
CPU가 메모리로부터 데이터를 읽는 과정
- CPU가 읽고자 하는 데이터의 메모리 주소를 주소 버스로 memory controller에 전송한다.
- 동시에 CPU는 제어 버스로 memory controller에 read operation을 요청한다.
- memory controller는 받은 주소로부터 4바이트의 데이터를 찾아 데이터 버스로 CPU에 전송한다.
- CPU는 받은 데이터를 레지스터에 저장한다.
CPU가 메모리에 데이터를 쓰는 과정
- CPU가 쓰고자 하는 데이터의 메모리 주소를 주소 버스로 memory controller에 전송한다.
- 동시에 CPU는 쓰고자 하는 데이터를 데이터 버스로 전송한다.
- 동시에 CPU는 제어 버스로 memory controller에 write operation을 요청한다.
- memory controller는 데이터 버스로 받은 데이터를 주소 버스로 받은 주소에 저장한다.
- memory controller는 제어 버스로 write를 완료했다는 신호를 전송한다.
또한 위 그림에는 없지만 I/O Device를 담당하는 Device Controller들을 총괄하는 Device Driver도 존재한다.
- Device Controller : 입출력 장치를 직접 제어하는 하드웨어로, 상태를 모니터링하면서 데이터 입출력과 전송을 한다.
- Device Driver : OS가 Device를 적절히 제어하고 사용할 수 있도록 인터페이스를 제공하는 소프트웨어로, Device의 세부 내역은 숨겨서 복잡성을 줄인다(추상화). 드라이버는 제어 버스를 통해 Device Controller에 명령을 보내거나 Device의 상태 정보를 받을 수 있다.
이들을 이용해서 입출력 장치들과 CPU가 동시에 실행할 수 있게 하는 것이 운영체제의 목표다.
Von Neumann Architecture
컴퓨터구조 수업때 한 폰노이만 구조를 우선 살펴보자면 다음과 같은 요소들이 상호작용하는 구조다.
- CPU : 연산장치(ALU), 제어장치(PC, IR등)와 여러 레지스터로 구성된 장치
- 메모리 : 데이터와 명령어를 저장하는 장치
- 그 외 입출력 장치와 대용량 저장 장치 등
이 개념이 stored-program 구조로 확장되었고, 후에 나올 프로세스가 이 구조이다. 크게 4가지 섹션으로 나뉜다.
- Stack : 임시 데이터(지역변수, 파라메터, return주소)등을 저장하는 곳
- Heap : 동적으로 할당된 메모리를 저장하는 곳
- Data : 전역 변수와 static 변수를 저장하는 곳
- Text : 프로그램의 코드를 저장하는 곳
Virtualization
가상화는 컴퓨터의 서버나 스토리지, 네트워크 장치 등 물리적 리소스를 추상화하여 여러 개의 분리된 환경을 만드는 기술인데, 가상 머신(Virtual Machine, VM)이 진행한다. 가상화 기술이 등장함으로써 가상 리소스들을 사용자들이 공유할 수 있게 됐고 이로 인해 IT 인프라의 유연성을 획기적으로 높이며 비용도 절감할 수 있게 됐다.
기존 단일 운영체제 환경(a)를 보면 프로세스(app), 커널(OS), 하드웨어로 이루어진 단순한 구성인데, 가상화 환경(b)를 보면 하드웨어 위에 Host OS가 있고 그 위의 Virtual machine manager가 VM들을 관리한다. 여기에 각 VM들이 가상화된 컴퓨터 환경을 의미하며, 각각 독립된 OS와 프로세스를 갖는다. 이런 식으로 마치 별도의 컴퓨터인 것처럼 동작이 가능하다.
이 가상화를 기반으로 한 컴퓨팅 환경이 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 |