티스토리 뷰

1. 병행성과 병행 프로세스

  • 병행성 ( Concurrency )
    • 여러 개의 프로세스 또는 쓰레드가 동시 수행되는 시스템의 특성
  • 병행 프로세스
    • 동시 수행되는 여러 개의 프로세스 또는 쓰레드

2. 병행 프로세스의 실행 형태

  • 1개의 CPU : 인터리빙 형식
    • 복수의 프로세스를 번걸아가면서 처리
    • 사실 한 시점에는 하나의 프로세스만 처리
  • 여러 개의 CPU : 병렬처리 형식
    • 하나의 프로세스를 하나의 CPU가 담당하여 처리

3. 병행 프로세스의 실행 형태

  • 멀티 프로세스 시스템에서의 메모리 구조에 따라 강결합 시스템과 약결합 시스템으로 구분
  • 강결합 시스템 ( 공유 메모리 구조 )
    • 여러 CPU가 하나의 메모리를 공유하여 사용
  • 약결합 시스템 ( 분산 메모리 구조 )
    • 여러 컴퓨터 시스템이 존재
    • 하나의 컴퓨터 시스템 속에는 하나의 CPU와 하나의 메모리가 각각 존재
    • 컴퓨터 시스템으로 분리되어있기에, 데이터를 주고 받기 위해서는 통신해야 함

4. 프로세스 간의 관계

  • 독립 프로세스
    • 수행 중인 다른 프로세스에 영향을 주지도 받지도 않음
    • 데이터 및 상태를 다른 프로세스와 공유하지 않음
    • 프로세스의 실행
      • 결정적 : 실행결과는 입력에 의해서만 결정됨
      • 재생 가능 : 같은 입력에 대해 항상 동일한 실행결과
  • 협력 프로세스
    • 수행 중인 다른 프로세스와 영향을 주고받음
    • 데이터 및 상태를 다른 프로세스와 공유
    • 프로세스의 실행
      • 비결정적 : 실행결과는 실행순서에 좌우됨
      • 재생 불가능 : 같은 입력에 대해 항상 동일한 실행결과를 보장하지 못함

5. 병행성 문제

  • 협력 프로세스인 경우 발생 가능한 문제
    • 종류 : 상호배제, 동기화, 통신

6. 상호배제

  • 2개 이상의 프로세스가 동시에 임계영역을 수행하지 못하도록 하는 것
    • 임계영역이란?
      • 2개 이상의 프로세스가 동시에 사용하면 안 되는 공유자원을 액세스하는 프로그램 코드 영역

7. 동기화

  • 2개 이상의 프로세스에 대한 처리 순서를 결정하는 것
    • 프로세스 동기화
  • 상호배제 : 임계영역에 대한 동기화 문제

8. 통신

  • 프로세스들이 데이터를 공유하기 위해 반드시 필요
    • 프로세스 간 통신 ( IPC )
  • 통신 방법
    • 하나의 변수 사용
    • 메세지를 서로 주고 받음

9. 세마포어 ( Semaphore )

  • 상호배제와 동기화 문제를 해결하기 위한 도구
  • Dijkstra가 제안
  • 세마포어는 기본적으로 정수형 공용변수
    • 저장값 : 사용 가능한 자원의 수 또는 잠김이나 풀림의 상태
  • 상황에 맞춰 0이상인 정수로 초기화
  • 두 기본연산 P와 V에 의해서만 사용됨
    • 기본연산 : 인터럽트되지 않고 하나의 단위로 처리됨

10. 세마포어 기본연산

  • 연산 P : 검사, 감소시키려는 시도
void P(semaphore s){
	if (s > 0)
		s--;
	else
		현재 프로세스를 대기시킴;
}
  • 연산 V : 증가
void V(semaphore s){
	if (대기 중인 프로세스 없음)
		s++;
	else
		대기 중인 프로세스 1개 진행;
}
  • 세마포어마다 대기 큐 필요

11. 상호배제 해결을 위한 요구사항

  • 한 프로세스가 임계영역 수행 중일 경우
    • 다른 프로세스는 임계영역에 진입해서는 안 됨
  • 임계영역 수행 중이던 프로세스가 임계영역 벗어날 경우
    • 누군가 하나는 임계영역을 새로이 수행할 수 있어야 함
  • 임계영역 진입 못하고 대기하는 프로세스가 존재하는 경우
    • 적절한 시간 내에 임계영역 수행을 시작할 수 있어야 함

12. 상호배제 해결방안

  • 상호배제를 위한 임계영역 주변의 코드 영역
    • 진입 영역
      • 임계 영역에 대한 수행을 해도 되는지 체크
      • 연산 P
    • 임계 영역
    • 해제 영역
      • 다른 프로세스가 임계 영역 수행을 시작할 수 있도록 함
      • 연산 V
  • 예시
    • 세마포어 mutex 초기값은 1
    • 진입영역에서 연산 P(mutex)를 통해 mutex값을 0으로 변환
    • 해제영역에서 연산 V(mutex)를 통해 mutex값을 1로 변환
    • 대기 큐는 FIFO로 동작 ( 먼저 들어온 것을 먼저 실행 )

13. 동기화 해결

  • 프로세스 A가 코드 s1을 수행한 후, 프로세스 B가 코드 s2를 수행하도록 동기화
  • 세마포어 sync 초기값은 0
  • s1 → 연산V(sync) → 연산P(sync) → s2
728x90

'방송대 > 운영체제' 카테고리의 다른 글

6강. 교착상태 (1)  (0) 2025.03.25
5강. 병행 프로세스 (2)  (0) 2025.03.19
3강. 프로세스 스케줄링  (0) 2025.03.03
2강. 프로세스와 스레드  (0) 2025.02.18
1강. 운영체제 소개  (0) 2025.02.17
댓글
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
최근에 올라온 글
Total
Today
Yesterday
공지사항