쓰레드(Thread) 한줄 정리

ssuda·2020년 1월 6일
0

쓰레드(Thread)


  • 쓰레드 : 프로그램 내부의 흐름, 맥을 뜻한다.

다중 쓰레드(Multithreads)


  • Single Thread Program : 하나의 맥을 갖는 프로그램이다
  • Multitreads Program : 하나의 프로그램에 여러 개의 맥이 존재한다.
    - Concurrent : 어느 한순간에 단 하나의 맥만 실행되지만, 맥이 빠른 시간 간격으로 스위칭 되기 때문에 동시에 여러 개의 맥이 실행되는 것처럼 보인다.
    • Simultaneous : 어느 한순간에 정말로 여러 개의 맥이 동시에 실행된다.
    • ex) 워드 프로세스의 경우 화면 출력, 키보드 입력, 철자 오류 확인 쓰레드들이 동시에 돌고 있다.

Thread vs Process


  • 쓰레드
    - 한 프로세스에는 기본적으로 한 개 이상의 쓰레드가 돌고 있다.
    • 각 쓰레드는 프로세스의 메모리 공간(code, data)과 프로세스의 자원(file, i/o...)를 공유한다.
    • PC, SP, Stack, registers는 개별적인 공간을 갖고 있다.
  • Context Switching
    - 다중 쓰레드 프로그램에서 Context Switching이 되는 단위는 프로세스가 아닌 쓰레드의 단위이다.

프로세스 동기화(Process Synchronization)


  • 프로세스 동기화(Process Synchronization)
    - 현재 운영체제에서는 Thread 단위로 Context Switching하기 때문에 Thread Synchronization이 더 정확하게 표현된 것이다.
    • 여러 개의 프로세스가 서로 공유하며 동시에 접근하는 데이터의 경우 데이터가 불일치(Data Inconsistency)할 수 있다. 그렇기 때문에 운영체제는 서로 영향을 주고받는 프로세스 간의 순서를 잘 정해서 데이터의 일관성(Data Consistency)이 유지되도록 해야 한다.
  • Independent Processes vs Cooperating Processes
    - Independent Processes : 프로세스 간 아무런 영향을 주고 받지 않는다.
    • Cooperating Processes : 프로세스간 영향을 주고 받는다.
      • ex) 전자우편과 같이 프로세스간 통신이 필요, 서버의 데이타베이스와 같이 프로세스간 자원 공유
  • ex) Bank Account Problem
    - 한 줄의 고급 언어(High Level Language)는 실제로 여러 줄의 기계어(Assembly Language)로 실행되어 진다. 만약 공통 변수(Common Variable)에 대해 동시에 Update가 된다면 이상한 결과가 나온다.
    • 이를 해결하기 위해서는 하나의 공통 변수에 대하여 하나의 쓰레드만 접근하여 변경할 수 있도록 더이상 쪼개질 수 없는 Atomic한 단위로 공통 변수에 대한 접근을 수행해야 한다.

참고 영상


본 글은 다음 링크의 강의 영상을 정리한 것입니다.
운영체제:(9)CPU스케쥴링 알고리즘3-Youtube
운영체제:(10)프로세스 동기화-Youtube

profile
안녕하세요 코딩을 사랑하는 ssuda 입니다.

0개의 댓글