Github Page

레이블이 Linux-Process인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Linux-Process인 게시물을 표시합니다. 모든 게시물 표시

10/18/2016

Process 와 Thread 관련내용 링크

1. Process 와 Thread 관련내용

Process 와 Thread 관련 내용 자료 수집이며 간단히 Linux 기준으로 정리한다. 

  • Process관련사항 
기본적인 OS에서 배운 Scheduler 중심으로 이해를 하면 될 듯하며, 주요 포인트는 다음과  같다
  1. Scheduler 의 정책 (FIFO,우선순위큐,등)
  2. Multi-Core기반의 Scheduler (AMP, SMP)
  3. Process 의 Status 와 IPC (Signal, Semaphore,Message Queues 등)
  http://www.tldp.org/LDP/tlk/kernel/processes.html
  

  • Thread관련사항 
Thread 의 경우, Linux 는 kernel 와 User Thead가 다르므로 주의하며 이를 이해하자 
  https://ko.wikipedia.org/wiki/%EC%8A%A4%EB%A0%88%EB%93%9C


1.1. Thread의 종류 

  • Scheduler Activation
  1. User Thread 와 Kernel Thread 장단점 및 스케쥴 및 차이 
    1. Thead Table 즉 Thead 의 Scheduler 의 위치에 따라 User 와 Kernel 구분 
    2. 그림 설명이 너무 좋아 쉽게 이해 가능 
  2. Thead를 Why 사용하는지 
    1. 이유는 Process 에 대한 효율성 증가 (즉 Parrellel 허용)
Kernel Thread 의 경우 SMP(Symmetric Multi-Processing) 효율, 
즉 다중 Core에 대한 Scheduing이 핵심이기에 더 보게 되어지는 것이다. 
    http://www.tldp.org/FAQ/Threads-FAQ/Types.html


1.2 Process 와 Thread 비교

User Thead 와 Process 의 비교    https://ko.wikipedia.org/wiki/%EC%8A%A4%EB%A0%88%EB%93%9C#.EC.82.AC.EC.9A.A9.EC.9E.90_.EB.A0.88.EB.B2.A8_.EC.8A.A4.EB.A0.88.EB.93.9C_.28User-Level_Thread.29


2. OS의 Scheduling

기본적으로 OS를 한번은 알고 와야 할 듯 하다. 
학교 다닐 때, 배운 OS 책을 가져와서 한번 보면 될 듯하다. 

2.1 Linux Kernel Scheduling

  • Linux Scheduler 
RTOS급은 안되더라도, Linux의 Real Time OS의 지향과 FCFS
만약 Hard RTOS와 비교를 하고 싶다면, Vxworks 와 비교하는 것이 가장 낮을 듯하다.
나도 Vxworks 오래 사용했지만, Vxwork 만큼 빠른 Low Latency 아직 본적 없는 듯하다. 
2000년 대 초만 해도 Vxworks 와 Tornado Tool 같이 제품을 양산 여러 번 했지만, 가장 훌륭하다.
    https://www.cs.columbia.edu/~smb/classes/s06-4118/l13.pdf


2.2 Pthread Scheduling

User Thread로 대표적으로 Pthead 이며, 사실 이거 이외 다른 User Thread는 잘 모르겠다. 

  • Pthread 의 Scheduling 의 기본이해 
Pthead의 Scheduling의 이해이며 설명이 잘되어있다. 
  http://www.icir.org/gregor/tools/pthread-scheduling.html


Pthead의 Scope 설정 
즉 Scheduing 과 함께 Pthead 의 범위를 설정하여 이를 조절하는 것 
  http://man7.org/linux/man-pages/man3/pthread_attr_setscope.3.html   

Pthread 의 사용 예제 
    http://stackoverflow.com/questions/6108988/understanding-linux-scheduling-when-pthreads-are-involved


3. RTOS 소개


  • 무료 RTOS 소개 및 관련소스 
  https://www.osrtos.com/


  • RTOS의 기본개념 및 상용  RTOS 비교 
  http://mesl.khu.ac.kr/lecture/doc/esl2/closed.pxa255/esl2-02-rtos-p.pdf



4.  Concurrent Programming


  • OS에 나오는 기본내용  
OS를 배웠으면, 기본적으로 아는 내용이며, 링크로만 간단히 연결한다.
  https://ko.wikipedia.org/wiki/%EC%8B%9D%EC%82%AC%ED%95%98%EB%8A%94_%EC%B2%A0%ED%95%99%EC%9E%90%EB%93%A4_%EB%AC%B8%EC%A0%9C   
  https://en.wikipedia.org/wiki/Dining_philosophers_problem

  https://en.wikipedia.org/wiki/Concurrent_computing
  https://en.wikipedia.org/wiki/Parallel_computing


5. Deadlock 과 LiveLock


    Case 1.



   이해하기도 간단하며,
 
   Process P1는 Resource R2 이미 Lock 을 하였고,이를 사용중이지만,
   현재 R1을 사용하기를 원하지만, 이미 P2에 의해 Lock이되어 사용하지 못한다.

   Process P2는 Resouce R1 이미 Lock을 하였고,  이를 사용중이지만,
   현재 R2를  사용하기를 원하지만, 이미 P1에 의해 Lock이되어 사용하지 못한다.


   Case 2.

  • 4개의 Process가 1개의 자원을 가지고 있을 경우, Deadlock
    Blue line: Process의 실행의 Time line을 의미 한다.
    Black line: lock 사용하는 semaphore 가 될수 있겠다.    
       Green   : Process의 시작 시점
       Red      : Process의 종료 시점
       Gray     : Resource 의미 하며, 크기는 Time을 의미 한다.

위 상황은 binary semaphore를 4개 or 1개 사용하는 것인지 좀 헷갈림.(Resource 1개 )
1의 semaphore로 각 Process에서 쓰니 1개로 되는 듯하다 (나중에 다시 확인)   
 



  • 1개의 Resource와 2개의 lock으로 인하여 발생하는 Deadlock
결론은 상위 기본 개념과 유사하며,  2개의 mutex가 있을 경우,
이미 한 Process에 의하여 Resource에 1st Lock 걸린 상태에서, 스케쥴에의해
다른 한 Process가 동시에 Resource에 접근을 할 경우, 다시 2nd Lock이 걸리며,

결론적으로 진입점 인 Lock 이 둘다 Lock으로 변경이 되어 Deadlock이 됨.

특정 Process가 간단히 말해, 자원을 점유를 못해 동작을 못하는 것이다. 
  https://en.wikipedia.org/wiki/Starvation_(computer_science)


Linux의 동기화
재미 있게 알고 싶다면, Process 동기화를 기본은 확실히 알자. 
Semaphore 이용하여 Process 간의 신호도 만들어 보자 
더 나아가 이 기반으로 통신도 가능하다