컴퓨터 사이언스 (CS)/운영체제

02. 운영체제의 개념과 구조

한소희DE 2021. 5. 31. 23:25

 

목차

1. 운영체제 정의 및 기능

2. 전통적인 컴퓨터 시스템

   2-1. 폰 노이만 아키텍처 (insruction cycle)

3. 저장 시스템

4. 컴퓨터 시스템 구성

5. 운영체제의 2가지 듀얼 모드

6. 현대 컴퓨터 시스템

7. 컴퓨팅 환경

 


 

1. 운영체제 정의 및 기능

  • 하드웨어를 운영하는 시스템
  • 어플리케이션, 유저, 하드웨어를 연결하는 시스템
  • 항상 running하는 시스템
  • kernel에서 시스템과 어플리케이션 간 인터페이스 제공

 


 

2. 전통적인 컴퓨터 시스템

  • CPU, Bus 로 구성되어 있음. (Bus를 통해 RAM, USB Controller, Disk Controller 등과 연결되어 있음)

 

< 부족한 개념 설명 추가 >

1. 부트스트랩: 발을 끼워 넣으면 신발이 쏙 들어가듯, CPU로 Memory 정보 가져오기 위해 ROM에서 명령어를 불러온다. 이를 부트스트랩이라고 한다. 이는 컴퓨터가 켜지자마자 바로 실행된다.

 

2. Interrupts: CPU가 특정 기능 수행하는 도중에 급하게 다른 일 처리하고자 할 때 사용할 수 있는 기능. I/O 디바이스 등에서 전달된 명령어를 우선순위에 맞게 시스템 Bus 통해 CPU로 전달.처리하는 과정.

즉, 어느 한 순간에 CPU가 실행하는 명령은 하나인데 다른 장치와의 대화는 어떻게 이루어지는가?에 대한 답이 된다.

 

※ 추가 설명 링크

https://velog.io/@hyun0310woo/7.-운영체제-인터럽트에-대해서

 

#7 운영체제 | 인터럽트는 무엇이고 왜 필요한가

인터럽트란 CPU가 특정 기능을 수행하는 도중에 급하게 다른 일을 처리하고자 할 때 사용할 수 있는 기능이다.대부분의 컴퓨터는 한 개의 CPU를 사용하므로 한 순간에는 하나의 일 밖에 처리할 수

velog.io

 

fetch-execution 중에 interrupt를 처리하게 되면 실행중이던 연산의 중간 값들을 저장해야하므로 비효율적이다. 따라서 실행중이던 cycle이 종료된 후 interrupt 처리를 한다. 이 과정에서 약간의 오버헤드(시간과 메모리 등)가 있음(인터럽트의 종류, 처리 방식을 결정하기 위해 인터럽트 처리기 내에서 추가 명령어를 수행해야함)은 당연하지만 인터럽트를 허용하는 것이 처리기의 효율적 이용 측면에서 이익이기 때문에 인터럽트가 필요하다.

 

 


 

2-1. 폰 노이만 아키텍쳐

instruction(-execution) cycle을 폰노이만 아키텍쳐라고 한다.

Instruction Set(컴퓨터에 명령을 내려주는 명령어들의 집합) 정의 후, 이 정의어들로 구성된 컴퓨터 프로그램을 메모리에 로딩. 메모리에 있는 명령어들을 CPU가 fetch(인출). 그리고 fetch된 정보를 다시 execute(실행). 이를 반복하는 사이클

※ Instruction Register: CPU내에서 처리할 명령어나 연산에 사용할 값이나 연산 결과를 일시적으로 기억하는 장치. 이 연산결과 등을 메모리에 저장하기도 함

 


 

3. 저장 시스템 (Storage Sys.)

저장 용량과, 접근 시간(Access time)에 따라 구조적으로 구성되어있는 시스템을 의미

운영체제는 이 저장 시스템들도 관리해주어야 함

 

 


 

4. 컴퓨터 시스템 구성 (Computer Sys. Components)

이제는 시스템에 CPU와 메모리 한 개씩 있는 구조는 거의 존재치 않음. 아래와 같은 구성으로 이뤄짐.

  • CPU (컴퓨터 시스템의 두뇌 역할을 하는 중앙처리장치)
  • Processor
  • Core
  • Multi Core
  • Multi Processor

 

구성에 따라, 시스템의 구조명이 다 다른데, 대표적인 구조는 SMP, Multi-Core, Multi-Programming이 있음

 

4-1. SMP(Symmetric Multiprocessing)

메모리는 한 개인데, 여러 개 CPU가 각각의 register와 cache를 갖고 달려 있는 구조

단점: 비용이 많이 듦

 

 

4-2. Multi-Core Design

SMP의 단점 해결을 위해 생성됨. 1개 CPU안에 CPU의 Core만 회로를 여러개로 구성. 이런 코어로 나눠진 것들이 또 여러개가 붙을 수 있음.

 

 

🔥 4-3. Multi Programming

프로그램을 한 개씩 로딩해서 메모리를 사용해왔지만, 지금은 여러개 프로그램을 메모리에 동시에 올려 동시에 실행. 이를 multi-programming 이라고 부름.

왜 메모리에 프로세스를 동시에 올리는가?

1. CPU 사용 효율을 높일 수 있음
2. 이를 통해 Multi tasking (=Multiprocessing)을 실현할 수 있음.

만약 업무가 워드 프로세서를 돌린다면, 100%의 CPU 중 2% 정도만 쓴다. 이때 만약 타 프로그램을 돌리면 남은 잔여 CPU로 그 이상을 쓸 수 있다. 이를 효율적으로 관리하기 위해, CPU Schduling 을 해야 한다. (이후 세부학습 예정)

 

 


 

5. 운영체제의 2가지 듀얼 모드

각 프로그램이 다른 프로그램 실행 방해하거나, 충돌 방지 위한 보안 기법 필요하여 개념이 생성

1. User Mode

애플리케이션의 동작. 직접적으로 하드웨어 처리 불가능. 제한적 명령 수행.

 

2. 🔥 Kernel Mode

애플리케이션의 충돌 등을 방지하고 Sys. call 처리. 직접적인 하드웨어 제어 수행. 시스템에 중요한 영향 미치는 연산은 커널모드에서만 실행. 컴퓨터에서 항상 실행되는 운영체제의 핵심

 

🔥 이 두가지 모드를 구분하는 방법

CPU 내부 모드 비트(mode bit)가 모두 0이면 커널 모드. 모두 1이면 유저 모드.
→ 따라서 보안 관련 명령 수행할 땐, 항상 모드 비트를 조사해 모두 0일 경우만 그 명령을 수행. 프로세스는 수없이 유저모드와 커널모드를 반복하며 실행

 

🔥 Sys. call 이란?

사용자가 OS 인터페이스에 접근하려면 CLI(명령어 기반 인터페이스), GUI(마우스 기반 인터페이스), Touch-Screen(터치를 통한 인터페이스) 등을 통해 사용자가 인터페이스한다.

그렇다면 실제로 응용프로그램은 OS와 어떻게 인터페이스하는가? 이에 대한 해답이 바로 Sys. call이다. 이는 응용프로그램과 OS 가 인터페이스 하는 과정을 뜻한다. Sys. call 함수를 직접 사용은 어려워 API로 호출해 처리한다. 즉, OS의 API가 Sys. call이라고 할 수 있다. 이를 갖고 사용자가 open, read, write한다. 일일이 open은 힘드니까, 라이브러리를 호출해 처리한다. 아래는 그의 예시이며, 앞으로 더 자세히 배울 것이다.



 

 


 

6. 현대 컴퓨터 시스템

Virtualization (가상화)

대표적인 현대 컴퓨터 시스템을 나타내는 단어는 가상화다. 원래는 한 대의 컴퓨터에서 여러 프로세스(실행중인 프로그래밍)을 수행하는데, VMM(Virtual Machine Manager)을 하드웨어 위에 올려 여러 개의 OS를 갖고 OS 스케줄링을 하여 동시 OS 수행이 가능해졌다.

※ VMM: VMWare나 XemServer 등의 관리매니저

 


7. 컴퓨팅 환경

OS는 컴퓨팅환경을 실행시킬 수 있도록 하는 환경을 제공하는 것에 그 의미가 있다.

 

* Client-Server 컴퓨팅

한개의 웹 서버에 네트워크를 통해, 여러 개의 클라이언트 데스크탑이 접근 (대표 예시:Wep)

* Mobile 컴퓨팅

휴대폰 운영체제 등이 존재, 활성화하기 시작

* Peer-to-Peer 컴퓨팅

전통적인 운영체제(Client-Server 컴퓨팅)는, 한 개의 웹 서버에 여러 개 클라이언트가 접근하는 구조. 요즘은, 중앙 서버 없이도 컴퓨터가 운영됨.

* Cloud 컴퓨팅(=Edge 컴퓨팅)

AWS, Azure, GCP 등 클라우드 서비스를 통해 서비스를 개발하기도 함.

하드웨어 자원은 UI에 불과, 컴퓨팅 자원은 모두 클라우드에 존재. 클라우드에 서버, VM, Storage 등을 모두 들어가 있다. 우리는 그것을 터미널을 통해 클라우드가 제공하는 서비스를 활용