Chap1

콜 파머가 될 남자·2024년 4월 16일
0

운영체제

목록 보기
1/2
post-thumbnail

 The definition of the operating system
 Activities of the operating system

운영체제란 ?

컴퓨터 하드웨어를 관리하고 프로그램이 실행되기위한 환경을 제공해주는 소프트웨어이다

  • 자원(CPU 시간, 메모리 공간, 파일 저장 공간, 입출력 장치 등) 할당자
    • 시스템을 효율적이고 공정하게 운영할 수 있도록 어느 곳에 자원을 할당할지 결정
  • 제어 프로그램
    • 컴퓨터의 부적절한 사용 방지위해 사용자 프로그램 수행 제어

Interrupt

인터럽트란 프로세스 실행 도중 예기치 않은 상황이 발생할 때 발생한 상황을 처리한 후 실행 중인 작업으로 복귀하는 것을 말한다

  • Polling vs Vectored interrupt system
    • polling
      • 작업이 끝났는지 계속 확인한다.
      • interrupt를 보고받지 않고 자신이 지정한 시간에 계속 확인하기 때문에 딜레이가 발생할 수 있다
      • 자신의 시간을 보장받는다는 장점이 있다
    • vectored interrupt system
      • 진행 상황이 끝났것을 바로 인지할 수 있다
  • 인터럽트 서비스루틴으로 제어를 이동시키고 (인터럽트 벡터를 통해) 인터럽트 벡터는 인터럽트 서비스루틴의 주소가 포함되어있다
  • 인터럽트 루틴은 반드시 현재상태를 저장하고 인터럽트가 끝나면 저장되어 있던 복귀 주소를 PC에 적재하고 중단되었던 연산을 시작한다
  • trap : 운영체제에게 소프트웨어 인터럽트를 발생시키는 역할 (에러 or 유저 요청(시스템콜))
  • Interrupt Timeline 사진넣기
    • context switching
      • 지금까지 한 작업을 저장해놓고 인터럽트를 처리한 후 다시 저장했던 작업을 가져오는 작업, 이 시간을 latency (= overhead)

Storage Hierarchy

  • process가 접근하는데 걸리는 시간, 비용, 휘발성에 따라 계층구조가 형성된다.
  • 어떤 것을 어디에 저장해둘 것인지 policy가 필요하다.
    • OS는 이를 중요시한다.
  1. registers
    1. process랑 붙어 있음, 접근이 가장 빠르다.
  2. cache
    1. register보단 cpu에서 멀리 떨어져 있지만 접근이 상당히 빠르다.
  3. RAM
    1. 위의 저장 디바이스는 너무 비싸다.
    2. 상시적으로 접근하고 싶은 것을 여기에 넣는다.
    3. 여전히 휘발성 여기까지 모두 휘발성이다.
  4. Solid-State Disk(SSD): 반도체 디스크
  5. Hard disk: 자기 디스크
  • 전원이 켜져있을 때는 SSD 제어기가 data를 RAM으로 복사하고 전원이 꺼지면 RAM으로부터의 data를 자기 디스크로 복사한다.

Direct Memory Access Structure

  • 10bytes를 전달하는데 10번의 interrupt를 걸어준다. 그렇다면 파일 하나 옮기는데 interrupt가 상당히 많을 것이다. 이를 위해 존재 ?
  • CPU가 관리할 수 없는 현상이 일어날 수 있다.
  • CPU의 완전한 micro kernel 부분을 잃고 효율성을 가지는 것
  • 폰 노이만 구조의 문제점을 부드럽게 해결하는 장치

폰 노이만 구조

  • 컴퓨터를 효율적으로 설계하기 위해 만듦
  • 입력 장치에서 data가 입력되면 제어부, 연산/논리부는 메모리부와 data를 주고받으며 연산을 하고 그 결과를 출력 장치로 보낸다.
  • harvard 구조와 경쟁
  • harvard 구조와 다르게 복잡성은 줄고 단순하다.
  • 단 나누어지지 않고 하나로 되어 있어 폰 노이만 bottle neck(병목 현상)으로 느려질 수 있다.

컴퓨터 시스템 구조

  • multiprocessors: 하나의 컴퓨터 안에 CPU를 여러 개 놓는다.
    • 컴퓨터를 하나 더 사는 것보단 싸다
    • 프로세스 하나가 잘못 되어도 문제가 없다
  • Asymmetric
    • master process가 생성이 되고 일의 분담 역할을 맡는다.
    • 일의 분담을 공평하게 잘한다.
    • master에 문제가 생기면 큰 문제가 된다.
  • Symmetric
    • 해야 할 일들이 어딘가에 담기고 이중에서 골라서 수행한다.
    • 어떤 프로세스는 어려운 일만, 어떤 프로세스는 쉬운 일만 가져갈 수 있기에 공평하지 않을 수 있다.
    • 프로세스 하나에 문제가 생겨도 큰 문제가 되지 않는다.
  • 무엇을 사용해야 할까 ?
    • Asymmetric에서 master가 죽으면 일처리가 되지 않는다.
    • ?? 어떤 선택을 할래 ??

Symmetric Multiprocessing Archittecture

  • 공통된 variable을 갖는다.
  • cache coherency(나중에 나옴)의 문제가 생긴다.

A Dual-core Design

  • multicore
  • 가격적으로 이득(하나에 여러 개가 들어 있어서)

Clustered System

  • 멀티프로세스의 구축과 비슷하다.
  • Asymmetric clustering
    • 은행을 생각하면 된다. 서버가 1개가 있다고 치자, 공격을 받아 서버가 죽었다. 거래가 불가능 -> 은행은 서버를 1개를 더 둔다. 이 서버는 동작하는 서버에게 문제가 없는지만 확인하다 문제가 생기면 자신이 작동하는 방식이다. (hot-standby mode)
  • Symmetric clustering
    • 여러 개의 컴퓨터들이 각자 여러 개의 일을 한다.
    • throughput 측면에서는 이득이다. (일을 안하는 것이 없으므로)
  • 여러 개의 컴퓨터가 서로 interconnected고 공통의 storage 공간이 있다. 그래서 cache coherency문제가 생길 수 있다. 다양한 컴퓨터 시스템에 맞추어 OS가 어떻게 취해야 할지 알아야 한다.

Operating System Structure

  • 여러 개의 작업을 처리하고 싶기 때문에 필요하다.
  • 여러 개의 작업은 Multiprogramming, Timesharing 등이 있다.
  • Multiprogramming(Batch Processing)
    • 하나의 작업이 끝날 때까지 다음 작업은 수행되지 않고 순차적으로 실행된다.
    • 스케쥴링이 job 단위로 이루어진다.
      • 이 작업을 먼저, 다른 작업은 나중에 이런식.
    • context switching을 적게 하므로 낭비하는 시간이 적다.
  • Timesharing(multitasking)
    • process가 하나인데 동시에 일을 처리할 수 없다.
      • logical extension이다. 실질적으로 멀티태스킹은 아니기에
    • 다만, 아주 짧은 시간 동안 여러 일을 왔다갔다 처리하기에 동시에 처리하고 있음을 느끼게 되는 것이다.
    • interactive computing
    • context switching을 자주하여 낭비하는 시간이 많다.
    • CPU기반의 스케쥴링
    • swapping: 10개의 process를 동시에 돌리기 위해 메모리에 올려야 하는데 너무 커서 메모리에 올릴 수 없는 경우, 디스크와 메모리 사이를 왔다갔다 하면서 올렸다 뺐다 하는 작업을 말한다. 컴퓨터가 빨라야 한다.

System의 장단점을 파악하고 설계하려는 목적에 맞게 멀티 프로그래밍과 시분할 중 선택해야 한다. 어떤 것이 무조건 좋고 어떤 것이 무조건 나쁜건 없다.

OS operation

  • interrupt 기반으로 동작한다.
  • Hardware interrupt
  • 마우스 입력 등
  • OS 입장에서 interrupt 기반으로 Dual mode operation을 한다.
  • Dual mode(User mode & kernel mode)
  • kernel를 보호하는 측면에서 privileged일 때만, system call을 했을 때만 접근할 수 있게 되어 있다.

System call

  • User process가 시스템 콜을 하면 kernel mode로 들어가고 처리 후 kernel mode로 나온다. - kernel mode에서 문제가 생긴다면 ?
  • 안전 장치가 있는 편이다.(특정 시간이 지나면 저절로 나오게 한다.)

Process Management

  • Program은 disk에 저장되어 있는 passive entity
  • Process는 Program의 동적인(active) 형태이다. 즉, 해야 하는 일들
  • Process가 끝나면 자원을 가져와야 한다.

program counter

  • 다음 수행해야 할 instruction이 무엇인지 명시를 해준다.
  • 특히, 멀티 테스킹에서 필요하다. 작업이 어디서 잠깐 중단되었는지 알아야 재개가 가능하다. Multi-thread
  • thread들이 동시에 진행되기에 program counter가 여러 개 필요하다.

Process Management Activities

(프로세스 관점에서 OS가 할 일)

  • 프로세스 생성, 정지, 재개, 죽음
  • 프로세스 동기화를 위해 의사소통을 위한 채널이 필요하고 서로 자원 경쟁이 생겼을 때 진전이 없고 막혔을 때 deadlock이 생길 수 있는데 이를 처리해야 할 필요가 있다.

Memory 관리(메모리 관점에서 OS가 할 일)

  • 프로세스를 실행하기 위해 절대 주소로 매핑되고 메모리에 올라와 있어야(적재) 하는데 얼마만큼의 공간을 확보해야 하는지 OS가 관리해야 한다.
  • 어떤 프로세스가 메모리 공간에 남아있고 빠져야 하는지 관리해야 한다.

파일 시스템 관리

  • 파일은 program과 data를 나타낸다.
  • 다수의 사용자가 파일에 접근하려 할 때 누구에 의해서, 어떤 방법으로 파일이 접근되어야 하는가를 통제해야 한다.

Mass-storage 관리

  • 컴퓨터 시스템은 반드시 main memory에 내용을 저장하기 위해 보조 저장 장치(secondary storage)를 제공해야 한다.
  • 대부분의 프로그램은 주 메모리에 적재될 때까지 디스크에 저장되어 있어 디스크 관리가 중요하다.
  • backup

Caching

  • 정보가 사용됨에 따라 보다 빠른 장치인 캐시에 일시적으로 복사된다.
  • 특정 정보가 필요할 때 먼저 캐시에서 그 정보의 유무를 확인한다.
  • 캐시에 존재하면 캐시로부터 직접 사용 - 캐시에 존재하지 않다면 main memory에 정보를 가져와서 사용하고 이 정보를 캐시에 넣는다.(다시 사용될 확률이 높다고 가정)

Data migration

  • data를 상위 계층으로 옮기는 것을 말한다. 메모리 계층 구조에 따라 상위 계층으로 data를 옮길 때마다 복사가 일어난다.(높은 계층으로 갈수록 복사본이 여러 곳에 존재)
  • 복사를 하는 개념이다보니 상위 계층으로 갈 수록 independent하게 process가 작동하기 때문에 하나의 변수에 작업을 처리한 결과들이 상이할 수 있다.(cache coherency)

I/O subsystem

  • 입출력 구조에서 OS가 무엇을 해줘야 하는가?
  • spooling - 프린터는 물리적 현상이 일어나기에 느리다. 빠른 -> 느린 장치

Protection and Security (OS는 둘 다 필요)

  • Protection
  • internal process 간의 경쟁에 대한 보호
  • 자원에 대해 program, process, user의 접근을 제어
  • ex) 파일의 권한을 특정 프로세스에만 준다. - Security - external attack에 대한 방어

Computing environment

  • 모바일 환경은 multi tasking에 대해 덜 까다롭다.
  • 각각의 환경에 따라 요구하는 것이 다르고 최적화가 잘 되도록 해야 한다.
  • Virtualization
  • 가상화 환경 2가지
  1. 여러 개의 OS가 하나의 HW 위에 있어 자원을 얻고자 경쟁한다. (b)
  2. 하나의 OS 위에 vmware가 하나의 응용프로그램으로 OS에게 자원을 할당해달라고 요청한다. (a)
  • 다수 사용자들이 단일 사용자를 위해 설계된 시스템에서 작업을 수행할 목적으로 쓰이기도 한다.
  • Cloud Computing
  • 동시에 몇 명이 들어와서 몇 명이 작업할건지 알기 힘들다.
  • 계산, 저장장치, 응용 등을 네트워크를 통한 서비스로 제공한다. 예를 들어, 아마존 Elastic Compute Cloud를 통해 아주 큰 크기의 저장장치를 인터넷 상의 누구든 사용이 가능하게 한다.

SaaS(Software as a service)

  • 인터넷을 통해 사용 가능한 하나 이상의 응용 프로그램ex) google docs

PaaS(Platform as a service)

  • 인터넷을 통해 사용하도록 응용에 맞게 준비된 SW stackex) database 형태를 사용하게 하는 서버

IaaS(Infrastructure as a service)

  • 인터넷을 통해 사용 가능한 서버나 저장장치
  • 백업 복사본을 만들기 위한 storage로 유지

Real Time Embedded System

  • 특정 시간 내에 작업을 수행한다는 보장이 있어야 한다. (Real Time)
  • 작은 임베디드 메모리에 OS를 전부 올릴 수는 없다.

요구사항에 따라 OS를 다르게 설계해야 한다.

profile
콜 파머가 개발자라면 사회적 인지도는 어느 정도일까

0개의 댓글