인프런의 [그림으로 쉽게 배우는 운영체제] 강의를 듣고 정리한 내용이다.
간단하게 들은 내용을 정리한 것으로, 더 자세한 내용을 원한다면 위 강의를 구매하는 것을 추천한다.
짧은 강의 형태로 단시간에 운영체제를 배우고 싶은 사람, 쉽게 운영체제를 배우고 싶은 사람에게 적합하다고 생각한다.
✏️ 프로세스 간 통신
- 프로세스는 독립적으로 통신하지만 다른 프로세스와 데이터를 주고받으며 통신을 하는 경우도 있음
- 한 컴퓨터 내에서 프로세스 간 통신을 하는 방법 - 파일과 파이프 이용
- 파일 - 프로세스들이 하나의 파일을 이용해 읽고 씀
- 파이프 - 운영체제가 생성한 파이프를 이용해 데이터를 읽고 쓰는 방법
- 한 프로세스 내에서 쓰레드 간 통신을 하는 방법 - 쓰레드 이용
- 코드, 데이터, 힙 영역은 공유하고, 스택은 각자. 데이터와 힙을 이용해 자원 공유
- 운영체제가 제공하는 소켓통신이나 다른 컴퓨터 내의 함수를 호출하는 RPC(원격 프로시저 호출)를 이용 - 네트워크 이용
✏️ 공유자원과 임계구역
- 공유 자원 - 프로세스 간 통신 시 공동으로 이용하는 변수나 파일들
- 공유자원은 여러 프로세스가 공유하고 있기 때문에 각 프로세스의 접근 순서에 따라 결과가 달라질 수 있음
- 동기화 문제 - 컨텍스트 스위칭으로 시분할 처리를 하기 때문에 어떤 프로세스가 먼저 실행되고 어떤 프로세스가 나중에 실행되는지 예측이 힘듦
- 임계 구역(critical section) - 여러 프로세스가 동시에 사용하면 안되는 영역
- 상호 배제(Mutual Exclusion) - 임계 구역의 매커니즘 해결 위한 방법
- 임계영역엔 동시에 하나의 프로세스만 접근한다.
- 여러 요청에도 하나의 프로세스의 접근만 허용한다.
- 임계구역에 들어간 프로세스는 빠르게 나와야 한다.
- 상호 배제(Mutual Exclusion) - 임계 구역의 매커니즘 해결 위한 방법
- 경쟁조건(Race Condition) - 공유자원을 사용하기 위해 서로 경쟁하는 것
✏️ 세마포어
- 정수형 변수로 공유 자원을 보호하려고 사용
- 공유자원의 개수를 나타내는 변수
- wait() 함수와 signal() 함수를 호출 - 사용하면 -1, 반납 시 +1
✏️ 모니터
- 세마포어의 단점을 해결한 상호배제 메커니즘
- 따로 운영체제가 해결하는 것이 아닌, 프로그래밍 언어차원에서 지원 - synchronized 키워드(동시에 여러 프로세스에서 실행시킬 수 없음 - 상호배제의 완벽 실행)
'운영체제' 카테고리의 다른 글
6. 메모리 (0) | 2022.05.14 |
---|---|
4. 데드락 (0) | 2022.05.14 |
2. CPU 스케줄링 (0) | 2022.05.07 |
1. 프로세스와 쓰레드 (0) | 2022.05.06 |
0. 운영체제 들어가기 (0) | 2022.05.06 |