Java 강의 [쓰레드 개념, 실행방법]

·2023년 7월 21일

java 공부

목록 보기
5/13
post-thumbnail

프로그램 기능 중 병렬이 되는 것과 안되는 것이 있다.
병렬이 되는 것을 통해 성능을 향상 시킬 수 있다.

운영체제는 시분할 시스템을 이용한다.

Process

  • 각각의 프로세스는 메모리 공간에서 독립적으로 존재한다.
  • 각각의 프로세스는 다음 페이지 그림과 같이 자신만의 메모리 구조를 가진다.
  • 프로세스 A, B, C가 있을 경우 각각 프로세스는 모두 같은 구조의 메모리 공간을 가진다.
  • 독립적인 만큼 다른 프로세스의 메모리 공간에 접근할 수 없다.

IPC

  • 프로세스 간의 통신 방식 ex. 메일 슬록, 파이프
  • 프로세스는 독립적인 메모리 공간을 지니기 때문에 IP를 통하지 않고 통신할 수 없다.
  • 프로세스가 여럿이 병렬적으로 실행되기 위해서는 필연적으로 컨텍스트 스위칭이 발생할 수밖에 없다. 이것을 해결할 수 있는 것이 Thread이다.

🏁 Thread

  • 스레드는 하나의 프로그램 내에서 존재하는 여러 개의 실행 흐름을 위한 모델이다.
  • 우리가 생각하는 프로그램이 실행되기 위해서 하나의 실행흐름으로 처리할 수도 있지만 다수의 실행 흐름으로 처리할 수도 있다. ex. 워드 프로세스에서 키보드 입력과 맞춤법 검사가 동시에 일어난다.
  • 프로세스를 구성하고 실행하는 흐름이다.
  • 스레드 VS 프로세스
    • 스레드는 프로세스 안에 존재하는 실행흐름이다.
    • 스레드는 프로세스의 heap, static, code 영역등을 공유한다.
    • 스레드는 stack 영역을 제외한 메모리 영역은 공유한다.
    • 스레드가 code 영역을 공유하기 때문에 프로세스 내부의 스레드들은 프로세스가 가지고 있는 함수를 자연스럽게 모두 호출할 수 있다.
    • 스레는 IPC 없이도 스레드 간으 통신이 가능하다. A, B 스레드는 통신하기 위해 heap 영역에 메모리 공간을 할당하고, 두 스레드가 자유롭게 접근할 수 있다.

🏁 멀티 스레드

  • 만들어보기!


  • 프로그램 종료 시점은 모든 스레드가 종료 되었을때 이다.
profile
기회를 잡기 위해 준비하자 !

1개의 댓글

comment-user-thumbnail
2023년 7월 21일

글을 잘읽었습니다. 프로세스와 스레드의 차이점과 병렬 처리에 대해 자세히 설명해주셔서 이해가 잘 되었어요. 그림까지 첨부해주셔서 더욱 이해가 쉬웠습니다. 좋은 정보 공유 감사합니다!

답글 달기