01 프로세스 간 통신
▶ 가장 원시적인 프로세스 간 통신 방법으로 공유 메모리나 공유 파일을 사용하는 방식이 있다. 이 방식은 비동기화 통신이기 때문에 바쁜 대기를 해야 한다.
▶ 파일 입출력 코드는 크게 세 부분으로 구성된다. 파일을 열고(open()), 쓰기(write()) 또는 읽기(read()) 연산을 한 후, 파일을 닫는다(close()).
▶ 하나의 컴퓨터 내에서 프로세스 간 통신에 많이 사용되는 것은 파이프다. 파이프는 부모 - 자식 간 통신에 사용되며 단방향, 동기화 통신이다.
▶ 컴퓨터와 컴퓨터가 네트워크로 연결된 통신에는 소켓이 주로 사용된다. 소켓은 양방향, 동기화 통신이다.
02 임계구역
2개 이상의 작업이 공유 자원을 병행해서 읽거나 쓰는 상황을 경쟁 조건이 발생했다고 한다. 경쟁 조건하에서 실행 순서에 의해 결과가 달라지는 문제를 해결하려면 임계구역을 지정해야 한다.
03 임계구역 해결 조건
임계구역 문제를 해결하기 위해서는 세 가지 조건을 만족해야 한다.
▶ 상호 배제
한 작업이 임계구역에 들어가면 다른 작업은 임계구역에 들어갈 수 없어야 한다.
▶ 한정 대기
임계구역에 진입하려는 작업 중 무한히 기다리는 작업이 있어서는 안된다.
▶ 진행의 융통성
한 작업의 속도가 임계구역을 진입하려는 다른 작업의 진행을 방해해서는 안 된다.
04 세마포어 알고리즘
세마포어 알고리즘 내부에는 세마포어 변수 RS가 사용된다. RS는 현재 사용 가능한 자원의 수를 나타낸다. Semaphore(n)은 내부 변수 RS를 n으로 초기화한다. P()는 임계구역에 진입하기 전에 사용하는 함수이고, V()는 임계구역에서 빠져나올 때 사용하는 함수다.
05 모니터
세마포어 알고리즘의 가장 큰 문제는 잘못 사용했을 때 임계구역이 보호받지 못한다는 것이다. 공유자원을 사용할 때 임계구역 보호와 동기화를 자동으로 처리하는 것이 모니터다.
연습문제 01. 통신 방식 중 동기화를 지원하는 단방향 통신 방식은?
① 공유 메모리
② 파이프
③ 공유 파일
④ 소켓
연습문제 02. 통신 방식 중 서로 다른 컴퓨터에 있는 프로세스 간 통신에 사용하는 방식은?
① 공유 메모리
② 파이프
③ 공유 파일
④ 소켓
연습문제 03. 통신 기기 중 반양방향 통신에 해당하는 것은?
① 무전기
② 모르스 부호
③ 전화
④ 무선 공유기
연습문제 04. 파일 관련 함수에서 파일에 접근할 수 있는 권한을 주는 함수는?
① open()
② close()
③ read()
④ write()
연습문제 05. 파일 관련 함수에서 파일에 접근할 수 있는 권한을 돌려주는 함수는?
① open()
② close()
③ read()
④ write()
연습문제 06. 인터넷에서 하나의 포트를 여러 프로세스가 공유할 수 있도록 만든 장치는?
① 데몬
② 소켓
③ IP 주소
④ HTTPD
연습문제 07. 소켓 관련 함수에서 데이터를 보내는 함수는?
① socket()
② close()
③ recv()
④ send()
연습문제 08. 2개 이상의 프로세스가 공유 자원을 병행해서 읽거나 쓰는 상황을 가리키는 단어는?
① 아사 현상
② 경직된 동기화
③ 경쟁 조건
④ 우선순위 역전
연습문제 09. 2개 이상의 프로세스가 동시에 접근해서는 안 되는 공유 영역을 가리키는 단어는?
① 아사 현상
② 경직된 동기화
③ 경쟁 조건
④ 임계구역
연습문제 10. 임계구역을 보호하기 위해 사용하는 가장 기본적인 방법은?
① 잠금
② 우선순위 상속
③ 경쟁 조건
④ 우선순위 역전
연습문제 11. 임계구역을 보호하기 위한 세 가지 조건과 거리가 먼 것은?
① 상호 배제
② 한정 대기
③ 진행의 융통성
④ 우선순위 상속
연습문제 12. 임계구역을 보호하기 위한 세 가지 조건 중 임계구역에는 하나의 프로세스만 들어가야 한다는 조건은?
① 상호 배제
② 한정 대기
③ 진행의 융통성
④ 우선순위 상속
연습문제 13. 임계구역을 보호하기 위한 세 가지 조건 중 스레드가 다른 프로세스의 진행을 방해하면 안 된다는 조건은?
① 상호 배제
② 한정 대기
③ 진행의 융통성
④ 우선순위 상속
연습문제 14. 임계구역을 보호하기 위한 세 가지 조건 중 무한히 기다리는 프로세스가 있어서는 안 된다는 조건은?
① 상호 배제
② 한정 대기
③ 진행의 융통성
④ 우선순위 상속
연습문제 15. 임계구역을 보호하기 위해 하드웨어의 도움을 받아 실행되는 코드를 가리키는 것은?
① 검사와 지정
② 모니터
③ 뮤텍스
④ 세마포어
연습문제 16. 임계구역 보호 도구 중 P()와 V()를 사용하고 여러 자원에 적용 가능한 것은?
① 우선순위 상속
② 모니터
③ 뮤텍스
④ 세마포어
연습문제 17. 임계구역 보호 도구 중 공유 자원을 숨기고 접근하기 위한 인터페이스만 제공하여 자원을 보호하고 동기화를 처리하는 방식은?
① 우선순위 상속
② 모니터
③ 뮤텍스
④ 세마포어
연습문제 18. 세마포어에서 내부 변수를 RS라 했을 때 Semaphore(n)의 내부 코드에 가장 가까운 것은?
① RS = n;
② n = RS;
③ RS = RS + n;
④ n = RS + n;
연습문제 19. 세마포어에서 2개의 공유 자원에 대해 3개의 스레드가 작업하는 경우 올바른 초기화 함수는?
① wait(3)
② Semaphore(3)
③ wait(2)
④ Semaphore(2)
연습문제 20. 공유 메모리나 공유 파일, 파이프, 소켓을 이용한 통신 중에서 동기화를 지원하며 하나의 부모-자식 프로세스 간 통신에 사용하는 단방향 통신 방식은 (파이프)다.
연습문제 21. 공유 메모리나 공유 파일, 파이프, 소켓을 이용한 통신 중에서 동기화를 지원하지 않는 통신 방식은 (공유 메모리나 공유 파일)다.
연습문제 22. (모스 부호)는 대표적인 단방향 통신 기기다.
연습문제 23. (무전기)는 대표적인 반양방향 통신 기기다.
연습문제 24. (oepn()) 함수는 파일에 접근할 수 있는 권한을 준다.
연습문제 25. (oepn()) 함수는 파일에 접근할 수 있는 권한을 돌려준다.
연습문제 26. (send()) 함수는 데이터를 보낼 때 사용한다.
연습문제 27. 파이프 관련 함수에서 (read())는 데이터를 받을 때 사용한다.
연습문제 28. (포트 번호)란 인터넷에서 하나의 컴퓨터 내에 있는 서로 다른 프로세스를 구분하기 위해 사용하는 주소다.
연습문제 29. 소켓 관련 함수에서 (recv)는 데이터를 읽어오는 함수다.
연습문제 30. (임계구역)은 2개 이상의 작업이 동시에 접근해서는 안 되는 공유 영역이다.
연습문제 31. (동기화)는 프로세스가 임계구역을 사용한 후에 다른 프로세스에 임계구역을 사용하라고 알리는 것을 말한다.
연습문제 32. (잠금)은 임계구역을 보호하기 위해 사용하는 가장 기본적인 방법이다.
연습문제 33. 임계구역을 보호하기 위한 세 가지 조건은 (상호 배제, 한정 대기, 진행의 융통성)이다.
연습문제 34. 임계구역을 보호하기 위한 세 가지 조건 중 (상호 배제)는 임계구역에 하나의 프로세스만 들어가야 한다는 것이다.
연습문제 35. 임계구역을 보호하기 위한 세 가지 조건 중 (진행의 융통성)은 경직된 동기화와 가장 관련이 높다.
연습문제 36. 임계구역을 보호하기 위한 세 가지 조건 중 (한정 대기)는 무한히 기다리는 프로세스가 있어서는 안 된다는 것이다.
연습문제 37. (검사와 지정)은 하드웨어의 도움을 받아 임계구역을 보호하는 코드다.
연습문제 38. 임계구역 보호 도구 중 (세마포어)는 P()와 V()를 사용하고 여러 자원에 대하여 적용 가능하다.
연습문제 39. 임계구역 보호 도구 중 (모니터)는 lock과 unlock, 동기화를 자동으로 처리하는 방식이다.
연습문제 40. 세마포어에서 2개의 공유 자원에 대해 3개의 프로세스가 작업하는 경우에 올바른 초기화 함수는 (Semaphore(2))다.
연습문제 41. 프로세스 간 통신에 대하여 간략히 설명하시오.
운영체제는 프로세스와 프로세스끼리 쉽게 데이터를 주고받을 수 있는 통신 방법을 제공하는데 이를 프로세스 간 통신이라고 합니다.
연습문제 42. 임계구역과 임계구역 문제를 해결하기 위한 세 가지 조건에 대하여 설명하시오.
임계구역은 공유 자원 접근 순서에 따라 실행 결과가 달라지는 프로그램의 영역으로, 이를 해결하기 위한 세 가지 조건은 상호 배제, 한정 대기, 진행의 융통성이 있습니다.
상호 배제는 한 프로세스가 임계구역에 들어가면 다른 프로세스는 임계구역에 들어갈 수 없는 조건입니다.
한정 대기는 어떤 프로세스도 임계구역에 진입하지 못하여 무한 대기하지 않아야 합니다.
진행의 융통성은 한 프로세스가 다른 프로세스의 진행을 방해해서는 안 된다는 것을 의미합니다.
연습문제 43. 임계구역 문제를 해결하기 위한 다음 코드의 문제점을 지적하고 무엇이 위반되는지 설명하시오.
공유변수
int lock = 1;
프로세스 p1
while(lock==2);
임계구역
lock=2;
프로세스 p2
while(lock==1);
임계구역
lock=1;
공유 변수 lock의 값을 통해 다른 프로세스가 임계구역에 없는지 확인하고 없으면 진입하는 코드입니다. 하지만 위 코드는 서로 번갈아가면서 실행되기 때문에 한 프로세스가 두 번 연달아 임계구역에 진입하고 싶어도 그럴 수 없습니다. 이로 인해 프로세스의 진행이 다른 프로세스로 인해 방해받는 현상을 경직된 동기화라고 합니다. 따라서 진행의 융통성 조건을 보장하지 못합니다.
연습문제 44. 세마포어 내부 코드에 대하여 설명하시오.
세마포어에서 잠금이 해제되기를 기다리는 프로세스는 세마포어 큐에 저장되어 있다가 wake_up() 신호를 받으면 큐에서 나와 임계구역에 진입합니다. 따라서 바쁜 대기를 하는 프로세스가 없으나 세마포어의 P()나 V() 내부 코드가 실행되는 도중에 다른 코드가 실행되면 상호 배제와 한정 대기 조건을 보장하지 못합니다. 그러므로 P()와 V()의 내부 코드는 검사와 지정을 사용하여 완전히 실행되도록 구현됩니다.
연습문제 45. 모니터의 탄생 배경과 특징을 설명하시오.
공유 자원을 사용할 때 모든 프로세스가 세마포어 알고리즘을 따른다면 굳이 P()와 V()를 사용할 필요 없이 자동으로 처리하면 되는데, 이를 실제로 구현한 것이 모니터입니다. 모니터는 공유 자원을 내부적으로 숨기고 공유 자원에 접근하기 위한 인터페이스만 제공함으로써 자원을 보호하고 프로세스 간에 동기화를 시킵니다.
'Operating System' 카테고리의 다른 글
[쉽게 배우는 운영체제] Chapter 07. 물리 메모리 관리 (0) | 2023.06.18 |
---|---|
[쉽게 배우는 운영체제] Chapter 06. 교착 상태 (0) | 2023.04.23 |
[쉽게 배우는 운영체제] Chapter 04. CPU 스케줄링 (0) | 2023.04.21 |
[쉽게 배우는 운영체제] Chapter 03. 프로세스와 스레드 (0) | 2023.04.20 |
[쉽게 배우는 운영체제] Chapter 02. 컴퓨터의 구조와 성능 향상 (0) | 2023.04.19 |