728x90
CS
세마포어(Semaphore) & 뮤텍스(Mutex)
- 공유된 자원에 여러 프로세스가 동시에 접근하면서 문제가 발생할 수 있다. 이때 공유된 자원의 데이터는 한 번에 하나의 프로세스만 접근할 수 있도록 제한을 둬야 한다.
- 세마포어
- 멀티프로그래밍 환경에서 공유 자원에 대한 접근을 제한하는 방법
- 임계 구역(Critical Section)
- 여러 프로세스가 데이터를 공유하며 수행될 때, 각 프로세스에서 공유 데이터를 접근하는 프로그램 코드 부분이다.
- 공유 데이터를 여러 프로세스가 동시에 접근할 때 잘못된 결과를 만들 수 있기 때문에, 한 프로세스가 임계 구역을 수행할 때는 다른 프로세스가 접근하지 못하도록 해야 한다.
세마포어 P, V 연산
- P : 임계 구역에 들어가기 전에 수행(프로세스 진입 여부를 자원의 개수(S)를 통해 결정)
- V : 임계 구역에서 나올 때 수행(자원 반납 알림, 대기 중인 프로세스를 깨우는 신호)
뮤텍스
- 임계 구역을 가진 스레드들의 실행 시간이 서로 겹치지 않고 각각 단독으로 실행되게 하는 기술
- 해당 접근을 조율하기 위해 lock와 unlock을 사용한다.
- lock
- 현재 임계 구역에 들어갈 권한을 얻어온다.
- unlock
- 현재 임계 구역을 모두 사용했음을 알린다.
- 뮤텍스는 상태가 0, 1로 이진 세마포어로 부르기도 한다.
페이징과 세그먼테이션
- 다중 프로그래밍 시스템에 여러 프로세스를 수용하기 위해 주기억장치를 동적 분할하는 메모리 관리 작업이 필요하기 때문이다.
메모리 관리 기법
- 연속 메모리 관리
- 프로그램 전체가 하나의 커다란 공간에 연속적으로 할당되어야 한다.
- 고정 분할 기법
- 주기억장치가 고정된 파티션으로 분할된다. (내부 단편화 발생한다)
- 동적 분할 기법
- 파티션들이 동적 생성되며 자신의 크기와 같은 파티션에 적재한다. (외부 단편화 발생)
- 불연속 메모리 관리
- 프로그램의 일부가 서로 다른 주소 공간에 할당될 수 있는 기법이다.
- 페이지
- 고정 사이즈의 작은 프로세스 조각
- 프레임
- 페이지 크기와 같은 주기억장치 메모리 조각
- 단편화
- 기억 장치의 빈 공간 or 자료가 여러 조각으로 나뉘는 현상
- 세그먼트
- 서로 다른 크기를 가진 논리적 블록이 연속적 공간에 배치되는 것.
- 고정 크기
- 페이징(Paging)
- 가변 크기
- 세그먼테이션(Segmentation)
- 단순 페이징
- 각 프로세스는 프레임들과 같은 길이를 가진 균등 페이지로 나뉨
- 외부 단편화 X
- 소량의 내부 단편화가 존재한다.
- 단순 세그먼테이션
- 각 프로세스는 여러 세그먼트들로 나뉨
- 내부 단편화 X, 메모리 사용 효율 개선, 동적 분할을 통한 오버헤드 감소
- 외부 단편화 존재
- 가상 메모리 페이징
- 단순 페이징과 비교해 프로세스 페이지 전부를 로드시킬 필요 X
- 필요한 페이지가 있으면 나중에 자동으로 불러들어짐
- 외부 단편화 X
- 복잡한 메모리 관리로 오버헤드 발생
- 가상 메모리 세이그먼트
- 필요하지 않은 세그먼트들은 로드되지 않음
- 필요한 세그먼트 있을때 나중에 자동으로 불러들어짐
- 내부 단편화 X
- 복잡한 메모리 관리로 오버헤드 발생
728x90
'Study > TIL(Today I Learned)' 카테고리의 다른 글
24.07.09 CS (0) | 2024.07.09 |
---|---|
24.07.08 CS (0) | 2024.07.08 |
24.07.04 합격,CS (0) | 2024.07.04 |
24.07.03 그래픽스, CS (0) | 2024.07.03 |
24.07.02 면접 (1) | 2024.07.02 |