잠금 : 하나의 파일내 동일한 데이터를 동시에 접근하지 못하게 하기 위하여 사용한다.
잠금구현
- fcntl() 함수 : 파일 및 레코드 잠금 구현
잠금 종류
- F_RDLCK : 읽기 잠금 / 여러 프로세스가 공유 가능한 잠금
- F_WRLCK : 쓰기 잠금 / 오직 한 프로세스에게만 허용되는 배타적 잠금
int fcntl(int fd, int cmd, struct flock* lock)
fd : 잠금 대상이 되는 파일 디스크립터
cmd :
F_GETLK 잠금 검사
F_SETLK 잠금 설정 혹은 해제
F_ SETLKW 잠금 설정 혹은 해제(blocking버전)
flock 구조체
잠금 종류, 프로세스 ID, 잠금 위치 등
int lockf(int fd, int cmd, off_t len) : 배타적 쓰기 잠금 // 위치부터 len 길이만큼 배타적 쓰기 잠금만 가능
F_LOCK 지정된 영역에 대해 잠금 : 이미 잠금되어있다면 잠금 해체를 기다림
F_TLOCK 지정된 영역에 대해 잠금 : 이미 잠금되어있다면 오류 반환
F_TEST 지정된 영역이 잠겼는지 검사 : 잠겨있지않으면 0, 잠겨있다면 -1 반환
F_ULOCK 지정된 영역의 잠금 해제
권고 잠금 : 응용프로세스들은 자발적으로 잠금 규칙을 준수해야 한다.
강제 잠금 : 잠금 규칙 무시 불가능 -> 커널이 잠금 규칙을 모든 프로세스에게 강제한다.
- 강제 잠금 설정 : set-groud-ID 비트를 설정 group-execute 비트를 끄면 된다.
'학교수업' 카테고리의 다른 글
인공지능개론 9주차 (0) | 2022.05.10 |
---|---|
UNIX 10주차 (0) | 2022.05.10 |
게임공학개론 10주차 (0) | 2022.05.09 |
컴퓨터 그래픽스 8주차 (0) | 2022.05.04 |
게임공학개론 9주차 (0) | 2022.05.04 |