프로그래밍 농장

Process 처리방식 [ 임베디드 설계 ] 본문

Linux

Process 처리방식 [ 임베디드 설계 ]

Tennessee201 2021. 10. 19.
728x90

Critical section 

: 프로세스가 다른 프로세스와 공유하는 shared data 영역이 있다면 , 이를 크리시컬 섹션이라고 지정 

-> 크리티컬센션에는 오직 프로세스가 1개만 사용될수있다. 

 

이는 몇가지 조건이 필요하다 

: Mutual exclusion : 프로세스가 하나 돌아가고 있으면, 다른 프로세스는 구동될수없다.

: Progress : 크리티컬 섹션에 들어가고 싶은 프로세스들이있으면, 무조건 하나는 들어가야한다.

: Bounded waiting : 하나의 프로세스는 어느정도 시간이 지나기전에 입장할수있어야한다.

 

-> 싱글 코어 환경에서의 문제해결 

: 프로세스가 돌아가고있을떄, 다른곳에서 접근을 못하게한다 ( interrupts 를 예방 )

-> 멀티 코어 환경에서의 문제해결 

: 프로세스가 돌아가고있을떄, 메모리에 접근시 다른 프로세스에 의해 작업수행을 뻇길수있다. 

 

-> 이를 해결하기위한 전통적인 방법 

- Peterson's Solution 

아래와 같이 i(본인 프로세스)가 수행하고싶으면,  1. flag[i] = true; 로 선언.

2. turn=j  : 턴을 상대편에게 넘김.  3. 이후 아래 while문처럼 상대방이 들어가고싶은지(flag)와, 실제로 상대방 턴인지를 확인하고 맞으면, 계속 while을 돌림  4. 이후 critical section으로 접속 

-> 프로세스 수행완료 이후, 위와같이 Flag[i] = false로 exit까지 해주어야 다음 프로세스가 수행될수있다. 

 


-> 파일 권한

-Process thread 

 


- Mutex Locks 

peterson's solution, atomic 등등 .. 매번선언할수없으니, 뮤텍스락을 제공해줌

위와 같이 명령어 선언해주면, 위에서 언급했던 기능들과 같이 OS 자체에서,

critical section에는 한번에 하나의 프로세스(스레드) 만이 들어가게 해준다

 

-> 이떄 프로세스의 양이 더 많거나 할시, 리소스의 개수만큼 들어갈수있게 정해놓고 관리하는것 :

Semaphores 

 

Semaphores 

728x90

'Linux' 카테고리의 다른 글

임베디드 및 설계 이론  (0) 2021.11.03
Deadlock [ 임베디드 설계 ]  (0) 2021.10.19
Assembley [ 임베디드 설계]  (0) 2021.10.19
CPU Scheduling [ 임베디드 설계 ]  (0) 2021.10.17
Process Concept3 [ 임베디드 시스템 설계 ]  (0) 2021.10.17