운영체제 챕터 1 Introduction

김규회·2023년 3월 9일
1

운영체제

목록 보기
1/1
post-thumbnail

0. 운영체제란?

컴퓨터 하드웨어를 관리하는 소프트웨어이며 하드웨어와 유저간의 인터페이스 역할을 한다. 인터넷에 관련된 물건들에 전부 다 위치하고 있다.

운영체제의 복잡성 -> 운영체제는 많고 다양하므로 조각조각 분리한다.

1.1 운영체제는 어떤 일을 하는가?

◎ 컴퓨터 시스템

하드웨어 (Hardware)

CPU, Memory, Input/Output device 존재 => 여러 기본적인 computing resource들을 제공한다.

응용 프로그램 (application programs)

word processors, spreadsheets, compilers, web browsers => 사용자의 computing problems들을 해결할 때 사용된다.

◎ 컴퓨터 시스템의 추상적인 관점

★ 운영체제는 하드웨어를 통제하고 사용자와 응용프로그램 사이에 있어 긴밀한 협력관계를 가진다. 여기서 사용자는 컴퓨터 하드웨어와 직접 만나지 않는다.

◎ 운영체제의 User's view

User의 관점 및 목표

▷ 편한 사용감
▷ 자원( 메모리, disk 용량, CPU ) 활용감을 극대화
▷ 모바일 기기로의 상호작용 ( 터치스크린, 음성 인식을 통한 상호 작용 ex) SiRi )
▶ 어떤 컴퓨터는 user view가 없는 것도 있음. ex) 임베디드 시스템, 자동차에 있는 숫자 키 패드 (표시등을 통한 상태만 표시)

◎ 운영체제의 System's view

Resource allocator

▷ CPU time, memory space, storage space, I/O device 등 수 많은 자원을 특정 프로그램이나 사용자에게 computer system이 효과적으로 작동할 수 있도록 잘 분배함.
▷ 수많은 자원들의 충돌 문제를 해결함.

◎ 운영체제의 정의

운영체제는 많은 기능과 역할을 한다. 그러므로 완벽하게 정의하기 어렵다

▷ 다양한 H/W와 다양한 목적을 가지고 있으므로

운영체제가 존재하는 이유?

▷ 그들은 사용하고 있는 computing system내에서 문제 해결하는데에 있어서 합리적인 방향책을 제시해준다.
=> 근본적인 목표 : 프로그램을 실행하고 유저의 문제를 해결하기 위해서

제조사가 출시하는 모든 것

컴퓨터에서 항상 돌아가는 프로그램 (kernel + System Programming)

1.2 컴퓨터 시스템 구성

CPU와 Device Controller는 공유 메모리로 차례로 접근하고 메모리 컨트롤러를 메모리에 동기화 시키기 위해 System bus를 이용하여 서로 경쟁함.
▷ 여기서 System bus는 Component와 공유 메모리를 제공하는 통로 역할을 함.

Device Controller

▷ 여기서 Device Controller는 (disk controller, USB controller, graphics adapter)을 얘기함.
▷ local buffer 저장소와 특별한 목적을 가진 레지스터를 가지고 있음.

◎ Interrupts란?

▷ CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 예외상황이 발생하여 처리가 필요할 경우에 마이크로프로세서에게 알려 처리할 수 있도록 하는 것을 말한다.
▷ 주변장치와 입출력 장치는 CPU나 메모리와 달리 인터럽트라는 메커니즘을 통해 관리된다.
▷ 인터럽트는 크게 하드웨어 인터럽트와 소프트웨어 인터럽트로 나뉜다.

Interrupt 관련 용어

Interrupt 핸들러

실제 Interrupt를 처리하기 위한 루틴으로 CPU의 핵심적인 기능 중 하나이다. Interrupt handler는 원래 하던 일을 잠깐 멈추고 작업을 수행해야되므로 빨라야 한다.

Interrrupt 벡터

Interrupt 발생 시 처리해야 할 Interrups 주소를 Interrupt별로 보관하고 있는 리스트이다.

Interrupt를 하는 이유

입출력 연산이 CPU 명령 수행속도보다 현저히 느리기 때문이다.
결국 정리하자면 아주 오래 걸리는 입출력 연산 시간 동안 CPU가 다른 일을 시킨 뒤에 다시 입출력 연산 시간이 끝나면 CPU가 다시 입출력 처리 일을 시작한다.

하드웨어 Interrupt

하드웨어가 발생시키는 인터럽트로 다른 하드웨어 장치가 CPU에 신호를 보내줄 때 발생한다.

소프트웨어 Interrupt

소프웨어가 발생시키는 인터럽트는 보통 System Call에 의해 발생한다.

◎ Interrupt Timeline


process A가 실행 중에 디스크에서 어떤 데이터를 읽어오라는 명령을 받았다고 가정해보자.
▷ 우선 I/O device에서 디스크에 어떤 데이터를 전송하여 읽기 위해 시간이 걸린다.
▷ 그 이후 전송이 끝나면 System call을 통해 CPU에 Interrupt를 날린다.
▷ 이때 CPU는 현재 다른 일을 수행중이던 상태를 멈추고 Interrupt service rountine이 실행된다.
▷ 해당 일을 다 처리하면, CPU에서 멈췄던 일을 다시 실행한다.

◎ Interrupt의 명령

명령어의 종류

CPU가 수행하는 명령어 종류에는 일반 명령과 특권 명령이 있다.
일반 명령은 메모리에서 자료를 읽어오고, CPU에서 계산을 할 수 있는 등의 명령으로 모든 프로그램이 수행할 수 있는 명령이다.
특권 명령은 보안이 필요한 명령으로 I/O devices 등의 장치를 접근하는 명령어이다.

◎ Storage Structure

▷ CPU는 항상 메모리를 통해 로드된다. 그래서 어떤 프로그램이든 항상 메모리에서부터 로드되기 시작한다.

RAM(Random-Access-Memory)

▷ 일반적인 목적을 가진 프로그램은 다시 쓰여질 수 있는 메모리로부터 실행되는데 이를 RAM(Random-Access-Memory)이라고 한다.
▷ RAM은 주로 휘발성 메모리에 속한다.

DRAM(Dynamic Random-Access-Memory)

▷ Main Memory를 보통 DRAM이라고 부른다.
▷ DRAM은 휘발성 메모리에 속한다.

Computer가 메모리를 사용하는 예시

▷ Computer Power가 켜질 때 -> bootstrap Program을 사용함(OS가 이를 작동시킴.).
이때 RAM은 휘발성 메모리라서 컴퓨터를 끄고 킬 때 데이터가 다 날아갈 수 있으므로 EEPROM(흔히 말하는 firmware)에 bootstrap Program을 저장한다.

폰 노이만 구조에 기반

▷ Instruction과 data는 같은 Memory에 저장되어 있고, CPU는 단일 통로로 되어 있다.

Secondary Storage

▷ 우리는 보통 프로그램과 데이터를 Main Memory에 저장할려고 한다. But Main Memory는 휘발성 메모리라서 전원이 꺼지면 데이터가 사라진다 -> 그래서 Main Memory의 extension인 Secondary Storage를 이용하여 대용량 데이터를 저장한다.
ex) HDD(Hard Disk Drive), NVM(Non Volatile Memory)
▷ Secondary Storage는 Main Memory보다 속도가 느린 편이다.

Storage Device hirearchy


▷ 메모리는 빠를수록 크기도 작아진다. 또한 휘발성 메모리이다. 이를 보통 primary storage라고 부른다.
메모리가 점점 느려지면서 크기도 커지게 되는데 이때 Second storage라고 불리는 비휘발성 메모리가 존재하게된다.
더 느려지면서 더 큰 메모리 들은 tertiary storage라고 부른다. 이들은 보통 다른 기기에 백업하기 위해 데이터를 저장해놓는다.

I/O structure

Device Controller

▷ CPU와 device controller가 시스템 버스로 연결되어있음.
▷ Local buffer와 특별한 레지스터를 가지고 있음.
▷ OS가 device driver를 통해 서로간의 상호작용함.

1.3 Computer-System Architecture

◎ Single Processor System

▷ 거의 대부분의 시스템은 전용 처리기를 가지는데, 기본적으로 간단한 것들은 Single-Processor System으로 이루어져 있다.

예를 들어 이것이 메인 CPU로부터 연속된 요청을 받게 된다고 생각하자(컴퓨터에 연결된 이동식 디스크)
이 때 이 전용 처리기는 메인 CPU의 부탁을 받아들이고, 내부에서 조정해야 하는 디스크 큐와 스케쥴링은 스스로 진행해서, 메인 CPU는 이런 자잘한 부분은 신경쓰지 않아도 괜찮게된다.

정리하자면, 범용 처리기 CPU가 하나 있는 시스템을 Single-Processor System이라고 부른다.
CPU = Core + Other special-purpose processors로 구성되어있다.

Core

▷ 하나의 CPU안에는 하나의 processing core가 존재한다. 이때 코어는 데이터를 저장하고 component를 실행시켜주는 역할을 한다. genral-purpose processor에 해당한다.

Other special-purpose processors

▷ 때때로 OS가 관리할때도 있다.
▷ 보통 limited instruction set을 실행시켜준다.

◎ Multi Processor System

▷ 여러 개의 CPU 코어가 컴퓨터 버스, 클록, 때로는 메모리와 주변장치를 공유하는 형태로 사용될 때를 의미한다.

장점

▷ 증가된 코어로 이해 처리량 자체가 늘어난다.(N배만큼 코어가 늘어났다고 N배만큼 처리량이 늘어나지는 않는다.)
▷ 경제적으로 이득이다. 여러 프로그램이 동일한 데이터를 사용하려고할 때, 데이터를 복사해서 또 올리는 것이 아니라 올려져 있는 데이터를 공유해서 작업할 수 있게 할 수 있다.

Symmetric Multiprocessing(SMP)


▷ 모든 프로세서가 동등한 관계를 가진다.
▷ 각 프로세서는 각자만의 레지스터와 캐시를 가지고 있다.
▷ 각 프로세서들은 system bus를 통해 공유 메모리를 이용한다.
▷ 그리고 CPU가 분리되어 있기 때문에, 한 CPU가 일을 과다하게 하지 않을 수 있도록 Task분배를 잘 해줄 필요가 있다.

Asymmetric Multiprocessing


▷ CPU가 하나 있고 다른 것들이 옆에 있는 형식으로 주종 관계가 정해져 있다.

Clustered System

▷ 여러 대의 컴퓨터가 저장장치를 공유하고 근거리 통신망이나 고속 연결망으로 연결되는 형태이다.
이 때 하나가 고장나면, 다른 컴퓨터(노드라고 한다)가 그 ▷ 컴퓨터의 저장장치의 소유권을 넘겨받고(저장장치를 공유하고 있기에 소유권 양도가 가능하다) 이어받아서 시작하게 된다. 신뢰성 증대의 효과가 있다.
▷ MultiProcessor System처럼 Asymmetric하거나 symmetric하게 동작하게 하는 것이 가능하다.

1.4 Operating-System Operations

▷ 세상에 OS는 매우 많은 종류가 존재한다.

◎ Multiprogramming and Multitasking

Multiprogramming

▷ 운영체제에 있어서 가장 중요한 점은 다양한 프로그램을 실행할 수 있는 능력이다.(Multiprogramming) => CPU 활용도를 늘리기 위해서

Multitasking

▷ 결국 Multiprogramming의 일환이다. Multitasking System에서는 CPU를 빠른 응답시간을 통해 다양한 프로세스를 실행한다. => I/O를 실행함에 있어서 매우 시간이 빠르게 소요된다.

◎ Dual-Mode and Multimode Operation

필요성

▷ 운영체제의 적절한 동작을 보장하기 위해서, 운영체제 코드의 실행과, 유저가 정의한 코드의 실행을 구분할 수 있어야 한다.

그래서 Mode bit를 통해 두 가지의 모드로 나눌 수 있다.

Mode bit란?

CPU에서 기계어를 실행할 때 운영체제가 실행하는 것인지, 사용자가 실행하는 것인지 구별하기 위해 사용하는 것이다.

User mode(mode bit 1)

▷ 유저(사용자)가 접근할 수 있는 영역을 제한적으로 두고, 프로그램의 자원에 함부로 침범하지 못하는 모드이다.

Kernal mode(mode bit 0)

▷ 모든 자원(드라이버, 메모리, CPU)등에 접근, 명령을 할 수 있다.

User 모드, Kernal 모드 간의 전환

User mode -> Kernal mode

▷ 프로세스가 유저모드에서 실행되다가 특별한 요청이 필요할 때 system call을 통해 커널에 요청한다.

Syscall

▷ User Mode에서는 특권 명령을 사용할 수 없기 때문에 syscall을 거쳐야 한다.

Kernal mode -> User mode

▷ system call의 요청을 받은 커널은 그 요청에 대한 일을 하고 결과 값을 system call의 리턴 값으로 전해준다.

이 과정이 수 없이 반복되며, 프로세스가 실행이 된다.

◎ Timer

▷ 사용자 프로그램이 CPU를 무리하게 사용하고 있을 때 운영체제가 이를 제제할 수 있도록 도와주는 부가적인 하드웨어이다. CPU에 대해 짧은 시간 간격으로 나눠 쓸 수 있도록 해줌으로써 time sharing을 위해서도 사용된다.

Timer가 인터럽트 발생시키는 과정

  1. 운영체제가 사용자 프로그램에게 CPU를 넘길 때 timer에 시간을 세팅해서 넘겨준다.
  2. timer는 일정 시간으로 Interrupt를 발생시킨다.
  3. 사용자 프로그램이 아무리 무한 루프를 도는 프로그램을 사용하고 있더라도 timer가 interrupt를 발생시켜 운영체제로 CPU가 다른 프로그램으로 넘어가게 된다.

여기서 부터는 뒷 단원들에서 다룰 내용이므로 간단하게 집어넘어가는식으로 진행해보자.

1.5 Resource Management

▷ 운영 체제(OS)는 기본적으로 컴퓨터 하드웨어 리소스를 관리하고 컴퓨터 프로그램에 공통 서비스를 제공하는 소프트웨어 모음이다.

운영체제에서 제공하는 일반적인 서비스
▷ 프로그램 실행
▷ I/O 작업
▷ 파일 시스템 조작
▷ 자원 할당

◎ Process Management

▷ 프로세스는 작업을 수행하기 위해 CPU time, memory, 파일, 그리고 I/O 장치등 특정 자원을 필요로 한다. 이 자원들을 보통 작업 도중 할당된다.

◎ Memory Management

▷ 기본 메모리를 처리하거나 관리하고 실행 중에 메인 메모리와 디스크 간에 프로세스를 앞뒤로 이동하는 운영 체제의 기능이다. 메모리 관리는 메모리가 일부 프로세스에 할당되었는지 또는 사용 가능한지에 관계없이 각각의 모든 메모리 위치를 추적한다. 프로세스에 할당할 메모리 양을 확인하고 어떤 프로세스가 어떤 시간에 메모리를 얻을지 결정한다. 일부 메모리가 해제되거나 할당되지 않을 때마다 추적하고 그에 따라 상태를 업데이트한다.

◎ File-System Management

▷ 파일 관리는 운영 체제에서 제공하는 기본적이지만 중요한 기능 중 하나이다 . 운영체제에서의 파일 관리는 컴퓨터 소프트웨어에 존재하는 파일(바이너리, 텍스트, PDF, 문서, 오디오, 비디오 등)을 다루거나 관리하는 소프트웨어라고 생각하면 편하다.

◎ Mass-Storage Management

▷ 앞에서 다뤘던 secondary storagement에 관련된 내용이다. secondary storagement 와 tertiary storagement의 기술에 관해서 설명하는데 이는 11단원에서 자세하게 다뤄볼 예정이다.

◎ Cache Management

▷ 캐시는 데이터 액세스 속도를 높이는 데 사용되는 메모리 유형이다. 일반적으로 모든 프로세스에 필요한 데이터는 주 메모리에 있는데 충분히 자주 사용하면 일시적으로 캐시 메모리로 옮겨진다.
캐시는 제한된 사이즈 때문에 캐시 관리는 매우 중요한 design problem 이다. 캐시 사이즈 선택과 교체 알고리즘(?)는 성능 향상에 큰 영향을 끼칠 것 이고 이에 대한 자세한 내용은 chapter 10에서 다룰 내용이다.

◎ I/O System Management

▷ I/O system은 몇가지 구성요소를 구성하고 있다 :
○ 메모리 관리 구성요소는 buffering, caching 그리고 spooling을 포함한다.
○ 일반적인 장치-드라이버 인터페이스
○ 특별한 하드웨어 장치의 드라이버

1.6 Security and Protection

▷ 보호와 보안을 위해서는 CPU, 소프트웨어, 메모리 등 컴퓨터 리소스가 보호되어야 한다.

이때 시스템을 보호하기 위해 각 사용자들을 식별이 필요한데 인증하는데에 있어 다양한 방법이 있다.

사용자의 ID

각 사용자마다 고유한 사용자의 이름과 비밀번호 조합을 가지고 있기 때문에 시스템을 액세스하기 위해서는 올바르게 입력해야된다.

1.7 Virtualization

가상화란?

▷ 가상화는 운영 체제(OS), 서버, 저장 장치 또는 네트워크 리소스와 같은 항목의 실제 버전이 아닌 가상 버전을 생성하는 것.

가상화는 하드웨어 기능을 시뮬레이트하는 소프트웨어를 사용하여 가상 시스템을 생성한다. 이 관행을 통해 IT 조직은 단일 서버에서 여러 운영 체제, 둘 이상의 가상 시스템 및 다양한 응용 프로그램을 운영할 수 있다.

1.8 Distributed System(분산 시스템)

▷ 분산 시스템은 물리적으로 분리되어 있지만 분산 시스템 소프트웨어가 장착된 중앙 집중식 컴퓨터 네트워크로 연결된 자율 컴퓨터 시스템의 모음이다. 자율 컴퓨터는 리소스와 파일을 공유하고 할당된 작업을 수행하여 각 시스템 간에 통신한다.

1.9 Kernal Data Structure

운영체제 내에서 쓰이는 자료구조들인데 이런 것들이 있구나 하고 넘어가면 될 것 같다.

▷ Lists, Stack, Queue

▷ Tree

▷ Hash Functions and Maps

▷ Bitmaps

profile
프론트엔드 Developer

0개의 댓글