태스크와 스레드라는 개념을 알고 싶습니다.

bureokjam의 이미지

나름 많은 시간을 투자해가면서 공부를 했음에도 불구하고
기본적인 개념조차 잡히지도 않을뿐더러.. 괜히 더 혼란스러운거 같습니다..

여러 인터넷 검색을 통해서 자료를 읽어보았지만 잘 이해가 안되네요..
초보자의 입장에서 쉽게 이해할수 있는 설명을 부탁드려봅니다..

라스코니의 이미지

어떤 부분이 이해가 안되시는지요?

bureokjam의 이미지

태스크와 스레드가 무엇이냐고 물어보았을경우 어떤식으로 설명을 해야될지 모르겠습니다.

DarkSide의 이미지

프로그래밍의 측면에서는 모두 쓰레드입니다.
다만, 같은 작업을 여러개로 쪼개어 하는 것은 쓰레드,
서로 다른 종류의 작업을 (보이기에는) 동시에 진행하는 것은 태스크라고 구분하는 경향이 있는 것 같습니다.

bureokjam의 이미지

우선 답변 감사드립니다!

제가 초보라서 궁금한게 많네요.
답변 내용에서 언급해주신 '작업' 이라는 표현이 프로세서가 처리해야 될 '프로그램'을 의미하는 건가요?

그리고 각 각의 프로세스를 태스크로 봐도 괜찮을것 같다는 생각과,
하나의 프로세스를 여러개로 쪼개어 놓은 단위를 쓰레드가 생각하고 있습니다.

나름 답변 내용을 이해하려고 추측해보았는데 어느정도는 맞는 표현이 의견을 여쭤보고 싶네요.
감사합니다.

erdos의 이미지

테스크란 용어는 옛날에 사용하던 용어입니다.
옛날 책들, 특히 운영체제 이론에 관한 오래된 책들에서 보면 테스크란 단어로 설명이 나옵니다.

테스크란 말 그대로 작업입니다. 컴퓨터 입문책에서 운영체제 관련 부분 보시면 정확하게 나오는데요...
옛날에는 지금과 같이 시분할 멀티테스킹환경이 아니었을때 즉, 일괄처리 시절 당시의 작업 단위를 테스크라고 하였다고 합니다.
그 용어가 이제부터 사용하지 말자! 하고 딱 짤라서 없어진게 아니라 새로운 개념이 나오면서 묻혀진거라 그냥 작업이라고만 생각하시면 됩니다.

작업의 단위를 결정하는 요소는 스케줄링을 어떤 단위로 하는가 입니다. 최근에는 그 단위가 쓰레드죠.(프로세스단위 아닙니다.)

이런 용어의 혼재가 아직 리눅스에서도 나타나는데요.

각 쓰레드를 나타내는 디스크립터의 이름이 task_stuct 입니다.

이처럼 그냥 기존부터 쭉 오던거라 그냥 그러려니 하고 어떤 작업의 단위를 총체적으로 말할때나 간혹 쓰이는 것입니다.

쓰레드는 프로세스의 내부 작업 단위인데, 실제로 스케줄러에 의해서 프로세스 단위가 아닌 쓰레드 단위로 스케줄링 되므로 프로세스는 그냥 유저에게 제공하는 추상적 작업 단위이고
OS 관점에서는 그저 쓰레드 그룹을 의미합니다.

쓰레드에 관한 기본 개념은 이정도면 됩니다. 자세하게 알려면 OS이론을 보시고 리눅스 이론을 보시면 명확하게 뭔지 파악이 되실거에요.

생각나는데로 막 써서 답이 횡설수설하네요..

bureokjam의 이미지

우선 답변 감사드립니다!

위의 답변에서도 흡사한 질문을 남겼는데요,
마지막 답변이라 마지막에 읽다보니 그래도 어느정도는 질문의 내용은 다르다 생각되어 남겨봅니다.

방금전까지 '작업' 이라는게 프로세서가 처리해야 되는 '프로그램'으로 추측하고 있었는데요,
답변 내용에서는 작업의 단위를 결정하는 요소는 스케줄링을 어떤 단위로 하는가 라고 언급해 주셨습니다.

이 말은 스케줄링은 운영체제의 몫이니 '작업'이란 운영체제 관점에서의 '단위'이되 크기는 스케줄링에 의해서
결정된다라고 이해하고 있는데 맞는 표현일까요?

더불어서 태스크 전환이란 용어를 들어본적이 있는데..
특정 게임을 진행하다가 알트 텝을 통해서 인터넷 검색을 진행 할 경우 이때의 상황을 태스크 전환이라고
부르는지요?

멀티 스레드는 특정 게임(프로세스)가 진행되면서 캐릭터가 움직이고.. 몹이 움직이고.. 채팅도 가능하게 해주는
원동력이 스레드 이며 이러한 스레드가 모이면 멀티 스레드가 되는건가요?

klara의 이미지

> 특정 게임을 진행하다가 알트 텝을 통해서 인터넷 검색을 진행 할 경우 이때의 상황을 태스크 전환이라고 부르는지요?
태스크=프로세스 라면 맞는말이고 태스크=스레드라면 틀린말이겠죠. 보통 멀티태스킹 운영체제라고 할때 태스크는 프로세스의 개념이기 때문에 맞는 표현이라고 할 수 있습니다.

> 멀티 스레드는 특정 게임(프로세스)가 진행되면서 캐릭터가 움직이고.. 몹이 움직이고.. 채팅도 가능하게 해주는
> 원동력이 스레드 이며 이러한 스레드가 모이면 멀티 스레드가 되는건가요?

캐릭터/몹/채팅을 하나의 스레드에서 처리할 수도 있고 여러개의 스레드에서 처리할 수도 있습니다.
하지만 여러개의 스레드에서 처리한다고 해도 사실상 화면에 뿌릴때는 모든 작업이 다 완료된 상태여야 하기 때문에 보통 캐릭터마다/몹마다 스레드를 따로 만드는 경우는 없습니다.
생각보다 컴퓨터는 매우 짧은 시간에 엄청난 양의 계산을 처리하고 있습니다.

bureokjam의 이미지

무언가 윤곽이 잡힙니다. 감사드립니다!!

shint의 이미지

윈도우에 작업 관리자'를 task manager 라고 하고.
그 안에 thread gui memory process id 등이 보입니다.

혹시 그런것들이 아닐까요?

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

codebank의 이미지

제가 알고 있는 것과는 전혀 다른 형태라서...

제가 알고 있는 것은 테스크는 하나의 프로그램이 메모리에서 실행될 때 그것을 테스트라고 하고
쓰레드는 하나의 프로그램 내에서 메모리를 할당받아 돌아가는 것을 쓰레드라고 알고 있습니다.

즉, 테스크는 OS가 관리하고 쓰레드는 프로그램이 관리하는 것이라는 큰 차이점이 있는 것으로
알고 있습니다만...

제가 잘못 알고 있었나요?

------------------------------
좋은 하루 되세요.

february28의 이미지

-------------
방금전까지 '작업' 이라는게 프로세서가 처리해야 되는 '프로그램'으로 추측하고 있었는데요,
답변 내용에서는 작업의 단위를 결정하는 요소는 스케줄링을 어떤 단위로 하는가 라고 언급해 주셨습니다.

이 말은 스케줄링은 운영체제의 몫이니 '작업'이란 운영체제 관점에서의 '단위'이되 크기는 스케줄링에 의해서
결정된다라고 이해하고 있는데 맞는 표현일까요?
------------
먼가좀 이상하죠?

그리고, 제가 알기로는 리눅스의 스레드와 윈도우의 스레드가 개념이 약간 다를겁니다. 리눅스는 원래 스레드가 없었는데반해 대부분의 개념화되어있는 스레드의 개념은 윈도우식인듯하네요.아니 윈도우가 원조인듯 하네요.....ㅎ

--------------------------------------------------------------------------------
open source, open teaching, 천기누설이 꿈~ 은 개뿔...
--------------------------------------------------------------------------------

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.