[운영체제] 쓰레드(Thread)

ideal dev·2022년 12월 24일
0

운영체제

목록 보기
7/9

프로세스의 생성과 종료

👉프로세스 생성 Process Creation

  • 프로세스는 프로세스에 의해 만들어짐
  • 컴퓨터가 부팅이 되면 운영체제가 메모리에 올라 최초의 프로세스를 생성함
  • 이렇게 만들어진 프로세스가 다른 프로세스, 그 프로세스가 또 다른 프로세스를 만드는 과정 반복
    -> 프로세스를 생성한 쪽은 부모 프로세스, 만들어진 프로세스는 자식 프로세스
    -> 같은 부모를 갖는 자식 프로세스는 형제 프로세스 Sibling processes
  • 프로세스는 각각의 고유 번호 PID 를 가짐 (Process Identifier), 정수형

👉 프로세스 종료 Process Termination

  • 종료하는 시스템 콜 : exit()
  • 해당 프로세스가 가졌던 메모리,파일,입출력 장치 등 가졌던 모든 자원을 O/S에 반환

쓰레드

  • 프로그램 내부의 흐름, 맥

👉 단일 쓰레드 (single Thread)

  • 아래와 같이 하나의 흐름을 가지고 있는 쓰레드
  • 일반적으로 하나의 프로그램은 하나의 쓰레드를 가짐
class Test {
public static void main(String[] args) {
	int n = 0;
	int m = 6; 
    System.out.println(n+m); 
    while (n < m)
		n++; 
        System.out.println("Bye");
}

👉 다중 쓰레드 (Mulitithreads)

  • 한 프로그램에 2개 이상의 흐름, 맥을 가지고 있을 때
  • context switching이 되는 단위 (Process 아님, Thread임)
    -> 현재 운영체제에서는 대부분 다중 쓰레드를 지원하기 때문에 하나의 프로세스 안에서 여러 쓰레드를 수행하다가 다른 프로세스로 넘어가서 그 프로세스의 쓰레드를 수행
  • 맥이 빠른 간격으로 스위칭되기 때문에 여러 쓰레드가 동시에 실행되는 것 처럼 보임
  • concurrent vs simultaneous = 동시에 vs 한 순간에 여러번
    -> concurrent : CPU가 하나인 환경에서 여러 쓰레드가 스위칭에 의해 동시에 수행되는 효과
    -> simultaneous : 여러 CPU 환경에서 여러 쓰레드가 실제로 동시에 수행되는 것
  • 현재 대부분의 프로그램은 다중 쓰레드로 동작

예시

  • Web browser : 화면을 출력하는 쓰레드, 데이터를 읽어오는 쓰레드 따로 동작
  • Word processor : 화면 출력하는 쓰레드, 키보드 입력 받는 쓰레드, 철자/문법 오류 확인 쓰레드
  • Media player 등 ...

👉 Thread vs Process

단일 쓰레드 (single thread) 프로그램 : 한 프로세스에는 기본 1개의 쓰레드
다중 쓰레드 (multi-thread) 프로그램 : 한 프로세스에 여러 개의 쓰레드

쓰레드구조

  • 프로세스는 code,data 메모리 공간이 존재하는데, 이는 여러 쓰레드가 공유
  • 프로세스의 자원인 file, i/o, ... 등 여러 쓰레드가 공유
  • 각 쓰레드가 고유하게 가지고 있는 것 (비공유): 개별적인 Program Counter(PC), Stack Pointer(SP), registers, stack

0개의 댓글