[인프런 워밍업 클럽 2기 - CS] 2주차 발자국

[인프런 워밍업 클럽 2기 - CS] 2주차 발자국

강의 수강

운영체제 : 운영체제의 CPU 스케줄링이나 데드락 문제는 항상 공부해도 금방 까먹어서 반복해서 공부해야하는 부분이었는데 강의의 그림으로 배우니 좀더 기억에 잘 남는 기분이 들었다. 다음은 프로세스 동기화에 대해서 간략이 요약했다.

프로세스 간 통신

같은 컴퓨터 내에서 프로세스 간 통신을 할 수도 있고, 네트워크로 연결된 다른 컴퓨터 내의 프로세스와 통신을 할 수도 있다.

  1. 파일와 파이프를 이용 - 파일을 이용하면 통신하려면 프로세스들이 하나의 파일을 이용해 읽고 쓰는 방법이다. 파이프를 이용하는 방법은 운영체제가 생성한 파이프를 통해 데이터를 읽고 쓰는 방법이다.

  2. 쓰레드를 이용 - 한 프로세스 내에서 쓰레드 간 통신을 하는 방법으로 데이터 영역에 있는 전역변수나 힙을 이용하면 통신이 가능하다.

  3. 운영체제가 제공하는 소켓으로 통신이나 다른 컴퓨터에 있는 함수를 호출할 수 있는 RPC(원격 프로시저 호출)로 통신

공유자원과 임계구역

프로세스 간 통신을 할때 공동으로 이용하는 변수나 자원을 공유자원이라고한다. 이 공유자원은 여러 프로세스가 공유하고 있기 때문에 각 프로세스의 접근 순서에 따라 결과가 달라질 수 있다. 따라서 여기서 발생한 문제를 동기화 문제 라고 한다. 여러 프로세스가 동시에 사용하면 안 되는 영역을 임계구역(Critical Section)이라고 한다. 그리고 공유자원을 사용하기 위해 경쟁하는 것을 경쟁조건(Race Condition)이라고 한다.

임계구역의 문제를 해결하기 위해서는 상호배제의 매커니즘이 필요하다. 상호배제의 요구사항은 3가지가 존재한다.

  1. 주어진 시간에 임계영역에는 동시에 하나의 프로세스만 접근한다.

  2. 여러 요청에도 하나의 프로세스 접근만 허용한다.

  3. 임계구역에 들어간 프로세스는 빠르게 나와야한다.

세마포어

세마포어는 상호배제의 매커니즘 중 하나이다. 세마포어는 실제로 정수형 변수로 이 세마포어를 가지고 있어야만 공유자원에 접근이 가능하다. 세마포어는 실제로 여러개 일 수도 있다. 하지만 세마포어에도 단점이 존재하는데 함수의 순서를 이상하게 호출해 세마포어를 잘못 사용할 가능성이 존재한다.

모니터

모니터는 세마포어의 단점을 해결한 상호배제 매커니즘이다. 모니터는 운영체제가 아닌 프로그래밍 언어 차원에서 지원하는 방법이다. 대표적으로 자바에서 모니터를 지원한다. 자바에서 synchronized를 붙인 함수는 동시에 여러 프로세스가 실행시킬 수 없다. 즉 상호배제가 완벽하게 이루어진다.

 

자료구조 : 자료구조는 운영체제보다 구현을 하는데 좀 더 시간이 필요한 것 같다. 다음주에는 시간을 좀 더 투자해서 공부해야할것 같다.

 

미션

미션을 통해서 복습할 수 있다는 점이 매우 좋다고 생각한다. 마지막 한주가 남았는데 마지막 한주도 강의 잘 수강하고 미션도 잘 마무리하고 싶다.

 

 

댓글을 작성해보세요.

채널톡 아이콘