CS_스레드1

이경환·2023년 2월 8일

CS

목록 보기
3/6

프로세스와 스레드

  • 스레드는 프로세스내에서 실행되는 흐름이라 사전적 정의가 나온다. 프로세스가 공장이라면 스레드는 일꾼이다 프로세스의 자원을 할당받아 실행하는 단위이다
    스레드는 프로세스 내에서 Stack은 따로
    할당받지만 Heap, Data , Code의 영역은 공유한다 각 스레드 들은 공통의 힙 메모리를 읽을 수 있다.

  • 자바의 스레드는 jvm이 운영체제 역할을 한다. 자바는 프로세스가 존재하지 않고 스레드만 존재.

메인스레드와 멀티 스레드

  • 멀티 프로세스 방식과 멀티 스레드 방식 차이

    • 멀티 프로세스 : 여러 프로그램이 실행중 IPC를 이용한 통신, 동기화 작업이 필요하지 않다.
    • 멀티 스레드 : 하나의 프로그램에서 여러가지 일을 할 수 있음 하나의 프로세스를 여러 스레드가 자원을 나눠 쓴다. 자원을 나눠 쓰기떄문에 동기화 작업이 필요.
      (서로 다른 스레드가 데이터와 힙 영역을 공유하기 때문)
    • 프로세스는 컨텍스트 스위칭 비용이크지만 스레드는 비교적 적다.
  • 이렇게 본다면 멀티 프로세스 보다는 멀티 스레드의 이점이 훨씬 커보인다. 자원의 소모성도 그렇고 하지만 멀티 스레드에는 치명적인 단점이있다.

    • 멀티 스레드의 단점 다중의 스레드중 한 스레드에 치명적인 문제가 생기면 프로세스 전체에 영향이 갈수있다.

    • 자원을 공유하기 때문에 경쟁상태(레이스 컨디션) 에 놓일 가능성이있고, 동기화 작업이 필요(줄을 세운다)하다. 하지만 이떄문에
      교착 상태(데드락)이 생길 수 있다.

      그러므로 과도한 lock은 자제한다 공유 자원이 아닌부분에는 동기화 처리가 불필요하다.
      즉, 동기화 처리가 필요한 부분에만 synchronized 처리하자

    • 데드락 승려와 젓가락을 기억하자 스레드가 자원을 얻지 못해 굶어죽는다.

      메인 스레드 메인메서드를 실행하는 스레드 참고자료 : https://developer.mozilla.org/en-US/docs/Glossary/Main_thread

TCB(Thread Control Block)

  • TCB는 스레드의 실행 상태와 시케줄링 정보를 가지고있다.

컨텍스트 이동(문맥 전환)

  • cpu코어의 수 보다 더 많은 스레드가 실행되면, 코어는 번갈아가면서 실행하게 된다. 이떄 각 스레드가 서로 교체될 때 스레드 간의 문맥 교환
    이라는 것이 발생하게된다. p1이라는 스레드가 실행중일때. 멈추고 p2라는 스레드를 실행한다면 문맥 전환이 일어났다 할 수 있다.

병렬처리

  • 동시성(Concurrency), 병렬성(Parallelism)과 구분지어 생각해 봤다. 동시성은 하나의 이상의 코어가 프로세스(혹은 스레드가) 번갈아 가면서 진행되어 동시에 진행되는 것처럼 보이는 것이다.
  • 병렬처리는 두개 이상의 코어가 프로세스(혹은 스레드가) 한꺼번에 진행되는 것이다.

프로세스(스레드)동기화

  • 멀티스레드의 문제점인 동시성의 문제. 해결하기 위해 줄을 세워야한다 -> 동기화

시스템콜 과 인터럽트

  • 지금까지 미션을 하면서 프로세스의 준비ready, 실행running, 대기waiting 상태를 가지며 스케쥴링 하는 과정을 봤다. 시스템에서 이러한 3가지
    상태뿐 아니라 다양한 종류의 이벤트가 있는데 이것을 인터럽트라한다.

  • 시스템콜은 프로그램이 os커널이 제공하는 서비스를 이용하고 싶을때 java나 c로 작성된 프로그램은 직접 시스템 호출을 사용할 수 없기 때문에
    고급 API를 통해 시스템 호출에 접근하게 하는 방법이다. 이것은 사실 우리가 사용하는 고수준언어가 간접적으로 이런한 api를 매핑하고있어

  • 시스템콜을 간접적으로 사용한다. 즉 각 언어들은 각자의 특색에 맞게 시스템콜을 간접적으로 사용한다. 자바에서 스레드 인스턴스를 생성하고
    실행하면 native한메서드가 실행되는데 이것은 os의 메서드이다 이런식으로 간접적으로 시스템콜을 사용.

  • 시스템콜의 예시 : 프로세스/스레드, 파일, i/o 관련, 소켓관련

IPC

  • 프로세스
  • 데이터 레이스와 교착상태
  • 운영체제가 지원하는 IPC 방식
profile
개선하는 개발자, 이경환입니다

0개의 댓글