Thread란

A thread (or lightweight process) is a basic unit of CPU utilization

  • Thread의 구성
    • program counter
    • register set
    • stack space
  • Thread가 동료 thread와 공유하는 부분(=task)
    • code section
    • data section
    • OS resources
  • heavyweight process는 하나의 thread를 가지고 있는 task로 볼 수 있습니다

스크린샷 2021-05-14 오후 6 24 12

스크린샷 2021-05-14 오후 6 36 52

Thread의 장점

  1. 다중 스레드로 구성된 태스크 구조에서는 하나의 서버 스레드가 blocked(waiting) 상태인 동안에도 동일한 태스크 내의 다른 스레드가 실행(running)되어 빠른 처리를 할 수 있습니다
    • ex) 웹 브라우저가 웹 페이지를 불러올 때 html과 text를 먼저 불러오고 text만으로 사용자가 작업할 수 있게 한 다음, 다른 스레드가 image를 불러오는 작업을 할 수 있습니다
  2. 동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율(throughput)과 성능 향상을 얻을 수 있습니다.
  3. 자원 낭비를 막는다 (프로세스 각각으로 돌리면 각 프로세스당 메모리가 필요하게 되서 더 많은 메모리를 차지합니다)
  4. 스레드를 사용하면 병렬성을 높일 수 있습니다(멀티 코어일 경우)

참고

  • 반효경 교수님 운영체제 강의

Comment and share

Process Concept

  • Process is a program in execution
  • 프로세스의 문맥 (context)
    • CPU 수행 상태를 나타내는 하드웨어 문맥
      • Program Counter(PC)
      • 각종 register
    • 프로세스의 주소 공간
      • code, data, stack
    • 프로세스 관련 커널 자료 구조
      • PCB (Process Control Block)
      • Kernel stack
스크린샷 2021-05-14 오후 2 34 58

Process State

  • 프로세스는 상태(state)가 변경되며 수행됩니다

  • Running : CPU를 잡고 instruction을 수행중인 상태

  • Ready : CPU를 기다리는 상태(CPU만 얻으면 실행할 수 있는 상태)

  • Blocked(wait, sleep)

    • CPU를 주어도 당장 instruction을 실행할 수 없는 상태
    • Process 자신이 요청한 event(I/O)가 즉시 만족되지 않아 이를 기다리는 상태
    • 디스크에서 file을 읽어와야 하는 경우
  • New: 프로세스가 생성중인 상태

  • Terminated: 수행이 끝난 상태

    스크린샷 2021-05-14 오후 2 41 11
  • 각 작업의 큐는 Kernel의 Data영역에서 관리되어집니다

    스크린샷 2021-05-14 오후 2 47 09

PCB

  • 운영체제가 각 프로세스를 관리하기 위해 프로세스당 유지하는 정보

  • 다음의 구성 요소를 가집니다 (구조체로 유지)

    1. OS가 관리상 사용하는 정보

      • Process state, Process ID
      • scheduling information, priority
    2. CPU 수행 관련 하드웨어 값

      • program counter(PC), registers
    3. 메모리 관련

      • code, data, stack의 위치 정보
    4. 파일 관련

      • Open file descriptiors…
      스크린샷 2021-05-14 오후 3 31 13

문맥 교환 (Context Switching)

  • CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정

  • CPU가 다른 프로세스에게 넘어갈 때 운영체제는 운영체제는 다음을 수행합니다

    • CPU를 내어주는 프로세스의 상태를 그 프로세스의 PCB에 저장

    • CPU를 새롭게 얻는 프로세스의 상태를 PCB에서 읽어옴

      스크린샷 2021-05-14 오후 3 33 34
  • System Call이나 Interrupt 발생시 반드시 Context switching이 일어나는 것은 아닙니다

    스크린샷 2021-05-14 오후 3 35 50
    • 1번의 경우에도 CPU 수행 정보 등 context의 일부를 PCB에 save해야 하지만 문맥교환을 하는 2번의 경우 cache memory flush가 발생하기 때문에 성능 부담이 훨씬 큽니다

프로세스를 스케줄링하기 위한 큐

  • Job Queue: 현재 시스템 내에 있는 모든 프로세스의 집합 (Process Queue + Device Queue)

  • Ready Queue: 현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 프로세스의 집합

  • Device Queue: I/O device의 처리를 기다리는 프로세스의 집합

    프로세스들은 각 큐를 오가며 수행됩니다

스케줄러

  • 장기 스케줄러 (job scheduler)

    • 시작 프로세스 중 어떤 것들을 ready queue로 보낼지 결정합니다
    • 프로세스에 memory(및 각종 자원)을 주는 문제
    • degree of multiprogramming을 제어
    • time sharing system에는 보통 장기 스케줄러 없이 무조건 ready 상태가 됩니다
  • 단기 스케줄러 (cpu scheduler)

    • 어떤 프로세스를 다음번에 running 시킬 지 결정합니다
    • 프로세스에 CPU를 주는 문제
  • 중기 스케줄러 (swapper)

    • 여유 공간 마련을 위해 프로세스를 통째로 메모레에서 디스크로 쫓아냅니다

    • 프로세스에게서 memory를 뺏는 문제

    • degree of multiprogramming을 제어

    • 현재 시스템은 프로그램을 무조건 메모리에 올리고 swapper를 이용해서 메모리에서 쫓아낸다 (장기 스케줄러대신 중기 스케줄러를 사용한다)

      중기 스케줄러로 인해서 Suspended라는 프로세스의 상태가 추가됩니다

새로운 프로세스 상태

  • Running
  • Ready
  • Blocked
  • Suspended (stopped)
    • 외부적인 이유로 프로세스의 수행이 정지된 상태
    • 프로세스는 통째로 디스크에서 swap out 됩니다
    • (예) 메모리에 너무 많은 프로세스가 올라와서 성능이 저하되었을 때 사용자가 직접 process를 중단시거나 시스템이 중단시킵니다

Block은 자신이 요청한 event가 만족되면 Ready 상태가 되어집니다

Suspended는 외부에서 다시 resume해 주어야 Activce됩니다

스크린샷 2021-05-14 오후 3 09 54

참고

  • 반효경 교수님 운영체제 강의

Comment and share

컴퓨터 시스템 구조

  • Computer

    • CPU
      • mode bit : 사용자 모드 (0 : 커널, 1 : 사용자)
      • registers : CPU가 일시적으로 데이터를 저장하는 기억장치 입니다
      • interrupt line : 들어온 인터럽트를 확인하는 공간입니다
    • Memory: CPU의 작업 공간입니다
  • timer : 한 작업 당 CPU를 일정시간 동안만 사용할 수 있도록하는 하드웨어 입니다 (인터럽트를 CPU에 겁니다)

  • DMA controller: CPU의 interrupt 작업을 대신해줍니다 (I/O 작업의 결과를 메모리에 반영하고 완료하면 CPU에 Interrupt를 한 번만 작업합니다)

  • memoery controller : DMA, CPU의 메모리 접근을 제어합니다 (DMA와 CPU가 동시에 같은 메모리를 작업하지 않도록 합니다)

  • I/O device

    • device controller : 각 device를 제어합니다

    • local buffuer : device controller 작업 공간입니다

      스크린샷 2021-05-12 오전 1 20 27

Device Controller

  • 해당 I/O 장치유형을 관리하는 일종의 작은 CPU입니다
  • 제어 정보를 위해 control register, status register를 가집니다
  • 일종의 data register인 local buffer를 가집니다
  • I/O 작업은 실제 device와 local buffer 사이에 일어나고 I/O 작업이 완료되면 Device Controller는 Interrupt로 CPU나 DMA에 완료됨을 알려줍니다
  • device driver VS device controller
    • device driver는 OS 코드 중에서 각 장치별 처리루틴을 작성한 software 입니다
    • device controller는 각 장치를 통제하는 일종의 작은 CPU인 hareware 입니다

Timer

  • 정해진 시간이 흐른 뒤 운영체제에게 제어권이 넘어가도록 인터럽트를 발생시키는 하드웨어 입니다
  • 타이머는 매 클럭마다 1씩 감소되고 0이 되어지면 타이머 인터럽트가 발생합니다
  • CPU를 특정 프로그램이 독점하는 것으로부터 보호합니다
  • 타이머는 time sharing을 하기위해 많이 사용되어집니다

DMA (Direct Memory Access)

  • CPU의 중재 없이 device controller가 device의 buffer storage의 내용을 메모리에 block 단위로 직접 전송하도록 해줍니다
  • 바이트 단위가 아니라 block 단위로 인터럽트를 발생시키기 때문에 CPU에 인터럽트가 적게 걸립니다

인터럽트 (Interrupt)

  • 인터럽트 : 인터럽트를 당한 시점의 레지스터와 program counter를 저장한 후 CPU의 제어를 인터럽트 처리 루틴에 넘깁니다
  • 인터럽트의 종류
    • Interrupt (하드웨어 인터럽트): 하드웨어가 발생시킨 인터럽트입니다
    • Trap (소프트웨어 인터럽트)
      • Exception: 프로그램이 오류를 범한 경우
      • System call: 사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것
  • 인터럽트 관련 용어
    • 인터럽트 벡터 : 해당 인터럽트의 처리 루틴 주소를 가지고 있습니다
    • 인터럽트 처리 루틴(Interrupt Service Routine, 인터럽트 핸들러) : 해당 인터럽트를 처리하는 커널 함수입니다

I/O System Call 흐름 자세히 보기

  1. 사용자 프로그램은 I/O 명령은 특권 명령이여서 OS의 도움이 필요합니다.
  2. 따라서 System Call을 사용하여 운영체제에게 I/O를 요청하게 됩니다.
  3. trap을 사용하여 인터럽트 벡터의 특정 위치로 이동하고 인터럽트 벡터가 가리키는 인터럽트 서비스 루틴으로 이동합니다
  4. 이 I/O 요청이 올바른 요청인지 확인후 I/O를 수행합니다
  5. I/O 완료 시 제어권을 시스템 콜 다음 명령으로 옮깁니다

작업 흐름 - I/O 작업

  1. CPU가 Program A를 작업하고 있습니다
  2. Program1에서 I/O 작업을 요청하기 위해 시스템 콜을 실행합니다
  3. 해당 시스템 콜로 인해서 인터럽트가 걸려서 CPU 제어권이 OS로 넘어갑니다
  4. OS에서 I/O 작업을 처리하도록 해당 device에 요청합니다
  5. OS에서 스케쥴링하여 다음 작업인 Program B에 CPU를 넘겨줍니다
  6. 이후에 해당 device에서 I/O 작업을 마치고 CPU의 interrupt line에 완료 인터럽트를 겁니다
  7. CPU는 instruction을 실행하면서 interrupt line에 인터럽트가 들어온 것을 확인하고 CPU 제어권이 OS로 넘어갑니다
  8. OS에서는 완료된 I/O 작업을 확인하고 Program1을 실행 가능 상태로 전환하여 스케쥴링합니다.

작업 흐름 - Timer

  1. OS에서 스케쥴링하여 Program A에 CPU 제어권을 넘겨주고 Timer를 설정합니다.
  2. Program A가 작업하고 있다가 작업이 완료되기 전에 Timer에 시간이 만료되어서 CPU에 Interrupt가 걸립니다.
  3. CPU는 Interrupt를 확인하고 CPU의 제어권이 OS로 넘어갑니다
  4. OS는 동일하게 다음 스케쥴링된 프로그램에게 CPU 제어권을 넘겨주고 Timer를 설정합니다

동기식 입출력과 비동기식 입출력

  • 동기식 입출력 (synchronous I/O)
    • I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램으로 넘어갑니다
    • 구현 방법 1
      • I/O가 끝날 때까지 CPU를 가지고 있습니다
      • CPU낭비가 심하고 매시점 하나의 I/O만 일어날 수 있습니다
    • 구현 방법 2
      • I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗습니다
      • I/O 처리를 기다리는 줄에 그 프로그램을 줄 세우고 다른 프로그램에게 CPU를 줍니다
  • 비동기식 입출력 (asynchronous I/O)
    • I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 다시 원래의 사용자 프로그램에게 넘어갑니다
  • 두 경우 모두 I/O 완료는 인터럽트를 통해서 알려줍니다

프로그램의 실행 (메모리 load)

  • File System에 존재하는 프로그램이 메모리에 load될 때 code, data, stack 영역으로 구분되어지는 Virtual memory로 형성되어 지고, 실제 메모리에 올라가는 부분은 Virtual memory와 매핑되어지는 일부분만 올라갑니다. 이후에 메모리의 일부분은 File System에 존재하는 Swap area와 교체가 일어나면서 메모리에 올라갔다가 내려오게 됩니다.

    스크린샷 2021-05-12 오후 3 45 09

커널 주소 공간의 내용

  • code

    • 시스템 콜, 인터럽트 처리 코드
    • 자원 관리를 위한 코드
    • 편리한 서비스 제공을 위한 코드
  • data

    • PCB
    • CPU, Memory, Disk에 관한 데이터
  • stack

    • 각 프로세스에 관한 커널 스택

      스크린샷 2021-05-12 오후 3 47 17

참조

  • 반효경 교수님 운영체제 강의

Comment and share

운영체제란 무엇인가?

  • 운영체제 : 컴퓨터 하드웨어 바로 위에 설치된 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분입니다
    os
  • 운영체제의 목표
    • 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공합니다
      • 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공합니다
      • 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행해줍니다
    • 컴퓨터 시스템의 자원(프로세서, 기억장치, 입출력 장치)을 효율적으로 관리해줍니다
      • 사용자간의 형평성 있게 자원을 분배해줍니다
      • 주어진 자원으로 최대한의 성능을 내도록 합니다
  • 운영 체제의 분류
    • 동시 작업 가능 여부
      • 단일 작업(single tasking)
      • 다중 작업(multo tasking)
    • 사용자의 수
      • 단일 사용자(single user)
      • 다중 사용자(multi user)
    • 처리 방식
      • 일괄 처리(batch processing)
        • 작업 요청의 일정량을 모아서 한꺼번에 처리하며, 따라서 작업이 완전 종료될 때까지 기다려야 합니다
      • 시분할(time sharing)
        • 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용하여, 일괄 처리 시스템에 비해
          짧은 응답시간을 가지고, interactive한 방식입니다.
      • 실시간(Realtime OS)
        • 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야하는 실시간 시스템을 위한 OS입니다.
        • 예) 미사일 제어, 반도체 장비, 로보트 제어
        • 실시간 시스템의 개념의 확장
          • Hard realtime system : 데드라인이 존재하며 데드라인안에 작업이 완료되어야 합니다
          • Soft realtime system : 데드라인은 존재하지만 완벽하게 지켜지지 않아도 되는 시스템 입니다
  • 용어 정리
    • 컴퓨터에서 여러 작업을 동시에 수행하는 것을 강조한 용어
      • Multitasking : 하나의 프로그램이 끝나기전에 다른 프로그램을 실행시킬 수 있습니다
      • Multiprogramming : 메모리에 여러 프로그램이 올라갈 수 있는 부분을 집중한 용어입니다
      • Time sharing : cpu를 강조한 측면의 유사한 용어입니다
      • Multiprocess
    • Multiprocessor : 하나의 컴퓨터에 CPU (processor)가 여러 개 붙어 있음을 의미합니다

참조

  • 반효경 교수님 강의

Comment and share

  • page 1 of 1

Yechan Kim

author.bio


author.job