[완료] 임계구역문제의 요건에 대해

dalmagi의 이미지

안녕하세요

공부하다가 모르는게 있어서요

공룡책 중에 하나인데 임계구역문제의 해결안이 갖춰야할 요건중에 "진행(progress)" 이라는게 있는데

설명이

"임계구역에서 실행되는 스레드가 없고 그리고 임계 구역으로 진입하려고 하는 스레드들이 있다면, 임계 구역이 아닌 곳에서 실행중이 아닌 스레드들만 다음에 누가 그 임계 구역으로 진입할 수 있는 지를 결정하는 데 참여할 수 있으며, 이 선택은 무한히 연기될 수 없다"

라고 되어있습니다.

그런데 말이 너무 이상해서 혹시 잘못 번역된 문장은 아닌지 의심됩니다. 거의 이해가 안되는데 설명 좀 해주실 분 있나요

SoulreaveR의 이미지

설명하고 있는 글입니다. 한글판은 안봐서 어딘지 잘 모르겠네요.

"임계구역에서 실행되는 스레드가 없고 그리고 임계 구역으로 진입하려고 하는 스레드들이 있다면, 임계 구역이 아닌 곳에서 실행중이 아닌 스레드들만 다음에 누가 그 임계 구역으로 진입할 수 있는 지를 결정하는 데 참여할 수 있으며"

A, B, 그리고 C 세개의 쓰레드는 모두 임계구역 T를 한번씩 거치도록 프로그래밍 되어있다고 가정합시다. A, B, C 모두 임계구역에 진입하지 않았다면 그 세개 중 어떤 쓰레드가 먼저 임계구역에 진입할 지 결정합니다. 만약 A가 먼저 임계구역에 들어가서 작업을 하고 있다면, 당연히 B나 C는 임계구역에 진입하지 못합니다. A가 임계구역을 빠져나가게 되면 B 또는 C 둘중 하나가 임계구역이 진입을 해야 하는데, 이 때 임계구역을 이미 진입했다가 빠져나온 쓰레드로써 B와 C가 내려야 하는 결정에 방해가 되면 안됩니다. 쉽게 얘기해서 T 지역에 진입할 때 lock을 걸고 빠져나올때 lock을 풀어야 하는데, A가 임계구역을 빠져나오면서 lock을 풀지않고 그냥 다른 일을 해버리면 B와 C는 아무것도 못하는 상태가 되겠죠. 임계구역과 관계있는 B와 C만이 lock을 가지고 다투는 상황이 되어야 합니다.

"이 선택은 무한히 연기될 수 없다"
deadlock을 말하는 것 같은데요. 위에서 A가 lock을 가지고 다른 일을 해버리는 것과 비슷한 상황이라고 생각하면 될 것 같습니다.

dalmagi의 이미지

되는 것 같네요 감사합니다.

그런데 "임계구역이 아닌 곳에서 실행중이 아닌 스레드들만" 이라는 문장은

다시말해 임계구역으로 들어가기위해 '대기중인' 스레드들을 지칭하기 위해 쓰인 말인가요?

좀 헷갈리네요

화이팅(fighting) 말고 화이트닝(whitening) 하면 안되나요.

SoulreaveR의 이미지

전혀 관계없는 애들이 참가한다는건 의미가 없죠.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.