1. 임계구역 문제 해결 방법
1) 임계구역 문제와 해결 조건
임계구역 문제를 해결하는 기본적인 방법은 잠금(lock)을 이용하는 것이다. 프로세스가 임계구역에 진입할 때 잠금을 설정하고, 작업이 끝난 후 해제하는 방식이다.
임계구역 문제를 해결하려면 다음 세 가지 조건을 만족해야 한다.
• 상호 배제: 한 번에 하나의 프로세스만 임계구역에 진입할 수 있어야 한다.
• 한정 대기: 특정 프로세스가 영원히 임계구역에 진입하지 못하는 상황이 없어야 한다.
• 진행의 융통성: 임계구역에 진입할 프로세스를 적절한 시점에 결정해야 한다.
2) 소프트웨어적 해결 방법
• 전역 변수 lock: boolean 변수를 사용하여 잠금 상태를 관리한다.
• 변수 balance: 임계구역에서 사용되는 공유 변수이다.
전역 변수를 이용한 잠금 구현
• 두 프로세스(P1, P2)가 공유하는 lock의 초기값은 false (잠금 해제 상태)
• lock == true일 경우, 다른 프로세스는 대기
• 임계구역에 들어가는 프로세스는 lock = true 설정 후 작업 수행
• 작업 종료 후 lock = false로 잠금 해제
• 하지만 동시에 두 프로세스가 임계구역에 진입하는 문제 발생 가능
상호 배제 조건 충족 코드
• 두 개의 전역 변수 lock1, lock2 사용하여 동시 접근 방지
• 그러나 무한 대기(deadlock) 발생 가능성 존재
상호 배제와 한정 대기 조건 충족 코드
• lock 값이 1이면 P1이 사용, 2이면 P2가 사용
• 한정 대기 조건을 보장하지만 진행의 융통성이 부족
3) 하드웨어적 해결 방법
• 검사와 지정 (test-and-set) 명령어를 활용하여 임계구역 보호
• while(lock == true);와 lock = true;를 동시에 실행하여 다른 프로세스의 개입 방지
4) 소프트웨어적 해결 알고리즘
피터슨 알고리즘
• 공유 변수 turn을 추가하여 두 프로세스가 동시에 lock을 설정하는 경우 양보 기회 제공
• 단점: 두 개의 프로세스만 지원 가능
데커 알고리즘
• 하드웨어 도움 없이 임계구역 문제 해결 가능
• turn과 lock을 활용하여 우선순위를 결정
• 단점: 복잡성 증가
5) 세마포어(semaphore)
• 간단하고 사용이 용이한 임계구역 보호 기법
• P() 연산(잠금)과 V() 연산(해제)을 이용한 동기화
• Semaphore(n): n은 공유 가능한 자원의 개수
• 단점: 잘못된 사용 시 교착 상태 발생 가능
6) 모니터(monitor)
• 공유 자원을 내부적으로 보호하고, 접근을 제어하는 인터페이스 제공
• P(), V() 호출 없이 자동 동기화 가능
• 보호된 임계구역에서 작업을 수행하고 요청을 큐에 저장하여 순차적으로 처리
2. 파일과 네트워크를 이용한 프로세스 통신
1) 파일을 이용한 통신
순차 파일 (Sequential File)
• 데이터가 순차적으로 저장됨
• 파일을 열면 파일 기술자(fd)를 통해 접근 가능
• 파일 기술자는 읽기 위치를 보관하며, 파일 읽기/쓰기 후 자동 이동
파일을 이용한 프로세스 통신
• read()와 write() 함수를 이용하여 부모-자식 프로세스 간 데이터 전달
• 운영체제에서 동기화를 지원하지 않으므로 프로세스가 직접 동기화 필요
2) 파이프와 소켓을 이용한 네트워킹
파이프 (Pipe)
• 단방향 통신 시스템 (부모-자식 프로세스 간 사용)
• 이름 없는 파이프(Anonymous Pipe)와 이름 있는 파이프(Named Pipe)로 구분
• fd[2] 배열을 이용하여 하나는 읽기, 하나는 쓰기 용도로 사용
• 파이프를 이용하면 동기화 가능
소켓을 이용한 네트워킹
• 여러 컴퓨터의 프로세스 간 데이터를 전달하는 대중적인 방법
• open(), read()/write(), close() 구조 사용
클라이언트 측 절차
• 소켓 생성 → connect() 실행 → 데이터 송수신 → 소켓 종료
서버 측 절차
• 소켓 생성 → bind()로 포트에 등록 → 데이터 송수신 → 소켓 종료
• 양방향 통신과 동기화를 함께 지원
이 내용은 휴넷사회복지평생교육원의 운영체제 강의를 듣고 정리한 것입니다.
'CS > 운영체제' 카테고리의 다른 글
[운영체제] 12. 교착 상태 해결 방법 (0) | 2025.04.10 |
---|---|
[운영체제] 11. 교착 상태 (0) | 2025.04.09 |
[운영체제] 9. 프로세스 동기화 (0) | 2025.03.28 |
[운영체제] 8. 스케줄링 알고리즘 (0) | 2025.03.17 |
[운영체제] 7. CPU 스케줄링 (0) | 2025.03.16 |