no image
[CS]스레드(Thread)란?
📖스레드란 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위이다. 각 스레드(Thread)는 Thread ID, 프로그램 카운터,레지스터 집합, 스택으로 구성되어 있다. 같은 프로세스에 속하는 스레드는 서로 코드, 데이터 섹션, Heap, 열린파일이나 신호와 같은 운영체제 자원들을 공유한다. 📖스레드가 필요한 이유 웹서버는 수많은 클라이언트로부터 요청을 받는다.만약 단일 프로세스로 작동한다면 ,자신의 단일 프로세스로 한번에 하나의 클라이언트만을 서비스 할 수 있게되어 오랫동안 기다려야한다. 📖멀티태스킹과 멀티스레드 👉 멀티 태스킹 멀티태스킹은 하나의 운영체제 언에서 여러 프로세스가 실행되는것을 의미한다. 멀티태스킹은 여러 프로세스가 동시에 실행되는 것처럼 보이지만 자세한 원리를 알아보면 그렇지 않다...
2021.06.15
no image
[CS]인터럽트(Interrupt)
🙉인터럽트란? CPU가 프로그램을 실행하고 있을 때, 압출력 하드웨어 등의 장치나 또는 예외상황이 발생하여 처리가 필요할 경우에 CPU에 알려서 처리하는 기술이다. 인터럽트는 하드웨어 인터럽트와 소프트웨어 인터럽트로 나뉜다. 하드웨어 인터럽트는 하드웨어가 발생시키는 인터럽트로, CPU가 아닌 다른 하드웨어 장치가 CPU에 어떤 사실을 알려주거나 CPU 서비스를 요청해야 할 경우 발생시킨다. 하드웨어 인터럽트는 주로 전원 이상, 기계 문제,키보드등 IO 관련 이벤트 등이 있다. 소프트웨어 인터럽트는 소프트웨어가 발생시키는 인터럽트이다. 소프트웨어(사용자 프로그램)가 스스로 인터럽트 라인을 세팅한다.(종류: 예외 상황,System Call) 소프트웨어 인터럽트의 예로는 사용자 모드에서 허용되지 않은 명령 또..
2021.06.13
no image
[CS]Context Switching(컨택스트 스위칭)
📖Context(Context)란? CPU가 특정 프로세스를 실행시키기 위한 프로세스의 정보들이다. Context는 프로세스의 PCB(Process Control Block)에 저장되어 Context Switching(컨택스트 스위칭)을 실행 할 때 PCB의 정보를 읽어 CPU가 이전에 프로세스가 하던 일을 이어서 수행 가능하다. 👉PCB에는 다음과 같은 정보들이 저장된다. 프로세스의 상태 : 생성,준비,수행,대기,중지 프로그램 카운터 : 프로세스가 다음 실행할 명령어 주소 레지스터 : 누산기,스택, 색인 레지스터 프로세스 번호 📖Context Switching(컨택스트 스위칭)이란? 멀티 프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서,인터럽트 요청에 의해 다음 우선 순위의 프..
2021.06.13
728x90

📖스레드란

  • 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위이다.
  • 각 스레드(Thread)는 Thread ID, 프로그램 카운터,레지스터 집합, 스택으로 구성되어 있다.
  • 같은 프로세스에 속하는 스레드는 서로 코드, 데이터 섹션, Heap, 열린파일이나 신호와 같은 운영체제 자원들을 공유한다.

https://m.blog.naver.com/three_letter/220333796848

 

📖스레드가 필요한 이유

  • 웹서버는 수많은 클라이언트로부터 요청을 받는다.만약 단일 프로세스로 작동한다면 ,자신의 단일 프로세스로 한번에 하나의 클라이언트만을 서비스 할 수 있게되어 오랫동안 기다려야한다.

 

 

📖멀티태스킹과 멀티스레드

  👉 멀티 태스킹

  • 멀티태스킹은 하나의 운영체제 언에서 여러 프로세스가 실행되는것을 의미한다.
  • 멀티태스킹은 여러 프로세스가 동시에 실행되는 것처럼 보이지만 자세한 원리를 알아보면 그렇지 않다.

   👉멀티스레드

  • 대부분의 프로그램은 하나의 프로세스안에 여러개의 스레드로 구성해서 처리하는 방식을 사용한다.이를 멀티스레딩이라 한다.
  • 자원을 공유해서 효과적이고, 통신간 비용이 적다.

 

 

📖멀티스레드 장단점

🤨멀티스레드 장점

  • 시스템 자원 소모 감소 (자원의 효율성 증대) :프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리 할 수 있다.
  • 시스템 처리량 증가(처리 비용 감소) : 스레드 사이의 작업량이 작아 Context Switching이 빠르다.
  • 간단한 통신 방법으로 인한 프로그램 응답 시간 단축: 스레드는 프로세스 내의 Stack영역을 제외한 모든 메모리를 공유하기 때문에 통신의 부담이 적다.

😟멀티스레드 단점

  • 스레드 하나가 프로세스 내부 자원을 망쳐버리면 모든 프로세스가 종료될 수 있다.
  • 자원을 공유하기 때문에 동기화 문제가 발생할 수 밖에 없다.

👉동기화 문제(Synchronization Issue)는 멀티스레드를 사용하면 각각의 스레드 중에 어떤 것이 우선 순서로 실행되는지 알 수 없다.

      만약 A 스레드가 어떤 자원을 사용하다가 B 스레드로 제어권이 넘어간 후 B 스레드가 해당 자원을 수정했을 때, 다시 제어권을 받은

      A스레드가 해당 자원에 접근하지 못하거나 바뀐 자원에 접근하게 되는 오류가 발생할 수 있다.그러므로 프로그래머가 직접 동기화

      문제에 대응할 수 있어야 한다.

 

 

💻마무리

스레드는 프로세스 안에 포함되어 있기 때문에,프로세스와 개념의 법위부터가 다르다.

운영체제가 프로세스에게 Code/Data/Stack/Heap 메모리 영역을 할당해 주고 최소 작업 단위로 삼는 반면, 스레드는 프로세스 내에서 Stack 메모리 영역을 제외한 다른 메모리 영역을 같은 프로세스 내 다른 스레드와 공유한다.

 

멀티태스킹보다 멀티스레드가 자원을 아낄 수 있게 된다. 다만 스레드의 스케줄링은 운영체제가 처리하지 않기 때문에 프로그래머가 직접 동기화 문제에 대응할 수 있어야 한다.

 

References

 

728x90

'Dev > ComputerScience' 카테고리의 다른 글

[CS]인터럽트(Interrupt)  (0) 2021.06.13
[CS]Context Switching(컨택스트 스위칭)  (0) 2021.06.13
728x90

🙉인터럽트란?

  • CPU가 프로그램을 실행하고 있을 때, 압출력 하드웨어 등의 장치나 또는 예외상황이 발생하여 처리가 필요할 경우에 CPU에 알려서 처리하는 기술이다.
  • 인터럽트는 하드웨어 인터럽트와 소프트웨어 인터럽트로 나뉜다.

 

  • 하드웨어 인터럽트하드웨어가 발생시키는 인터럽트로, CPU가 아닌 다른 하드웨어 장치가 CPU에 어떤 사실을 알려주거나 CPU 서비스를 요청해야 할 경우 발생시킨다.
  • 하드웨어 인터럽트는 주로 전원 이상, 기계 문제,키보드등 IO 관련 이벤트 등이 있다.

 

  • 소프트웨어 인터럽트소프트웨어가 발생시키는 인터럽트이다. 소프트웨어(사용자 프로그램)가 스스로 인터럽트 라인을 세팅한다.(종류: 예외 상황,System Call)
  • 소프트웨어 인터럽트의 예로는 사용자 모드에서 허용되지 않은 명령 또는 공간에 접근을 하거나, 계산 결과가 Overflow/Underflow가 발생 할 때 등이 있다.
  • 인터럽트는 일종의 이벤트로 불린다. 이벤트에 맞게 운영체제가 처리를 한다.

 

🙈인터럽트가 필요한 이유

  1. 선점형 스케쥴러 구현

  • 프로세스 running중에 스케쥴러가 이를 중단 시키고, 다른 프로세스로 교체하기 위해, 현재 프로세스 실행을 중단 시킨다.
  • 현재 프로세스를 중단 시킬려면, 스케쥴러 코드가 실행이 되서 현재 프로세스를 중지 시켜야한다

2. I/O Device와의 커뮤니케이션

  • 저장매체에서 데이터 처리 완료시, 프로세스를 깨워야 한다.(Block state -> Ready state)

3. 예외 상황 핸들링 

  • CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 또는 예외상황이 발생할 경우, CPU가 해당 처리를 할 수 있도록 CPU에 알려줘야한다.

🙉인터럽트 처리 예

1.CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치 이슈 발생

  • 파일 처리가 끝났다는 것을 운영체제에 알려준다.
  • 운영체제는 해당 프로세스를 Block State에서 실행 대기(ready) 상태로 프로세스 상태를 변경한다.

2.또는 예외 상황이 발생

  • 0으로 나누는 계산이 발생해서, 예외 발생을 운영체제에 알려준다.
  • 운영체제가 해당 프로세스 실행 중지/에러 표시를 한다.

 

728x90

'Dev > ComputerScience' 카테고리의 다른 글

[CS]스레드(Thread)란?  (0) 2021.06.15
[CS]Context Switching(컨택스트 스위칭)  (0) 2021.06.13
728x90

📖Context(Context)란?

CPU가 특정 프로세스를 실행시키기 위한 프로세스의 정보들이다.

Context는 프로세스의 PCB(Process Control Block)에 저장되어 Context Switching(컨택스트 스위칭)을 실행 할 때 PCB의 정보를 읽어 CPU가 이전에 프로세스가 하던 일을 이어서 수행 가능하다.

 

  👉PCB에는 다음과 같은 정보들이 저장된다.

  • 프로세스의 상태 : 생성,준비,수행,대기,중지
  • 프로그램 카운터 : 프로세스가 다음 실행할 명령어 주소
  • 레지스터 : 누산기,스택, 색인 레지스터 
  • 프로세스 번호

📖Context Switching(컨택스트 스위칭)이란?

멀티 프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서,인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때,실행 중지할 프로세스 정보를 해당 프로세스의 PCB에 업데이트해서 메인 메모리에 저장하고, 다음 실행할 프로세스 정보를 메인메모리에 있는 해당 PCB정보를 CPU의 레지스터에 넣고. 실행하는 것이 Context Switching(컨택스트 스위칭)이다.

 

728x90

'Dev > ComputerScience' 카테고리의 다른 글

[CS]스레드(Thread)란?  (0) 2021.06.15
[CS]인터럽트(Interrupt)  (0) 2021.06.13