개발자꿈나무

병행 프로세스 본문

CS/운영체제론

병행 프로세스

망재이 2024. 1. 26. 21:47
병행 프로세스

 

  • 병행 프로세스
    - 프로세서 하나는 한 번에 프로세스 하나만 실행할 수 있음
    - 하지만 운영체제가 프로세서를 빠르게 전화하여 프로세서 시간을 나눠 마치 프로세스 여러 개를 동시에 실행하는 것처럼 보이게 하는 것을 병행 프로세스라고 함

  • 병행 프로세스의 해결 과제
    - 공유 자원을 상호 배타적으로 사용해야 함 (프린터, 통신망 등은 한순간에 프로세스 하나만 사용해야 함)
    - 병행 프로세스 간에는 협력이나 동기화가 되어야 함
    - 두 프로세스 사이에는 데이터를 교환할 수 있도록 통신이 되어야 함
    - 프로세스는 동시에 수행하는 다른 프로세스의 실행 속도와 관계없이 항상 일정한 실행 결과를 보장하도록 결정성을 확보해야 함
    - 교착상태를 해결하고 병행 프로세스들의 병렬 처리 능력을 극대화해야 함
    - 병행 프로세스를 수행하는 과정에서 발생하는 상호배제, 즉 어떤 프로세스가 작업을 실행 중일 때 나머지 프로세스는 그것과 관련된 작업을 수행할 수 없도록 보장해야 함



상호 배제와 동기화

 

  • 임계영역 (Critical Section)
    - 둘 이상의 프로세스들이 동시에 공유할 수 없는 자원을 '임계자원'이라고 하며, 프로그램에서 이 자원을 이용하는 부분을 '임계영역'이라고 함
    - 프로세스들이 공유 데이터를 통해서 협력할 때 어떤 프로세스가 임계영역 내에 들어가면 다른 프로세스들은 모든 임계영역으로의 진입이 금지되어야 함
    - 임계영역에는 한 순간 반드시 단 하나의 프로그램만이 허용
    - 임계영역 내에서는 반드시 빠른 속도로 수행되어야 함
    - 프로세스는 임계영역 내에서 보류되어서는 안 되며 무한루프에 빠지지 않아야 함

  • 상호배제 방법
    - 데커의 알고리즘 : 두 프로세스가 서로 통신하기 위해 공유메모리를 사용하여 충돌 없이 단일 자원을 공유할 수 있도록 허용
    - TestAndSet 명령어 : 기계를 비교하거나 단어 내용을 검사, 수정하는 특별한 하드웨어 명령어를 사용
    - 세마포어 (Semaphore) : 다익스트라에 의해 제안된 것으로 세마포아 변수 값이 true일 때 프로세스 상태를 확인하는 동기화 도구
    - 모니터 : 공유 자원과 이것의 임계 영역을 관리하는 병행프로그래밍 구조
  • 모니터
    - 공유 데이터, 임계영역이 코딩된 프로시저, 초기화 코드로 구성된 모듈로 데이터 정의와 프로시저의 독점적 제어가 모두 포함
    - 초기화 코드는 모니터를 생성할 때만 사용하고, 공유 데이터의 변수는 모니터 내부에 있는 프로시저로만 접근할 수 있음
    - 프로세스들은 모니터의 프로시저를 호출, 실행하여 모니터 안에 진입한 후, 원하는 공유 데이터에 접근할 수 있음
    - 항상 한 번에 프로세스 하나만 모니터에 진입할 수 있도록 제한하여 상호배제를 실현

 

728x90

'CS > 운영체제론' 카테고리의 다른 글

디스크 스케줄링  (0) 2024.01.29
가상 메모리  (0) 2024.01.28
메모리 관리  (0) 2024.01.28
CPU 스케줄링  (2) 2024.01.27
교착 상태  (0) 2024.01.26