Computer science/네트워크

[네트워크] 동기화 예제

JiWonSon 2023. 3. 22. 17:56

1. 사용자모드와 커널 모드

1.1) 사용자 주소 공간과 커널 주소 공간을 분리하는 이유는?

운영체제는 컴퓨터 전체 메모리를 사용자 공간과 커널 공간으로 나누는데 사용자 공간은 응용 프로그램을 탑재하고 사용되는 공간이고, 커널 공간은 디바이스 드라이버를 포함하여 커널 코드가 탑재된다.
 
이유는 커널 공간에 있는 코드와 데이터를 보호하기 위해 분리한다.
 
 

1-2) 사용자 모드, 커널 모드가 구체적으로 뭔데?

사용자 모드에서 응용프로그램 코드가 실행되고, 커널 모드에서 커널 코드가 실행된다.
둘을 나누는 이유는 데이터에 접근하기 어렵게 만드는 것이다.
또한, 사용자 공간은 분리되지만, 커널 공간은 공유된다는 특징이 있다.
 
 
 
 
 

2. 동기화 기법

2-1) 유저 모드 동기화

  1. 커널의 힘을 빌리지 않는(커널 코드가 실행되지 않는) 동기화 기법
  2. 성능상의 이점, 기능상의 제한(라이브러리를 이용)
  3. 종류
    1. 크리티컬 섹션 기반 동기화
      - 메모리 접근 동기화에 사용. 임계영역 객체(Key)를 만들고 초기화해야 함(반드시 거쳐야 하는 과정)
    2. 인터락 함수 기반 동기화
      - 메모리 접근 동기화에 사용. 함수 내부적으로 한 순간에 하나의 스레드에 의해서만 실행되도록 동기화. 전역으로 선언된 변수 하나의 접근 방식을 동기화하는 것이 목적일 경우 사용

 

2-2) 커널 모드 동기화

  1. 커널에서 제공하는 동기화 기능을 활용하는 방법
  2. 커널 모드로의 변경이 필요하므로 성능 저하, 다양한 기능 활용 가능
  3. 기능상 우수, 속도 떨어짐
  4. 각 프로세스들 안의 스레드들끼리의 동기화도 가능
  5. 종류
    1. 뮤텍스 기반의 동기화
      - 메모리 접근 동기화에 사용. 키의 취득과 반납이 이루어짐
    2. 세마포어 기반의 동기화
      - 메모리 접근 동기화에 사용. 카운트를 셈
    3. 이름 있는 뮤텍스 기반의 동기화
      - 프로세스간 동기화에 사용. 프로세스 동기화를 하기 위해서 뮤텍스를 동기화해야 하는데 커널 오브젝트는 각각 프로세스에 독립적이므로 뮤텍스에 이름 붙여서 접근
    4. 이벤트 기반의 동기화
      - 실행순서 동기화에 사용

 
 

[뮤텍스]

 

[세마포어]