본문 바로가기

쉽게 풀어본 IT 기술

세마포어는 언제 필요할까?

CPU는 어떤 식으로 사용하느냐에 따라서 효율이 매우 달라질 수 있다. CPU가 매우 효율적으로 사용되어져야 하는데, 어떤 일을 얼마만큼의 시간을 하게끔 할 것인가가 중요하다.

세마포어,
세마포어라는 말은 철도나 해군의 수기 신호에서 나왔다고 한다. 정지 또는 출발을 가르켜준다. 컴퓨터에 보면 메모리에 접근이 때론 막을 필요가 있고, 여러개의 프로그램 엄밀히 말하면 쓰레드에서 접근을 하여 임의로 바꿀 수 있는데, 이것을 잠깐 또는 어떤 특정 조건에 의해서 막아주는 역할을 한다. 이것이 세마포어이다. 동시에 사용하지 말고, 특정 자원은 한 쓰레드가 사용하고 그 다음에 다음 쓰레드가 사용하고, 사실 사용에는 제어가 필요하진 않고, 업데이트를 하는 것에 대해서는 제어가 필요할 것이다. 한쪽에서 숫자를 바꾸는 중인데, 다른 쪽에서 참조를 하다보면 왜곡이 발생될 수도 있어서 그러하다. 크리티컬 섹션도 자원의 접근 제어라는 차원에서는 비슷한 기능이다. 특정 영역은 쓰레드 하나만 통과하게 한다. 그래서 그 작업을 할때는 다른 쓰레드 접근 하여 자원 값을 참조 내지는 건드리지 못하게 한다.  세마포어와 같은 쓰레드에 대한 접근 제어를 하다보면 어떤 상태에 더이상 진행을 못하게 되는 경우가 발생할 수 있다.

교착상태라고 말을 하는데, 교착 상태에서는 어떤 일도 더이상 진행할 수 없는 상태를 말한다. 이것은 영화에서 인질을 잡고 있고 한쪽에서 돈을 준비했다고 했을 때 돈을 준비한 쪽에서 인질을 풀어주면 돈을 주겠다고 하고, 인질을 잡고 있는 쪽에서는 돈을 먼저 주면 인질을 풀어주겠다고 한다. 양쪽다 일리가 있고, 요구가 맞을 수 있다. 왜냐면 내가 줬는데, 상대는 안줄수 있기때문에 그렇게 주장할 수 있다. 이 상태가 계속 되어서 일이 해결이 안되는 것이 교착 상태의 예이다.

사람들은 그러다가 서로 같이 보내준다든가 꼭 이 상황에서 영화에서는 대부분 총성이 오가지만 어찌됐든 풀 수있는 유도리를 찾아간다. 하지만 컴퓨터를 그렇지 않다. 그냥 계속 자기가 요구하는 것을 요구할 뿐이다. 그러다보면 시스템까지 멈춰버린다. 그래서 화면이 멈추는 현상을 볼 수 있다. 더이상 응답하지 않음. 정도의 메시지를 보내준다. 번외로 안드로이드 OS를 사용하다보면 멈춤 현상을 윈도우보다는 발견이 덜한 것은 안드로이드OS정책상 5초 이상 한 화면에서 머무르고 특별한 응답이나 행위가 없다면 강제로 종료해버린다. 깔끔하다. 응답대기라는 자체를 시스템에서 제어를 해버린 것이다.

커널,
커널은 운영체제에 있어서 핵심 모듈이다. 운영체제가 시스템이 프로그램이 동작되게끔 하고, CPU, 메모리 디스크를 관리하는 프로그램이라면 커널은 그 운영체제의 핵심 모듈이다. 자동차로 비유하면 엔진 같은 것이다. 


책처럼 전체를 보기를 원하시면 아래 링크를 클릭하시고 북마크 하셔서 보시면 편리합니다. 

https://wikidocs.net/22304

'쉽게 풀어본 IT 기술 ' 카테고리의 다른 글

컴퓨터 주변 장치의 변화  (0) 2018.08.31
컴퓨터에서 인터럽트란?  (0) 2018.08.31
디스크 스케쥴링  (0) 2018.08.30