[OS] 1~3 요약

Gon Kim·2022년 9월 25일
0

OS - 반효경 교수님

목록 보기
4/7

1. Introduction

용어 정리

운영체제란?

  • 하드웨어 위에 바로 올라가는 소프트웨어로, 다른 소프트웨어들과 하드웨어를 연결하는 역할을 하는 소프트웨어
  • 시스템의 자원을 효율적으로 관리하기 위함이 주된 목적
    • 자원이라 함은 cpu, ram 등
    • 어떠한 것들을 연산시킬지 그 순서를 정하고, 한정된 메모리를 잘 쓰기 위해 필요하지 않을 것 같은 것들은 잠시 디스크에 내려놓기도 하며 효율적으로 관리

2. System Structure & Program Execution

용어 정리

Mode bit

  • 현재 cpu를 점유하는 프로세스가 사용자 프로그램인지 운영체제인지 구분한다. 레지스터이다.

interrupt line

  • interrupt 발생 여부를 표기하는 것으로, cpu가 매 instr 후에 확인한다.

timer

  • 각 프로세스가 cpu를 점유할 수 있는 시간을 재는 기능. 1 clock cycle마다 값 1감소
  • 운영체제는 cpu를 다른 프로세스에 넘겨줄 수 있어도, 뺏어오지는 못한다. 그 것마저도 instr. 타이머로 조절

device controller

  • cpu와 io 장치 사이의 중개자. 일종의 작은 cpu

device driver

  • 장치를 다루기 위한 interface. 소프트웨어이다. cpu가 해당 장치를 제어하기 위해 controller에게 명령할 때, 이 device driver라는 인터페이스를 통해 명령

local buffer

  • io 장치의 memory
  • cpu는 원하는 데이터를 memory에서 buffer로 복사. controller에게 이 후 작업을 요청

DMA controller

  • 안그래도 많은 io작업에서, cpu가 너무 자주 interrupt 당하지 않게, buffer의 내용을 memory에 복사하는 것과 같은 작업을 전용으로 하는 controller

Memory controller

  • cpu와 dma controller가 동시에 memory에 접근하지 않도록 중재하는 controller

system call

  • 사용자 프로그램이 운영체제의 커널을 호출하는 것. 운영체제의 함수를 호출하기 위한 요청
  • 일반 함수 호출처럼 특정 메모리 주소로 점프하는 것이 아니다.
  • interrupt line 세팅 → 운영체제가 mode bit 변경, cpu 점유 → 특정 함수 호출

interrupt

  • 레지스터와 pc를 저장한 후, cpu의 제어를 interrupt service routine에 넘기는 것

software interrupt = trap

  • 프로그램이 스스로 interrupt를 걸어 운영체제를 호출하는 것
  • system call : 필요에 의한 호출
  • exception : 오류. 숫자를 0으로 나누는 연산 등
  • os는 해당 요청이 올바른지, 권한은 있는지 등을 체크, device controller에게 적절한 명령 내림

hardware interrupt

  • timer가 거는 interrupt. 하나의 프로그램의 독접을 막는다.
  • io 작업이 끝나 device controller가 거는 interrupt

interrupt service routine(interrupt handler)

  • interrupt 종류마다 운영체제가 수행해야할 코드 집합

interrupt vector

  • interrupt 종류마다 수행해야할 함수의 주소를 정의한 테이블

synchronous io

  • io 요청 후, io 작업이 끝난 후에야 사용자 프로그램에 제어권이 넘어가는 것
    • io 작업이 끝날 때까지 그냥 cpu를 낭비하는 구현법
    • 다른 프로그램에 cpu를 넘기고, 해당 프로그램은 io 요청을 기다리는 줄에 세워둔다. io 작업이 끝나면 제어권을 넘기는 구현법 → 보통 이거

asynchronous io

  • io 요청 후, io 작업이 끝나는 것을 기다리지 않고, 제어가 사용자 프로그램에 즉시 넘어갈 수 있도록 하는 것

kernel의 memory

  • code에는 system call, interrupt 처리 코드, 자원 관리를 위한 코드 등 운영체제 프로그램 코드 자체가 올라간다
  • data에는 운영체제가 사용하는 여러 자료 구조가 올라간다. 하드웨어들마다 추상적 자료구조를 만들어 관리하고, 프로세스 관리를 위한 pcb도 여기 저장한다.
  • stack에는 함수 호출에 관한 것들이 저장된다. 다만 여러 사용자 프로그램들이 운영체제의 함수를 호출할 수 있기에, 프로그램마다 stack을 따로 둔다.

3. Process

용어 정리

process

  • memory에 올라가 실행상태가 된 프로그램

context

  • process들에게 cpu를 할당하고 빼앗는 과정에서, 기존에 cpu를 점유하던 process들이 어떠한 상태였는지 알기 위해 필요한 모든 것
  • pc, register에 저장된 값, code, data, stack에 저장된 값, pcb, kernel stack

state-new

  • memory에 올라가고 있는 상태

state-running

  • cpu를 할당 받은 상태

state-ready

  • cpu를 기다리는 상태. 필요한 모든게 memory에 올라와 있고, 준비가 되어 cpu만 얻으면 되는 상태

state-blocked(wait, sleep)

  • cpu를 얻더라도 instr 실행을 못하는 상태
  • 자신이 요청한 작업이 만족되지 않아 기다리는 경우, 실행할 코드 부분이 디스크에 내려가 있는 경우 등

state-suspended(stopped)

  • 외부적인 이유로 process 수행이 정지된 상태. 프로그램은 통째로 disk에 swap out
  • 사용자가 break key등으로 프로그램을 일시정지 시키는 경우. 이런 외부 개입에 의해서 suspended되거나, 다시 돌아오게 된다.
  • suspended 될 때 io 요청을 기다리는 중 → suspended blocked. 이후 io 요청 마무리 → suspended ready

state-terminated

  • process 수행이 종료되고, 정리중인 상태

resource queue

  • 여러 process가 동시에 공유자원에 접근하면 일관성이 깨질 수 있다. 동시 접근을 막기 위해 process들을 queue에 올려 관리한다.

pcb

  • os가 관리상 사용 : process state, id, scheduling관련해서 쓸 정보
  • cpu 수행 관련 : pc, register 값들
  • memory : code, data, stack의 위치정보
  • 파일 : process가 사용하는 파일이 어떤 것인지에 관한 것 등..

job queue

  • 현재 시스템 내에 있는 모든 process들의 집합. queue들은 pcb 포인터들의 연결로 표현

ready queue

  • 메모리에 올라가 있으면서 cpu를 기다리는 process들

device queue

  • io device의 처리를 기다리는 process들의 집합

cpu scheduler

  • 어떤 process를 running 상태로 만들지 결정

job scheduler

  • process를 메모리에 올리는 것을 관리. new → running
  • ready queue로 process를 보내는 것을 관리. 올라갈 수 있는 process 수 관리
  • 요즘에는 바로 ready로 전환

swapper

  • 프로그램 시작시 메모리는 바로 할당. 메모리에서 일부 프로그램을 골라 쫓아내 degree of multiprogramming 관리

thread

  • process 내 실행 흐름
  • process내에, cpu 실행 단위만 다르게 둔 것. cpu 사용의 단위
  • context switch 오버헤드를 줄이기 위해 process 내에서 같은 memory 공간을 공유하지만 code의 다른 부분을 실행하게 해 흐름을 쪼갠 것
  • 개별 pc, register(cpu 수행과 관련된 정보), stack 존재
  • code, data, os 자원 공유
  • kernel thread : os가 thread가 여러개인 것을 알고 있다. thread에서 다른 thread로 cpu가 넘어가는 것을 kernel이 관리
  • user thread : 라이브러리를 통해 지원. process가 thread 관리
  • 장점
    • 적은 오버헤드, 높은 throughput. 병렬성을 높일 수 있다. 행렬 곱의 경우 병렬적으로 수행하고 값을 합쳐주는 방식으로
  • 단점

기타

  • 사용자 process에서 os로 cpu 점유권이 넘어간다고 꼭 context switch인 것은 아니다. sys call등으로 os가 호출될 때 일반적인 context switch보다는 훨씬 오버헤드가 적은 수준으로 기존 process에 관한 필수적인 정보만 따로 저장한다. context switch면 캐쉬도 밀어버린다.
profile
응애

0개의 댓글