Ch.1 Introduction

imagine·2025년 3월 13일

OS

목록 보기
2/6

What is an Operating System?

  • 컴퓨터 하드웨어-사용자 사이에 중재자 역할을 하는 프로그램이다.

Kernel : 상시구동하며, OS의 core.

middleware : 소프트웨어의 일종으로 개발자에게 추가 서비스를 제공한다. (마우스 커서 등)

  • 운영체제의 목적
    • 사용자 프로그램을 실행하고 사용자 문제들을 더 쉽게 해결하기 위해서
    • 컴퓨터 시스템을 편리하게 사용하기 위해서
    • 컴퓨터 하드웨어를 효율적으로 관리하기 위해서
  • 운영체제가 하는 일
    • 사용자가 편리하고 효율적으로 프로그램을 실행할 수 있는 환경 제공
    • 컴퓨터 하드웨어 리소스를 관리

What OS Do?

  1. 운영체제는 환경을 제공한다.

    • OS X → 유용한 기능 X
    • 사용자는 OS에서 제공하는 관경으로 인해 쉽게 무언가를 할 수 있다.
  2. 시스템 리소스를 관리한다.

    • 사용자-프로그램이 시스템 리소스를 시공간적으로 공유하도록한다.
    • 사용자가 하드웨어를 효율적으로 사용하도록 한다.

+운영체제를 공부하는 이유

거의 모든 코드가 운영 체제 위에서 실행되기 때문에 효율적/효과적/안전한 프로그래밍에 매우 중요하다.


How the Program Run on the Computer

What is Computer?

Von Neuman 구조

Program Translation

Loading a Program

디스크의 이미지 파일에서 메모리로 로딩하기

  1. 세그먼트 사이즈를 결정하기 위해 헤더를 읽는다
  2. 가상 주소 공간(virtual address space)을 생성한다.
  3. 텍스트와 초기화된 데이터를 메모리에 복사한다.
  4. 스텍에 argument를 설정한다.
  5. register를 초기화한다.
  6. 시작 루틴으로 이동한다

Virtual Memory

메인 메모리가 멀티프로그래밍/멀티테스킹 시스템에서 모든 프로세스를 수용하기에 충분하지 않다.

Pipelined Datapath

Memory Hierarchy(메모리 계층 구조)

locality(지역성)의 원리를 활용하여, 가장 저렴한 기술로 사용자에게 최대한 많음 메모리를 제공하고 가장 빠른 기술이 제공하는 속도로 엑세스 제공

locality 데이터가 지역적으로 모여있다

  • Temporal locality : 최근에 접속한 항목은 조만간 다시 접속할 가능성이 높다.
  • Spatial locality : 최근 접속한 것들 근처의 항목은 곧 접속할 것으로 보인다.

level 1에 존재하는 데이터는 level2 에도 존재한다!!

Taking Advantage of Locality

  • 메모리 계층구조
  • 디스크에 모든 것을 저장
  • 최근에 액세스한 항목(및 근처)을 디스크에서 더 작은 DRAM 메모리로 복사
  • 최근에 액세스한 항목을 DRAM 메모리에서 더 작은 SRAM 메모리로 복사


Computer System Organization

하나 이상의 CPU, device controller는 공유 메모리에 대한 엑세스를 제공하는 common bus를 통해 연결된다.

bus 장점 : 동시성

CPU와 device의 동시 실행은 메모리 사이클을 놓고 경쟁한다.

위 그림에서 device controller는 disk controller, USB controller, graphics adapter이다.

각각의 device controller에는 device driver(local buffer, register)가 존재한다.

CPU는 main 메모리-local buffer 로 데이터를 이동시킨다

I/O는 device → local buffer로 이동한다.

device controller가 interrupt를 발생시켜 CPU에 작업이 완료되었음을 알린다.

위 과정을 설명하는 예시)

-키보드에 값을 입력했을 때, 일련의 처리 과정

  1. USB controller의 local buffer에 입력 정보를 임시저장한다.
  2. controller가 local buffer에 있는 데이터를 전송한다.
  3. 데이터 전송이 완료되면 controller의 register에 입력이 완료됐음을 알린다.
  4. controller는 interrupt를 통해 CPU에게 작업 완료 사실을 알린다.

Interrupt

interrupt : “attention이 필요함”을 표시하는 하드웨어 또는 소프트웨어로부터의 비동기 신호

  • 각각의 inturrpt는 숫자와 관련있다. IRQ number
  • interrupt handler에 의해 다뤄진다

각각의 code 부분들이 interrupt 유형에 따른 대처방법을 결정한다.

interrupt vector : interrupt handler의 테이블

여러가지 interrupt의 유형에 따라 처리할 루틴의 주소를 보관하는 테이블 (주소록 느낌?)

  • 하드웨어가 interrupt vector의 타입을 결정한다.

프로세스 이벤트의 메커니즘

  • HW interrupt
    • CPU에 신호를 보낸다.
  • SW interrupt
    • 시스템 콜 - 프로그램에 요청한다. (I/O 엑세스, 메모리 할당 등)
    • 예외 : error

⚠️운영체제는 interrupt driven 프로그램이다.

Interrupt Handling

  1. 운영체제 : 레지스터 및 프로그램 카운터를 저장 → CPU의 상태를 저장하고 실행을 interrupt handler에 전달한다.
  2. 인터럽트는 해당 핸들러가 처리한다.
  3. CPU의 상태를 복원하고 중단된 프로그램으로 돌아간다.

Interrupt Driven I/O

  • CPU는 요청을 보내고, 현재 작업이나 다른 일을 계속한다.
  • 데이터 전송이 끝나면, I/O device가 interrupt한다.

Storage Hierarchy

Caching : 빠른 저장 시스템으로 정보를 복사한다

CPU - RAM (휘바성 저장장치) ⇒ 비휘발성 메모리가 필요하다

기준 : 용량/접근속도

Interrupt Driven Data Transfer

장점 : 실제 전송 중에만 사용자 프로그램 프로세스가 중단된다.

단점

  • 인터럽트 유발(I/O device)
  • 인터럽트 감지(processor)
  • 인터럽트 후에 재개할 적절한 상태를 저장(processor)
  • 큰 블록의 데이터를 전송할때는 프로세서가 데이터를 전송하는 데 관여해야 한다. → 해결책 : DMA

Direct Memory Access

DMA : device controller가 다이렉트로 large bulk 데이터 → 메인 메모리로 전송한다.

CPU가 데이터 운송에 참여할 필요가 없다.

high bandwidth I/O 장치(하드디스크)의 블록전송에 적합하다


컴퓨터 시스템 구조

Multiprocessor Systems

멀티프로세서 시스템의 장점

  • 처리량 증가
    • 프로세서의 수가 증가할수록, 속도가 빨라진다.
  • clustered시스템과 비교했을 때 규모의 경제성
    • 메모리, 주변기기들이 공유될 수 있다

Symmetric multiprocessing (SMP)

  • 많은 과정이 동시에 동작할 수 있다.
  • Load balancing이 굉장히 중요하다.

Multicore system

  • one-chip communication이 더 빠르다.

  • 확연하게 적은 power를 사용한다.

  • 하나의 칩(프로세서)안에 CPU코어가 여러 개 이다.

  • 여러 개의 프로세서를 묶는 것보다 하나의 프로세서에 여러 개의 코어를 넣는 것이 처리속도가 더 빠르고 전력 소모가 적어 효율이 높다. (프로세서 내에서 처리하는 것이 더 빠르기 때문)

  • SMP와 달리 코어 사이에 별도의 캐시가 존재하여 처리속도가 빠르다.

  • Windows, macOS, Linux, Android 및 iOS가 멀티코어 SMP 시스템을 지원한다.

(+) on-chip 통신이 더 빠르기 때문에 단일 코어가 있는 여러 칩보다 효율적이다.

(+) 여러 개의 단일 코어 칩보다 전력 소모가 적다.

Non-uniform memory access (NUMA)

각각의 CPU는 자체 local 메모리를 갖는다. (작고 빠른 local bus를 통해 접근되는)

Clustered Systems

멀티 시스템이 같이 일한다.

일반적으로 storage-area network(SAN)을 통해 저장소를 공유한다

clustered system을 사용하는 목적

  • 장애를 극복하는 고가용성 서비스를 제공한다.
  • 일부 클러스터는 고성능 컴퓨팅을 제공한다. (HPC)

Operating-System Operations

부트스트랩 프로그램

커널 로드

system daemons(커널 외부에서 제공되는 서비스)을 시작한다

Multiprogramming

multiprogramming은 효율성을 위해 필요하다.

  • 단일 사용자가 CPU 및 I/O 장치를 항상 사용 중인 상태로 유지할 수 없다.
  • Multiprogramming은 CPU가 입출력 장치의 작업으로 인해 대기하지 않고 항상 한 개 이상의 프로세스를 실행할 수 있도록 하여 CPU의 활용도를 높인다.
  • OS는 메모리에 여러 프로그램을 동시에 올리고 실행할 수 있다.
  • OS는 하나의 프로세스를 선택하고 실행하기 시작한다.
  • 해당 프로세스가 (예를 들어 I/O를 위해) 대기상태일 때 OS는 CPU를 다른 프로세스로 전환한다.

Multitasking

multitasking은 멀티프로그래밍의 논리적 확장이다.

  • CPU는 프로세스를 굉장히 자주 전환하며 여러 프로세스를 실행하여 사용자에게 빠른 응답 시간을 제공한다.
  • 반응시간을 1초 미만이어야 한다.
  • 각각의 사용자의 적어도 하나의 실행하는 프로그램을 갖는다.
  • CPU Scheduler는 다음 실행할 업무를 정한다.

Operating-System Operations

현대의 운영체제는 인터럽트 구동 프로그램이다.

문제점 : 프로세스에서 에러가 발생 → 전체 시스템을 손상시킬 수 있다

다중 사용자 OS를 위한 요구사항 : 프로그램의 에러가 다른 프로그램에 영향을 주지 않아야 한다.

  • 위험한 지침 → Dual mode 작동
  • 사용자 프로세스의 장시간 실행 방지 → Timer

1. Dual-Mode Operation

Dual-Mode는 운영체제가 자신과 다른 시스템 구성요소를 보호하도록 허락한다.

User Mode

  • 다른 시스템에 해를 끼칠 수 있는 권한 명령은 금지된다.
  • Privileged instruction은 OS 시스템 호출을 통해서만 호출할 수 있다.

Kernel Mode(supervisor mode, system mode, privileged mode)

  • os code
  • Privileged instruction이 허용된다.

Mode bit는 시스템 모드를 구별할 수 있게 한다.

user mode → 1

kernel mode → 0

Multi-Mode Operation

Intel processor → 4개의 구분된 보호 ring 가짐

ARMv8 → 7개의 mode

CPU → virtualization have a separate mode

2. Timer

User program이 무한루프에 빠지거나/ 시스템 서비스 호출에 실패하고 return하지 않는 경우를 방지 하기 위함이다.

특정 시간 이후에 컴퓨터를 interrupt하도록 한다.

  • OS가 카운터 설정
  • 시계가 움직일 때마다 카운터 감소
  • 카운터==0, interrupt 발생

OS가 user process를 제어하기 전에, 미리 정의된 기간 후에 Timer가 interrupt하도록 설정된다.

⚠️privileged instruction으로만 time 카운터를 수정할 수 있다.


Core Components of OS

Process Management

process : 실행 중인 프로그램, 프로그램 카운터를 가진 능동적 개체(active entity), 한 시스템 내의 작업의 단위

리소스로 CPU, 메모리, I/O 파일이 필요하다.

싱글 쓰레드 프로세스는 하나의 프로그램 카운터를 가진다.

Thread : 2개 이상의 task가 동시에 실행될 때 분할하기 위한 프로그램을 위한 방법

  • CPU 사용량의 기본단위
  • 프로세스보다 작은 단위
  • 각각의 thread는 고유한 ID, 프로그램 카운터, register set, stack…을 가진다.
  • 주요 자원들은 공유된다.

Task : address space를 통한 실행 경로

  • 메모리에 로드되는 프로그램 명령어 집합
  • 몇몇의 경우에는, task→process, thread 모두를 의미한다.

OS로 프로세스 관리하기

  • 프로세스 생성/삭제
  • 프로세스 중단/재개
  • 프로세스 동기화
  • 프로세스 통신
  • 교착 처리(deadlock handling)

Memory Management

Memory Management는 메모리에 무엇이 언제 저장되는지를 결정한다.

주요 활동

  • 현재 메모리의 어떤 부분이 누구에 의해 사용되고 있는지 추적한다
  • 어떤 프로세스&데이터가 메모리로 들어오고 나갈지
  • 필요에 따른 메모리 공간 할당/할당 해제

File-System Management

OS가 정보 저장공간에 대한 uniform, logical view를 제공한다.

  • 물리적 속성을 논리적 저장단위로 추상화한다
  • 각각의 매체는 device에 의해 제어된다

File은 보통 디렉토리로 구성된다.

접근 가능한 사용자를 결정하기 위해서 대부분의 시스템에 접근을 통제한다.

OS로 파일 시스템 관리하기

  • 파일/디렉토리 생성.삭제
  • 파일/디렉토리를 조작하기 위한 primitives
  • secondary 저장소에 파일 맵핑
  • 안정적인(비휘발성) 저장소에 파일 백업

Mass-Storage Management

대부분의 프로그램은 메모리가 로드될 때까지 디스크에 저장된다.

  • secondary 저장소의 관리가 중요하다
  • 전체적인 컴퓨터 속도는 디스크 서브시스템 + 알고리즘에 달려있다

OS로 대용량 저장소 관리하기

  • mounting/unmounting → 저장소 삭제(장착/해제)
  • 여유공간 관리
  • 저장소 할당
  • 디스크 스케줄링
  • Partitioning
  • 보호

Cache Management

cache : 자주 사용하는 데이터 값을 미리 복사해놓는 임시장소

멀티프로세서 환경 → cache coherency(일관성)를 제공해야 한다. 모든 CPU가 cache의 최신값을 갖도록

cache coherence : 공유된 리소스의 local cache에 저장된 데이터의 integrity(무결성)

I/O System Management

운영체제의 목적 중 하나는 사용자에게 하드웨어 장치의 특성을 숨기는 것이다.

I/O 서브 시스템이 담당하는 것

  • 버퍼링, 캐싱, 스풀링
  • 일반적인 device-driver 인터페이스
  • 특정 하드웨어 장치용 드라이버

Protection and Security

Protection : OS에 의해 정의된 리소스들에 대한 사용자/프로세스의 접근을 제어하기 위한 모든 메커니즘

ex) 고유한 사용자 ID, 그룹 ID

→ 인증을 도난당할 수 있기 때문에 보호가 충분하지 않다.

Security : 외부 및 내부 공격에 대한 방어

ex) DoS, worms, 바이러스 등등


Computing Environments

Traditional Computing

포털→ 웹사이트 제공

Mobile Computing

스마트폰, 태블릿 등

애플 iOS, 구글 안드로이드가 선도하는 중

Client-Server Computing

현재 많은 시스템이 서버를 설치하여 클라이언트가 생성한 요청에 응답한다

넷플, 유튜브, 구글 등

Peer-to-Peer Computing

분산 시스템의 또 다른 모델

P2P는 클라이언트와 서버를 구분하지 않는다.

  • 대신 모든 노드는 peer로 간주된다
  • 각각 클라이언트, 서버 또는 둘다의 역할을 할 수 있다
  • 노드가 P2P 네트워크에 join해야 한다

Virtualization

운영체제가 다른 OS 내에서 어플을 실행할 수 있도록 한다.

개발 → 노트북

실행 → 애뮬레이터

애뮬레이션은 소스 CPU 타입이 타겟 파입이랑 다른 경우 사용된다.

  • 일반적으로 가장 느린 방법
  • 컴퓨터 언어가 네이티브 코드로 컴파일 되지 않은 경우 : Interpretation

가상화 : CPU용으로 기본 컴파일 된OS로 게스트 OS도 기본으로 실행된다.

VMM(virtual machine manager)를 통해 가상화 서비스를 제공한다

Cloud Computing

네트워크 전반에 걸쳐 컴퓨팅, 저장공간, 심지어 어플을 제공(deliver)한다.

가상화의 논리적 확장이다. (가상화를 기반으로 기능하기 때문에)

  • Amazon EC2에는 수천 대의 서버, 수백만 대의 가상머신이 있다.

여러 종류

  • Public cloud : 인터넷을 통해 지불하는 사람은 누구나 이용 가능
  • Private cloud : 회사 자체의 사용을 위해 회사에 의해 운영됨
  • Hybrid cloud : 퍼블릭, 프라이빗 클라우드 요소를 둘 다 포함
  • SaaS(Software as a Service): 인터넷을 통해 이용가능한 하나 이상의 어플 예) word
  • PaaS(Platform as a Service): 인터넷을 통한 응용프로그램을 사용할 수 있도록 준비된 소프트웨어 스택 예) database server
  • IaaS(Infrastructure as a Service) : 인터넷을 통해 이용가능한 서버/저장공간 예) 백업용 저장공간

기존 OS, VMM, 클라우드 관리 툴로 구성된 클라우드 컴퓨팅 환경

  • 인터넷 연결에는 방화벽같은 보안이 필요하다.
  • 다중 어플리케이션에 걸쳐 트래픽을 분산하는 Load balancer 장치

Real-Time Embedded Systems

컴퓨터의 가장 일반적인 형태인 실시간 임베디드 시스템

일부는 OS를 갖고, 일부는 갖지 않음

실시간 OS에는 명확한 고정 시간 제약이 있다.

  • 제한 범위(constraint) 내에서 처리되야한다
  • 제약 조건이 충족되는 경우에만 올바르게 작동한다

Open-Source Operating Systems

OS는 소스 코드 형식으로 제공된다 (not binary closed-source)

저작권 및 DRM(digital rights management) 움직임에 대응

FSF(Free Software Foundation)로부터 시작되었다

예를 들면 GNU/Linux와 BSD UNIX(Mac OS X 의 코어를 포함하는) 등이 있다

Virtualbox 같은 VMM을 사용할 수 있다

(출처)
Operating System Concepts 도서
https://www.booksfree.org/operating-system-concepts-10th-edition-by-abraham-silberschatz-peter-b-galvin-greg-gagne-pdf/

profile
공부하는 기록

0개의 댓글