티스토리 뷰

프로세스

  • 프로세서에 의해 동작하고 있는 프로그램
    • 프로세스가 동작 한다는 것은 프로세스의 특정 쓰레드가 실행 중 그 특정 쓰레드는 프로세스가 가진 데이터를 참조함
  • 쓰레드 작업 단위를 지원하기 위한 자원 할당의 단위

프로세스 구조

  • Stack
    • 정적 할당에 사용
    • 호출된 함수, 지역변수 등이 저장되어 있는 임시 메모리
  • Heap
    • 동적 할당에 사용
    • 동적으로 생긴 데이터
      • new Object()
  • Data
    • 프로그램 시작과 종료시까지 사용
    • 전역변수
      • static 변수, global 변수
  • Code
    • 프로그램의 코드내용 활용에 사용
    • 프로세스가 종료될 때까지, 계속 유지되는 영역

PCB(Process Control Block)

  • 특정한 프로세스를 관리할 필요가 있는 정보를 포함하는 운영체제 커널의 자료구조이다
  • 프로세스가 생성될 때 마다 고유의 PCB가 생성되고 프로세스가 완료되면 PCB는 제거된다

쓰레드

  • 프로세스 내에서 실제 작업을 수행
  • 모든 프로세스는 최소한 하나의 쓰레드를 가지고 있다
  • 프로세스 내에서 실행되는 작업 흐름의 단위
  • 싱글 쓰레드 프로세스
    • = 자원 + 쓰레드
  • 멀티 쓰레드 프로세스
    • = 자원 + 쓰레드 + 쓰레드 + ... 쓰레드

쓰레드 구조

  • Code, Data, Heap 영역 공유

쓰레드의 구현과 실행

  • Thread 클래스를 상속
class MyThread extend Thread{
  public void run(){
    /* 작업내용 */
  }
}
  • Runnable 인터페이스를 구현
class MyThread2 implements Runnable{
  public void run(){
    /* 작업내용 */
  }
}

멀티 프로세스

멀티 프로세스란?

  • 하나의 프로그램을 여러 개의 프로세스로 구성하여 하나의 작업을 처리하는 것이다.

장단점

  • 장점
    • 하나의 프로세스가 잘못 되어도 프로그램은 동작한다
  • 단점
    • context switching 비용 발생

멀티 쓰레드

멀티 쓰레드란?

  • 프로그램을 여러 개의 쓰레드로 구성하고 각 쓰레드가 작업을 처리하는 것

장단점

  • 대부분의 프로그램이 멀티쓰레드로 작성되어 있다. 그러나, 멀티쓰레드 프로그래밍이 장점만 있는 것은 아니다
    • 장점
      • 시스템 자원을 보다 효율적으로 사용할 수 있다.
      • 사용자에 대한 응답성이 향상된다
      • 작업이 분리되어 코드가 간결해진다
    • 단점
      • 동기화(synchronization)에 주의해야 한다.
      • 교착상태(dead-lock)가 발생하지 않도록 주의해야 한다.
      • 각 쓰레드가 효율적으로 고르게 실행될 수 있게 해야 한다.

프로세스 : 쓰레드 = 공장 : 일꾼
하나의 새로운 프로세스를 생성하는 것보다 하나의 새로운 쓰레드를 생성하는 것이 더 적은 비용이 든다

멀티 태스킹의 진실

  • CPU(프로세서)는 한순간에 하나의 프로세스만 실행할 수 있음
    • 운영체제가 짧은 시간에 수십번 수천번 실행할 프로세스를 교체하고 있기 때문에 우리는 동시에 여러 개의 작업이 실행되고 있다고 느끼는 것!

용어 정리

  • 프로세서
    • 프로세스가 동작될 수 있도록 하는 하드웨어
  • 프로그램
    • 어떤 작업을 위해 운영체제 위해서 실행 할 수 있는 파일
  • 실행단위
    • cpu core 에서 실행하는 하나의 단위로 프로세스와 쓰레드를 포괄하는 개념
  • 동시성
    • 한 순간에 여러가지 일이 아니라, 짧은 전환으로 여러가지 일을 동시에 처리하는 것처럼 보이는 것
  • 동기화(Synchronized)
    • 여러 개의 쓰레드가 한 개의 자원을 사용하고자 할 때, 해당 쓰레드만 제외하고 나머지는 접근을 못하도록 막는 것이다
  • 교착상태(dead-lock)
    • 상호 배제에 의해 나타나는 문제점으로, 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상을 의미한다

결론

프로세스는 운영체제 위에서 자원을 할당받아 실행중인 작업의 단위이다 쓰레드는 할당 받은 자원을 이용하는 실행의 단위이며 프로세스 내부에 여러개가 존재 할 수 있다

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함