- Today
- Total
프로그래밍 농장
Process 처리방식 [ 임베디드 설계 ] 본문
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
'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 |