쓰레드?

  • User-Level Thread
    • 애플리케이션이 쓰레드를 관리(생성, 소멸, 스케줄링)
    • 커널은 쓰레드 존재 여부를 알지 못함
    • 장점
      • 커널 권한을 요구하지 않기 때문에 context switching 빠름
      • 스케줄링 알고리즘을 커널과 독립적으로 구성 가능
      • 기존 OS 상관 없이 작동 가능, 하위 커널에 독립적
      • 정리 : concurrent processing, fast response, multiprocessing, resource sharing
    • 단점
      • 특정 쓰레드가 시스템콜을 호출할 경우 block되어서 모든 쓰레드도 멈춤
      • 따라서 시스템콜을 호출할 장점을 활용 못함
      • 또한 멀티 쓰레드라고 하더라도 프로세스엔 하나의 프로세서만 할당 가능, 따라서 장점을 완전히 활용은 불가능

 

  • Kernel-Level Thread
    • 커널이 쓰레드 생성, 소멸, 관리
    • 장점
      • 하나의 쓰레드가 시스템콜을 호출해서 block되어도 다른 쓰레드는 실행 가능(concurrency & parallel)
      • OS Kernel 자체도 멀티쓰레딩 가능 - 효율이 좋아짐
    • 단점
      • Context switching 오버헤드가 (커널 레벨로  계속 들어감)
      • 쓰레드 생성 오버헤드가 비교적 (커널 레벨로 들어가야 하기 때문) : 유저레벨 쓰레드의 10

 

  • Combined Approach
    • 장점을 합친 모델
    • 유저 레벨 쓰레드를 같거나 적은 수의 커널 레벨 쓰레드에 매핑됨

 

  • 쓰레드를 쓰냐?
    • 작업 단위가 프로세스일 경우
      • 예를들어 프로세스가 IO 기다리면 전체 작업의 진행이 멈춤
      • IO 기다리면서 다른 작업을 하기 위해선 새로운 프로세스를 생성 - 오버헤드 발생
      • 하나의 프로세스를 쓰레드라는 작업 단위로 나누고. 프로세스 자원을 공유하면서 CPU Utilization, 자원 활용을 높일 있음 

 

 

  • Application for Multicores
    • Multithreaded native application
      • 여러개의 쓰레드로 구성된 소수의 프로세스로 개발
      • IBM(Lotus) Domino, Oracle(Siebel) CRM(Customer Relationship Manager)
    • Multiprocess applications
      • 싱글 쓰레드 프로세스를 여러개로 구성
      • Oracle DB, SAP
    • Java applications
      • JVM 자체가 싱글 프로세스에 멀티 쓰레드로 구현되어 있음
      • Sun’s Java Application server, IBM’s websphere, J2EE (Java2 Enterprise Edition) application
    • Multi-instance applications
      • 하나의 애플리케이션을 여러 실행할 별도의 프로세스로 만들어지도록(e.g. 브라우저)

Multithreading

  • 하나의 프로세스 안에서 여러 개의 쓰레드를 통해 작업 단위를 나누는 것
    • 프로세스는 자원 할당의 단위
    • 쓰레드는 CPU 스케쥴링의 단위
      • 쓰레드의 실행 상태(execution state)는 프로세스보다 제한적임
      • ready, run, blocked 세 상태
      • suspend는 프로세스 단위
      • 쓰레드의 실행 상태를 관리할 수 있는 Thread Control Block이 필요함
        • 쓰레드별로 register context, 실행 스택을 관리 
  • Single-threaded approach
    • 한 개의 프로세스에 한 개의 쓰레드로 이루어진 전통적인 접근 방법
    • 쓰레드의 개념이 없음
    • MS-DOS, old UNIX
  • Multi-threaded appraoch
    • 하나의 프로세스가 여러 개의 쓰레드로 이루어짐
      • Java run-time env
    • 여려 개의 프로세스가 각자 여러 개의 쓰레드로 이루어짐
      • Windows, Solaris, modern UNIX
  • 장점
    • 자원을 공유하기 때문에 새로운 쓰레드 생성이 빠름 (프로세스 생성보다 10배 빠름)
    • 종료 시에는 자원을 release해줄 필요가 없기 때문에 종료도 빠름
    • 쓰레드 간의 Context switching이 빠름
    • 쓰레드 간의 communication 속도가 빠름
      • 프로세스 간의 communication은 시그널을 이용하기 때문에 커널의 개입이 필요
      • 쓰레드 간의 communication은 shared memory를 이용하기 때문에 빠름
    • Faster response
      • 하나의 쓰레드가 block 되어도 다른 쓰레드를 실행이 가능
    • Parallel processing 
      • 멀티코어 시스템에서 여러 프로세서가 여러 쓰레드를 병행 처리가 가능함

Single thread vs Multi thread

 

 

'Study > OS' 카테고리의 다른 글

3. Interrupt / Exception  (0) 2020.02.28
2. 프로세스  (0) 2020.02.28
1. 운영체제  (0) 2020.02.28
  • Interrupt / Exception : 예외적인 상황
    • Interrupt : 
      • 외부적인 이벤트, 현재 CPU에서 실행되는 프로세스와 상관 없음
      • keyboard interrupt, Direct Memory Access 완료를 CPU에게 알리는 상황
      • asynchronous(언제 발생할지 모름), external events
      • 인테럽트가 발생하면 현재 프로세스의 상태를 저장, 인테럽트 핸들러 실행 복구
      • 프로세서의 인테럽트 핀이 설정됨
        • #INT
        • #NMI (Non-maskable interrupt) : 우선순위가 #INT 보다 높음 (interrupt disable도 무시)
      • examples
        • I/O interrupt
          • 키보드 ctrl + c 입력, 키보드 입력
          • 네트워크 패킷 수신
          • DMA(Direct Memory Accessing) 완료
        • Hard reset interrupt : reset 버튼 누르기
        • Soft reset interrupt : ctrl + alt + delete
      • 정리
        • 1. 명령어 실행
        • 2. interrupt 핀 확인
        • 3. system bus의 interrupt vector 확인
        • 4. interrupt vector code 실행 (control transfer)
        • 5. handler returns to next instruction

 

    • Exception : 특정 실행중인 프로세스의 CPU 핸들링할 없는 특정 명령어가 발생한 상황(e.g. pagefault) 
      • synchronous(항상 같은 위치에서 동일 조건에서 발생), internal events
      • 종류
        • Traps
          • 의도적인 상황 (명령어 실행을 마치고 의도적으로 멈추는 상황)
          • 명령어 실행을 마치자 마자 발생하게 하는
          • ex) debugging, breakpoints, system calls
        • Faults
          • 의도적이지 않은 상황
          • 현재 특정 명령어의 실행을 마치지 못함, 명령어 실행이 중단됨
          • NaN, divide by zero 
          • Recover 가능할 경우 해당 명령어를 다시 실행
        • Aborts
          • 심각한 하드웨어 에러
          • 현재 프로세스를 종료 또는 전체 시스템이 종료될 있음
          • MCA(Machine Check Abort), Parity error

'Study > OS' 카테고리의 다른 글

4. 쓰레드  (0) 2020.02.28
2. 프로세스  (0) 2020.02.28
1. 운영체제  (0) 2020.02.28

프로세스?

  • 실행중인 프로그램의 인스턴스
    • 프로그램은 디스크에 저장된 실행 파일, 이게 실행이 되면 프로세스
  • Provides two key abstractions
    • Logical Control Flow
      • 프로세스는 프로세서를 독점적으로 사용함
    • Private Address Space
      • 프로세스는 메모리를 독점적으로 사용함
  • Life & Scope
    • Life : 변수가 메모리에 있으면 살아있는
    • Scope : access 가능한 영역
  • Context Switching
    • Context?
      • PC, General Purpose Register ,Floating Pointer Register, Status Registers, and Various kernel data structures (page table, file table)
      • 이걸 PCB라고 , 중에서 register block context라고
    • Switching?
      • 현재 실행하는 프로세스의 Context 저장하고, 다음에 실행할 프로세스의 state 복구
      • 어떤 프로세스를 실행할지? - Scheduler 또는 Dispatcher

 

    • PCB (Process Control Block)
      • Process Identifier
        • 프로세스 ID 숫자로 부여됨
      • Process State Information
        • User-Visible Registers
          • General Purpose Register라고도
          • ex) Integer register
        • Control and Status Registers
          • Program counter
          • Condition codes : 산술연산의 결과 (sign, zero, carry, equal, overflow)
          • Status information : (interrupt enable/disable flag, execution mode)
        • Stack Pointers
      • Process Control Information
        • Scheduling and State information : 스케줄링과 관련된 정보를 보관
          • process state 
          • priority
          • scheduling-related information
          • event
        • Data structuring
          • Parent - Child relation
        • Interproces communication (signal)
        • Process privileges
        • Memory management
        • Resource ownership and utilization
    • PSW (Program Status Word)
      • 프로세스의 실행 상태(status) 관리하는 레지스터
      • 현재 실행중인 프로세스의 condition code 상태 정보를 저장함
      • ex) x86 EEFLAGS 레지스터

 

  • Process Creation and Termination
    • Process spawning
      • OS 새로운 프로세스를 만듬
      • 새로운 프로세스는 부모 프로세스에서 만들어짐(fork)
    • Process termination
      • EXIT 시스템콜 호출로 스스로 종료 가능
      • 과거 batch 시스템에서는 HALT라는 명령어 사용
      • 프로세스가 할당되지 않은 영역을 참조하거나, 메모리 초과, 오버플로우, 언더플로우, 부모 프로세스가 죽을 같이 종료될 있음

 

  • Suspended processes
    • Swapping
      • 메모리 상의 모든 프로세스가 IO 기다릴 있음
      • 이런 상황에서 메모리 상의 일부 프로세스를 디스크로 옮기고, 디스크 상의 다른 프로세스를 메모리로 가져옴
    • Suspended Process
      • Swap으로 실행이 불가능한 프로세스

'Study > OS' 카테고리의 다른 글

4. 쓰레드  (0) 2020.02.28
3. Interrupt / Exception  (0) 2020.02.28
1. 운영체제  (0) 2020.02.28

+ Recent posts