티스토리 뷰

 

StackOverflow로 영어 공부하기


 

이 글은 개발 상식 정보 제공의 글이 아니라 영어를 공부하기 위한 글입니다.

저도 IT를 공부하는 초보자라 내용은 틀릴 수 있습니다.

IT 영어로 같이 영어를 공부하는 걸 원하시는 분들에게 이 글을 공유합니다.

 

 

 

 

오늘 제가 해석할 내용은 바이너리 세마포어와 뮤텍스의 차이와 관련된 내용입니다.

 

 

이 내용을 하기 앞서서 알아야 할 내용은 바로 '임계영역'입니다.

운영체제에서 공유되는 자원에서 문제가 발생하지 않게 독점을

보장해줘야 하는 영역이 바로 임계 영역입니다.

 

 

임계 영역은 항상 여러 프로세스나 쓰레드가 공유 자원에 

접근하는 것을 제어하기 위한 방법과 같이 나오는데요.

 

 

대표적인 쓰레드 동기화 방법의 종류는 

Mutex / Semaphore / Monitor

이렇게 3가지가 있습니다.

 

 

여기서 세마포어는 이진 세마포어와 카운팅 세마포어로 나뉩니다. 

중요한 건 뮤텍스와 바이너리 세마포어의 차이가 되게 모호하다는 건데요.

이를 알기 위해 개발자 사이트 중에서 가장 큰 'StackOverflow'에 검색해봤습니다.

 

 

 

 

제가 참고한 질문과 답변은 아래의 링크입니다.

https://stackoverflow.com/questions/62814/difference-between-binary-semaphore-and-mutex

 

 

Difference between binary semaphore and mutex

Is there any difference between a binary semaphore and mutex or are they essentially the same?

stackoverflow.com

 

 

 

영어 해석


 

 

공통적인 의견은 바이너리 세마포어와 뮤텍스는 

 

They are used for different purposes!

다른 목적으로 사용이 된다고 합니다.

 

 

 

Semaphores are more suitable for some synchronization problems like producer-consumer.

세마포어는 생산자-소비자 문제 같이 동기화 문제에 더 적합하다고 합니다.

 

be suitable for: -에 적합하다

 

(여기서 생산자-소비자 문제란 여러 개의 프로세스를

어떻게 동기화할 것인가에 관한 문제라고 합니다.

주로 세마포어를 이용하여 생산자-소비자 문제를 구현하네요.)

 

 

 

 

위의 답변으로는 아직 이해가 안 됐습니다.

다른 글을 보겠습니다.

 

Strictly speaking, a mutex is a locking mechanism used to synchronize access to a resource.

엄밀히 말하면, 뮤텍스는 자원에 대한 접근을 동기화하는 데 사용되는 로킹 메커니즘이라고 합니다.

 

Strictly speaking: 엄밀히 말하면

 

 

 

Only one task (can be a thread or process based on OS abstraction) can acquire the mutex.

오직 하나의 task만이 뮤텍스를 얻을 수 있다고 합니다.

(여기서 말하는 task는 스레드가 될 수도 있고 프로세스가 될 수도 있습니다.)

 

 

 

It means there will be ownership associated with mutex,

이건 뮤텍스와 관련된 소유권이 있다는 의미라고 합니다.

 

associated with: -와 관련된

ownership: 소유권

 

 

 

 

and only the owner can release the lock (mutex).

그리고 소유권을 가지고 있는 소유자만이 lock을 풀 수 있다고 합니다.

 

 

 

 

 

 

 

세마포어 해석


 

 

 

여기까지가 뮤텍스에 대한 설명이었습니다.

다음은 세마포어에 대한 설명입니다.

 

 

 


Semaphore is signaling mechanism 

세마포워는 시그널링 메커니즘이라고 합니다.

 

 

 

 

(“I am done, you can carry on” kind of signal). 

여기서 시그널이란 '나 끝났어, 너 이어서 해'

 

 

이런 거라고 하네요.

시그널링은 처음 듣는 말이라 헷갈립니다.

 

 

 

 

 

 

For example, if you are listening songs (assume it as one task) on your mobile 

예를 들어, 핸드폰으로 노래를 들을 때

 

(노래 듣는 걸 하나의 task로 가정한답니다)

assume: 가정하다

 

 

 

 

 

and at the same time your friend called you, an interrupt will be triggered upon 

같은 시간에 친구가 전화를 하면, 인터럽트가 발생할 것입니다.

 

trigger: 촉발시키다, 발생시키다

 

 

 

 

 

which an interrupt service routine (ISR) will signal the call processing task to wakeup.

인터럽트 서비스 루틴(ISR)은 프로세스를 깨우기 위해 전화 처리 task를 표시할 것입니다. 

 

 

 

여기서 말하는 wakeup은 아마도

 Wait Queue 에서 프로세스를 꺼내와깨우는 메소드를 말하는 것 같습니다.

 

 

 

 

 

참 2개의 답변을 해석해봤는데도 어렵습니다..

어쨌든 여기서 말하는 건 소유자의 개념이 중요하다는 것 같습니다.

마지막으로 하나의 답변을 더 보겠습니다.

 

 

 

 

The mutex is similar to the principles of the binary semaphore with one significant difference

뮤텍스는 하나의 중요한 차이점 말고는 바이너리 세마포어의 원리와 비슷하다고 합니다. 

 

significant: 중요한

principle: 원리, 원칙

 

 

 

 

 

the principle of ownership.

여기서 말하는 중요한 차이점은 바로 소유권의 원칙이라고 합니다.

 

(여기서도 소유권이라는 말이 나오네요)

 

 

 

 

 

 

Ownership is the simple concept that

when a task locks (acquires) a mutex only it can unlock (release) it.

 

소유권이란 하나의 task가 뮤텍스를 lock 했으면,

오직 이 task 만이 락을 풀 수 있는 것을 의미한다고 합니다.

 

위에서 해석한 답변과 동일한 내용이네요.

 

 

 

 

 

If a task tries to unlock a mutex it hasn’t locked (thus doesn’t own)

만약 하나의 task가 (소유하지 않은) 락을 걸지 않은 뮤텍스의 락을 풀려고 하면

 

 

 

 

 

then an error condition is encountered 

에러 상황이 발생한다고 합니다.

 

encounter: 직면하다

 

 

 

 

 

and, most importantly, the mutex is not unlocked.

그리고 매우 중요한 것은, 그 뮤텍스의 락은 풀리지 않는다고 합니다.

 

(소유권이 없는 task가 lock을 풀려고 하면 락이 풀리지 않나 봅니다.) 

 

 

 

 

 

 

If the mutual exclusion object doesn't have ownership

만약 상호 배제 객체가 소유권을 가지고 있지 않으면

 

mutual exclusion: 상호 배제

 

 

(여기서 상호 배제란 임계 구역을 어느 시점에서 단지 한 개의 프로세스만이 사용할 수 있도록 하며, 

다른 프로세스가 현재 사용 중인 임계 구역에 대해 접근하려고 할 때 금지하는 행위라고 합니다.)

 

 

 

 

It is not a mutex.

그건 뮤텍스가 아니라고 합니다.

 

 

 

 

 

 

결론


이렇게 3개의 답변을 해석해 보았는데요.

솔직히 몇 번을 봐도 정확히 이해가 안돼서 나중에 더 봐야 할 것 같습니다.

 

위의 내용을 한 마디로 요약해보자면

'세마포어는 소유할 수 없는 반면 뮤텍스는 소유할 수 있고 소유자가 이에 책임을 진다'

는 의미인 것 같습니다.

 

나중에 위의 내용을 완벽하게 이해를 하게 되면 다시 글을 올리도록 하겠습니다.

확실히 개발 영어 해석은 일반 영어 해석과는 다르게 개발 상식이 있어야

더 정확한 해석을 할 수 있을 것 같습니다.

 

위의 해석은 솔직히 많이 부족하지만 앞으로 꾸준히 연습해서

더 정확한 내용을 전달할 수 있도록 노력하겠습니다.

 

 

 

 

 

 

 


Reference


1) stackoverflow, "difference-between-binary-semaphore-and-mutex", https://stackoverflow.com/questions/62814/difference-between-binary-semaphore-and-mutex, (2020.07.08)

 


 

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함