4. Thread

Thread?

  • 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배

Continue reading

3. Interrupt / Exception

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

Continue reading

2. 프로세스

프로세스?

  • 실행중인 프로그램의 한 인스턴스
    • 프로그램은 디스크에 저장된 실행 파일, 이게 실행이 되면 프로세스

Continue reading

1. 운영체제

운영체제?

  • 하드웨어와 애플리케이션 사이에 있는 시스템 소프트웨어
  • 목적?
    • 사용을 편하게 - Low-level 하드웨어를 조작할 수 있는 간단한, 통합된 인터페이스 제공
    • 공유 - 하드웨어 자원을 여러 프로세스/사용자가 공유할 수 있도록
    • 보호 - 하드웨어를 잘못된 사용으로부터 보호함
  • Key Interfaces
    • ISA (Instruction Set Architecture) : x86, ARM, MIPS (Machine Language)
      • SW와 HW 사이의 인터페이스를 정의
    • ABI (Application Binary Interface)
      • 시스템콜 인터페이스를 정의함
    • API (Application programming interface)
  • CISC (Complex Instruction Set Computer)
    • 복잡한 명령어 집합
    • 명령어의 수가 많음
    • 80년대 중반까지 사용 (x86, VAX)
  • RISC (Reduced Instruction Set Computer)
    • 간단한 명령어 집합
    • 적은 수의 명령어
    • 80년대 이후의 대부분의 아키텍처에 적용
      • ex) PowerPC, Alpha, SPARC, IA64, ARM
  • Revolution of OS (순서대로)
    • Serial Processing
      • Turing Machine (1936)
        • 새로운 수학적인 컴퓨팅 모델
        • 현대 컴퓨터의 이론적인 배경
        • 현존하는 모든 컴퓨터는 튜링 머신의 Subset
      • Bombe(1940)
        • 독일 에니그마를 해독하기 위해 만들어진 최초의 전자식 컴퓨터
      • Colossus(1943)
        • 1세대 Programmable Digital Computer (Hard-wired Programming)
      • ENIAC (Electronic Numerical Integrator And Computer)
        • 탄도 계산을 위해서 만들어짐
    • Simple Batch Systems
      • Monitor
        • 사용자가 작업(job)을 카드 또는 테이프에 작성한 후 제출 - 순서대로 처리
        • 모니터란 프로그램은 메모리에 상주, 인풋을 하나씩 처리함
        • 프로세서에 비해 입출력이 굉장히 느리기 때문에 idle한 상태가 오래 지속됨 - 비효율
    • Multiprogrammed Batch Systems
      • I/O를 기다리지 않고 그 시간에 다른 작업(job)을 처리함
      • Processor Utilization이 좋음
      • 자신의 작업을 처리하기 위해 이전의 작업을 기다려야 함
    • Time Sharing Systems
      • 여러 사용자가 동시에 하나의 컴퓨터를 사용 가능
      • 각 사용자가 기다리는 response time이 줄어듬 (Minimizing Response time is more important than maximizing throughput )
      • Time slice / Round Robin
      • Context Switching

Continue reading

Pagination


© 2020.02. by blupine