File System

출처 : 이화여자대학교 반효경 (http://www.kocw.net/home/search/kemView.do?kemId=1046323)

File and File System

  • File

    • 이름을 통해 접근 (cf. 메모리는 주소를 통해 접근)
    • A named collection of related information
    • 일반적으로 비화발성의 보조기억장치에 저장
    • 운영체제는 다양한 저장 장치를 file이라는 동일한 논리적 단위로 볼 수 있게 해줌
    • 연산
      • create / read / write / reposition (lseek) / delete / open / close
  • File attritbute ( or 파일의 metadata)

    • 파일 자체의 내용이 아니라 파일을 관리하기 위한 각종 정보들
      • 파일 이름, 유형, 저장된 위치, 파일 사이즈
      • 접근 권한 (읽기, 쓰기, 실행), 시간 (생성, 변경, 사용), 소유자 등
  • File System

    • 운영체제에서 파일을 관리하는 부분
    • 파일 및 파일의 메타데이터, 디렉토리 정보 등을 관리
    • 파일의 저장 방법 결정
    • 파일 보호 등

Directory and Logical Disk

  • Directory
    • 파일의 메타데이터 중 일부를 보관하고 있는 일종의 특별한 파일
    • 그 디렉토리에 속한 파일 이름 및 파일 attribute 들
    • 연산
      • search for a file, create a file, delete a file
      • list a direcotry, rename a file, traverse the file system
  • Partition (==Logical Disk)
    • 하나의 물리적 디스크 안에 여러 파티션을 두는게 일바적
    • 물리적 디스크를 파티션으로 구성한 뒤 각각의 파티션에 file system을 깔거나 swapping 등 다른 용도로 사용 가능

open()

  1. open시스템 콜을 하면 운영체제에게 CPU 제어권이 넘어가

  2. 운영체제는 root를 먼저 open하여 root의 content를 찾아

  3. a라는 파일의 메타데이터를 찾아서 이걸 메모리에 올려

  4. a의 메타데이터로부터 a의 내용을 찾아

  5. a안의 b의 metadata를 메모리에 올려

각 프로세스마다 그 프로세스가 오픈한 파일들에 대한 메타데이터 포인터를 가지고 있는 일종의 배열이 있어

Read more

Virtual Memory

출처 : 이화여자대학교 반효경 (http://www.kocw.net/home/search/kemView.do?kemId=1046323)

Demand Paging

  • 실제로 필요할 때 page를 메모리에 올리는 것

    • I/O양의 감소
    • Memory 사용량 감소
    • 빠른 응답 시간
    • 더 많은 사용자 수용
  • Valid / Invalid bit의 사용

    • Valid
      • 사용되지 않는 주소 영역인 경우
      • 페이지가 물리적 메모리에 없는 경우
    • 처음에는 모든 page entry 가 invalid로 초기화
    • address translation 시에 invalid bit이 set되어 있으면 “page fault”
      • 요청한 페이지가 메모리에 없는 경우
      • 운영체제가 CPU를 가지고 fault난 페이지를 메모리에 올림

Page Fault

요청한 페이지가 메모리에 없는 경우입니다. page fault가 나면 운영체제는 fault난 페이지를 메모리에 올립니다.

  • invalid page를 접근하면 MMU가 trap을 발생시키고 (page fault trap)
    • Kernel mode로 들어가서 page fault handler 가 invoke 됨
  • 다음과 같은 순서로 page fault 를 처리
    • invalid reference? (eg. bad address, protection violation) => abort process
      • 잘못된 요청인지 아닌지 체크하는 것
    • get an empty page frame (replace : 없으면 뺏어온다)
    • 해당 페이지를 disk 에서 memory로 읽어온다
      • disk I/O가 끝나기까지 이 프로세스는 CPU를 preempt 당함 (block)
      • Dist read가 끝나면 page tables entry 기록, valid/invalid bit = “valid”
      • ready queue에 process를 insert -> dispatch later
    • 이 프로세스가 CPU를 잡고 다시 running
    • 아까 중단되었던 instruction 재개

Page Replacement

page fault 가 났을 때, 원하는 페이지를 backing area에서 가져오게 됩니다. 만약, 물리 메모리가 모두 사용중인 상황이라면, 페이지 교체가 일어나야합니다.

Read more

Deadlock

출처 : 이화여자대학교 반효경 (http://www.kocw.net/home/search/kemView.do?kemId=1046323)

Deadlock

일련의 프로세스들이 서로가 가진 자원을 기다리며 block된 상태

  • 자원
    • 하드웨어, 소프트웨어 등을 포함하느 개념
    • ex) I/O device, CPU cycle, memory space, semaphore 등
  • 예시
    • 시스템 2개의 tape drive가 있다
    • 프로세스 P1과 P2 각각이 하나의 tape drive 를 보유한 채 다른 하나를 기다리고 있음

Deadlock 발생의 4가지 조건

  • Mutual Exlusioin
    • 매 순간 하나의 프로세스만이 자원을 사용할 수 있음
  • No Preemption
    • 프로세스는 자원을 스스로 내어놓을 뿐 강제로 뺏기지 않음
  • Hold and wiat
    • 자원을 가진 프로세스가 다른 자원을 기달리때 보유 자원을 놓지 않고 계속 가지고 있음
  • Circular wait
    • 자워을 기다리는 프로세스 간에 사이클이 형성되어야 함
    • P0은 P1이 가진 자원을 기다림
    • P1은 P2가 가진 자원을 기다림 ..

자원 할당 그래프

  • 자원에서 프로세스쪽으로 나가는 화살표

  • 이 프로세스가 이 자원을 가지고 있다.

  • 프로세스에서 자원쪽으로 나가는 화살표

    • 이 프로세스가 이 자원을 요청
  • 자원 안에 동그라미

    • 자원 개수
  • 그래프 안에 cycle이 없으면 deadlock이 아니다

  • cycle이 있으면

    • 자원당 인스턴스가 하나밖에 없으면, 데드락
    • 자원의 인스턴스가 여러개면, 데드락수도 있고 아닐수도 있고
  • 왼쪽은 데드락, 오른쪽은 데드락이 아님

Read more

Memory Management

Logical vs Physical Address
  • Logical address (=virtual address)

    • 프로세스마다 독립적으로 가지는 주소 공간
    • 각 프로세스마다 0번지 부터 시작
    • CPU가 보는 주소는 logical address임
  • physical address

    • 메모리에 실제 올라가는 위치
  • 주소바인딩 : 주소를 결정하는 것

    • Symbolic address ->Logical Address -> Physical address
Address Binding

컴파일 타임 바인딩이나 로드 타임 바인딩 모두 실행될때 물리주소가 결정되지만,

런타임 바인딩은 실행 이후에도 물리 주소가 바뀔 수 있다.

소스코드 : A위치에 있는 값과 B위치에 값을 더해서 A에 저장해라. C위치로 점프해라

  • Compile time binding
    • 물리적 메모리 주소가 컴파일 시 알려짐
    • 시작 위치 변경시 재컴파일
    • 컴파일러는 절대코드(absolute code) 생성
  • Load time binding
    • Loader의 책임 하에 물리적 주소 부여
    • 컴파일러가 재배치가능코드를 생성하는 경우 가능
  • Execution time binding(run time binding)
    • 수행이 시작된 이후에도 프로세스의 메모리 상 위치를 옮길 수 있음
    • CPU가 주소를 참조할 때마다 binding을 점검
    • 하드웨어적인 자원이 필요 (base and limit registers, MMU)
Memory-Management Unit (MMU)

logical address를 physical address로 매핑해 주는 hardware device

Read more

CPU Scheduling

CPU and I/O Bursts in program execution 이란 ?

CPU-burst time 의 분포는 ?

프로세를 분류하면 ?
  1. I/O-bound process
    CPU를 잡고 계산하는 시간보다 I/O에 많은 시간이 필요한 job 입니다.
  2. CPU-bound process
    계산 위주의 job 입니다.
CPU 스케쥴링이 왜 필요한가요?
  1. IO 대기, Memory stall과 같은 CPU idle time 을 최소화하여 CPU 자원의 활용을 극대화하기 위해 필요합니다.
  2. 여러 종료의 job(process)이 섞여 있기 때문에 CPU 스케쥴링이 필요하다.
CPU 스케쥴링을 위해 Ready Queue 구현은 어떻게 하나요?

스케쥴링 알고리즘에 따라 FIFO, Queue, tree, Linked List 등을 사용할 수 있습니다.

Read more

Process Sysncronization

데이터의 접근

데이터를 읽어와서 연산하고 다시 저장합니다.

Race Condition

S-box를 공유하는 E-box가 여럿 있는 경우 Race Condition의 가능성이 있습니다.
ex) 커널 모드 수행 중 인터럽트로 커널모드 다른 루틴 수행시

race condition (1/3)
  • kernel 수행 중 인터럽트 발생
  • 커널모드 running 중 inetrrupt 발생하여 인터럽트 처리 루틴이 수행
  • 양쪽 다 커널 코드이므로 kernel address space 공유

race condition (2/3)
Read more

Process Management

출처 : 이화여자대학교 반효경 (http://www.kocw.net/home/search/kemView.do?kemId=1046323)

프로세스 생성

  • 부모 프로세스가 자식 프로세스 생성
  • 프로세스의 트리(계층 구조) 생성
  • 프로세스는 자원을 필요로 함
    • 운영체제로부터 받는다
    • 부모와 공유한다
  • 주소 공간
    • 자식은 부모의 공간을 복사
    • 자식은 그 공간에 새로운 프로그램을 올림
  • 유닉스의 예 : 복제 생성하고 덮어씌움
    • fork() 시스템 콜이 새로운 프로세스를 복제 생성
      • 부모를 그대로 복사
      • 주소 공간 할당
    • exec()
      • fork 다음에 이어지는 exec() 시스템 콜을 통해 새로운 프로그램을 메모리에 올림 (덮어 씌움)

프로세스 종료

  • exit
    • exit 시스템 콜을 통해 프로세스가 마지막 명령을 수행한후 운영체제에게 이를 알려줌
    • 자식이 부모에게 output data를 보냄(via wait system call)
    • 프로세의 각종 자원들이 운영체제에게 반납됨
  • abort
    • 부모 프로세스가 자식의 수행을 종료시킴
    • 자식이 할당 자원의 한계치를 넘어섬
    • 자식에게 할당된 테스크가 더 이사 필요하지 않음
    • 부모가 종료하는 경우
      • 운영체제는 부모 프로세스가 종료하는 경우 자식이 더 이상 수행되도록 두지 않음
      • 단계적인 종료

fork() system call

왼쪽은 부모, 오른쪽은 자식. 자식은 fork() 이후의 라인부터 실행

exec() system call

Read more

Process

Process란 ?

실행중인 프로그램입니다. 메모리에 적재되어 CPU 할당을 받을 수 있습니다.

Context란 ?

CPU 수행상태를 나타내는 하드웨어 문맥입니다.

프로세스의 상태 (Process State) 란 ?

프로세스는 상태가 변경되며 수행됩니다.

  1. Running
    CPU를 잡고 instruction을 수행중인 상태입니다.
  2. Ready
    메모리 등 다른 조건을 모두 만족하고 CPU를 기다리는 상태 입니다.
  3. Blocked (wait, sleep)
    CPU를 주어도 당장 instruction을 수행할 수 없는 상태입니다. 프로세스 자신이 요청한 event(io같은거) 가 만족되지않아 이를 기다리는 상태입니다. 자신이 요청한 event 만족되면 ready 상태가 됩니다.
  4. New
    프로세스가 생성중인 상태입니다.
  5. Terminated
    execution이 끝난 상태입니다.
  6. Suspended (stopped)
    프로세스가 통째로 메모리에서 쫓겨난 상태입니다. 디스크에 swap out 됩니다. 외부에서 resume해 주어야 active가 됩니다.

Read more

Introduction

출처 : 이화여자대학교 반효경 (http://www.kocw.net/home/search/kemView.do?kemId=1046323)

운영체제란

  • 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하느 소픝웨어 계층
    • 협의의 운영체제(커널)
      • 운영체제의 핵심 부분, 메모리에 상주하는부분
    • 광의의 운영체제
      • 커널 뿐만 아니라 각족 주변 시스템 유틸리티를 포함한 개념

운영체제의 목표

  • 컴퓨터 시스템을 편리하게 사용하도록 환경 제공
    • 운영체제는 동시 사용자/프로그램들이 각각 독자적으로 컴퓨터에서 수행되는 것 같은 환상 제공
    • 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행
  • 컴퓨터 시슴템의 자원을 효율적으로 관리 (*)
    • 프로세서, 기억장치, 입출력 장치 등의 효율적관리
      • 사용자간의 형평성 있는 자원 분배
      • 주언진 자원으로 최대한의 성능을 내도록
    • 사용자 및 운영체제 자신의 보호
    • 프로세스, 파일, 메시지 등을 관리

운영체제의 분류

  • 동시작업 가능 여부
    • 단일 작업(single tasking)
      • MS-DON 프롬프르 상에서는 한 명령의 수행을 끝내기 전에 다른 명령을 수행시킬 수 없음
    • 다중 작업(multi tasking)
      • 동시에 두개 이상의 작업 처리
      • UNIX/MS Windows 등에서는 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있음
  • 사용자의 수
    • 단일 사용자
      • MS-DOS, MS Windows
    • 다중 사용자
      • UNIX, NT server
  • 처리 방식
    • 일괄처리(batch processing)
      • 작업 요청의 일정량 모아서 한꺼번에 처리
      • 작업이 완전 종료될 때까지 기다려야함
      • 초기 Punch Card 처리 시스템
    • 시분할(time sharing)
      • 여러 작업을 수행할때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
      • interactive한 방식
      • 짧은 응답시간을 가짐
    • 실시간(Realtime OS)
      • 정해진 시간안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS
      • 원자로/공장제어, 미사일제어, 반도체 장비, 로보트제어
      • Hard realtime system / Soft realtime system

몇 가지 용어

Read more

System Structure, Program Execution

컴퓨터 시스템 구조

  • mode bit
    • 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보호 장치 필요
    • 0
      • 운영체제가 CPU를 가지고 있음
      • 모든 인스트럭션 수행 가능
    • 1
      • 사용자 프로그램이 CPU를 가지고 있음
      • 한정된 인스턱션만 수행 가능
  • timer
    • 특정 프로그램이 CPU 독점 막기위해 이게 필요
    • 정해진 시간 흐른 뒤 운영체제에게 제어권 넘어가도록 interrupt 발생시킴
    • 매 클럭마다 1씨 감소
    • 타이머 값이 0 이 되면 언터럽트 발생
    • time sharing 구현 위해 널리 이용
  • device controller
    • IO 장치 전담하는 작은 CPU
    • 제어 정보를 위해 control register, status register를 가짐
    • local buffer를 가짐 (일종의 data register)
    • IO는 실제 deivce 와 local buffer 사이에서 일어남
    • IO가 끝나면 인터럽트로 CPU에 그 사실을 알림
    • device driver : OS 코드 중 각 장치별 처리 루틴 (소프트웨어)
    • divce controller : 각 장치를 통제하는 작은 CPU (하드웨어)
  • DMA controller
    • 직접 메모리에 접근할 수 있는 컨트롤러
    • IO 장치가 인터럽트 너무 많이 거니까 CPU가 너무 많이 방해 받아서 DMA controller가 필요
    • CPU의 중재 없이 device의 buffer storage의 내용을 메모리에 block 단위로 직접 전송
I/O
  • 운영체제를 통해서 함
  • 사용자 프로그램은 I/O를 어덯게?
    • system call을 함 (운영체제의 함수를 호출)
    • 인터럽트를 직접 걸어서(trap) mode bit이 0으로 바껴
동기식 입출력과 비동기식 입출력

  • 두 경우 모두 io 완료는 인터럽트로알려줌
  • syncronous I/O
    • I/O 요청 후 입출력 작업이 완료 된 후에야 제어가 사용자 프로그램에게 넘어감
    • 구현 방법 1
      • io가 긑날떄 까지 cpu낭비
      • 매시점 하나의 io만 일어남
    • 구현 방법2
      • io가 완료될때까지 해당 프로그램에게서 cpu를 빼앗음
      • io 처리를 기다리는 줄에 그 프로그램을 줄 세움
      • 다른 프로그램에게 cpu를 줌
  • asyncronous I/O
    • I/O가 시작된후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에게 즉시 넘어감
Interrupt
  • 인터럽트 당한 시점의 레티스터와 program counter를 save한 후 CPU의 제어를 인터럽트 처리 루틴에 넘김
  • 인터럽트 : 하드웨어가 발생 시킨 인터럽트
  • trap : 소프트웨어 인터럽트
    • Eception : 프로그램이 오류를 범함
    • System call : 프로그램이 커널 함수를 호출하는 경우
  • 인터럽트 백터
    • 해당 인터럽트의 처리 루틴 주소를 가지고 있음
  • 인터럽트 처리 루틴 (인터럽트 핸들러)
    • 해당 인터럽트를 처리하는 커널 함수
Read more